@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-cyrillic-400.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-cyrillic-500.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBMPlexMono-latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBMPlexMono-latin-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/IBMPlexSans-cyrillic.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/IBMPlexSans-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground: #0f1213;--surface: #161a1b;--raised: #1e2324;--line: #2a3132;--line-soft: #222829;--text: #e4eae9;--muted: #8d9c9a;--faint: #6d7d7b;--accent: #64c39a;--accent-hover: #7ad3ab;--accent-quiet: #16302a;--on-accent: #06180f;--danger: #e58379;--danger-quiet: #33201e;--radius: 10px;--radius-sm: 7px;--radius-lg: 14px;color-scheme:dark;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--ground: #f2f5f4;--surface: #ffffff;--raised: #eaefed;--line: #dae1df;--line-soft: #e6ebe9;--text: #16201e;--muted: #566360;--faint: #788783;--accent: #17724e;--accent-hover: #0f5c3d;--accent-quiet: #e3f0e9;--on-accent: #ffffff;--danger: #b03a2e;--danger-quiet: #fbe9e6;color-scheme:light}}:root[data-theme=light]{--ground: #f2f5f4;--surface: #ffffff;--raised: #eaefed;--line: #dae1df;--line-soft: #e6ebe9;--text: #16201e;--muted: #566360;--faint: #788783;--accent: #17724e;--accent-hover: #0f5c3d;--accent-quiet: #e3f0e9;--on-accent: #ffffff;--danger: #b03a2e;--danger-quiet: #fbe9e6;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--text);line-height:1.55;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}h1,h2,h3{font-weight:600;line-height:1.2;letter-spacing:-.015em;margin:0;text-wrap:balance}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mono,.amount,.count{font-family:IBM Plex Mono,ui-monospace,monospace;font-variant-numeric:tabular-nums}.layout{min-height:100vh;display:flex;flex-direction:column}.header{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}.header-inner{max-width:1240px;margin:0 auto;padding:13px max(20px,env(safe-area-inset-right)) 13px max(20px,env(safe-area-inset-left));display:flex;align-items:center;gap:12px}.logo{font-weight:600;font-size:1rem;color:var(--text);letter-spacing:-.02em;white-space:nowrap}.logo:hover{text-decoration:none;color:var(--accent)}.header-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.main{flex:1;width:100%;max-width:1240px;margin:0 auto;padding:0}.main-narrow{max-width:780px;margin:0 auto;padding:26px max(20px,env(safe-area-inset-right)) calc(70px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}.btn{font:inherit;font-size:.88rem;font-weight:500;padding:8px 15px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;transition:border-color .15s,background .15s,color .15s}.btn:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:disabled:hover{border-color:var(--line);color:var(--text)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}.btn-danger{color:var(--danger)}.btn-danger:hover{border-color:var(--danger);color:var(--danger);background:var(--danger-quiet)}.btn-quiet{border-color:transparent;background:transparent;color:var(--muted)}.btn-quiet:hover{background:var(--raised);border-color:transparent;color:var(--text)}.btn-icon{padding:8px 10px;font-size:1rem;line-height:1}.btn-small{padding:5px 11px;font-size:.82rem}.field{display:block;margin-bottom:18px}.field-label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.11em;font-weight:600;color:var(--faint);margin-bottom:7px}.field-hint{font-size:.82rem;color:var(--faint);margin-top:6px}.input,.textarea,.select{font:inherit;font-size:.95rem;width:100%;padding:10px 13px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--raised);color:var(--text)}.input::placeholder,.textarea::placeholder,.search-input::placeholder{color:var(--faint)}.input:focus,.textarea:focus,.select:focus,.search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-quiet)}.textarea{resize:vertical;min-height:120px;line-height:1.65}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:34px}.catalog{max-width:1024px;margin:0 auto}.feed{padding:22px max(20px,env(safe-area-inset-right)) calc(70px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));min-width:0;display:flex;flex-direction:column;gap:14px}.search-row{display:flex;gap:10px;align-items:stretch}.search-row .search-input{flex:1;min-width:0}.filter-menu{position:relative;flex:none}.filter-button{height:100%;padding-inline:16px;gap:8px}.filter-button-active{border-color:var(--accent);color:var(--accent)}.filter-count{font-family:IBM Plex Mono,monospace;font-size:.72rem;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--accent);color:var(--on-accent);display:inline-flex;align-items:center;justify-content:center}.filter-panel{position:absolute;top:calc(100% + 8px);right:0;z-index:25;width:min(420px,calc(100vw - 32px));max-height:min(70vh,520px);padding:16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:0 14px 40px #00000073;display:flex;flex-direction:column;gap:16px}.filter-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;color:var(--faint);font-weight:600;margin-bottom:9px}.filter-list{display:flex;flex-direction:column;gap:2px}.filter-row{font:inherit;font-size:.88rem;display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:7px 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--muted);cursor:pointer;text-align:left}.filter-row:hover{background:var(--raised);color:var(--text)}.filter-row-on{background:var(--accent-quiet);border-color:var(--accent);color:var(--accent);font-weight:600}.filter-row-on:hover{background:var(--accent-quiet);color:var(--accent)}.filter-row-on .filter-row-label:before{content:"✓ "}.filter-row-nested .filter-row-label{padding-left:18px;position:relative}.filter-row-nested .filter-row-label:after{content:"└";position:absolute;left:4px;color:var(--faint)}.filter-row-nested.filter-row-on .filter-row-label{padding-left:18px}.filter-row-count{font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums;font-size:.75rem;color:var(--faint);flex:none}.filter-row-on .filter-row-count{color:var(--accent)}.filter-scroll{overflow-y:auto;display:flex;flex-direction:column;gap:16px;min-height:0}.filter-actions{display:flex;gap:8px;align-items:center;padding-top:12px;border-top:1px solid var(--line)}.filter-apply{flex:1}.chosen-row{display:flex;flex-wrap:wrap;gap:6px}.chosen-chip{font:inherit;font-size:.8rem;display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:999px;border:1px solid var(--accent);background:var(--accent-quiet);color:var(--accent);cursor:pointer}.chosen-chip span{opacity:.6}.chosen-chip:hover span{opacity:1}.search-input{font:inherit;font-size:.97rem;width:100%;padding:12px 16px;border-radius:var(--radius);border:1px solid var(--line);background:var(--raised);color:var(--text)}.feed-status{display:flex;align-items:center;gap:10px;font-size:.83rem;color:var(--faint);flex-wrap:wrap}.link-button{font:inherit;font-size:inherit;background:none;border:none;padding:0;color:var(--accent);cursor:pointer;text-decoration:underline}.recipe-grid{display:grid;grid-template-columns:1fr;gap:10px}.recipe-card{display:grid;grid-template-columns:96px 1fr;gap:16px;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:inherit;align-items:center;transition:border-color .15s,background .15s}.recipe-card:hover{text-decoration:none;border-color:var(--accent);background:var(--raised)}.recipe-card-image,.recipe-card-placeholder{width:96px;aspect-ratio:1;border-radius:var(--radius-sm);object-fit:cover;background:var(--raised)}.recipe-card-placeholder{display:flex;align-items:center;justify-content:center;color:var(--line);border:1px solid var(--line-soft)}.recipe-card-body{min-width:0;display:flex;flex-direction:column;gap:5px}.recipe-card-title{font-size:1.04rem;font-weight:600}.recipe-card-description{font-size:.87rem;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:78ch}.recipe-card-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.pill{font-size:.7rem;padding:2px 8px;border-radius:5px;background:var(--raised);color:var(--faint);white-space:nowrap}.recipe-card:hover .pill{background:var(--surface)}.pill-cat{color:var(--accent);background:var(--accent-quiet)}.pill-more{background:none;padding-left:0}.recipe-page{max-width:1024px;margin:0 auto}.recipe-head{padding:24px max(20px,env(safe-area-inset-right)) 24px max(20px,env(safe-area-inset-left));border-bottom:1px solid var(--line)}.recipe-title{font-size:clamp(1.4rem,3.4vw,2rem);margin-bottom:8px}.recipe-description{color:var(--muted);font-size:.97rem;margin:0 0 14px}.factline{display:flex;flex-direction:column;gap:8px;margin:0}.factline-row{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}.factline dt{text-transform:uppercase;letter-spacing:.1em;font-size:.66rem;color:var(--faint);font-weight:600;min-width:68px;flex:none}.factline dd{margin:0;display:flex;gap:6px;flex-wrap:wrap}.fact-chip{display:inline-flex;align-items:center;font-size:.8rem;line-height:1;padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--raised);color:var(--muted);transition:border-color .15s,color .15s,background .15s}.fact-chip:hover{text-decoration:none;border-color:var(--accent);color:var(--accent);background:var(--accent-quiet)}.recipe-photo{width:100%;max-height:420px;object-fit:cover;border-bottom:1px solid var(--line)}.recipe-columns{display:grid;grid-template-columns:320px 1fr;align-items:stretch;min-height:50vh}.side{padding:20px max(20px,env(safe-area-inset-right)) 20px max(20px,env(safe-area-inset-left));background:var(--surface);border-right:1px solid var(--line)}.side-inner{position:sticky;top:75px}.side-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;color:var(--faint);font-weight:600;margin-bottom:12px}.servings{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--raised);margin-bottom:18px;flex-wrap:wrap}.servings-stepper{display:flex;align-items:center;gap:6px}.servings-btn{font:inherit;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--accent);font-size:1.15rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.servings-btn:hover:not(:disabled){border-color:var(--accent);background:var(--accent-quiet)}.servings-btn:disabled{opacity:.35;cursor:not-allowed}.servings-value{font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums;font-size:1.1rem;font-weight:500;width:3.2ch;text-align:center;border:none;background:none;color:var(--text);padding:0;-moz-appearance:textfield}.servings-value::-webkit-outer-spin-button,.servings-value::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.servings-label{font-size:.85rem;color:var(--muted)}.servings-reset{font:inherit;font-size:.75rem;background:none;border:none;color:var(--faint);cursor:pointer;padding:0;text-decoration:underline}.servings-reset:hover{color:var(--accent)}.ingredient-list{list-style:none;margin:0;padding:0}.ingredient-section{font-size:.68rem;text-transform:uppercase;letter-spacing:.13em;color:var(--faint);font-weight:600;margin:0 0 6px;padding-top:18px}.ingredient-section:first-child{margin-top:0}.ingredient{display:flex;justify-content:space-between;gap:12px;align-items:baseline;padding:7px 0;font-size:.9rem}.ingredient+.ingredient{border-top:1px solid var(--line-soft)}.ingredient-name{min-width:0}.ingredient-note{display:block;font-size:.75rem;color:var(--faint)}.ingredient-amount{color:var(--accent);font-size:.85rem;white-space:nowrap}.fraction{font-size:1.35em;line-height:0;vertical-align:-.05em}.ingredient-amount-text{font-style:italic;font-family:inherit}.method{padding:20px 0 calc(20px + env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left));counter-reset:step;min-width:0}.method-title{font-size:1.05rem;margin-bottom:12px}.method-step{display:grid;grid-template-columns:30px 1fr;gap:14px;padding:12px 0}.method-step+.method-step{border-top:1px solid var(--line-soft)}.method-step:before{counter-increment:step;content:counter(step);font-family:IBM Plex Mono,monospace;font-size:.78rem;color:var(--accent);border:1px solid var(--line);border-radius:var(--radius-sm);width:30px;height:30px;display:flex;align-items:center;justify-content:center}.method-step p{margin:0;font-size:.99rem;line-height:1.65}.recipe-source{margin-top:20px;padding-top:16px;border-top:1px solid var(--line);font-size:.8rem;color:var(--faint);font-family:IBM Plex Mono,monospace}.recipe-actions{display:flex;gap:10px;margin-top:26px;flex-wrap:wrap}.recipe-actions .spacer{margin-left:auto}.form-section{margin-bottom:30px}.form-section-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.13em;color:var(--faint);font-weight:600;margin-bottom:14px;padding-bottom:8px;border-bottom:1px solid var(--line)}.category-picker{display:flex;flex-direction:column;gap:8px}.category-row{display:flex;gap:8px}.form-row{display:flex;gap:14px;flex-wrap:wrap}.form-row>*{flex:1;min-width:150px}.ingredient-rows{display:flex;flex-direction:column;gap:8px}.ingredient-row{display:grid;grid-template-columns:1fr 104px 108px 38px;gap:7px;align-items:start}.ingredient-row-text{grid-template-columns:1fr 216px 38px}.ingredient-note-field{grid-column:1 / -1;font-size:.83rem!important;padding:6px 12px!important;background:transparent!important;border-style:dashed}.ingredient-row .input{font-size:.92rem}.ingredient-row [data-quantity]{font-family:IBM Plex Mono,monospace}.row-remove{font:inherit;width:38px;height:40px;border:1px solid transparent;background:none;color:var(--faint);border-radius:var(--radius-sm);cursor:pointer}.row-remove:hover{color:var(--danger);background:var(--danger-quiet)}.image-editor{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}.image-preview{width:200px;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line)}.image-drop{font:inherit;width:200px;aspect-ratio:4 / 3;border:1px dashed var(--line);border-radius:var(--radius-sm);background:var(--raised);color:var(--faint);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-size:.85rem;padding:12px;text-align:center}.image-drop:hover{border-color:var(--accent);color:var(--accent)}.form-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding-top:20px;border-top:1px solid var(--line)}.form-actions-end{margin-left:auto}.picker-chosen{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px}.picker-chip{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;padding:4px 7px 4px 11px;border-radius:6px;background:var(--accent-quiet);color:var(--accent)}.picker-chip button{font:inherit;border:none;background:none;color:inherit;cursor:pointer;opacity:.65;padding:0 2px;line-height:1}.picker-chip button:hover{opacity:1}.picker-available{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.chip{font:inherit;font-size:.82rem;padding:4px 11px;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip-on{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.chip-on:before{content:"✓";margin-right:6px;font-size:.78rem}.chip-nested{margin-left:16px}.chip-nested:after{content:""}.chip-nested{position:relative}.chip-nested:before{content:"└";position:absolute;left:-14px;color:var(--faint);font-size:.8rem}.chip-nested.chip-on:before{content:"✓";position:static;margin-right:6px;color:inherit}.chip-on:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--on-accent)}.chip-on .chip-count{opacity:.75}.settings-list{list-style:none;margin:0;padding:0}.settings-item{display:flex;align-items:center;gap:9px;padding:9px 0;font-size:.92rem}.settings-item+.settings-item{border-top:1px solid var(--line-soft)}.settings-item-name{flex:1;min-width:0}.settings-item-nested{padding-left:20px;position:relative;color:var(--muted)}.settings-item-nested:before{content:"└";position:absolute;left:4px;color:var(--faint)}.settings-item-count{font-family:IBM Plex Mono,monospace;font-size:.78rem;color:var(--faint)}.signin{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:calc(24px + env(safe-area-inset-top)) 20px calc(24px + env(safe-area-inset-bottom))}.signin-card{width:100%;max-width:340px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:28px 24px 24px;display:flex;flex-direction:column}.signin-icon{display:flex;justify-content:center;color:var(--accent);margin-bottom:14px}.signin-title{font-size:1.2rem;text-align:center;margin-bottom:22px}.signin-submit{width:100%}.empty{text-align:center;padding:60px 20px;color:var(--faint)}.empty-icon{display:flex;justify-content:center;color:var(--line);margin-bottom:14px}.empty-title{font-size:1.1rem;color:var(--text);margin-bottom:8px;font-weight:600}.notice{padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:18px;font-size:.9rem;border:1px solid}.notice-error{background:var(--danger-quiet);color:var(--danger);border-color:var(--danger)}.notice-ok{background:var(--accent-quiet);color:var(--accent);border-color:var(--accent)}.loading{text-align:center;padding:50px;color:var(--faint);font-size:.9rem}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:calc(20px + env(safe-area-inset-top)) 20px calc(20px + env(safe-area-inset-bottom));z-index:50}.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px;width:100%;max-width:430px}.modal-title{font-size:1.1rem;margin-bottom:7px}.modal-text{color:var(--muted);font-size:.9rem;margin:0 0 18px}.modal-actions{display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap}@media(max-width:900px){.recipe-columns{grid-template-columns:1fr}.side{border-right:none;border-bottom:1px solid var(--line)}.side-inner{position:static}.feed{padding:16px max(16px,env(safe-area-inset-right)) calc(60px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.recipe-card{grid-template-columns:80px 1fr;gap:13px}.recipe-card-image,.recipe-card-placeholder{width:80px}.recipe-head{padding:18px max(16px,env(safe-area-inset-right)) 18px max(16px,env(safe-area-inset-left))}.method{padding:16px 0 calc(16px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.main-narrow{padding:20px max(16px,env(safe-area-inset-right)) calc(60px + env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.recipe-photo{max-height:260px}}@media(max-width:560px){.header-inner{padding:11px max(16px,env(safe-area-inset-right)) 11px max(16px,env(safe-area-inset-left));gap:8px}.only-wide{display:none}.ingredient-row{grid-template-columns:1fr 88px 38px}.ingredient-row .ingredient-unit-field{grid-column:2 / 3}.form-actions .btn{flex:1}}@media(min-width:561px){.only-narrow{display:none}}@media print{.header,.search-row,.chosen-row,.recipe-actions,.servings-stepper,.btn{display:none!important}.recipe-columns{grid-template-columns:1fr}.side{position:static;border:none}body{background:#fff;color:#000}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
