:root{--bg: #fbf8f4;--bg-elev: #ffffff;--bg-sunken: #f3eee7;--text: #1f1a14;--text-2: #6b6157;--text-3: #9a8f84;--border: #ebe4da;--border-strong: #ddd3c6;--accent: #e2552f;--accent-hover: #cc4723;--accent-soft: #fde9e2;--accent-text: #b13b18;--good: #2f9e6b;--good-soft: #e3f4ec;--danger: #d23b3b;--danger-soft: #fbe7e7;--warn-soft: #fff4dc;--warn-text: #8a5a00;--shadow-sm: 0 1px 2px rgb(40 25 10 / .06);--shadow: 0 1px 2px rgb(40 25 10 / .05), 0 6px 20px -6px rgb(40 25 10 / .12);--shadow-lg: 0 24px 60px -16px rgb(40 25 10 / .3);--radius-sm: 8px;--radius: 14px;--radius-lg: 22px;--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--art-l: 92%;--art-l2: 84%;color-scheme:light}@media(prefers-color-scheme:dark){:root{--bg: #17140f;--bg-elev: #211d17;--bg-sunken: #1c1813;--text: #f4eee6;--text-2: #b4a99c;--text-3: #7f7569;--border: #2f2921;--border-strong: #3d362c;--accent: #f0683f;--accent-hover: #ff7c55;--accent-soft: #3a2117;--accent-text: #ff9a7a;--good: #45c08a;--good-soft: #17301f;--danger: #ef5b5b;--danger-soft: #3a1b1b;--warn-soft: #34290f;--warn-text: #f3c463;--shadow-sm: 0 1px 2px rgb(0 0 0 / .3);--shadow: 0 1px 2px rgb(0 0 0 / .3), 0 8px 24px -8px rgb(0 0 0 / .5);--shadow-lg: 0 24px 60px -16px rgb(0 0 0 / .7);--art-l: 24%;--art-l2: 18%;color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.55 var(--font);-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;line-height:1.2;letter-spacing:-.01em}h1{font:600 clamp(28px,4vw,38px) / 1.1 var(--font-display);letter-spacing:-.02em}h2{font-size:17px;font-weight:600}h3{font-size:15px;font-weight:600}p{margin:0}a{color:var(--accent-text)}code{font-size:.9em;padding:1px 6px;border-radius:6px;background:var(--bg-sunken);border:1px solid var(--border)}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.muted{color:var(--text-2)}.small{font-size:13px}.grow{flex:1;min-width:0}.topbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--border)}.topbar-inner{max-width:1180px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);font:600 19px var(--font-display);letter-spacing:-.01em;white-space:nowrap}.brand img{border-radius:9px}.nav{display:flex;gap:4px;flex:1}.nav-link{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;color:var(--text-2);text-decoration:none;font-weight:500;transition:background .15s,color .15s}.nav-link:hover{color:var(--text);background:var(--bg-sunken)}.nav-link.active{color:var(--text);background:var(--bg-elev);box-shadow:var(--shadow-sm),inset 0 0 0 1px var(--border)}.topbar-actions{display:flex;gap:8px}.main{max-width:1180px;margin:0 auto;padding:32px 24px 120px}.page{display:flex;flex-direction:column;gap:24px;animation:fade-in .25s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-header h1+p{margin-top:6px}.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--text-2);text-decoration:none;font-size:14px;font-weight:500;align-self:flex-start;margin-bottom:-8px}.back-link:hover{color:var(--text)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:999px;border:1px solid transparent;font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,transform .1s,box-shadow .15s}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 1px 2px #0000001a,0 4px 14px -4px color-mix(in srgb,var(--accent) 60%,transparent)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-secondary{background:var(--bg-elev);border-color:var(--border-strong);color:var(--text);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){border-color:var(--text-3)}.btn-ghost{background:transparent;color:var(--text-2)}.btn-ghost:hover:not(:disabled){background:var(--bg-sunken);color:var(--text)}.btn-danger{background:var(--danger);color:#fff}.btn-dashed{width:100%;border:1.5px dashed var(--border-strong);background:transparent;color:var(--text-2);border-radius:var(--radius-sm);margin-top:12px}.btn-dashed:hover{border-color:var(--accent);color:var(--accent-text);background:var(--accent-soft)}.btn-sm{height:32px;padding:0 12px;font-size:13px}.btn-lg{height:48px;padding:0 22px;font-size:15px}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:999px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text-2);cursor:pointer;text-decoration:none;transition:background .15s,color .15s,border-color .15s;flex:none}.icon-btn:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.icon-btn.danger:hover:not(:disabled){color:var(--danger);background:var(--danger-soft);border-color:transparent}.icon-btn.is-fav{color:var(--accent);background:var(--accent-soft);border-color:transparent}.icon-btn.is-fav svg{fill:currentColor}.icon-btn.sm{width:30px;height:30px;border-color:transparent;background:transparent}.icon-btn:disabled{opacity:.3;cursor:default}.input{width:100%;min-width:0;padding:9px 12px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text);font:inherit;transition:border-color .15s,box-shadow .15s}.input::placeholder,textarea::placeholder{color:var(--text-3)}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}textarea.input{resize:vertical}.input-lg{font-size:18px;padding:12px 14px;font-weight:500}.input-title{font:600 28px var(--font-display);padding:4px 10px;max-width:520px}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:13px;font-weight:600;color:var(--text-2)}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.field-wide{grid-column:1 / -1}.search{display:flex;align-items:center;gap:10px;padding:0 14px;height:44px;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg-elev);color:var(--text-3);box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}.search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.search input{flex:1;border:0;background:transparent;outline:none;font:inherit;color:var(--text);min-width:0}.toggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none;margin:4px 0 8px}.toggle input{accent-color:var(--accent)}.toolbar{display:flex;flex-direction:column;gap:14px}.toolbar .search{max-width:460px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border-radius:999px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text-2);font-size:13px;font-weight:500;cursor:pointer;text-transform:capitalize;transition:all .15s}.chip:hover{border-color:var(--border-strong);color:var(--text)}.chip.is-active{background:var(--text);border-color:var(--text);color:var(--bg)}.tags{display:flex;flex-wrap:wrap;gap:6px}.tag{padding:2px 10px;border-radius:999px;background:var(--bg-sunken);color:var(--text-2);font-size:12px;font-weight:500;text-transform:capitalize}.pill{margin-left:8px;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-text);font-size:12px;font-weight:600;vertical-align:middle}.eyebrow{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:var(--accent-soft);color:var(--accent-text);font-size:12px;font-weight:600;letter-spacing:.02em}.panel{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm)}.panel>h2{margin-bottom:16px}.panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:8px}.notice{padding:14px 18px;border-radius:var(--radius);background:var(--bg-sunken);border:1px solid var(--border);color:var(--text-2)}.notice-error{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.notice-warn{background:var(--warn-soft);border-color:transparent;color:var(--warn-text)}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}.recipe-card{position:relative;display:flex;flex-direction:column;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease,border-color .2s}.recipe-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.recipe-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.recipe-card-link{position:absolute;inset:0;z-index:1}.recipe-card-art{position:relative;height:120px;background:radial-gradient(circle at 80% 20%,hsl(var(--hue) 80% var(--art-l)) 0,transparent 55%),linear-gradient(135deg,hsl(var(--hue) 65% var(--art-l)),hsl(calc(var(--hue) + 25) 60% var(--art-l2)));display:grid;place-items:center}.recipe-card-initial{font:600 54px var(--font-display);color:hsl(var(--hue) 55% 40% / .35)}.select-dot,.fav-btn{position:absolute;top:12px;z-index:2;display:grid;place-items:center;width:30px;height:30px;border-radius:999px;border:0;cursor:pointer;transition:all .15s}.select-dot{left:12px;background:#ffffffbf;color:transparent;box-shadow:inset 0 0 0 1.5px #00000026;opacity:0}.recipe-card:hover .select-dot,.select-dot.is-visible,.select-dot:focus-visible{opacity:1}.select-dot.is-on{background:var(--accent);color:#fff;box-shadow:none}.fav-btn{right:12px;background:#ffffffbf;color:#6b6157}.fav-btn.is-on{color:var(--accent)}.fav-btn.is-on svg{fill:currentColor}@media(hover:none){.select-dot{opacity:1}}.recipe-card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}.recipe-card-body h3{font:600 18px/1.25 var(--font-display)}.recipe-card-desc{color:var(--text-2);font-size:13.5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.meta-row{display:flex;flex-wrap:wrap;gap:12px;color:var(--text-3);font-size:12.5px;margin-top:auto}.meta-row span{display:inline-flex;align-items:center;gap:4px}.action-bar{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:30;display:flex;align-items:center;gap:8px;padding:8px 8px 8px 20px;border-radius:999px;background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow-lg);animation:rise .25s ease-out}@keyframes rise{0%{opacity:0;transform:translate(-50%,12px)}}.empty-hero{max-width:520px;margin:8vh auto 0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:14px;animation:fade-in .3s ease-out}.empty-hero.compact{margin-top:24px}.empty-hero-icon{width:84px;height:84px;border-radius:28px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:8px;transform:rotate(-4deg)}.empty-hero p{color:var(--text-2)}.empty-hero-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:12px}.recipe-hero{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;flex-wrap:wrap}.recipe-hero-text{display:flex;flex-direction:column;gap:14px;max-width:720px}.recipe-hero h1{font-size:clamp(32px,5vw,48px)}.lede{font-size:17px;color:var(--text-2)}.recipe-actions{display:flex;gap:8px;align-items:center}.stat-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}.stat{display:flex;flex-direction:column;gap:2px;padding:10px 16px;border-radius:var(--radius);background:var(--bg-elev);border:1px solid var(--border)}.stat-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3)}.stat-value{font-weight:600}.stepper{display:flex;align-items:center;gap:10px}.stepper button{display:grid;place-items:center;width:24px;height:24px;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg);cursor:pointer;color:var(--text-2)}.stepper button:hover{border-color:var(--accent);color:var(--accent)}.stepper.sm{gap:6px;font-size:13px;font-weight:600}.stepper.sm span{min-width:16px;text-align:center}.stepper.sm button{width:22px;height:22px}.recipe-columns{display:grid;grid-template-columns:minmax(280px,2fr) minmax(0,3fr);gap:24px;align-items:start}.recipe-columns>.panel:first-child{position:sticky;top:88px}.ingredient-list,.step-list,.shop-items,.list-recipes{list-style:none;margin:0;padding:0}.ingredient-list li{display:grid;grid-template-columns:20px minmax(64px,auto) 1fr;gap:12px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none}.ingredient-list li:last-child{border-bottom:0}.ingredient-amount{font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}.check-box{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;border:1.5px solid var(--border-strong);color:transparent;align-self:center;transition:all .15s;flex:none}.is-done .check-box{background:var(--good);border-color:var(--good);color:#fff}.is-done .ingredient-name,.is-done .ingredient-amount,.is-done .shop-item-name{color:var(--text-3);text-decoration:line-through}.step-list{display:flex;flex-direction:column;gap:4px;counter-reset:step}.step-list li{display:flex;gap:16px;padding:12px;margin:0 -12px;border-radius:var(--radius);cursor:pointer;transition:background .15s}.step-list li:hover{background:var(--bg-sunken)}.step-list li p{font-size:16px;line-height:1.65;padding-top:3px}.step-list li.is-done p{color:var(--text-3)}.step-num{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:999px;background:var(--accent-soft);color:var(--accent-text);font-weight:700;font-size:14px}.step-list li.is-done .step-num{background:var(--good-soft);color:var(--good)}.editor{max-width:900px}.ing-head,.ing-row{display:grid;grid-template-columns:80px 90px 1fr 1fr auto;gap:8px;align-items:center}.ing-head{font-size:12px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;padding:0 2px 6px}.ing-head:after{content:"";width:96px}.ing-rows,.step-rows{display:flex;flex-direction:column;gap:8px}.row-tools{display:flex;width:96px;justify-content:flex-end}.row-tools.vertical{flex-direction:column;width:auto;gap:0}.row-tools.vertical .icon-btn.sm{height:22px}.step-row{display:flex;gap:12px;align-items:flex-start}.step-row .step-num{margin-top:5px}.paste-box{margin-bottom:16px;padding:14px;border-radius:var(--radius);background:var(--bg-sunken);display:flex;flex-direction:column;gap:10px}.paste-actions{display:flex;justify-content:flex-end;gap:8px}.sticky-save{position:sticky;bottom:16px;display:flex;justify-content:flex-end;gap:8px;padding:10px;border-radius:999px;background:color-mix(in srgb,var(--bg-elev) 85%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);box-shadow:var(--shadow);align-self:flex-end}.generate-page{max-width:760px;margin:0 auto}.generate-hero{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:2vh}.generate-hero h1{font-size:clamp(32px,5vw,46px)}.prompt-box{border-radius:var(--radius-lg);background:var(--bg-elev);border:1px solid var(--border-strong);box-shadow:var(--shadow);overflow:hidden;transition:border-color .15s,box-shadow .15s}.prompt-box:focus-within{border-color:var(--accent);box-shadow:var(--shadow),0 0 0 4px color-mix(in srgb,var(--accent) 15%,transparent)}.prompt-box.is-busy{background-image:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 8%,transparent),transparent);background-size:200% 100%;animation:shimmer 1.6s linear infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.prompt-box textarea{width:100%;border:0;outline:none;resize:vertical;padding:20px 22px;background:transparent;color:var(--text);font:16px/1.6 var(--font);min-height:200px}.prompt-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 12px 22px;border-top:1px solid var(--border)}.examples{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.examples .chip{text-transform:none}.list-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.list-card{display:flex;gap:14px;align-items:center;padding:18px;border-radius:var(--radius-lg);background:var(--bg-elev);border:1px solid var(--border);text-decoration:none;color:inherit;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s}.list-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.list-card-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--good-soft);color:var(--good);flex:none}.list-card h3{font:600 17px var(--font-display)}.editable{cursor:text;display:inline-flex;align-items:center;gap:10px}.editable svg{opacity:0;transition:opacity .15s}.editable:hover svg{opacity:1}.header-actions{display:flex;gap:8px}.progress{height:6px;max-width:360px;border-radius:999px;background:var(--bg-sunken);margin:14px 0 6px;overflow:hidden}.progress-bar{height:100%;border-radius:inherit;background:var(--good);transition:width .3s ease}.list-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:24px;align-items:start}.side-panel{position:sticky;top:88px;display:flex;flex-direction:column;gap:12px}.side-panel .panel-header{margin-bottom:0}.quick-add{display:flex;align-items:center;gap:10px;padding:6px 6px 6px 14px;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg);color:var(--text-3);margin-bottom:12px}.quick-add:focus-within{border-color:var(--accent)}.quick-add input{flex:1;min-width:0;border:0;outline:none;background:transparent;font:inherit;color:var(--text)}.aisle+.aisle{margin-top:20px}.aisle-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);padding-bottom:6px;border-bottom:1px solid var(--border)}.shop-items li{display:flex;align-items:center;border-bottom:1px solid var(--border)}.shop-items li:last-child{border-bottom:0}.shop-item{flex:1;display:flex;align-items:center;gap:14px;padding:11px 4px;border:0;background:transparent;text-align:left;cursor:pointer;min-width:0}.shop-item-text{display:flex;flex-direction:column;min-width:0}.shop-item-name strong{font-weight:600;font-variant-numeric:tabular-nums}.shop-item-sources{font-size:12.5px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-note{padding:24px 0 8px;text-align:center}.list-recipes{display:flex;flex-direction:column}.list-recipes li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--border)}.list-recipes li a{color:var(--text);text-decoration:none;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-recipes li a:hover{color:var(--accent-text)}.list-recipe-tools{display:flex;align-items:center;gap:4px;flex:none}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#140e0873;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px;animation:fade .15s ease-out}@keyframes fade{0%{opacity:0}}.modal{width:min(480px,100%);max-height:min(640px,90vh);display:flex;flex-direction:column;background:var(--bg-elev);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg);animation:pop .2s cubic-bezier(.2,.9,.3,1.2)}@keyframes pop{0%{opacity:0;transform:scale(.96) translateY(6px)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:18px 18px 8px 24px}.modal-header h2{font:600 20px var(--font-display)}.modal-header .icon-btn{border-color:transparent}.modal-body{padding:8px 24px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 18px;border-top:1px solid var(--border)}.choice-list{display:flex;flex-direction:column;gap:8px}.choice{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:var(--radius);border:1px solid var(--border);cursor:pointer;transition:border-color .15s,background .15s}.choice:hover{border-color:var(--border-strong)}.choice.is-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent-soft) 50%,transparent)}.choice input[type=radio],.choice input[type=checkbox]{accent-color:var(--accent);margin-top:4px}.choice-body{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}.choice-body .muted{font-size:13px}.toasts{position:fixed;top:76px;right:20px;z-index:60;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;background:var(--text);color:var(--bg);font-size:14px;font-weight:500;box-shadow:var(--shadow-lg);animation:slide-in .25s ease-out}.toast-error{background:var(--danger);color:#fff}@keyframes slide-in{0%{opacity:0;transform:translate(16px)}}.spinner-wrap{display:flex;align-items:center;justify-content:center;gap:12px;padding:60px 0;color:var(--text-2)}.spinner{width:22px;height:22px;border-radius:999px;border:2.5px solid var(--border-strong);border-top-color:var(--accent);animation:spin .7s linear infinite}.spinner.sm{width:16px;height:16px;border-width:2px;border-color:#fff6;border-top-color:#fff}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.recipe-columns,.list-layout{grid-template-columns:minmax(0,1fr)}.recipe-columns>.panel:first-child,.side-panel{position:static}.side-panel{order:-1}}@media(max-width:640px){.topbar-inner{padding:10px 16px;gap:12px}.brand span,.hide-sm,.nav-link span{display:none}.nav{justify-content:center}.nav-link{padding:10px 14px}.main{padding:20px 16px 120px}.panel{padding:18px;border-radius:var(--radius)}.form-grid{grid-template-columns:1fr 1fr}.ing-head{display:none}.ing-row{grid-template-columns:64px 72px 1fr;padding-bottom:10px;border-bottom:1px solid var(--border)}.ing-row>input:nth-child(4){grid-column:1 / 3}.row-tools{width:auto}.recipe-grid{grid-template-columns:1fr}.toasts{left:16px;right:16px;align-items:center}.action-bar{width:calc(100% - 32px);justify-content:space-between}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.auth-screen{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(60rem 30rem at 10% -10%,color-mix(in srgb,var(--accent) 14%,transparent),transparent 60%),radial-gradient(50rem 30rem at 110% 110%,color-mix(in srgb,var(--good) 10%,transparent),transparent 60%),var(--bg)}.auth-card{width:min(400px,100%);padding:32px;border-radius:var(--radius-lg);background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:24px;animation:pop .3s cubic-bezier(.2,.9,.3,1.2)}.auth-brand{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}.auth-brand img{border-radius:14px;box-shadow:0 8px 24px -8px color-mix(in srgb,var(--accent) 60%,transparent)}.auth-brand h1{font-size:30px}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-form small{font-size:12px}.auth-switch{text-align:center;font-size:14px}.link-btn{border:0;background:none;padding:0;color:var(--accent-text);font-weight:600;cursor:pointer}.link-btn:hover{text-decoration:underline}.account{position:relative}.avatar{width:40px;height:40px;border-radius:999px;border:1px solid var(--border);background:var(--accent-soft);color:var(--accent-text);font-weight:700;cursor:pointer;transition:box-shadow .15s}.avatar:hover,.avatar[aria-expanded=true]{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:240px;padding:6px;border-radius:var(--radius);background:var(--bg-elev);border:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:40;animation:pop .15s ease-out}.menu-head{display:flex;flex-direction:column;padding:8px 10px 10px;border-bottom:1px solid var(--border);margin-bottom:4px;overflow:hidden}.menu-head strong{font-size:14px;overflow:hidden;text-overflow:ellipsis}.menu button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:var(--radius-sm);background:none;text-align:left;cursor:pointer;font-size:14px;color:var(--text)}.menu button:hover{background:var(--bg-sunken)}.list-layout>*,.recipe-columns>*{min-width:0}.shop-item-name{overflow-wrap:anywhere}.alt-amount{display:inline-block;margin-left:6px;padding:0 7px;border-radius:999px;background:var(--bg-sunken);color:var(--text-2);font-size:12px;font-weight:600;vertical-align:1px;white-space:nowrap}
