@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-body:"Inter Variable", system-ui, "Segoe UI", Roboto, sans-serif;--font-display:"Fraunces Variable", Georgia, "Times New Roman", serif;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-pill:999px;--shadow-sm:0 1px 2px #1412180d;--shadow-md:0 6px 18px #1412181a;--shadow-lg:0 16px 40px #1412182e;--surface-2:#f3f0ea;--text-muted:#6b6771;--accent-soft:#e4f2e9;--warn-soft:#fdf1e1;--danger-soft:#fdecea;--overlay:#1412188c;--brand-bowl:#2f7d4f;--brand-steam:#5cb87f;--brand-wordmark:#e8553a;--topbar-h:56px;--tabbar-h:64px;--tap:44px;--z-sticky:15;--z-topbar:20;--z-tabbar:30;--z-fab:31;--z-chat-fab:32;--z-overlay:70;--z-toast:80;--motion-fast:.15s;--motion-base:.22s;--motion-slow:.32s;--motion-stagger:30ms;--motion-spin:.8s;--motion-shimmer:1.4s;--motion-ambient:2.4s;--motion-blink:1s;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--badge-bronze:#b0703a;--badge-silver:#9aa3ad;--badge-gold:#d4a22a;--badge-single:#2f7d4f;--badge-thread:#fffaf0;--badge-fabric-recipes:#c2553a;--badge-fabric-cooking:#d9822b;--badge-fabric-resonance:#b03a5b;--badge-fabric-community:#3d6fb6;--badge-fabric-planning:#2f8a7a;--badge-fabric-variety:#4f8f3a;--badge-fabric-reach:#6a4fb3;--badge-fabric-special:#2d3a4f}@media (prefers-color-scheme:dark){:root{--surface-2:#262730;--text-muted:#9a97a3;--accent-soft:#1d3327;--warn-soft:#3a2a10;--danger-soft:#3a1a18;--overlay:#000000a6;--brand-bowl:#5cb87f;--brand-steam:#a8ddb9;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 6px 18px #00000073;--shadow-lg:0 16px 40px #0009;--badge-bronze:#cd8a52;--badge-silver:#c3cad2;--badge-gold:#e8bb48;--badge-single:#5cb87f;--badge-fabric-special:#46536b}}h1,h2,h3,.display{font-family:var(--font-display);letter-spacing:-.01em;font-weight:600}h1{font-size:var(--text-2xl);line-height:1.15}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root{--text:#3d3a42;--text-h:#111;--bg:#faf8f5;--card:#fff;--border:#e5e2dc;--accent:#2f7d4f;--accent-text:#fff;--error:#b42318;--warn:#b45309;font:16px/1.5 var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#c9c6cf;--text-h:#f3f4f6;--bg:#16171d;--card:#1f2028;--border:#2e303a;--accent:#5cb87f;--accent-text:#0b1a11;--error:#f97066;--warn:#fbbf24}}body{background:var(--bg);box-sizing:border-box;min-height:100vh;margin:0}h1{color:var(--text-h);margin-top:0}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-sizing:border-box;width:calc(100% - 32px);max-width:380px;margin:24px auto;padding:28px}form{gap:14px;display:grid}label,.field{gap:4px;font-weight:500;display:grid}input{font:inherit;border:1px solid var(--border);background:var(--bg);color:inherit;border-radius:8px;padding:8px 10px}button{font:inherit;background:var(--accent);color:var(--accent-text);cursor:pointer;border:0;border-radius:8px;padding:10px 14px;font-weight:600}button:disabled{opacity:.6;cursor:default}a{color:var(--accent)}.error{color:var(--error);margin:0}.card.wide{max-width:640px}fieldset{border:1px solid var(--border);border-radius:10px;gap:12px;min-width:0;margin:0;padding:14px 16px 16px;display:grid}legend{color:var(--text-h);padding:0 6px;font-weight:600}.options{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px 16px;display:grid}label.check{align-items:flex-start;gap:8px;font-weight:400;display:flex}label.check input{margin-top:4px}label.check.disabled{opacity:.5}.consent span{font-size:.9rem}.hint{opacity:.8;margin:0;font-size:.875rem}.success{color:var(--accent);margin:0}.tags{border:1px solid var(--border);background:var(--bg);border-radius:8px;flex-wrap:wrap;gap:6px;padding:6px;display:flex}.tags input{background:0 0;border:0;outline:none;flex:1;min-width:120px;padding:4px}.tag{background:var(--border);border-radius:999px;align-items:center;gap:4px;padding:2px 4px 2px 10px;font-weight:400;display:inline-flex}.tag button{color:inherit;background:0 0;padding:0 6px;font-weight:400}.actions{justify-content:space-between;align-items:center;gap:12px;display:flex}textarea{font:inherit;border:1px solid var(--border);background:var(--bg);color:inherit;resize:vertical;box-sizing:border-box;border-radius:8px;width:100%;padding:8px 10px}h2{color:var(--text-h);margin:20px 0 8px;font-size:1.15rem}.meta{opacity:.75;font-size:.875rem}.warning{border:1px solid var(--error);color:var(--error);border-radius:8px;padding:10px 12px}div.warning>p,div.warning>ul{margin:0 0 6px}div.warning>:last-child{margin-bottom:0}a.button{background:var(--accent);color:var(--accent-text);border-radius:8px;padding:10px 14px;font-weight:600;text-decoration:none;display:inline-block}button.secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}button.danger{color:var(--error);border:1px solid var(--error);background:0 0}button.icon{color:inherit;border:1px solid var(--border);background:0 0;padding:4px 8px;font-weight:400}.button-row{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.ingredient-row{grid-template-columns:5rem 6rem minmax(0,1fr) auto;align-items:center;gap:6px;display:grid}.ingredient-row input{min-width:0}.step-row{grid-template-columns:1.5rem minmax(0,1fr) auto;align-items:start;gap:6px;display:grid}.step-no{padding-top:8px}.row-controls{gap:4px;display:flex}.recipe-list{gap:2px;margin:0;padding:0;list-style:none;display:grid}.recipe-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:baseline;gap:12px;padding:10px 0;display:flex}.share{border-top:1px solid var(--border);margin-top:20px}.share input{box-sizing:border-box;width:100%}@media (width<=520px){.ingredient-row{grid-template-columns:4.5rem minmax(0,1fr)}.ingredient-row .combobox{grid-column:1/-1}.ingredient-row .row-controls{grid-column:1/-1;justify-content:flex-end}}.pantry-form{gap:6px;margin-bottom:16px;display:grid}.pantry-row{grid-template-columns:minmax(0,1fr) 5rem 6rem 9.5rem auto;align-items:center;gap:6px;display:grid}.pantry-row input{min-width:0}.pantry-filter{box-sizing:border-box;width:100%;margin-bottom:8px}.pantry-list{margin:0 0 8px;padding:0;list-style:none}.pantry-list li{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:8px 0;display:flex}.pantry-list li .pantry-form{flex:1;margin:0}.pantry-name{flex:1;min-width:0}.badge{white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.8rem}.badge.expired{color:var(--error);border:1px solid var(--error)}.badge.soon{color:var(--warn);border:1px solid var(--warn)}@media (width<=600px){.pantry-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pantry-row .combobox,.pantry-row .row-controls{grid-column:1/-1}}.badge.ai{color:var(--accent);border:1px solid var(--accent);white-space:normal;border-radius:8px;max-width:100%;margin:0 0 8px;display:inline-block}a.button.secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}.display-name{margin-bottom:14px}.inline-form{gap:8px;display:flex}.inline-form input{flex:1;min-width:0}.gallery{margin:8px 0 12px}.gallery-main{object-fit:cover;background:var(--border);border-radius:10px;width:100%;height:auto;max-height:420px;display:block}.gallery-thumbs{gap:6px;margin-top:6px;display:flex;overflow-x:auto}.gallery-thumbs button{background:0 0;border:2px solid #0000;border-radius:8px;flex:none;padding:0}.gallery-thumbs button.active{border-color:var(--accent)}.gallery-thumbs img{object-fit:cover;border-radius:6px;width:64px;height:48px;display:block}.image-manager{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:0 0 10px;padding:0;list-style:none;display:grid}.image-manager li{gap:4px;display:grid;position:relative}.image-manager img{aspect-ratio:4/3;object-fit:cover;background:var(--border);border-radius:8px;width:100%}.badge.cover{background:var(--card);color:var(--text-h);border:1px solid var(--border);position:absolute;top:6px;left:6px}label.button.upload{background:var(--accent);color:var(--accent-text);cursor:pointer;border-radius:8px;padding:10px 14px;font-weight:600;display:inline-block}label.button.upload.disabled{opacity:.6;cursor:default}.with-thumb{align-items:center;gap:10px;min-width:0;display:flex}.thumb{object-fit:cover;background:var(--border);border-radius:6px;flex:none;width:56px;height:42px}.thumb.empty{display:inline-block}.stars{flex-wrap:wrap;align-items:center;gap:4px 12px;margin:8px 0;display:flex}.star{color:var(--border);background:0 0;padding:0 2px;font-size:1.6rem;line-height:1}.star.on{color:#f59e0b}.rating-badge{color:#b45309;white-space:nowrap;font-size:.85rem}.cooked{margin:12px 0}.cooked p{margin:4px 0}.discover-filters{flex-wrap:wrap;gap:8px 16px;margin:12px 0 8px;display:flex}.discover-filters select{width:auto}.allergen-filter{margin-bottom:12px}.allergen-filter summary{cursor:pointer}.button-row.compact{margin-top:0}.collection-picker{margin:12px 0}.collection-panel{border:1px solid var(--border);border-radius:8px;margin-top:8px;padding:12px}.collection-panel ul{margin:0 0 8px;padding:0;list-style:none}.collection-panel li{padding:4px 0}.note-box{margin:12px 0}.note-box p{margin:4px 0}.link-button{color:var(--accent);background:0 0;padding:0;font-weight:400;text-decoration:underline}.comments{gap:12px;margin:12px 0;padding:0;list-style:none;display:grid}.comments li{border-bottom:1px solid var(--border);padding-bottom:10px}.comments p{white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0}.comment-head{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}select{font:inherit;border:1px solid var(--border);background:var(--bg);color:inherit;border-radius:8px;padding:8px 10px}.link-button.report{color:var(--text);opacity:.75;font-size:.85rem}.report-form{border:1px solid var(--border);box-sizing:border-box;border-radius:10px;width:100%;margin:8px 0;padding:12px}.moderation-cases{gap:16px;margin:0;padding:0;list-style:none;display:grid}.moderation-cases>li{border:1px solid var(--border);border-radius:10px;padding:12px 14px}.moderation-cases .preview{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}.notes{margin:4px 0;padding-left:18px;font-size:.9rem}.week-nav{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.week-nav button.secondary{padding:4px 12px}.plan-days{gap:10px;margin:0;padding:0;list-style:none;display:grid}.plan-days>li{border:1px solid var(--border);border-radius:10px;padding:10px 12px}.plan-days>li.today{border-color:var(--accent)}.plan-entries{gap:6px;margin:6px 0;padding:0;list-style:none;display:grid}.plan-entries>li{grid-template-columns:6.5rem minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.meal-label{opacity:.75;font-size:.85rem}.plan-title{flex-wrap:wrap;gap:6px}.thumb.small{width:36px;height:27px}.plan-edit{flex-wrap:wrap;grid-column:1/-1;gap:6px;display:flex}.plan-edit input[type=number]{width:5.5rem}@media (width<=520px){.plan-entries>li{grid-template-columns:minmax(0,1fr) auto}.meal-label{grid-column:1/-1}}.shopping-list{margin:8px 0;padding:0;list-style:none}.shopping-list li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.shopping-list.done .item-name{opacity:.6;text-decoration:line-through}.pantry-row.shopping-add{grid-template-columns:minmax(0,1fr) 5rem 6rem auto}@media (width<=600px){.pantry-row.shopping-add{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pantry-row.shopping-add .combobox,.pantry-row.shopping-add button{grid-column:1/-1}}.combobox{min-width:0;position:relative}.combobox input{box-sizing:border-box;width:100%}.suggestions{z-index:10;background:var(--card);border:1px solid var(--border);border-radius:8px;min-width:220px;max-height:280px;margin:0;padding:4px 0;list-style:none;position:absolute;top:calc(100% + 2px);left:0;right:0;overflow-y:auto;box-shadow:0 6px 18px #0000001f}.suggestions li{cursor:pointer;justify-content:space-between;gap:10px;padding:6px 10px;display:flex}.suggestions li.active,.suggestions li:hover{background:var(--bg)}.shopping-group h3{color:var(--text-h);margin:14px 0 0;font-size:.95rem}.ingredient-table{margin:8px 0;padding:0;list-style:none}.ingredient-table>li{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;padding:8px 0;display:flex}.danger-zone{border-top-color:var(--error)}.danger-zone h2{color:var(--error)}.intro{margin-bottom:16px}.scanner-backdrop{z-index:50;background:#0009;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.scanner{background:var(--card);border-radius:12px;gap:10px;width:100%;max-width:480px;padding:14px;display:grid}.scanner-video{aspect-ratio:4/3;background:#000;border-radius:8px;position:relative;overflow:hidden}.scanner-video video{object-fit:cover;width:100%;height:100%}.scanner-frame{border:3px solid #ffffffd9;border-radius:8px;position:absolute;inset:32% 12%;box-shadow:0 0 0 999px #00000040}.scan-row{margin-top:0}.scan-result{gap:10px;display:grid}.gallery-caption{flex-wrap:wrap;align-items:center;gap:4px 14px;margin-top:6px;display:flex}button.like{color:var(--text);border:1px solid var(--border);background:0 0;padding:2px 10px;font-weight:600}button.like.on{color:#e11d48;border-color:#e11d48}.add-photo{margin:8px 0}.report-image{border-radius:8px;max-width:240px;margin:4px 0;display:block}.image-manager .meta{font-size:.8rem}.servings-picker{vertical-align:middle;align-items:center;gap:6px;display:inline-flex}.servings-picker input{width:3.2em;font:inherit;text-align:center;border:1px solid var(--border);background:var(--bg);color:inherit;border-radius:6px;padding:2px 4px}.servings-picker button.icon{min-width:28px;line-height:1}.servings-picker .link-button{margin-left:4px;font-size:.875rem}.nutrition{justify-items:start;gap:4px;margin:8px 0 0;display:grid}.nutrition .meta,.nutrition .hint,.nutrition .error{margin:0}.cook-mode{z-index:60;background:var(--bg);color:var(--text);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);grid-template-rows:auto 1fr auto;display:grid;position:fixed;inset:0}.cook-head,.cook-body,.cook-foot{width:min(100% - 32px,44rem);margin:0 auto}.cook-head{padding-top:14px}.cook-head .meta{margin:6px 0 0}.cook-title{color:var(--text-h);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cook-progress{background:var(--border);border-radius:2px;height:4px;margin-top:10px;overflow:hidden}.cook-progress span{background:var(--accent);transform-origin:0;height:100%;transition:transform var(--motion-base) var(--ease-out);display:block}.cook-timers{flex-wrap:wrap;gap:8px;margin:10px 0 0;padding:0;list-style:none;display:flex}.cook-timers li{border:1px solid var(--border);background:var(--card);border-radius:999px;align-items:center;gap:8px;padding:4px 6px 4px 12px;font-size:.9rem;display:inline-flex}.cook-timers .timer-time{font-variant-numeric:tabular-nums;color:var(--text-h)}.cook-timer-hint{margin:6px 0 0;font-size:.8rem}.cook-timers li.alarm{border-color:var(--warn);color:var(--warn);animation:cook-blink var(--motion-blink) step-start infinite}.cook-timers li.alarm .timer-time{color:inherit}@keyframes cook-blink{50%{background:var(--warn);color:var(--card)}}@media (prefers-reduced-motion:no-preference){.cook-step.enter-forward{animation:step-in-right var(--motion-base) var(--ease-out)}.cook-step.enter-back{animation:step-in-left var(--motion-base) var(--ease-out)}}@media (prefers-reduced-motion:reduce){.cook-step.enter-forward,.cook-step.enter-back{animation:fade-in var(--motion-fast) var(--ease-out)}}@keyframes step-in-right{0%{opacity:0;transform:translate(24px)}}@keyframes step-in-left{0%{opacity:0;transform:translate(-24px)}}.timer-ring{flex:none;width:20px;height:20px;transform:rotate(-90deg)}.timer-ring circle{fill:none;stroke-width:3px}.timer-ring-track{stroke:var(--border)}.timer-ring-value{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset var(--timer-tick) linear}@media (prefers-reduced-motion:reduce){.timer-ring-value{transition:none}.cook-timers li.alarm{background:var(--warn);color:var(--card);animation:none}}.cook-body{touch-action:pan-y;padding:20px 0;overflow-y:auto}.cook-step{color:var(--text-h);margin:0 0 16px;font-size:1.35rem;line-height:1.5}.cook-step-ingredients{margin:12px 0;line-height:1.7}.cook-ingredients{border-top:1px solid var(--border);margin-top:16px;padding-top:10px}.cook-ingredients summary{cursor:pointer;font-weight:600}.cook-ingredients ul{margin:8px 0 0;padding-left:20px}.cook-ingredients li.in-step{color:var(--text-h);font-weight:600}.cook-foot{border-top:1px solid var(--border);grid-template-columns:1fr 1fr;gap:12px;padding:12px 0 16px;display:grid}.cook-foot button{padding:14px;font-size:1.05rem}@media (width>=720px){.cook-step{font-size:1.6rem}}.usage-filter{flex-wrap:wrap;gap:12px;margin:12px 0;display:flex}.usage-filter label{align-items:center;gap:6px;display:flex}.share .usage-filter input{width:auto}.usage-table{border-collapse:collapse;width:100%;font-size:.9rem}.usage-table th,.usage-table td{border-bottom:1px solid var(--border);text-align:right;white-space:nowrap;padding:6px 8px}.usage-table th:nth-child(-n+2),.usage-table td:nth-child(-n+2),.audit-table th,.audit-table td{text-align:left}.audit-table td:nth-child(5){white-space:normal;min-width:12rem}.usage-table tfoot td{border-bottom:none;font-weight:600}.ai-working{text-align:center;justify-items:center;gap:6px;padding:12px 0;display:grid}.ai-pot{width:96px;height:auto;color:var(--text)}.ai-pot-line{fill:none;stroke:currentColor;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.ai-pot-fill{fill:var(--card)}.ai-knob{fill:var(--accent)}.ai-steam{fill:none;stroke:var(--accent);stroke-width:3px;stroke-linecap:round;opacity:0;transform-origin:50% 100%;transform-box:fill-box;animation:ai-steam var(--motion-ambient) ease-in-out infinite}@keyframes ai-steam{0%{opacity:0;transform:translateY(6px)}30%{opacity:.9}to{opacity:0;transform:translateY(-18px)scaleX(1.15)}}.ai-lid{transform-origin:50%;transform-box:fill-box;animation:ai-lid var(--motion-ambient) ease-in-out infinite}.ai-steam:nth-of-type(2){animation-delay:calc(var(--motion-ambient) / 3)}.ai-steam:nth-of-type(3){animation-delay:calc(var(--motion-ambient) * 2 / 3)}.ai-flame{fill:var(--warn);transform-origin:50% 100%;transform-box:fill-box;animation:ai-flame calc(var(--motion-ambient) / 4) ease-in-out infinite alternate}.ai-flame:nth-child(2){animation-delay:calc(var(--motion-ambient) / -8)}@keyframes ai-flame{to{opacity:.8;transform:scaleY(.75)scaleX(1.1)}}@keyframes ai-lid{50%{transform:translateY(-2px)rotate(-1.5deg)}}.ai-working-text{color:var(--text-h);animation:ai-fade var(--motion-slow) var(--ease-out);margin:0;font-weight:600}@keyframes ai-fade{0%{opacity:0;transform:translateY(4px)}}@media (prefers-reduced-motion:reduce){.ai-steam,.ai-lid,.ai-flame{animation:none}.ai-working-text{animation-name:fade-in}.ai-steam{opacity:.7}}.usage-table .button-row{flex-wrap:nowrap;margin-top:0}.usage-table .cell-stack{gap:2px;display:grid}.share .inline-form input{width:auto}.reset-link{border:1px solid var(--border);border-radius:8px;gap:8px;margin-top:12px;padding:12px;display:grid}.reset-link p{margin:0}button:not(.link-button):not(.star),a.button,label.button.upload{min-height:var(--tap);border-radius:var(--radius-md);text-align:center;transition:background-color var(--motion-fast) var(--ease-out), color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out), scale var(--motion-fast) var(--ease-out);justify-content:center;align-items:center;gap:6px;line-height:1.25;display:inline-flex}@media (prefers-reduced-motion:no-preference){button:not(.link-button):not(.star):not(:disabled):active,a.button:active,label.button.upload:not(.disabled):active{scale:.97}}.tag button,.gallery-thumbs button,button.like,button.icon,.servings-picker button.icon{min-height:0}button:not(:disabled):hover,a.button:hover,label.button.upload:not(.disabled):hover{background:color-mix(in srgb, var(--accent) 88%, black)}button.secondary:not(:disabled):hover,a.button.secondary:hover{background:var(--accent-soft)}button.ghost,a.button.ghost{color:var(--accent);background:0 0;border:0}button.ghost:not(:disabled):hover,a.button.ghost:hover{background:var(--accent-soft)}button.danger:not(:disabled):hover{background:var(--danger-soft)}button.sm,a.button.sm{min-height:36px;font-size:var(--text-sm);padding:6px 10px}button.icon{border-radius:var(--radius-sm);min-width:36px;min-height:36px;padding:4px 8px}button.icon:not(:disabled):hover{background:var(--surface-2);color:var(--text-h)}button.icon.ghost{border-color:#0000}button.icon.danger{color:var(--error);border-color:#0000}button.icon.danger:not(:disabled):hover{background:var(--danger-soft)}button.icon.sm{min-width:32px;min-height:32px;padding:2px 6px}button.like:not(:disabled):hover,.tag button:hover,.gallery-thumbs button:hover,.link-button:hover,.star:hover{background:0 0}.link-button:hover{color:color-mix(in srgb, var(--accent) 80%, black)}.btn-icon{flex:none}.btn-spinner{width:16px;height:16px;animation:btn-spin var(--motion-spin) linear infinite;border:2px solid;border-right-color:#0000;border-radius:50%;flex:none}@keyframes btn-spin{to{transform:rotate(360deg)}}input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),select{min-height:40px}.tags input,.servings-picker input,.plan-edit input[type=number]{min-height:0}input,select,textarea{transition:border-color var(--motion-fast) var(--ease-out)}input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb, var(--border) 50%, var(--text-muted))}.card{box-shadow:var(--shadow-sm)}h2{font-size:var(--text-xl)}.chip{border-radius:var(--radius-pill);background:var(--surface-2);color:var(--text);font-size:var(--text-xs);white-space:nowrap;align-items:center;gap:4px;max-width:100%;padding:2px 9px;font-weight:500;line-height:1.5;display:inline-flex}.chip svg{flex:none}.chip-accent{background:var(--accent-soft);color:var(--accent)}.chip-warn{background:var(--warn-soft);color:var(--warn)}.chip-danger{background:var(--danger-soft);color:var(--error)}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip.difficulty .hats{gap:1px;display:inline-flex}.chip.difficulty .hats .off{opacity:.3}.loading{gap:10px;margin:8px 0;display:grid}.skeleton{border-radius:var(--radius-sm);background:var(--surface-2);display:block;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff80,#0000);position:absolute;inset:0;transform:translate(-100%)}@media (prefers-color-scheme:dark){.skeleton:after{background:linear-gradient(90deg,#0000,#ffffff14,#0000)}}@media (prefers-reduced-motion:no-preference){.skeleton:after{animation:skeleton-shimmer var(--motion-shimmer) ease-in-out infinite}}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.skeleton-line{width:100%;height:1em}.skeleton-line:nth-child(2n){width:85%}.skeleton-line:nth-child(3n){width:65%}.skeleton-title{width:55%;height:1.6em;margin-bottom:6px}.skeleton-row{border-radius:var(--radius-md);height:48px}.skeleton-tile{border-radius:var(--radius-lg);height:120px}.skeleton-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.skeleton-card{gap:8px;display:grid}.skeleton-cover{aspect-ratio:4/3;border-radius:var(--radius-lg)}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);margin:var(--space-2) 0;border:1px dashed var(--border);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--surface-2) 50%, transparent);justify-items:center;gap:6px;display:grid}.empty-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:50%;place-items:center;margin-bottom:6px;display:grid}.empty-title{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-h);margin:0}.empty-text{color:var(--text-muted);max-width:36rem;margin:0}.empty-action{margin-top:var(--space-3);flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.dialog-overlay{z-index:var(--z-overlay);background:var(--overlay);position:fixed;inset:0}.dialog{z-index:var(--z-overlay);box-sizing:border-box;width:min(100% - 32px,480px);max-height:calc(100dvh - 32px);padding:var(--space-5);background:var(--card);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);gap:var(--space-3);align-content:start;display:grid;position:fixed;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}.dialog.sm{width:min(100% - 32px,400px)}.dialog.lg{width:min(100% - 32px,720px)}.dialog-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.dialog-title{font-size:var(--text-xl);color:var(--text-h);margin:0;line-height:1.3}.dialog-desc{color:var(--text-muted);margin:0}.dialog-body{gap:var(--space-3);min-width:0;display:grid}.dialog-foot{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}@media (width<=719px){.dialog.sheet{border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-width:none;max-height:90dvh;padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom));border-bottom:0;inset:auto 0 0;transform:none}.dialog.sheet:before{content:"";background:var(--border);border-radius:2px;width:40px;height:4px;margin:-6px auto 0;display:block}}.dialog-overlay[data-state=open],.dialog[data-state=open]{animation:fade-in var(--motion-fast) var(--ease-out)}.dialog-overlay[data-state=closed],.dialog[data-state=closed]{animation:fade-out var(--motion-fast) var(--ease-in) forwards}@media (prefers-reduced-motion:no-preference){.dialog[data-state=open]{animation:dialog-in var(--motion-base) var(--ease-out)}.dialog[data-state=closed]{animation:dialog-out var(--motion-fast) var(--ease-in) forwards}@media (width<=719px){.dialog.sheet[data-state=open]{animation:sheet-in var(--motion-slow) var(--ease-out)}.dialog.sheet[data-state=closed]{animation:sheet-out var(--motion-base) var(--ease-in) forwards}}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}@keyframes dialog-out{to{opacity:0;transform:translate(-50%,-48%)scale(.98)}}@keyframes sheet-out{to{transform:translateY(100%)}}@keyframes dialog-in{0%{opacity:0;transform:translate(-50%,-48%)scale(.98)}}@keyframes sheet-in{0%{transform:translateY(100%)}}.menu-content{z-index:var(--z-overlay);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);min-width:220px;max-width:calc(100vw - 24px);box-shadow:var(--shadow-md);padding:6px}.menu-content[data-state=open]{animation:fade-in var(--motion-fast) var(--ease-out)}.menu-content[data-state=closed]{animation:fade-out var(--motion-fast) var(--ease-in) forwards}@media (prefers-reduced-motion:no-preference){.menu-content{transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.menu-content[data-state=open]{animation:menu-in var(--motion-fast) var(--ease-out)}.menu-content[data-state=closed]{animation:menu-out var(--motion-fast) var(--ease-in) forwards}}@keyframes menu-in{0%{opacity:0;transform:scale(.95)}}@keyframes menu-out{to{opacity:0;transform:scale(.95)}}.menu-item{border-radius:var(--radius-sm);min-height:40px;color:var(--text-h);font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;align-items:center;gap:10px;padding:8px 12px;text-decoration:none;display:flex}.menu-item svg{color:var(--text-muted);flex:none}.menu-item[data-highlighted]{background:var(--surface-2)}.menu-item.danger,.menu-item.danger svg{color:var(--error)}.menu-item.danger[data-highlighted]{background:var(--danger-soft)}.menu-item[data-disabled]{opacity:.5;cursor:default}.menu-separator{background:var(--border);height:1px;margin:6px 4px}.tabs-list{border-bottom:1px solid var(--border);margin:var(--space-3) 0 var(--space-4);gap:4px;display:flex}button.tabs-trigger{color:var(--text-muted);transition:color var(--motion-fast) var(--ease-out), border-color var(--motion-base) var(--ease-out);background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;flex:1;margin-bottom:-1px;padding:10px 14px;font-weight:600}button.tabs-trigger:hover{color:var(--text-h);background:0 0}button.tabs-trigger[data-state=active]{color:var(--text-h);border-bottom-color:var(--accent)}.tabs-panel{outline:none}.collapsible summary{cursor:pointer;min-height:var(--tap);color:var(--text-h);align-items:center;gap:8px;font-weight:600;list-style:none;display:flex}.collapsible summary::-webkit-details-marker{display:none}.collapsible summary svg{transition:transform var(--motion-fast) var(--ease-out)}.collapsible[open] summary svg{transform:rotate(90deg)}.dialog-foot button.danger{background:var(--error);color:#fff;border-color:var(--error)}.dialog-foot button.danger:not(:disabled):hover{background:color-mix(in srgb, var(--error) 85%, black)}.count-badge{border-radius:var(--radius-pill);background:var(--error);color:#fff;place-items:center;min-width:18px;height:18px;padding:0 5px;font-size:11px;font-weight:700;line-height:1;display:inline-grid}.count-badge.dot{width:9px;min-width:9px;height:9px;padding:0}.tab-icon{place-items:center;display:inline-grid;position:relative}.tab-icon .count-badge{box-shadow:0 0 0 2px var(--card);position:absolute;top:-6px;right:-10px}.tab-icon .count-badge.dot{top:-2px;right:-3px}button.topbar-user span.tab-icon{overflow:visible}.menu-item .count-badge{margin-left:auto}.avatar{background:var(--accent-soft);width:40px;height:40px;color:var(--accent);font-weight:700;font-size:var(--text-sm);border-radius:50%;flex:none;place-items:center;display:inline-grid}.avatar.sm{width:28px;height:28px;font-size:var(--text-xs)}.hint.block{display:block}.card.xl{max-width:1100px}.card.detail{max-width:880px}.card.plan{max-width:860px}@media (width<=519px){.card.xl,.card.detail,.card.plan{padding:20px 16px}}.app-shell.has-tabbar{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.topbar{z-index:var(--z-topbar);background:color-mix(in srgb, var(--card) 92%, transparent);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--border);position:sticky;top:0}.topbar-inner{max-width:1100px;min-height:var(--topbar-h);align-items:center;gap:var(--space-4);margin:0 auto;padding:0 16px;display:flex}.brand{flex-shrink:0;align-items:center;display:inline-flex}.brand .brand-mark{display:none}.brand-bowl{fill:var(--brand-bowl)}.brand-steam{stroke:var(--brand-steam)}.brand-wordmark{fill:var(--brand-wordmark)}.auth-logo{margin:0 auto var(--space-4);display:block}.topbar-nav{flex:1;align-items:center;gap:2px;min-width:0;display:flex}.topbar-nav a{border-radius:var(--radius-md);min-height:40px;color:var(--text);white-space:nowrap;align-items:center;gap:6px;padding:6px 12px;font-weight:500;text-decoration:none;display:inline-flex}.topbar-nav a:hover{background:var(--surface-2);color:var(--text-h)}.topbar-nav a.active{background:var(--accent-soft);color:var(--accent)}.topbar-actions{align-items:center;gap:var(--space-2);flex:none;margin-left:auto;display:flex}button.topbar-user{color:var(--text-h);border:1px solid var(--border);border-radius:var(--radius-pill);background:0 0;max-width:220px;min-height:40px;padding:4px 10px 4px 8px;font-weight:500}button.topbar-user span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button.topbar-user:not(:disabled):hover{background:var(--surface-2)}.topbar-link{color:var(--text);border-radius:var(--radius-md);padding:8px 10px;font-weight:500;text-decoration:none}.topbar-link:hover,.topbar-link.active{background:var(--surface-2);color:var(--text-h)}@media (width<=519px){.topbar-nav.guest{display:none}.topbar-inner{gap:var(--space-2);padding:0 12px}.brand .brand-logo{width:auto;height:24px}.topbar-link{padding:8px 6px}}@media (width<=379px){.brand .brand-logo{display:none}.brand .brand-mark{display:block}}.tabbar{z-index:var(--z-tabbar);padding-bottom:env(safe-area-inset-bottom);background:var(--card);border-top:1px solid var(--border);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #0000000f}.tab,button.tab{min-height:var(--tabbar-h);color:var(--text-muted);line-height:1.25;font-size:var(--text-xs);background:0 0;border:0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:8px 4px;font-weight:500;text-decoration:none;display:flex}.tab.active{color:var(--accent)}button.tab:not(:disabled):hover,.tab:hover{color:var(--text-h);background:0 0}button.fab{right:16px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px);z-index:var(--z-fab);background:var(--accent);width:56px;height:56px;color:var(--accent-text);box-shadow:var(--shadow-lg);border-radius:50%;padding:0;position:fixed}.create-options button.sheet-option,.create-options a.sheet-option{justify-content:flex-start;align-items:center;gap:var(--space-3);border-radius:var(--radius-md);width:100%;min-height:56px;color:var(--text-h);text-align:left;background:0 0;border:0;padding:8px 10px;font-weight:400;text-decoration:none;display:flex}.create-options button.sheet-option:not(:disabled):hover,.create-options a.sheet-option:hover{background:var(--surface-2)}.recipe-grid{margin:var(--space-3) 0 0;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));padding:0;list-style:none;display:grid}.recipe-grid.compact{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.recipe-card{gap:var(--space-2);border-radius:var(--radius-lg);background:var(--card);min-width:0;transition:transform var(--motion-fast) var(--ease-out), box-shadow var(--motion-fast) var(--ease-out);flex-direction:column;display:flex;position:relative}@media (prefers-reduced-motion:no-preference) and (hover:hover){.recipe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}}.recipe-card-link{gap:var(--space-2);color:var(--text-h);min-width:0;text-decoration:none;display:grid}.recipe-card-link:after{content:"";border-radius:inherit;position:absolute;inset:0}.recipe-card-link:focus-visible{outline:none}.recipe-card:has(.recipe-card-link:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.recipe-card-cover{aspect-ratio:4/3;border-radius:var(--radius-lg);background:var(--surface-2);display:block;position:relative;overflow:hidden}.recipe-card-cover img{object-fit:cover;width:100%;height:100%;display:block}.recipe-card-placeholder{width:100%;height:100%;color:var(--text-muted);background:linear-gradient(135deg, var(--surface-2), var(--accent-soft));place-items:center;display:grid}.recipe-card-badge{border-radius:var(--radius-pill);background:color-mix(in srgb, var(--card) 88%, transparent);color:var(--text-h);font-size:var(--text-xs);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);padding:2px 9px;font-weight:600;position:absolute;top:8px;left:8px}.recipe-card-title{font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3;display:-webkit-box;overflow:hidden}.compact .recipe-card-title{font-size:var(--text-md)}.recipe-card-meta{font-size:var(--text-sm);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.recipe-card-author{z-index:1;width:100%;position:relative}.recipe-card-action{z-index:1;gap:6px;margin-top:auto;display:flex;position:relative}.toolbar{align-items:center;gap:var(--space-2);margin:var(--space-3) 0 var(--space-2);flex-wrap:wrap;display:flex}.toolbar .search{flex:220px;min-width:0;position:relative}.toolbar .search svg{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:10px;transform:translateY(-50%)}.toolbar .search input{box-sizing:border-box;width:100%;padding-left:34px}.create-options{gap:4px;margin:0;padding:0;list-style:none;display:grid}.create-option{align-items:center;gap:var(--space-3);border-radius:var(--radius-md);min-height:60px;color:var(--text-h);padding:8px 10px;text-decoration:none;display:flex}.create-option:hover{background:var(--surface-2)}.create-option-icon{border-radius:var(--radius-md);background:var(--accent-soft);width:40px;height:40px;color:var(--accent);flex:none;place-items:center;display:grid}.create-option-text{text-align:left;flex:1;gap:2px;min-width:0;display:grid}.create-option-text .hint{font-size:var(--text-sm)}.create-option>svg:last-child{color:var(--text-muted);flex:none}.recipe-hero{margin:-28px -28px var(--space-4)}.recipe-hero .gallery{margin:0}.recipe-hero .gallery-main{border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:480px}.recipe-hero .gallery-thumbs,.recipe-hero .gallery-caption{padding:0 var(--space-4)}@media (width<=519px){.recipe-hero{margin:-20px -16px var(--space-4)}.recipe-hero .gallery-main{border-radius:0;max-height:320px}}.recipe-head{gap:var(--space-2);display:grid}.recipe-head h1,.recipe-head .meta{margin:0}.recipe-head .badge.ai{margin:4px 0 0}.action-bar{top:var(--topbar-h);z-index:var(--z-sticky);align-items:center;gap:var(--space-2);margin:var(--space-4) -8px;background:var(--card);border-top:1px solid var(--border);border-bottom:1px solid var(--border);flex-wrap:wrap;padding:10px 8px;display:flex;position:sticky}.action-bar-menu{margin-left:auto}@media (width<=519px){.action-bar>.action-bar-cook{flex:1}.action-bar>.action-bar-menu{order:1}.action-bar>:not(.action-bar-cook):not(.action-bar-menu){order:2}}.recipe-description{font-size:var(--text-lg);color:var(--text)}.servings-print{display:none}.recipe-cols{gap:var(--space-8);margin-top:var(--space-4);grid-template-columns:minmax(280px,340px) minmax(0,1fr);align-items:start;display:grid}.recipe-cols>section{min-width:0}.recipe-cols h2{margin-top:0}.recipe-servings{margin:0 0 var(--space-2)}.ingredient-tbl{border-collapse:collapse;width:100%}.ingredient-tbl td{border-bottom:1px solid var(--border);vertical-align:top;padding:8px 6px}.ingredient-tbl td.amt{white-space:nowrap;text-align:right;width:1%;color:var(--text-h);font-variant-numeric:tabular-nums;font-weight:600}.ingredient-tbl label{cursor:pointer;align-items:flex-start;gap:10px;font-weight:400;display:flex}.ingredient-tbl .check-mark{margin:3px 0 0}.ingredient-tbl tr.done td{opacity:.55}.ingredient-tbl tr.done .name{text-decoration:line-through}.recipe-steps{margin:0;padding-left:1.4em}.recipe-steps li{padding:6px 0 6px 6px;line-height:1.6}.recipe-steps li::marker{font-family:var(--font-display);color:var(--accent);font-weight:600}.tabs-panel>.recipe-servings{margin-top:0}.dash-section{margin-top:var(--space-6)}.dash-section>.actions{margin-bottom:var(--space-2)}.dash-section>.actions h2{margin:0}.dash-section>.actions a{white-space:nowrap;font-weight:500}.dash-tiles{gap:var(--space-4);margin-top:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.dash-tile{gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);flex-direction:column;display:flex}.dash-tile-head{align-items:center;gap:10px;display:flex}.dash-tile-head h2{font-size:var(--text-lg);margin:0}.dash-tile-icon{border-radius:var(--radius-md);background:var(--accent-soft);width:32px;height:32px;color:var(--accent);flex:none;place-items:center;display:grid}.dash-tile-body{flex:1;align-content:start;gap:6px;display:grid}.dash-tile-body .hint,.dash-tile-body .loading{margin:0}.dash-number{font-family:var(--font-display);font-size:var(--text-3xl);color:var(--text-h);margin:0;line-height:1}.dash-number-label{font-family:var(--font-body);font-size:var(--text-md);color:var(--text-muted)}.dash-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.dash-list li{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.dash-tile-link{align-items:center;gap:4px;margin-top:auto;font-weight:500;text-decoration:none;display:inline-flex}.dash-tile-link:hover{text-decoration:underline}.week-switch{align-items:center;gap:var(--space-2);flex:100%;display:flex}.week-switch strong{text-align:center;font-family:var(--font-display);font-size:var(--text-lg);flex:1}@media (width>=720px){.week-switch{flex:0 auto}.week-switch strong{flex:none}}.day-strip{margin:0 -16px var(--space-3);scroll-snap-type:x proximity;scrollbar-width:none;gap:6px;padding:4px 16px 8px;display:flex;overflow-x:auto}.day-strip::-webkit-scrollbar{display:none}button.day-chip{border-radius:var(--radius-md);background:var(--surface-2);min-width:58px;min-height:64px;color:var(--text-muted);font-size:var(--text-xs);scroll-snap-align:start;flex:none;justify-items:center;gap:2px;padding:8px 6px;font-weight:500;display:grid;position:relative}button.day-chip strong{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text-h);line-height:1}button.day-chip.today:after{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:6px;right:6px}button.day-chip[aria-selected=true],button.day-chip[aria-selected=true]:not(:disabled):hover{background:var(--accent);color:var(--accent-text)}button.day-chip[aria-selected=true] strong{color:inherit}button.day-chip[aria-selected=true].today:after{background:var(--accent-text)}button.day-chip:not(:disabled):hover{background:var(--border)}.day-chip-count{background:var(--card);min-width:16px;height:16px;color:var(--text-h);border-radius:8px;place-items:center;padding:0 4px;font-size:10px;font-weight:600;display:grid}.plan-days>li{border-radius:var(--radius-lg);padding:12px 14px}.plan-days>li.today{box-shadow:inset 0 0 0 1px var(--accent)}.plan-cost{justify-content:space-between;align-items:center;gap:var(--space-2) var(--space-3);margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2,var(--surface));font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.plan-cost .check{font-size:var(--text-sm);margin:0}.plan-day-cost{font-variant-numeric:tabular-nums;margin-left:auto}.shopping-add-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.shopping-add-row .combobox{flex:220px}.shopping-add-row input.amount{width:5.5rem}.shopping-add-row input.unit{width:6.5rem}.shopping-group h3{top:var(--topbar-h);z-index:1;margin:var(--space-3) 0 0;background:var(--card);font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding:8px 0 4px;font-weight:600;position:sticky}.shopping-list li{min-height:var(--tap);padding:6px 0}.shopping-list label.check{min-height:var(--tap);cursor:pointer;flex:1;align-items:center}fieldset.form-section{padding:var(--space-4) var(--space-4) var(--space-5);border-radius:var(--radius-lg);background:var(--card);box-shadow:var(--shadow-sm)}fieldset.form-section>legend{font-family:var(--font-display);font-size:var(--text-lg);padding:0 8px}.step-row textarea{min-height:3.5em}.store-list{margin:var(--space-2) 0;padding:0;list-style:none}.store-list li{align-items:center;gap:var(--space-2);min-height:var(--tap);border-bottom:1px solid var(--border);display:flex}.store-list li>span:not(.meta){flex:1}.store-list.results li{font-size:var(--text-sm)}.store-search{gap:var(--space-2);display:flex}.store-search input{flex:1}.price-product{margin:0 0 var(--space-3)}.shopping-cost h2{font-size:var(--text-lg)}.cost-stores,.price-list,.purchase-list{margin:var(--space-2) 0;padding:0;list-style:none}.cost-stores li,.price-list li{align-items:baseline;gap:var(--space-1) var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.cost-store,.price-store{flex:12rem}.cost-total{font-variant-numeric:tabular-nums;font-weight:600}.cost-stores li.cheapest .cost-total{color:var(--accent)}.cost-mix{color:var(--text-muted)}.price-value{align-items:baseline;gap:var(--space-1);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:inline-flex}.shopping-list .icon-link{width:32px;height:32px;color:var(--text-muted);justify-content:center;align-items:center;display:inline-flex}.recipe-cost{margin:var(--space-3) 0}.recipe-cost summary{cursor:pointer;font-weight:600}.cost-headline{margin:var(--space-2) 0 var(--space-1);font-variant-numeric:tabular-nums}.cost-headline strong{font-size:var(--text-lg)}.cost-sources{margin:0 0 var(--space-2)}.recipe-cost .check{margin:0 0 var(--space-2);font-size:var(--text-sm)}.cost-lines{border-collapse:collapse;width:100%;font-size:var(--text-sm);margin:var(--space-2) 0}.cost-lines td{padding:var(--space-1) var(--space-2) var(--space-1) 0;border-bottom:1px solid var(--border);vertical-align:baseline}.cost-lines td:first-child{width:40%}.cost-lines td:nth-child(2){text-align:right;white-space:nowrap}.cost-lines tr.unpriced td:first-child{color:var(--text-muted)}.price-table,.receipt-table{border-collapse:collapse;width:100%;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.price-table th,.receipt-table th{text-align:left;color:var(--text-muted);font-weight:600}.price-table td,.price-table th,.receipt-table td,.receipt-table th{padding:var(--space-2) var(--space-2) var(--space-2) 0;border-bottom:1px solid var(--border);vertical-align:top}.price-table td.num{text-align:right}.receipt-table input{width:100%}.receipt-table input.amount{width:5.5em}.receipt-table .meta{display:block}.inline-filter{align-items:center;gap:var(--space-2);display:inline-flex}.hero-number{font-family:var(--font-display);font-size:var(--text-3xl);font-variant-numeric:tabular-nums;margin:0}.purchase-list summary{justify-content:space-between;gap:var(--space-3);padding:var(--space-2) 0;cursor:pointer;border-bottom:1px solid var(--border);display:flex}.chart{--chart-1:#2f7d4f;margin:var(--space-3) 0;position:relative}@media (prefers-color-scheme:dark){.chart{--chart-1:#4daa72}}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-axis{fill:var(--text-muted);font-size:12px}.chart-value{fill:var(--text-h);font-size:12px;font-weight:600}.chart-line{fill:none;stroke:var(--chart-1);stroke-width:2px;stroke-linejoin:round}.chart-dot{fill:var(--chart-1);stroke:var(--card);stroke-width:2px}.chart-dot.offer{fill:var(--card);stroke:var(--chart-1)}.chart-bar{fill:var(--chart-1)}.chart-hit{fill:#0000}.chart g:focus{outline:none}.chart g:focus-visible .chart-dot,.chart g:focus-visible .chart-bar{stroke:var(--text-h);stroke-width:2px}.chart-tooltip{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--card);box-shadow:var(--shadow-md);font-size:var(--text-sm);pointer-events:none;white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.table-scroll{overflow-x:auto}.table-scroll .price-table{min-width:34rem}.price-form .row>label,.store-form .row>label{flex:1 1 0;min-width:0}.price-form select,.price-form input:not([type=checkbox]),.store-form input{box-sizing:border-box;width:100%}.osm-search{gap:var(--space-3);flex-direction:column;display:flex}.osm-search .button-row,.osm-search .store-list{margin:0}.store-map-wrap{position:relative}.store-map{border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface-2);z-index:0;height:280px;overflow:hidden}.store-map.small{height:180px;margin:var(--space-2) 0 var(--space-3)}.store-map-action{top:var(--space-2);z-index:500;box-shadow:var(--shadow-md);position:absolute;left:50%;transform:translate(-50%)}.store-pin span{background:var(--accent);width:22px;height:22px;box-shadow:var(--shadow-sm);box-sizing:border-box;border:2px solid #fff;border-radius:50% 50% 50% 0;display:block;transform:rotate(-45deg)}.store-pin--existing span{background:var(--text-muted)}.store-pin--mine span{background:var(--text-h)}.store-pin.is-active span{outline:3px solid var(--accent-soft);transform:rotate(-45deg)scale(1.25)}.osm-hits{max-height:40vh;overflow-y:auto}.osm-hits li.is-selected{background:var(--accent-soft)}.osm-hit{align-items:baseline;gap:0 var(--space-1);min-width:0;padding:var(--space-2) var(--space-1);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-wrap:wrap;flex:1;display:flex}.osm-hit-address{flex-basis:100%}.classification-group{margin-bottom:var(--space-3)}.classification-group .group-label,.classification-group summary{margin-bottom:var(--space-2);font-weight:500;display:block}.classification-group summary{cursor:pointer}.badge-patch{filter:drop-shadow(0 1px 1.5px #14121840);flex:none}.badge-patch.locked{filter:grayscale();opacity:.4}[data-sonner-toast] [data-icon].badge-toast-icon{width:28px;height:28px;margin-right:var(--space-1)}.author-badge{margin-left:var(--space-1);vertical-align:-3px;display:inline-block}.badge-strip{align-items:center;gap:var(--space-2) var(--space-3);margin:var(--space-3) 0;flex-wrap:wrap;display:flex}.badge-strip-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.badge-strip-item{border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;padding:0;display:grid}.badge-list,.badge-grid,.badge-recent{margin:0;padding:0;list-style:none}.badge-row,.badge-card{gap:var(--space-3);align-items:flex-start;display:flex}.badge-row+.badge-row{margin-top:var(--space-4)}.badge-row p,.badge-card p{margin:var(--space-1) 0 0}.badges-section{scroll-margin-top:calc(var(--topbar-h) + var(--space-4))}.badges-section select{margin-top:var(--space-1);display:block}.badge-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));display:grid}.badge-card{padding:var(--space-3);background:var(--surface-2);border-radius:var(--radius-md)}.badge-card.locked strong{color:var(--text-muted)}.badge-progress{height:6px;margin-top:var(--space-2);background:var(--border);border-radius:var(--radius-pill);overflow:hidden}.badge-progress>span{background:var(--accent);border-radius:inherit;height:100%;transition:width var(--motion-slow) var(--ease-out);display:block}.badge-recent{gap:var(--space-2);flex-direction:column;display:flex}.badge-recent li{align-items:center;gap:var(--space-2);display:flex}.badge-recent .meta{margin-left:auto}@media (prefers-reduced-motion:reduce){.badge-progress>span{transition:none}}.choice-row{gap:var(--space-2);flex-wrap:wrap;display:flex}button.choice{min-height:var(--tap);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--card);color:var(--text);transition:background-color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out), transform var(--motion-fast) var(--ease-out);padding:8px 14px;font-weight:500}button.choice:not(:disabled):hover{border-color:var(--accent)}button.choice:active{transform:scale(.96)}button.choice.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}button.choice.on.dislike{background:var(--danger-soft);border-color:var(--error);color:var(--error)}.cooking-field{gap:var(--space-2);margin-top:var(--space-4);display:grid}.cooking-field .field-label{font-weight:600}.onboarding{max-width:640px;min-height:100dvh;padding:var(--space-4) var(--space-4) 0;background:var(--bg);flex-direction:column;margin:0 auto;display:flex}.onboarding-head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.onboarding-progress{height:6px;margin-top:var(--space-4);border-radius:var(--radius-pill);background:var(--surface-2);overflow:hidden}.onboarding-progress span{border-radius:inherit;background:var(--accent);height:100%;transition:width var(--motion-slow) var(--ease-out);display:block}.onboarding-step{padding:var(--space-6) 0 var(--space-4);animation:onboarding-in var(--motion-slow) var(--ease-out);flex:1}.onboarding-step h1{margin:0 0 var(--space-2);font-size:var(--text-2xl)}.onboarding-step h1:focus{outline:none}.onboarding-step .lead{margin:0 0 var(--space-5);color:var(--text-muted)}.onboarding-step .consent{margin-bottom:var(--space-4);font-size:var(--text-sm)}.onboarding-step .hint{margin-top:var(--space-3)}.onboarding-sub{margin:var(--space-6) 0 var(--space-3);font-size:var(--text-md)}.onboarding-more{margin-top:var(--space-5)}.onboarding-more summary{cursor:pointer;color:var(--accent);min-height:var(--tap);align-items:center;font-weight:600;display:flex}.onboarding-more[open]{gap:var(--space-3);display:grid}.servings-stepper{align-items:center;gap:var(--space-4);display:flex}.servings-stepper button.icon{width:var(--tap);height:var(--tap);border-radius:50%}.servings-stepper output{font-size:var(--text-xl);text-align:center;min-width:8ch;font-weight:600}.onboarding-actions{padding:var(--space-3) 0 calc(var(--space-4) + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--border);position:sticky;bottom:0}.onboarding-actions .button-row{justify-content:flex-end}.onboarding-actions .error{margin:0 0 var(--space-2)}.onboarding-summary{gap:var(--space-2);margin:0 0 var(--space-4);display:grid}.onboarding-summary div{gap:var(--space-3);grid-template-columns:minmax(8rem,auto) 1fr;display:grid}.onboarding-summary dt{color:var(--text-muted)}.onboarding-summary dd{margin:0}.onboarding-done-actions{gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap;display:flex}@keyframes onboarding-in{0%{opacity:0;transform:translate(16px)}}@media (prefers-reduced-motion:reduce){.onboarding-step,.onboarding-progress span,button.choice{transition:none;animation:none}}.onboarding-banner,.getting-started{margin:0 0 var(--space-6);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);box-shadow:var(--shadow-sm)}.onboarding-banner{gap:var(--space-3);background:var(--accent-soft);border-color:#0000;grid-template-columns:auto 1fr auto;align-items:start;display:grid}.onboarding-banner-icon{color:var(--accent);margin-top:2px}.onboarding-banner h2,.getting-started h2{font-size:var(--text-lg);margin:0}.onboarding-banner p{margin:var(--space-1) 0 var(--space-3)}.getting-started>header{justify-content:space-between;align-items:start;gap:var(--space-3);display:flex}.getting-started-progress{margin:var(--space-1) 0 0;color:var(--text-muted);font-size:var(--text-sm)}.getting-started-bar{height:6px;margin:var(--space-3) 0 var(--space-2);border-radius:var(--radius-pill);background:var(--surface-2);overflow:hidden}.getting-started-bar span{background:var(--accent);border-radius:inherit;height:100%;transition:width var(--motion-slow) var(--ease-out);display:block}.getting-started-tasks{margin:0;padding:0;list-style:none}.getting-started-tasks li{gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.getting-started-tasks li .check-mark{align-self:start;margin-top:2px}.getting-started-tasks li p{color:var(--text-muted);font-size:var(--text-sm);margin:2px 0 0}.getting-started-tasks li.done strong{color:var(--text-muted);text-decoration:line-through}.getting-started-more summary{cursor:pointer;min-height:var(--tap);color:var(--accent);align-items:center;font-weight:600;display:flex}.getting-started-more ul{gap:var(--space-1);margin:0;padding:0;list-style:none;display:grid}.getting-started-more a{column-gap:var(--space-2);padding:var(--space-2);border-radius:var(--radius-md);color:inherit;grid-template-columns:1fr auto;text-decoration:none;display:grid}.getting-started-more a:hover{background:var(--surface-2)}.getting-started-more a span{color:var(--text-muted);font-size:var(--text-sm);grid-column:1}.getting-started-more a svg{grid-area:1/2/span 2;align-self:center}.getting-started.done p{margin:var(--space-2) 0 var(--space-3)}@media (width<=719px){.getting-started-tasks li{grid-template-columns:auto 1fr}.getting-started-tasks li>.button,.getting-started-tasks li>button{grid-column:2;justify-self:start}}.discover-for-me{align-items:baseline;column-gap:var(--space-2);margin:var(--space-3) 0 0;flex-wrap:wrap}.discover-for-me .hint{flex-basis:100%;padding-left:26px}.onboarding-step h1+:not(.lead){margin-top:var(--space-4)}.friends-page .lead{color:var(--text-muted)}.friends-search,.friends-invite{margin-bottom:var(--space-6)}.friends-invite h2{margin-bottom:var(--space-1);font-size:var(--text-lg)}.friends-invite input{width:100%;margin-top:var(--space-3)}.friends-sub{margin:var(--space-4) 0 var(--space-2);font-size:var(--text-md)}.person-list{margin:0;padding:0;list-style:none}.person-list li{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--border);display:flex}.person-name{flex:1;min-width:0;display:grid}.person-name a,.person-name span:first-child{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.person-actions{justify-content:flex-end;gap:var(--space-2);flex-wrap:wrap;display:flex}.profile-more-actions{gap:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}@media (width<=719px){.person-list li{flex-wrap:wrap}.person-actions{padding-left:calc(40px + var(--space-3));flex-basis:100%;justify-content:flex-start}}.route-error{min-height:100dvh;padding:var(--space-4);place-items:center;display:grid}.app-event-list{margin:0 0 var(--space-3);gap:var(--space-3);padding:0;list-style:none;display:grid}.app-event-list li{border-bottom:1px solid var(--border);min-width:0;padding-bottom:var(--space-3)}.app-event-list p{margin:0 0 var(--space-1);overflow-wrap:anywhere}.app-event-list pre{font-size:var(--text-sm);white-space:pre;max-height:20rem;overflow-x:auto}button.chat-fab{right:24px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:var(--z-chat-fab);border:1px solid var(--border);background:var(--card);width:52px;height:52px;color:var(--accent);box-shadow:var(--shadow-lg);border-radius:50%;padding:0;position:fixed}button.chat-fab--tabbar{right:18px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px + 56px + 12px);width:48px;height:48px}@media print{button.chat-fab{display:none}}.dialog.chat-dialog{flex-direction:column;height:min(85dvh,760px);display:flex;overflow:hidden}.dialog.chat-dialog .dialog-body{flex-direction:column;flex:1;gap:0;min-height:0;display:flex}.chat-dialog-tools{top:var(--space-5);right:calc(var(--space-5) + 44px);position:absolute}.chat{gap:var(--space-3);flex-direction:column;flex:1;min-height:0;display:flex}.chat-log{gap:var(--space-3);min-height:0;padding:var(--space-1) 2px;overscroll-behavior:contain;flex-direction:column;flex:1;display:flex;overflow-y:auto}.chat-empty{gap:var(--space-2);display:grid}.chat-examples{gap:var(--space-2);flex-wrap:wrap;display:flex}button.chat-example{border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--surface-2);color:var(--text-h);font-size:var(--text-sm);text-align:left;padding:6px 12px;font-weight:500}.chat-msg{max-width:85%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-lg);overflow-wrap:anywhere}.chat-msg p{margin:0}.chat-msg--user{background:var(--accent);color:var(--accent-text);border-bottom-right-radius:var(--radius-sm);white-space:pre-wrap;align-self:flex-end}.chat-msg--assistant{background:var(--surface-2);color:var(--text);border-bottom-left-radius:var(--radius-sm);align-self:flex-start}.markdown{gap:var(--space-2);display:grid}.markdown ul,.markdown ol{margin:0;padding-left:1.3em}.markdown li+li{margin-top:2px}.markdown-heading{color:var(--text-h);font-weight:700}.chat-working{align-items:center;gap:var(--space-2);color:var(--text-muted);font-size:var(--text-sm);display:flex}.chat-working .btn-spinner{color:var(--accent)}.chat-card{align-self:stretch;gap:var(--space-2);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--card);display:grid}.chat-card h3,.chat-card p,.chat-card ul,.chat-card ol{margin:0}.chat-card-label{align-items:center;gap:var(--space-1);color:var(--text-muted);font-size:var(--text-sm);font-weight:600;display:flex}.chat-card-meta{gap:var(--space-1);flex-wrap:wrap;display:flex}.chat-card-list{padding-left:1.2em}.chat-card details ul,.chat-card details ol{margin-top:var(--space-2);padding-left:1.2em}.chat-card-warning{align-items:flex-start;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--warn-soft);color:var(--text-h);font-size:var(--text-sm);display:flex}.chat-card-warning svg{flex:none;margin-top:2px}.chat-card-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.chat-card-status{color:var(--text-muted);font-weight:600}.chat-card-status.done{color:var(--accent)}.chat-input{gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border);display:grid}.chat-context{justify-self:start;align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);background:var(--accent-soft);max-width:100%;color:var(--text-h);font-size:var(--text-sm);padding:2px 4px 2px 10px;display:inline-flex}.chat-context>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}button.chat-context-remove{width:24px;height:24px;color:inherit;background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:inline-grid}.chat-input-row{align-items:flex-end;gap:var(--space-2);display:flex}.chat-input-row textarea{resize:none;field-sizing:content;flex:1;min-height:44px;max-height:160px}button.icon.chat-send{background:var(--accent);width:44px;height:44px;color:var(--accent-text);border-color:var(--accent);border-radius:50%;flex:none}button.icon.chat-send:disabled{opacity:.5}.chat-foot{font-size:var(--text-xs);margin:0}.chat--large .chat-msg,.chat--large .chat-card,.chat--large textarea{font-size:var(--text-lg)}.assistant-page{flex-direction:column;display:flex}.assistant-head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.assistant-head h1{align-items:center;gap:var(--space-2);display:flex}.assistant-layout{gap:var(--space-5);grid-template-columns:240px minmax(0,1fr);display:grid}.assistant-chat{flex-direction:column;height:calc(100dvh - 240px);min-height:420px;display:flex}.chat-conversations{align-content:start;gap:var(--space-3);display:grid}.chat-conversations ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.chat-conversations li{align-items:center;gap:var(--space-1);border-radius:var(--radius-md);display:flex}.chat-conversations li.active{background:var(--accent-soft)}button.chat-conversation{min-width:0;padding:var(--space-2);color:var(--text-h);text-align:left;background:0 0;border:0;flex:1;gap:2px;font-weight:500;display:grid}.chat-conversation-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}@media (width<=719px){.assistant-layout{grid-template-columns:minmax(0,1fr)}.assistant-chat{height:calc(100dvh - var(--tabbar-h) - 200px);min-height:360px}.chat-msg{max-width:92%}}.topbar{view-transition-name:topbar}.tabbar{view-transition-name:tabbar}.fab{view-transition-name:fab}::view-transition-group(*){animation-duration:var(--motion-base);animation-timing-function:var(--ease-out)}::view-transition-old(root){animation:var(--motion-fast) var(--ease-in) both fade-out}::view-transition-new(root){animation:var(--motion-base) var(--ease-out) both fade-in}::view-transition-old(*.recipe-image){object-fit:cover;width:100%;height:100%;overflow:clip}::view-transition-new(*.recipe-image){object-fit:cover;width:100%;height:100%;overflow:clip}::view-transition-group(*.recipe-image){animation-duration:var(--motion-slow)}::view-transition-group(*.recipe-title){animation-duration:var(--motion-slow)}::view-transition-old(*.recipe-title){object-fit:none;object-position:left top;width:auto;height:100%}::view-transition-new(*.recipe-title){object-fit:none;object-position:left top;width:auto;height:100%}@media (width<=719px) and (prefers-reduced-motion:no-preference){::view-transition-old(root){animation:var(--motion-base) var(--ease-out) both vt-slide-out-left}::view-transition-new(root){animation:var(--motion-base) var(--ease-out) both vt-slide-in-right}html[data-nav-dir=back]::view-transition-old(root){animation-name:vt-slide-out-right}html[data-nav-dir=back]::view-transition-new(root){animation-name:vt-slide-in-left}}@media (prefers-reduced-motion:reduce){::view-transition-group(*){animation:none}::view-transition-old(*){animation:none}::view-transition-new(*){animation:none}}@keyframes vt-slide-in-right{0%{opacity:0;transform:translate(32px)}}@keyframes vt-slide-out-left{to{opacity:0;transform:translate(-16px)}}@keyframes vt-slide-in-left{0%{opacity:0;transform:translate(-16px)}}@keyframes vt-slide-out-right{to{opacity:0;transform:translate(32px)}}main[tabindex="-1"]:focus{outline:none}.fade-image{opacity:0;transition:opacity var(--motion-slow) var(--ease-out)}.fade-image[data-loaded]{opacity:1}.gallery-thumbs button{background:var(--surface-2)}.num-roll{vertical-align:bottom;font-variant-numeric:tabular-nums;display:inline-flex;overflow:hidden}.num-roll>span{display:inline-block}@media (prefers-reduced-motion:no-preference){.num-roll-up{animation:num-up var(--motion-base) var(--ease-out)}.num-roll-down{animation:num-down var(--motion-base) var(--ease-out)}}@keyframes num-up{0%{opacity:0;transform:translateY(60%)}}@keyframes num-down{0%{opacity:0;transform:translateY(-60%)}}.amount-swap{animation:fade-in var(--motion-base) var(--ease-out);display:inline-block}.like-heart,.bookmark .btn-icon{display:inline-block}.check-mark{flex:none;place-items:center;width:22px;height:22px;display:inline-grid;position:relative}.check-mark.sm{width:18px;height:18px}.check-mark.sm svg{inset:2px}.check-mark input{appearance:none;border:2px solid color-mix(in srgb, var(--border) 40%, var(--text-muted));border-radius:var(--radius-sm);background:var(--card);cursor:pointer;width:100%;height:100%;transition:background-color var(--motion-fast) var(--ease-out), border-color var(--motion-fast) var(--ease-out);margin:0}.check-mark input:checked{background:var(--accent);border-color:var(--accent)}.check-mark input:disabled{cursor:default}.check-mark svg{pointer-events:none;fill:none;stroke:var(--accent-text,#fff);stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:16;stroke-dashoffset:16px;transition:stroke-dashoffset var(--motion-base) var(--ease-out);position:absolute;inset:3px}.check-mark input:checked+svg{stroke-dashoffset:0}@media (prefers-reduced-motion:reduce){.check-mark svg{transition:none}}.celebrate-layer{z-index:var(--z-toast);pointer-events:none;width:0;height:0;position:fixed}.celebrate-spark{opacity:0;border-radius:2px;width:7px;height:7px;position:absolute;top:0;left:0}.celebrate-spark:nth-child(3n){border-radius:50%}.celebrate-content{opacity:0;position:absolute;top:0;left:0}.skeleton-hero{aspect-ratio:16/9;border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-height:420px}.recipe-skeleton .recipe-head h1{margin:0}.results-stale{opacity:.5;transition:opacity var(--motion-fast) var(--ease-out)}.results-fresh{animation:fade-in var(--motion-base) var(--ease-out)}@media (prefers-reduced-motion:no-preference){.recipe-card.appear{animation:card-in var(--motion-base) var(--ease-out) both;animation-delay:calc(var(--i,0) * var(--motion-stagger))}}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}}@media print{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--text:#222;--text-h:#000;--bg:#fff;--card:#fff;--border:#bbb;--accent:#2f7d4f;--accent-text:#fff;--accent-soft:#fff;--error:#000;--warn:#000;--brand-bowl:#2f7d4f;--brand-steam:#5cb87f;font-size:11pt}@page{margin:15mm}*,:before,:after{view-transition-name:none!important;transition:none!important;animation:none!important}.fade-image{opacity:1!important}body{color:#222;background:#fff}.topbar,.tabbar,.fab,.action-bar,.share,.add-photo,.stars,.report,.report-form,.cooked,.recipe-cost,.gallery-caption,.gallery-thumbs,.dialog-overlay,.dialog,.menu-content,[data-sonner-toaster],.cook-mode,.back-link,.print-hide,.tabs-list,.nutrition button,.nutrition a,.note-box button,.note-box .hint,.note-box .error,.servings-picker>:not(.servings-print),.ingredient-tbl input,.ingredient-tbl .check-mark{display:none!important}.servings-print{display:inline}.app-shell,.app-shell.has-tabbar{padding:0}.card,.card.detail{max-width:none;box-shadow:none;background:#fff;border:0;border-radius:0;margin:0;padding:0}.recipe-hero{margin:0 0 6mm}.recipe-hero .gallery-main,.gallery-main{object-fit:cover;border-radius:2mm;width:auto;max-width:100%;max-height:70mm}.recipe-head h1{margin:0 0 2mm;font-size:20pt}.recipe-cols{grid-template-columns:1fr 2fr;gap:10mm;margin-top:4mm;display:grid}.recipe-cols h2{margin:0 0 2mm;font-size:13pt}h1,h2,h3{break-after:avoid}.recipe-steps li,.ingredient-tbl tr,.nutrition,.note-box{break-inside:avoid}.ingredient-tbl td{padding:1mm 2mm}.ingredient-tbl tr.done td,.ingredient-tbl tr.done .name{opacity:1;color:inherit;text-decoration:none}.chip,.badge,.warning{color:#222;box-shadow:none;background:0 0;border:1px solid #bbb}a,a:visited{color:inherit;text-decoration:none}.recipe-head a[href^=http]:after{content:" (" attr(href) ")";word-break:break-all;font-size:9pt}.note-box textarea{resize:none;color:#222;background:0 0;border:1px solid #bbb}.print-brand{color:#666;align-items:center;gap:2mm;margin-top:8mm;font-size:9pt;display:flex}}
