:root{color-scheme:light dark;--bg:#f4f6f4;--bg-2:#eef1ee;--surface:#ffffff;--surface-2:#f7f9f7;--line:#e3e7e3;--line-strong:#d2d8d2;--ink:#1d211e;--ink-soft:#5c665f;--ink-faint:#98a29a;--green:#2f9e63;--green-deep:#23764a;--green-soft:#e3f2e9;--green-glow:rgba(47,158,99,.14);--amber:#c98a2b;--amber-soft:#f7eddb;--red:#c4554d;--red-soft:#f9e9e7;--her:var(--green);--her-deep:var(--green-deep);--her-glow:var(--green-glow);--him:var(--amber);--him-deep:#a06a1f;--him-glow:rgba(201,138,43,.14);--shared:#a08b62;--sage:#2f9e63;--sage-deep:#23764a;--sage-glow:rgba(47,158,99,.13);--amber-m:#c98a2b;--amber-deep-m:#a06a1f;--amber-glow:rgba(201,138,43,.13);--sky:#2f7fb0;--sky-deep:#22608a;--sky-glow:rgba(47,127,176,.13);--plum:#8a5fb0;--plum-deep:#6a4590;--plum-glow:rgba(138,95,176,.13);--clay:#bf6a3d;--clay-deep:#99512c;--clay-glow:rgba(191,106,61,.13);--rose:#c25573;--rose-deep:#9c3f5a;--rose-glow:rgba(194,85,115,.13);--amber-deep:#a06a1f;--radius:16px;--radius-s:11px;--shadow:0 1px 2px rgba(20,30,24,.04), 0 10px 30px -18px rgba(20,30,24,.18);--shadow-soft:0 1px 2px rgba(20,30,24,.04), 0 6px 18px -12px rgba(20,30,24,.14);--shadow-lift:0 2px 4px rgba(20,30,24,.05), 0 18px 44px -20px rgba(20,30,24,.25);--ease-spring:cubic-bezier(.34,1.3,.64,1);--ease-out:cubic-bezier(.22,1,.36,1);--sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Inter,Roboto,"Helvetica Neue",sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#111513;--bg-2:#171c19;--surface:#1a201c;--surface-2:#202722;--line:#2a322c;--line-strong:#39433c;--ink:#eef2ee;--ink-soft:#a3ada5;--ink-faint:#6d776f;--green:#41b579;--green-deep:#2f9e63;--green-soft:#1d3328;--green-glow:rgba(65,181,121,.16);--amber:#d99f45;--amber-soft:#33291a;--red:#d4726a;--red-soft:#392320;--sage:#41b579;--sage-deep:#2f9e63;--sky:#4d9fd0;--plum:#a97fd0;--clay:#d0855a;--rose:#d0728e;--shadow:0 1px 2px rgba(0,0,0,.3), 0 12px 32px -18px rgba(0,0,0,.6);--shadow-soft:0 1px 2px rgba(0,0,0,.25), 0 6px 18px -12px rgba(0,0,0,.5);--shadow-lift:0 2px 4px rgba(0,0,0,.3), 0 20px 48px -20px rgba(0,0,0,.7)}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15.5px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh}button{font-family:inherit;cursor:pointer}h1,h2,h3{font-family:var(--sans);font-weight:650;letter-spacing:-.02em;margin:0;color:var(--ink)}a{color:var(--green-deep)}::selection{background:var(--green-glow);color:var(--ink)}:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:6px}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem clamp(1rem,4vw,2.4rem);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(18px) saturate(1.6);-webkit-backdrop-filter:blur(18px) saturate(1.6);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:.55rem}.brand-mark{width:26px;height:26px;border-radius:8px;display:inline-block;background:linear-gradient(140deg,var(--green) 0%,var(--green-deep) 100%);box-shadow:inset 0 0 0 1px #ffffff2e;position:relative}.brand-mark:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;background:#ffffffeb;border-radius:0 60%;transform:rotate(45deg) scale(.92)}.brand-name{font-weight:700;font-size:1.08rem;letter-spacing:-.02em}.tabs{display:flex;gap:.1rem;background:var(--bg-2);padding:.22rem;border-radius:999px;border:1px solid var(--line)}.tabs button,.tabs a{border:0;background:transparent;color:var(--ink-soft);padding:.42rem .85rem;border-radius:999px;font-size:.84rem;font-weight:600;transition:.18s;white-space:nowrap;text-decoration:none;display:inline-block}.tabs button:hover,.tabs a:hover{color:var(--ink)}.tabs button.active,.tabs a.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-soft)}.mobile-tabbar{display:none}.more-sheet{display:flex;flex-direction:column;gap:.4rem}.more-sheet-row{display:flex;align-items:center;gap:.7rem;padding:.8rem .9rem;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);color:var(--ink);text-decoration:none;font-weight:600;font-size:.95rem;cursor:pointer;transition:.15s;width:100%;text-align:left}.more-sheet-row:hover{border-color:var(--green);background:var(--green-soft)}.more-sheet-row .tabicon{font-size:1.15rem}.more-sheet-row.remove{color:var(--red)}main{max-width:1080px;margin:0 auto;padding:clamp(1.1rem,3vw,2.2rem) clamp(1rem,4vw,2.4rem) 5rem}.eyebrow{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-weight:700}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-soft)}.muted{color:var(--ink-soft)}.pill{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:600;padding:.22rem .55rem;border-radius:999px;border:1px solid var(--line);color:var(--ink-soft);background:var(--bg-2)}.row{display:flex;gap:1rem;flex-wrap:wrap}.fadein{animation:fade .4s ease both}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.duo{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:1.6rem;box-shadow:var(--shadow-soft)}.duo-side{padding:1.15rem 1.25rem;background:var(--surface);position:relative;overflow:hidden}.duo-side h2{font-size:1.1rem;display:flex;align-items:center;gap:.5rem}.dot{width:9px;height:9px;border-radius:50%}.dot.her{background:var(--green)}.dot.him{background:var(--amber)}.goaltag{font-size:.68rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:.18rem .5rem;border-radius:6px}.goaltag.her{color:var(--green-deep);background:var(--green-soft)}.goaltag.him{color:var(--amber);background:var(--amber-soft)}.kcal{font-size:1.9rem;font-weight:700;letter-spacing:-.03em;line-height:1;margin-top:.7rem;font-variant-numeric:tabular-nums}.kcal small{font-size:.78rem;font-weight:500;color:var(--ink-faint);letter-spacing:0}.admin-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.85rem}.admin-stat{padding:1rem 1.1rem}.admin-stat-value{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;line-height:1.2;margin-top:.4rem;font-variant-numeric:tabular-nums}.admin-stat-sub{font-size:.74rem;margin-top:.2rem}.bar{height:6px;border-radius:99px;background:var(--bg-2);margin-top:.7rem;overflow:hidden}.bar>i{display:block;height:100%;border-radius:99px;transition:width .8s var(--ease-out)}.bar.her>i{background:var(--green)}.bar.him>i{background:var(--amber)}.duo-note{font-size:.78rem;color:var(--ink-soft);margin-top:.6rem;line-height:1.4}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:0 0 .9rem}.section-head h1{font-size:1.45rem}.weekgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.85rem}.daycard{padding:.95rem;display:flex;flex-direction:column;gap:.6rem;min-height:150px}.daycard .day{font-weight:700;font-size:.8rem;letter-spacing:.03em;color:var(--ink-soft);display:flex;justify-content:space-between;align-items:center}.slot{border:1px dashed var(--line-strong);border-radius:var(--radius-s);padding:.6rem .7rem;background:var(--bg-2);transition:.15s;min-height:74px;display:flex;flex-direction:column;justify-content:center}.slot.filled{border:1px solid var(--line);background:var(--surface);cursor:pointer;box-shadow:0 1px 2px #141e180a}.slot.filled:hover{border-color:var(--green);transform:translateY(-1px)}.slot .rname{font-weight:600;font-size:.9rem;line-height:1.25}.slot .rname:hover{color:var(--green-deep)}.slot .rmeta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.4rem}.slot .empty{color:var(--ink-faint);font-size:.82rem;display:flex;align-items:center;gap:.4rem;cursor:pointer}.lunch-flag{font-size:.65rem;color:var(--shared)}.miniboost{font-size:.65rem;color:var(--amber);font-weight:700}.meal-head{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:.3rem}.scope-select{background:var(--surface);border:1px solid var(--line);color:var(--ink-soft);padding:.15rem .4rem;border-radius:6px;font-family:inherit;font-size:.68rem}.slot-actions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.slot-actions .btn{padding:.3rem .55rem;font-size:.7rem;display:inline-flex;align-items:center;gap:.3rem}.btn.remove:hover{border-color:var(--red);color:var(--red)}.day-preview{border:1px solid var(--line);border-radius:var(--radius-s);background:var(--bg-2);margin:-.1rem 0 .1rem}.day-preview summary{padding:.4rem .6rem;font-size:.72rem;color:var(--ink-soft);cursor:pointer;font-weight:600;list-style:none}.day-preview summary::-webkit-details-marker{display:none}.day-preview summary:before{content:"▸ ";color:var(--ink-faint)}.day-preview[open] summary:before{content:"▾ "}.day-preview-body{padding:0 .6rem .6rem}.day-preview-macros{display:flex;gap:.6rem;flex-wrap:wrap;font-size:.78rem;color:var(--ink-soft);margin-bottom:.35rem}.day-preview-micros{display:flex;gap:.3rem;flex-wrap:wrap}.recipegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}.recipe{padding:0;overflow:hidden;display:flex;flex-direction:column;transition:.18s}.recipe:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow-lift)}.recipe .thumb{height:104px;position:relative;display:flex;align-items:flex-end;padding:.7rem .8rem}.recipe .thumb h3{font-size:1.02rem;color:#173225;z-index:2;letter-spacing:-.01em}.recipe .body{padding:.85rem .9rem 1rem;display:flex;flex-direction:column;gap:.6rem;flex:1}.recipe .desc{font-size:.82rem;color:var(--ink-soft);line-height:1.45;flex:1}.recipe .foot{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.tagrow{display:flex;gap:.3rem;flex-wrap:wrap}.tag{font-size:.66rem;font-weight:600;color:var(--ink-soft);background:var(--bg-2);border:1px solid var(--line);padding:.15rem .45rem;border-radius:6px}.tag.veg{color:var(--green-deep);border-color:transparent;background:var(--green-soft)}.tag.lunch{color:#8a6d3b;border-color:transparent;background:var(--amber-soft)}.tag.season{color:var(--green-deep);border-color:transparent;background:var(--green-soft)}.tag.season.off{color:var(--ink-faint);background:var(--bg-2)}.tag.co2-low{color:var(--green-deep);border-color:transparent;background:var(--green-soft)}.tag.co2-medium{color:#8a6d3b;border-color:transparent;background:var(--amber-soft)}.tag.co2-high{color:var(--red);border-color:transparent;background:var(--red-soft)}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:.55rem .9rem;border-radius:var(--radius-s);font-weight:600;font-size:.85rem;transition:.15s;box-shadow:0 1px 1.5px #141e180d}.btn:hover{border-color:var(--line-strong);background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:default;pointer-events:none}.btn.primary{background:var(--green);color:#fff;border-color:transparent}.btn.primary:hover{background:var(--green-deep)}.btn.cook{background:var(--amber);color:#fff;border-color:transparent}.btn.cook:hover{filter:brightness(.94)}.btn.small{padding:.35rem .6rem;font-size:.78rem}.btn.ghost{background:transparent;box-shadow:none;border-color:transparent;color:var(--ink-soft)}.btn.ghost:hover{color:var(--ink);background:var(--bg-2)}.btn.dislike{background:transparent;color:var(--ink-soft)}.btn.dislike:hover{border-color:var(--red);color:var(--red)}.btn.dislike.on{background:var(--red-soft);border-color:transparent;color:var(--red)}.shop-wrap{display:grid;grid-template-columns:1fr;gap:1.1rem;max-width:680px}.shop-cat{padding:.4rem 0}.shop-cat h3{font-size:.9rem;color:var(--ink-soft);margin-bottom:.5rem;display:flex;align-items:center;gap:.5rem}.shop-cat h3:before{content:"";width:7px;height:7px;border-radius:2.5px;background:var(--green)}.shop-item{display:flex;align-items:center;gap:.75rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);margin-bottom:.4rem;transition:.15s;cursor:pointer}.shop-item:hover{border-color:var(--green);transform:translate(2px)}.shop-item.done{opacity:.5}.shop-item.done .si-name{text-decoration:line-through}.check{width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-strong);flex:none;display:grid;place-items:center;transition:.15s;background:var(--surface)}.shop-item.done .check{background:var(--green);border-color:var(--green)}.check svg{width:13px;height:13px;opacity:0;stroke:#fff!important}.shop-item.done .check svg{opacity:1}.shop-item.done .check{animation:checkpop .35s var(--ease-spring)}@keyframes checkpop{0%{transform:scale(.6)}60%{transform:scale(1.15)}to{transform:scale(1)}}.si-name{font-weight:600;font-size:.92rem}.si-qty{margin-left:auto;font-size:.82rem;color:var(--ink-soft);white-space:nowrap;font-variant-numeric:tabular-nums}.si-src{font-size:.7rem;color:var(--ink-faint)}.shop-complete-bar{position:sticky;bottom:1rem;z-index:10;display:flex;align-items:center;gap:.8rem;justify-content:space-between;margin-top:1.2rem;padding:.8rem 1rem;border-radius:var(--radius);max-width:680px;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line);box-shadow:var(--shadow-lift)}.shop-complete-bar .info{font-size:.85rem;color:var(--ink-soft)}.pantry-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.55rem;max-width:760px}.pantry-item{display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);font-size:.88rem}.pantry-item.have{border-color:transparent;background:var(--green-soft)}.toggle{width:38px;height:22px;border-radius:99px;background:var(--bg-2);border:1px solid var(--line-strong);position:relative;flex:none;transition:.15s}.toggle i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:.15s}.pantry-item.have .toggle{background:var(--green);border-color:var(--green)}.pantry-item.have .toggle i{left:18px}.addrow{display:flex;gap:.5rem;margin-top:1rem;max-width:420px}.addrow input,.addrow select{background:var(--surface);border:1px solid var(--line);color:var(--ink);padding:.55rem .7rem;border-radius:var(--radius-s);font-family:inherit;font-size:.88rem}.addrow input{flex:1}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#12181466;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:40;display:grid;place-items:center;padding:1rem;animation:backdrop .25s ease both}@keyframes backdrop{0%{background:#12181400;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}to{background:#12181466;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}}.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);max-width:560px;width:100%;max-height:84vh;overflow:auto;box-shadow:var(--shadow-lift);animation:sheet .34s var(--ease-spring) both}@keyframes sheet{0%{opacity:0;transform:translateY(26px) scale(.98)}to{opacity:1;transform:none}}.modal-head{position:sticky;top:0;background:var(--surface);padding:1.1rem 1.2rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;z-index:2}.modal-body{padding:.8rem 1.2rem 1.2rem;display:flex;flex-direction:column;gap:.5rem}.pick{display:flex;align-items:center;gap:.7rem;padding:.7rem;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);cursor:pointer;transition:.15s}.pick:hover{border-color:var(--green);background:var(--green-soft)}.pick .pk-name{font-weight:600}.pick .pk-meta{font-size:.72rem;color:var(--ink-faint)}.iconbtn{background:transparent;border:0;color:var(--ink-soft);font-size:1.3rem;line-height:1;padding:.2rem .4rem;border-radius:8px}.iconbtn:hover{background:var(--bg-2);color:var(--ink)}.cookmode{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--bg);display:flex;flex-direction:column}.cookmode.hidden{display:none}.cook-top{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.9rem clamp(1rem,5vw,3rem);border-bottom:1px solid var(--line);background:var(--surface)}.cook-top h2{font-size:1.1rem;letter-spacing:-.01em}.cook-top .cook-progress{flex:1;height:4px;border-radius:99px;background:var(--bg-2);overflow:hidden;max-width:340px}.cook-top .cook-progress i{display:block;height:100%;background:var(--green);border-radius:99px;transition:width .35s var(--ease-out)}.cook-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:1.6rem clamp(1.2rem,6vw,4rem);gap:1.1rem;overflow-y:auto}.cook-step-no{font-size:.8rem;font-weight:700;color:var(--green-deep);letter-spacing:.12em;text-transform:uppercase}.cook-step-txt{font-size:clamp(1.4rem,3.6vw,2.1rem);font-weight:650;letter-spacing:-.02em;line-height:1.3;max-width:26ch}.cook-step-txt.boost{color:var(--amber)}.cook-step-ings{display:flex;gap:.4rem;flex-wrap:wrap;justify-content:center;max-width:46ch}.cook-ing-chip{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;font-weight:600;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:.3rem .7rem;box-shadow:0 1px 2px #141e180d}.cook-ing-chip b{color:var(--green-deep);font-variant-numeric:tabular-nums;font-weight:700}.cook-nav{display:flex;gap:.8rem;align-items:center;justify-content:center;padding:1rem 1.2rem;border-top:1px solid var(--line);background:var(--surface)}.cook-dots{display:flex;gap:.35rem}.cook-dots i{width:7px;height:7px;border-radius:50%;background:var(--line-strong);transition:.2s}.cook-dots i.on{background:var(--green);transform:scale(1.35)}.cook-dots i.boost.on{background:var(--amber)}.bigbtn{padding:.85rem 1.5rem;font-size:.98rem;border-radius:13px}.cook-timer{display:flex;align-items:center;gap:.6rem;font-variant-numeric:tabular-nums}.cook-timer .t{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}.cook-timer .t.running{color:var(--green-deep)}.cook-allings{width:100%;max-width:560px;margin:0 auto;text-align:left}.cook-allings summary{font-size:.82rem;font-weight:600;color:var(--ink-soft);cursor:pointer;list-style:none;text-align:center;padding:.4rem}.cook-allings summary::-webkit-details-marker{display:none}.cook-allings ul{list-style:none;margin:.4rem 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.3rem}.cook-allings li{display:flex;justify-content:space-between;gap:.6rem;font-size:.84rem;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:.35rem .6rem}.cook-allings li b{font-variant-numeric:tabular-nums;color:var(--green-deep);font-weight:650;white-space:nowrap}.consume-sheet{display:flex;flex-direction:column;gap:.9rem}.consume-sheet p.hint{font-size:.84rem;color:var(--ink-soft);margin:0;line-height:1.45}.consume-list{display:flex;flex-direction:column;gap:.35rem}.consume-row{display:flex;align-items:center;gap:.7rem;padding:.55rem .7rem;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface)}.consume-row .name{flex:1;font-weight:600;font-size:.9rem}.consume-row .qty{font-size:.78rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}.consume-seg{display:inline-flex;background:var(--bg-2);border:1px solid var(--line);border-radius:999px;padding:2px}.consume-seg button{border:0;background:transparent;font-size:.74rem;font-weight:700;padding:.3rem .6rem;border-radius:999px;color:var(--ink-faint)}.consume-seg button.used{color:var(--red)}.consume-seg button.kept{color:var(--green-deep)}.consume-seg button.active.used{background:var(--red-soft)}.consume-seg button.active.kept{background:var(--green-soft)}.empty-state{text-align:center;padding:3rem 1rem;color:var(--ink-soft)}.empty-state h2{font-size:1.35rem;margin-bottom:.5rem}.hidden{display:none!important}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.login-card{max-width:380px;width:100%;padding:2.4rem 2rem;display:flex;flex-direction:column;align-items:center;gap:.9rem;text-align:center}.login-card h1{font-size:1.8rem;letter-spacing:-.03em;margin-top:.4rem}.login-card .muted{font-size:.9rem;line-height:1.5;margin:0}.login-card input{width:100%;background:var(--bg-2);border:1px solid var(--line);color:var(--ink);padding:.8rem 1rem;border-radius:var(--radius-s);font-family:inherit;font-size:1rem;margin-top:.6rem}.login-card input:focus{outline:none;border-color:var(--green);background:var(--surface)}.login-card .btn{width:100%;padding:.8rem;font-size:1rem;margin-top:.2rem}.login-err{color:var(--red);font-size:.85rem;min-height:1.2em;margin:0}.plan-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1.4rem}.btn.generate{background:var(--green);color:#fff;border-color:transparent;display:flex;align-items:center;gap:.5rem}.btn.generate:hover{background:var(--green-deep)}.logout-btn{background:transparent;border:1px solid var(--line);color:var(--ink-soft);padding:.4rem .7rem;border-radius:9px;font-size:.8rem;font-weight:600}.logout-btn:hover{color:var(--ink);border-color:var(--line-strong)}.header-right{display:flex;align-items:center;gap:.7rem}.boost-switch{display:inline-flex;align-items:center;gap:.45rem;font-size:.78rem;font-weight:600;color:var(--amber);cursor:pointer;-webkit-user-select:none;user-select:none}.boost-switch .tg{width:34px;height:20px;border-radius:99px;background:var(--bg-2);border:1px solid var(--line-strong);position:relative;transition:.15s}.boost-switch .tg i{position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #00000040;transition:.15s}.boost-switch.on .tg{background:var(--amber);border-color:var(--amber)}.boost-switch.on .tg i{left:16px}.recipe .actions{display:flex;gap:.4rem;flex-wrap:wrap}.btn.add-shop{background:transparent;border:1px solid var(--green);color:var(--green-deep)}.btn.add-shop:hover{background:var(--green-soft)}.btn.add-shop.added{background:var(--green);color:#fff;border-color:var(--green)}.shop-extras{margin-bottom:1.2rem;padding:.9rem 1rem;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--bg-2)}.shop-extras h3{font-size:.85rem;color:var(--ink-soft);margin-bottom:.6rem}.extra-chip{display:inline-flex;align-items:center;gap:.4rem;background:var(--surface);border:1px solid var(--line);border-radius:99px;padding:.3rem .4rem .3rem .75rem;font-size:.8rem;font-weight:600;margin:.2rem .3rem .2rem 0}.extra-chip button{background:transparent;border:0;color:var(--ink-faint);font-size:1.1rem;line-height:1;cursor:pointer;padding:0 .2rem}.extra-chip button:hover{color:var(--red)}.shop-add-item{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem}.shop-add-item input{background:var(--surface);border:1px solid var(--line);color:var(--ink);padding:.5rem .65rem;border-radius:var(--radius-s);font-family:inherit;font-size:.85rem}.shop-add-item input.item{flex:1;min-width:140px}.shop-add-item input.qty{width:70px}.shop-item .del{margin-left:.4rem;background:transparent;border:0;color:var(--ink-faint);font-size:1.1rem;cursor:pointer}.shop-item .del:hover{color:var(--red)}.gen-opts{display:flex;flex-direction:column;gap:.7rem;margin:.4rem 0 1rem}.gen-opt{display:flex;align-items:center;gap:.6rem;font-size:.9rem;cursor:pointer}.gen-opt input{width:18px;height:18px;accent-color:var(--green)}.filterbar{display:flex;gap:.4rem;flex-wrap:wrap;margin-bottom:1.1rem}.filter-chip{font-size:.78rem;font-weight:600;color:var(--ink-soft);background:var(--surface);border:1px solid var(--line);padding:.35rem .7rem;border-radius:999px;cursor:pointer;transition:.15s}.filter-chip:hover{color:var(--ink);transform:translateY(-1px)}.filter-chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.dot.sage{background:var(--sage)}.dot.amber{background:var(--amber-m,#c98a2b)}.dot.sky{background:var(--sky)}.dot.plum{background:var(--plum)}.dot.clay{background:var(--clay)}.dot.rose{background:var(--rose)}.goaltag.sage{color:var(--sage-deep);background:var(--sage-glow)}.goaltag.amber{color:#a06a1f;background:var(--amber-glow)}.goaltag.sky{color:var(--sky-deep,#22608a);background:var(--sky-glow)}.goaltag.plum{color:var(--plum-deep,#6a4590);background:var(--plum-glow)}.goaltag.clay{color:var(--clay-deep,#99512c);background:var(--clay-glow)}.goaltag.rose{color:var(--rose-deep,#9c3f5a);background:var(--rose-glow)}.bar.sage>i{background:var(--sage)}.bar.amber>i{background:var(--amber-m,#c98a2b)}.bar.sky>i{background:var(--sky)}.bar.plum>i{background:var(--plum)}.bar.clay>i{background:var(--clay)}.bar.rose>i{background:var(--rose)}.member-chips{display:flex;gap:.35rem;flex-wrap:wrap;margin-top:.4rem}.member-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.7rem;font-weight:700;padding:.2rem .5rem;border-radius:99px;border:1px solid var(--line);color:var(--ink-soft);background:var(--surface);cursor:pointer;-webkit-user-select:none;user-select:none}.member-chip:hover{transform:translateY(-1px)}.member-chip .dot{width:7px;height:7px}.member-chip.boost{color:#a06a1f;border-color:transparent;background:var(--amber-soft)}.member-chip.reduce{color:var(--sky-deep,#22608a);border-color:transparent;background:var(--sky-glow)}.recipe-detail{display:flex;flex-direction:column;gap:1.2rem;max-width:760px}.recipe-detail .hero{height:160px;border-radius:var(--radius);display:flex;align-items:flex-end;padding:1rem 1.2rem;box-shadow:var(--shadow-soft)}.recipe-detail .hero h1{color:#173225;letter-spacing:-.02em}.recipe-detail section h2{font-size:1.02rem;margin-bottom:.6rem}.recipe-detail ul.ingredients{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.recipe-detail ul.ingredients li{display:flex;justify-content:space-between;font-size:.88rem;padding:.45rem .65rem;background:var(--bg-2);border-radius:9px}.recipe-detail ol.steps{padding-left:1.2rem;display:flex;flex-direction:column;gap:.6rem;font-size:.92rem;line-height:1.55}.allergen-warning{display:flex;align-items:center;gap:.5rem;padding:.7rem .9rem;border-radius:var(--radius-s);background:var(--red-soft);border:1px solid color-mix(in srgb,var(--red) 30%,transparent);color:var(--red);font-size:.85rem;font-weight:600}.rating-widget{display:flex;align-items:center;gap:.3rem}.rating-widget button{background:transparent;border:0;font-size:1.4rem;line-height:1;color:var(--line-strong);cursor:pointer;padding:.1rem}.rating-widget button.on{color:var(--amber)}.rating-summary{font-size:.85rem;color:var(--ink-soft)}.form{display:flex;flex-direction:column;gap:1rem;max-width:640px}.form label,.form-row label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600;color:var(--ink-soft)}.form input,.form select,.form textarea{background:var(--surface);border:1px solid var(--line);color:var(--ink);padding:.6rem .75rem;border-radius:var(--radius-s);font-family:inherit;font-size:.9rem}.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--green)}.form textarea{resize:vertical;min-height:70px}.form-row{display:flex;gap:.7rem;flex-wrap:wrap}.form-row>*{flex:1;min-width:140px}.list-editor{display:flex;flex-direction:column;gap:.5rem}.list-editor-row{display:flex;gap:.5rem;align-items:center}.list-editor-row input{flex:1}.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.5rem}.checkbox-grid label{flex-direction:row;align-items:center;gap:.5rem;font-weight:500}.chip-input{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;padding:.5rem;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface)}.chip-input input{border:0;background:transparent;flex:1;min-width:100px;padding:.2rem}.chip{display:inline-flex;align-items:center;gap:.35rem;background:var(--bg-2);border:1px solid var(--line);border-radius:99px;padding:.25rem .3rem .25rem .65rem;font-size:.8rem}.chip button{background:transparent;border:0;color:var(--ink-faint);cursor:pointer;font-size:1rem;line-height:1}input,select,textarea{accent-color:var(--green)}.settings-details{border-bottom:1px solid var(--line)}.settings-details:last-child{border-bottom:0}.settings-details summary{padding:.75rem .1rem;font-weight:700;font-size:.95rem;cursor:pointer;list-style:none;display:flex;align-items:center;gap:.4rem}.settings-details summary::-webkit-details-marker{display:none}.settings-details summary:before{content:"▸";color:var(--ink-faint);font-size:.75rem;width:.8rem}.settings-details[open] summary:before{content:"▾"}.settings-details .settings-details-body{padding:0 .1rem 1.1rem}.settings-table{width:100%;border-collapse:collapse;font-size:.88rem}.settings-table th,.settings-table td{padding:.6rem .5rem;border-bottom:1px solid var(--line);text-align:left}.settings-table th{color:var(--ink-faint);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.invite-box{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;padding:.9rem 1rem;border:1px dashed var(--line-strong);border-radius:var(--radius);background:var(--bg-2)}.invite-box code{background:var(--surface);border:1px solid var(--line);padding:.4rem .6rem;border-radius:8px;font-size:.85rem}button,.slot,.pick,.shop-item,.pantry-item,.chip,.filter-chip,.member-chip{transition:transform .18s var(--ease-out),box-shadow .25s var(--ease-out),border-color .18s ease,background-color .18s ease,color .18s ease,opacity .2s ease}button:active:not(:disabled){transform:scale(.97)}.card{transition:transform .25s var(--ease-out),box-shadow .3s var(--ease-out),border-color .2s ease}main>*{animation:fade .38s var(--ease-out) both}.weekgrid>*,.recipegrid>*{animation:rise .45s var(--ease-out) both}.weekgrid>*:nth-child(2),.recipegrid>*:nth-child(2){animation-delay:.04s}.weekgrid>*:nth-child(3),.recipegrid>*:nth-child(3){animation-delay:.08s}.weekgrid>*:nth-child(4),.recipegrid>*:nth-child(4){animation-delay:.12s}.weekgrid>*:nth-child(5),.recipegrid>*:nth-child(5){animation-delay:.16s}.weekgrid>*:nth-child(6),.recipegrid>*:nth-child(6){animation-delay:.2s}.weekgrid>*:nth-child(7),.recipegrid>*:nth-child(7){animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}.daycard:hover{box-shadow:var(--shadow-lift)}.slot:not(.filled):hover{border-color:var(--green);background:var(--surface);transform:translateY(-1px)}.slot .empty:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green);opacity:.6}.slot.filled.free{border-left:3px solid var(--shared)}.slot.filled{animation:pop .3s var(--ease-spring)}@keyframes pop{0%{transform:scale(.96);opacity:.4}to{transform:none;opacity:1}}.wizard{min-height:100vh;display:grid;place-items:center;padding:1.2rem}.wizard-card{max-width:640px;width:100%;padding:1.6rem clamp(1.1rem,4vw,2rem);display:flex;flex-direction:column;gap:1.1rem}.wizard-progress{display:flex;gap:.4rem;flex-wrap:wrap}.wizard-step{display:flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:700;color:var(--ink-faint);padding:.3rem .6rem;border-radius:99px;border:1px solid var(--line);background:var(--bg-2);transition:.25s var(--ease-out)}.wizard-step.active{color:var(--green-deep);border-color:transparent;background:var(--green-soft);transform:scale(1.04)}.wizard-step.done{color:var(--green-deep)}.wizard-dot{display:inline-grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--surface);border:1px solid var(--line);font-size:.62rem}.wizard-step.done .wizard-dot{background:var(--green);border-color:var(--green);color:#fff}.wizard-body{display:flex;flex-direction:column;gap:.85rem;animation:rise .4s var(--ease-out) both}.wizard-body h1{font-size:1.4rem}.wizard-body label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:600;color:var(--ink-soft)}.wizard-body input,.wizard-body select{background:var(--surface);border:1px solid var(--line);color:var(--ink);padding:.65rem .8rem;border-radius:var(--radius-s);font-family:inherit;font-size:.95rem}.wizard-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.4rem}.chip-select{display:flex;flex-wrap:wrap;gap:.4rem}@media (max-width:720px){.topbar{padding:.6rem 1rem}.tabs-desktop{display:none}main{padding-bottom:6.5rem}.brand-name{display:inline}.mobile-tabbar{display:flex;position:fixed;left:.6rem;right:.6rem;bottom:.6rem;z-index:50;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(18px) saturate(1.6);-webkit-backdrop-filter:blur(18px) saturate(1.6);border-radius:22px;box-shadow:var(--shadow-lift),0 0 0 1px var(--line);padding:.3rem;padding-bottom:calc(.3rem + env(safe-area-inset-bottom,0px))}.mobile-tabbar a,.mobile-tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.5rem .2rem;border-radius:16px;border:0;background:transparent;color:var(--ink-faint);text-decoration:none;font-size:.66rem;font-weight:600}.mobile-tabbar a.active,.mobile-tabbar button.active{background:var(--green-soft);color:var(--green-deep)}.mobile-tabbar .tabicon{font-size:1.15rem;line-height:1}.weekgrid{grid-template-columns:1fr}.recipegrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.pantry-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.section-head{flex-wrap:wrap}.section-head h1{font-size:1.3rem}.btn{padding:.65rem 1rem}.btn.small{padding:.5rem .7rem;font-size:.76rem}.iconbtn{padding:.45rem .6rem}.slot-actions .btn{padding:.5rem;font-size:.9rem;min-width:2.2rem;justify-content:center}.slot-actions .btn-label{display:none}.scope-select{padding:.35rem .5rem;font-size:.74rem}.check{width:26px;height:26px}.toggle{width:44px;height:26px}.toggle i{width:20px;height:20px}.pantry-item.have .toggle i{left:22px}.filterbar{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.35rem;margin-left:-1rem;margin-right:-1rem;padding-left:1rem;padding-right:1rem;scrollbar-width:none}.filterbar::-webkit-scrollbar{display:none}.filter-chip{white-space:nowrap;flex:none}.form-row{flex-direction:column}.form-row>*{min-width:0}.checkbox-grid{grid-template-columns:repeat(2,1fr)}.modal-back{place-items:end center;padding:0}.modal{max-width:100%;max-height:92dvh;border-radius:18px 18px 0 0;border-bottom:0}@keyframes sheet{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}.settings-table{display:block;overflow-x:auto}.cook-nav{padding-bottom:calc(1rem + env(safe-area-inset-bottom,0px))}.cook-step-txt{font-size:clamp(1.25rem,5.4vw,1.7rem)}.cook-top .cook-progress{max-width:120px}.shop-complete-bar{bottom:calc(4.6rem + env(safe-area-inset-bottom,0px))}.wizard{padding:.8rem;align-items:start}.wizard-card{margin-top:.5rem}input,select,textarea{font-size:16px!important}.topbar{padding-top:calc(.6rem + env(safe-area-inset-top,0px))}*{-webkit-tap-highlight-color:var(--green-glow)}html,body{overscroll-behavior-y:none}}@media (max-width:380px){.mobile-tabbar a,.mobile-tabbar button{font-size:.6rem;padding:.45rem .1rem}.kcal{font-size:1.6rem}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-delay:0s!important;transition-duration:1ms!important}}
