@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-full-normal-7BpKI3vF.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-full-normal-YHFkNujK.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-full-normal-CFFu7zhK.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-sans-cyrillic-ext-wght-normal-7w74d1lj.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-sans-cyrillic-wght-normal-B9hoeQUC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-sans-vietnamese-wght-normal-BhFYcaJr.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-sans-latin-ext-wght-normal-DMEAsnHD.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:Nunito Sans Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/assets/nunito-sans-latin-wght-normal-BWQ3gi2K.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{--bg:#f6f1e6;--surface:#fdfaf2;--surface-dim:#efe8d8;--ink:#33291d;--ink-soft:#5c503f;--muted:#8a7c66;--border:#e4dbc6;--border-strong:#cec1a5;--green:#38664c;--green-deep:#2a5039;--green-soft:#dcead9;--tomato:#c05237;--tomato-soft:#f6e0d6;--gold:#9a7b2d;--gold-soft:#f2e7c6;--plum:#7d4a6b;--plum-soft:#eeddea;--radius:14px;--radius-sm:8px;--shadow-soft:0 1px 2px #5c442214, 0 3px 10px #5c44220d;--shadow-lift:0 2px 4px #5c44221a, 0 10px 28px #5c44221a;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:18px;--sp-5:27px;--sp-6:40px;--fs-xs:12px;--fs-sm:13.5px;--fs-base:15px;--fs-md:17px;--fs-lg:22px;--fs-xl:29px;--fs-xxl:39px;--font-display:"Fraunces Variable", "Fraunces", Georgia, serif;--font-body:"Nunito Sans Variable", "Nunito Sans", "Avenir Next", system-ui, sans-serif;font-family:var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-size:var(--fs-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}button:focus-visible,input:focus-visible{outline:2px solid var(--green);outline-offset:2px;border-radius:var(--radius-sm)}input{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px}h1,h2,h3{margin:0;line-height:1.2}h1,h2{font-family:var(--font-display);letter-spacing:0;font-weight:560}.app{min-height:100vh}.app-header{background:var(--surface);border-bottom:1px solid var(--border)}.app-header-inner{max-width:920px;padding:var(--sp-5) 20px var(--sp-3);justify-content:space-between;align-items:flex-end;gap:var(--sp-4);flex-wrap:wrap;margin:0 auto;display:flex}.brand{flex-direction:column;display:flex}.brand h1{font-size:var(--fs-xl);color:var(--green-deep);font-variation-settings:"SOFT" 60, "WONK" 1}.brand-squiggle{width:150px;height:7px;color:var(--tomato);margin-top:3px}.header-right{align-items:center;gap:var(--sp-4);display:flex}.header-stats{gap:var(--sp-5);display:flex}.stat{flex-direction:column;align-items:flex-end;display:flex}.stat-value{font-family:var(--font-display);font-size:var(--fs-md);font-variant-numeric:tabular-nums;font-weight:600}.stat-label{font-size:var(--fs-xs);color:var(--muted);letter-spacing:.02em}.sync-dot{background:var(--green);border-radius:50%;flex-shrink:0;width:9px;height:9px}.sync-syncing{background:var(--gold);animation:1.2s ease-in-out infinite sync-pulse}.sync-error{background:var(--tomato)}.sync-offline{background:var(--border-strong)}.sync-off{display:none}@keyframes sync-pulse{50%{opacity:.35}}.gear-btn{width:44px;height:44px;color:var(--ink-soft);border-radius:50%;justify-content:center;align-items:center;transition:color .15s ease-out,background .15s ease-out,transform .3s ease-out;display:inline-flex}.gear-btn:hover{background:var(--surface-dim);transform:rotate(24deg)}.gear-btn.gear-active{color:var(--green);background:var(--green-soft)}.tabs{gap:var(--sp-1);max-width:920px;margin:0 auto;padding:0 20px;display:flex}.tab{font-size:var(--fs-base);color:var(--ink-soft);border-radius:var(--radius-sm) var(--radius-sm) 0 0;border-bottom:3px solid #0000;min-height:44px;padding:10px 16px 12px;font-weight:600;transition:background .15s ease-out}.tab:hover{background:var(--surface-dim)}.tab-active{color:var(--green-deep);border-bottom-color:var(--tomato);font-weight:800}.app-main{max-width:920px;padding:var(--sp-5) 20px 80px;margin:0 auto}.bottom-nav{background:var(--surface);border-top:1px solid var(--border);padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));z-index:40;display:none;position:fixed;inset:auto 0 0}.bn-item{min-height:52px;font-size:var(--fs-xs);color:var(--muted);border-radius:var(--radius-sm);flex-direction:column;flex:1;align-items:center;gap:2px;padding:6px 0 4px;font-weight:700;display:flex}.bn-item.bn-active{color:var(--green-deep)}.bn-item.bn-active svg{color:var(--tomato)}.view{gap:var(--sp-4);flex-direction:column;display:flex}.view-heading{align-items:baseline;gap:var(--sp-3);flex-wrap:wrap;display:flex}.view-heading h2{font-size:var(--fs-lg);font-variation-settings:"SOFT" 60, "WONK" 1}.view-sub{color:var(--muted);font-size:var(--fs-sm);max-width:56ch}.day-kind{font-size:var(--fs-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--gold);font-weight:800}.badge{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:800}.badge-cook{color:var(--green)}.badge-nocook{color:var(--gold)}.backup-nudge{justify-content:center;align-items:center;gap:var(--sp-2);background:var(--gold-soft);border-radius:var(--radius);margin-bottom:var(--sp-4);font-size:var(--fs-sm);color:var(--gold);flex-wrap:wrap;padding:10px 16px;display:flex}.adherence-stats{align-items:center;gap:var(--sp-2);margin-left:auto;display:flex}.adherence-stat{font-size:var(--fs-xs);color:var(--green);align-items:center;gap:5px;font-weight:800;display:inline-flex}.quick-weigh{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-soft);display:flex}.quick-weigh input{width:92px;padding:6px 9px}.fasting-note{background:var(--green-soft);border-radius:var(--radius);font-size:var(--fs-sm);color:var(--green-deep);padding:12px 16px;line-height:1.5}.static-time{font-variant-numeric:tabular-nums;color:var(--ink-soft)}.batch-note{background:var(--green-soft);border-left:4px solid var(--green);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--ink-soft);padding:12px 16px}.batch-note strong{color:var(--green-deep)}.cheat-toggle{font-size:var(--fs-xs);color:var(--muted);border:1px dashed var(--border-strong);border-radius:99px;min-height:28px;padding:4px 11px;font-weight:600;transition:color .15s ease-out,border-color .15s ease-out}.cheat-toggle:hover{border-color:var(--plum);color:var(--plum)}.cheat-toggle.cheat-on{background:var(--plum-soft);border:1px solid var(--plum);color:var(--plum);font-weight:800}.cheat-note{background:var(--plum-soft);border-left:4px solid var(--plum);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:var(--ink-soft);padding:10px 14px}.cheat-note strong{color:var(--plum)}.empty-state{align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-3);color:var(--ink-soft);font-size:var(--fs-sm);display:flex}.empty-state svg{color:var(--green);flex-shrink:0}.empty-state p{max-width:46ch;margin:0}.drawn-check{flex-shrink:0;width:24px;height:24px;display:inline-flex;position:relative}.drawn-check input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.drawn-check svg{border:1.8px solid var(--border-strong);background:var(--surface);width:100%;height:100%;color:var(--green-deep);pointer-events:none;border-radius:7px;padding:1px;transition:border-color .15s ease-out,background .15s ease-out}.drawn-check input:focus-visible+svg{outline:2px solid var(--green);outline-offset:2px}.drawn-check:hover svg{border-color:var(--green)}.drawn-check .drawn-check-mark{stroke-dasharray:24;stroke-dashoffset:24px}.drawn-check-on svg{border-color:var(--green);background:var(--green-soft)}.drawn-check-on .drawn-check-mark{stroke-dashoffset:0;transition:stroke-dashoffset .25s ease-out}.progress-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:var(--sp-4);gap:var(--sp-3) var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.pbar-head{font-size:var(--fs-sm);justify-content:space-between;margin-bottom:5px;display:flex}.pbar-label{color:var(--ink-soft);font-weight:700}.pbar-nums{color:var(--muted);font-variant-numeric:tabular-nums}.pbar-track{background:var(--surface-dim);border-radius:99px;height:9px;position:relative;overflow:hidden}.pbar-planned,.pbar-fill{border-radius:99px;transition:width .3s ease-out;position:absolute;inset:0 auto 0 0}.pbar-planned{opacity:.25}.pbar-kcal{background:var(--tomato)}.pbar-protein{background:var(--green)}.pbar-carbs{background:var(--gold)}.meal-hero{background:var(--surface);border:1px solid var(--green);border-radius:var(--radius);box-shadow:var(--shadow-lift);padding:var(--sp-4) var(--sp-4) var(--sp-4) var(--sp-4)}.meal-hero-eyebrow{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--tomato);margin-bottom:var(--sp-2);font-weight:800}.meal-hero-head{align-items:center;gap:var(--sp-3);cursor:pointer;flex-wrap:wrap;display:flex}.meal-hero-title{font-family:var(--font-display);font-size:var(--fs-lg);font-variation-settings:"SOFT" 60, "WONK" 1;font-weight:580}.meal-macros{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}.meal-items{margin:var(--sp-3) 0 0;gap:var(--sp-1);flex-direction:column;padding:0 0 0 36px;list-style:none;display:flex}.meal-items li{gap:var(--sp-2);align-items:baseline;display:flex}.item-qty{font-size:var(--fs-sm);color:var(--tomato);font-variant-numeric:tabular-nums;min-width:150px;font-weight:700}.item-name{color:var(--ink-soft)}.meal-note{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);color:var(--muted);padding-left:36px;font-style:italic}.timeline{flex-direction:column;display:flex}.tl-row{gap:0 var(--sp-2);padding:var(--sp-3) 0;grid-template-columns:64px 14px 1fr;display:grid}.tl-time{font-size:var(--fs-sm);color:var(--ink-soft);font-variant-numeric:tabular-nums;text-align:right;padding-top:3px;font-weight:700}.tl-rail{position:relative}.tl-rail:before{content:"";border-left:2px dotted var(--border-strong);position:absolute;top:-14px;bottom:-14px;left:6px}.tl-row:first-child .tl-rail:before{top:3px}.tl-row:last-child .tl-rail:before{height:calc(100% + 14px);bottom:auto}.tl-rail:after{content:"";background:var(--surface);border:2px solid var(--green);border-radius:50%;width:9px;height:9px;position:absolute;top:8px;left:2.5px}.tl-done .tl-rail:after{background:var(--green)}.tl-body{min-width:0}.tl-head{align-items:center;gap:var(--sp-3);cursor:pointer;flex-wrap:wrap;min-height:30px;display:flex}.tl-title{font-size:var(--fs-md);font-weight:700}.tl-done .tl-title{color:var(--muted);font-weight:600;text-decoration:line-through}.tl-done .tl-time{color:var(--muted)}.tl-done .meal-macros{opacity:.6}.supp-section{border-top:1px solid var(--border);padding-top:var(--sp-4)}.supp-section h3{font-size:var(--fs-md)}.supp-blurb{margin:4px 0 var(--sp-3);font-size:var(--fs-sm);color:var(--muted)}.supp-list{gap:var(--sp-1);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin:0;padding:0;list-style:none;display:grid}.supp-list label{align-items:center;gap:var(--sp-2);border-radius:var(--radius-sm);cursor:pointer;min-height:44px;padding:7px 8px;display:flex}.supp-list label:hover{background:var(--surface-dim)}.supp-done .supp-name{color:var(--muted);text-decoration:line-through}.supp-name{font-weight:700}.supp-when{font-size:var(--fs-xs);color:var(--muted)}.plan-wrap{gap:var(--sp-4);flex-direction:column;display:flex}.plan-toggle{align-self:flex-start}.candidates-panel{background:var(--surface);border:1px solid var(--green);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow-lift)}.candidates-head{align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap;display:flex}.candidates-head h3{font-size:var(--fs-md);margin:0 auto 0 0}.candidates-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(230px,1fr));display:grid}.candidate-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-3);gap:var(--sp-2);flex-direction:column;display:flex}.candidate-meta{align-items:center;gap:var(--sp-2);display:flex}.candidate-kcal{font-size:var(--fs-xs);color:var(--ink-soft);font-variant-numeric:tabular-nums}.candidate-line{font-size:var(--fs-xs);color:var(--ink-soft);margin:0;line-height:1.5}.candidate-card .btn-primary{align-self:flex-start;margin-top:auto}.saved-panel{border-color:var(--border);box-shadow:var(--shadow-soft)}.panel-hint{font-size:var(--fs-xs);color:var(--muted)}.saved-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.saved-list li{align-items:center;gap:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;display:flex}.saved-list li.saved-active{border-color:var(--green);background:var(--green-soft)}.saved-summary{font-size:var(--fs-xs);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.saved-current{font-size:var(--fs-xs);color:var(--green);font-weight:800}.seed-jump{align-items:center;gap:var(--sp-1);display:flex}.seed-jump input{border:1px solid var(--border);border-radius:var(--radius-sm);width:100px;font:inherit;font-size:var(--fs-xs);background:var(--surface);padding:5px 8px}.lock-btn{font-size:var(--fs-xs);color:var(--muted);cursor:pointer;text-underline-offset:3px;background:0 0;border:none;margin-left:6px;padding:1px 4px;font-weight:700;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.lock-btn:hover{color:var(--green)}.lock-btn.lock-on{color:var(--green-deep);text-decoration:underline}.week-actions{align-items:center;gap:var(--sp-2);flex-wrap:wrap;margin-left:auto;display:flex}.variation-tag{font-size:var(--fs-xs);color:var(--gold);background:var(--gold-soft);border-radius:99px;padding:4px 10px;font-weight:800}.week-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}.day-card{background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--border-strong);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);gap:var(--sp-2);flex-direction:column;display:flex}.day-today{border-top-color:var(--tomato);border-color:var(--border-strong)}.day-head{justify-content:space-between;align-items:center;display:flex}.day-head h3{font-family:var(--font-display);font-size:var(--fs-md);font-weight:600}.day-batch{font-size:var(--fs-xs);color:var(--green-deep);background:var(--green-soft);border-radius:var(--radius-sm);margin:0;padding:7px 10px}.day-meals{gap:var(--sp-2);flex-direction:column;flex:1;margin:0;padding:0;list-style:none;display:flex}.day-meals li{gap:var(--sp-2);display:flex}.day-meal-time{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;min-width:58px;padding-top:2px;font-weight:700}.day-meal-body{flex-direction:column;display:flex}.day-meal-title{font-size:var(--fs-sm);align-items:center;gap:7px;font-weight:700;display:flex}.day-meal-foods{font-size:var(--fs-xs);color:var(--muted)}.day-meal-kcal{font-size:var(--fs-xs);color:var(--ink-soft);font-variant-numeric:tabular-nums}.food-chip{font:inherit;color:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.food-chip:hover{color:var(--green-deep)}.food-chip-swapped{color:var(--green-deep);font-weight:700}.food-chip-open{color:var(--green-deep);text-decoration:underline}.swap-picker{padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:var(--fs-xs);margin:6px 0 2px}.swap-picker-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);margin-bottom:6px;display:flex}.swap-options{gap:4px;margin:0;padding:0;list-style:none;display:grid}.swap-option{justify-content:space-between;align-items:baseline;gap:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;font:inherit;color:var(--ink);cursor:pointer;text-align:left;background:0 0;padding:6px 9px;display:flex}.swap-option:hover{border-color:var(--green);background:var(--green-soft)}.swap-option-name{flex-direction:column;display:flex}.swap-option-qty{color:var(--muted)}.swap-option-delta{font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap;flex-direction:column;align-items:flex-end;display:flex}.swap-option-delta .delta-up{color:var(--tomato)}.swap-option-delta .delta-down{color:var(--gold)}.swap-picker .panel-note{font-size:var(--fs-xs);color:var(--muted)}.swap-scope{gap:6px;margin-bottom:8px;display:flex}.swap-group-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:10px 0 4px;font-weight:700}.swap-aisle-label{font-size:var(--fs-xs);color:var(--muted);margin:8px 0 3px;font-weight:600}.swap-search{width:100%;font:inherit;font-size:var(--fs-xs);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);color:var(--ink);margin-bottom:6px;padding:6px 10px}.swap-search:focus{border-color:var(--green);outline:none}.swap-revert{border-style:dashed;margin-bottom:4px;font-weight:600}.day-date{font-size:var(--fs-xs);color:var(--muted);margin-left:4px;font-weight:500}.item-name-btn{font:inherit;color:inherit;cursor:pointer;text-align:left;-webkit-text-decoration:underline dotted var(--border-strong);text-decoration:underline dotted var(--border-strong);text-underline-offset:3px;background:0 0;border:none;padding:0}.item-name-btn:hover{color:var(--green-deep)}.item-name-btn.food-chip-swapped{color:var(--green-deep);font-weight:600}.prep-badge{font-size:var(--fs-xs);color:var(--muted);font-weight:700}.prep-batch-cook{color:var(--tomato)}.prep-assemble{color:var(--green)}.day-totals{border-top:1px solid var(--border);font-size:var(--fs-sm);color:var(--ink-soft);font-variant-numeric:tabular-nums;padding-top:9px;font-weight:700}.shop-controls{align-items:center;gap:var(--sp-3);flex-wrap:wrap;display:flex}.segmented{background:var(--surface-dim);border-radius:99px;gap:2px;padding:3px;display:inline-flex}.segmented button{font-size:var(--fs-sm);color:var(--ink-soft);border-radius:99px;min-height:36px;padding:7px 15px;font-weight:600;transition:background .15s ease-out}.segmented .seg-active{background:var(--surface);color:var(--green-deep);box-shadow:var(--shadow-soft);font-weight:800}.shop-totalbar{z-index:30;align-items:baseline;gap:var(--sp-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:10px 16px;display:flex;position:sticky;top:0}.shop-total-value{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--green-deep);font-variant-numeric:tabular-nums;font-weight:620}.shop-total-label{font-size:var(--fs-xs);color:var(--muted)}.shop-progress{font-size:var(--fs-sm);color:var(--green);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:700}.perishable-note{background:var(--gold-soft);border-left:4px solid var(--gold);border-radius:var(--radius-sm);font-size:var(--fs-sm);color:#7a5c1e;padding:12px 16px;line-height:1.5}.fresh-tag{font-size:var(--fs-xs);color:var(--gold);background:var(--gold-soft);border-radius:99px;margin-left:6px;padding:1px 7px;font-weight:800}.aisle-section{padding-top:var(--sp-2)}.aisle-name{font-family:var(--font-display);font-size:var(--fs-md);color:var(--green-deep);font-variation-settings:"SOFT" 60, "WONK" 1;border-bottom:2px solid var(--border-strong);margin-bottom:var(--sp-1);padding-bottom:5px;font-weight:600}.shop-lines{margin:0;padding:0;list-style:none}.shop-lines label{align-items:center;gap:var(--sp-3);border-radius:var(--radius-sm);cursor:pointer;flex-wrap:wrap;min-height:44px;padding:8px 6px;display:flex}.shop-lines li+li label{border-top:1px solid var(--border);border-radius:0}.shop-lines label:hover{background:var(--surface-dim)}.line-qty{color:var(--tomato);font-variant-numeric:tabular-nums;min-width:130px;font-weight:700;font-size:var(--fs-sm)}.line-name{font-weight:600}.line-meta{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto}.line-bought .line-name,.line-bought .line-qty{opacity:.55;text-decoration:line-through}.line-skipped .line-name,.line-skipped .line-qty{opacity:.4}.staples-section{background:0 0}.staples-blurb{margin:0 0 var(--sp-2);font-size:var(--fs-sm);color:var(--muted)}.pill{font-size:var(--fs-xs);border:1px solid var(--border-strong);color:var(--ink-soft);border-radius:99px;min-height:28px;padding:5px 12px;font-weight:800;transition:background .15s ease-out,color .15s ease-out}.pill-on{background:var(--green);border-color:var(--green);color:var(--surface)}.food-table-wrap{overflow-x:auto}.food-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.food-table th{text-align:left;font-size:var(--fs-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:4px 10px 8px 6px;font-weight:800}.food-table td{border-top:1px solid var(--border);vertical-align:top;padding:9px 10px 9px 6px}.food-table th.col-num,.food-table td.col-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.col-name{min-width:180px}.col-buy{min-width:150px;color:var(--ink-soft)}.food-name{font-weight:700;display:block}.food-serving{font-size:var(--fs-xs);color:var(--muted);margin-top:1px;display:block}.col-tags{white-space:nowrap}.food-tag{font-size:var(--fs-xs);margin-right:8px;font-weight:700;display:inline-block}.tag-staple{color:var(--gold)}.tag-supp{color:var(--green)}.tag-whole{color:var(--muted)}.col-action{text-align:right;white-space:nowrap}.pill-banned{background:var(--tomato);border-color:var(--tomato);color:var(--surface)}.food-banned .food-name{text-decoration:line-through}.food-banned td{opacity:.6}.food-banned td.col-action{opacity:1}.btn-primary{background:var(--green);color:var(--surface);border-radius:99px;min-height:44px;padding:9px 18px;font-weight:700;transition:background .15s ease-out,transform .1s ease-out}.btn-primary:hover{background:var(--green-deep)}.btn-primary:active{transform:scale(.97)}.btn-primary:disabled{opacity:.55;cursor:default}.btn-ghost{color:var(--ink-soft);font-size:var(--fs-sm);border:1px solid var(--border-strong);border-radius:99px;min-height:38px;padding:8px 14px;font-weight:600;transition:background .15s ease-out}.btn-ghost:hover{background:var(--surface-dim)}.btn-ghost:disabled{opacity:.5;cursor:default}.btn-small{font-size:var(--fs-xs);min-height:28px;padding:3px 11px}.progress-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lift);padding:var(--sp-4);gap:var(--sp-3);flex-direction:column;display:flex}.hero-numbers{align-items:flex-end;gap:var(--sp-5);flex-wrap:wrap;display:flex}.hero-stat{flex-direction:column;display:flex}.hero-value{font-family:var(--font-display);font-size:var(--fs-xl);font-variant-numeric:tabular-nums;align-items:center;gap:5px;font-weight:600;line-height:1.1;display:inline-flex}.hero-stat-main .hero-value{font-size:var(--fs-xxl);color:var(--green-deep);font-variation-settings:"SOFT" 60, "WONK" 1}.hero-down{color:var(--tomato)}.hero-warn{color:var(--gold)}.hero-streak,.hero-streak svg{color:var(--green)}.hero-label{font-size:var(--fs-xs);color:var(--muted)}.weight-entry{gap:var(--sp-2);display:flex}.weight-entry input{flex:1;max-width:260px}.weight-summary{font-size:var(--fs-sm);color:var(--ink-soft);margin:0}.history-section{align-items:flex-start;gap:var(--sp-2);flex-direction:column;display:flex}.weight-list{width:100%;max-width:420px;margin:0;padding:0;list-style:none}.weight-list li{align-items:center;gap:var(--sp-3);font-size:var(--fs-sm);border-top:1px solid var(--border);font-variant-numeric:tabular-nums;padding:6px 2px;display:flex}.weight-list li span:first-child{color:var(--muted)}.weight-list li button{margin-left:auto}.trend-chart{width:100%;height:auto;display:block}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-tick{fill:var(--muted);font-size:10px}.chart-line{stroke:var(--green);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.chart-line-raw{stroke-width:1.25px;opacity:.35}.chart-dot{fill:var(--surface);stroke:var(--green);stroke-width:2px}.chart-goal-line{stroke:var(--tomato);stroke-width:2px;stroke-dasharray:5 5;stroke-linecap:round}.chart-goal-dot{fill:var(--surface);stroke:var(--tomato);stroke-width:2px}.goal-gap-note{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);color:var(--ink-soft)}.goal-gap-ahead strong{color:var(--green)}.goal-gap-behind strong{color:var(--gold)}.goal-gap-on-pace strong{color:var(--ink)}.benchmark-section{gap:var(--sp-2);flex-direction:column;display:flex}.benchmark-table-wrap{overflow-x:auto}.benchmark-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.benchmark-table th,.benchmark-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}.benchmark-table th{color:var(--muted);font-weight:600;font-size:var(--fs-xs)}.bench-pct{color:var(--ink);width:3.5rem;font-weight:700}.bench-target{white-space:nowrap}.bench-date{color:var(--muted);white-space:nowrap}.bench-score{color:var(--ink-soft)}.bench-hit{color:var(--green);font-weight:700}.bench-miss{color:var(--gold);font-weight:700}.bench-row.bench-hit{background:color-mix(in srgb, var(--green-soft) 40%, transparent)}.bench-row.bench-missed{background:color-mix(in srgb, var(--gold-soft) 35%, transparent)}.goal-status{font-size:var(--fs-sm);border-radius:var(--radius-sm);margin:6px 0 0;padding:10px 13px}.goal-ok{background:var(--green-soft);color:var(--ink-soft);border-left:4px solid var(--green)}.goal-warn{background:var(--tomato-soft);color:var(--ink-soft);border-left:4px solid var(--tomato)}.cal-section{gap:var(--sp-3);flex-direction:column;display:flex}.cal-nav{justify-content:space-between;align-items:center;gap:var(--sp-2);display:flex}.cal-nav h3{font-family:var(--font-display);font-size:var(--fs-md);font-variation-settings:"SOFT" 60, "WONK" 1;font-weight:600}.cal-nav-btns{gap:var(--sp-1);display:flex}.cal-grid{gap:var(--sp-1);grid-template-columns:repeat(7,1fr);display:grid}.cal-head{font-size:var(--fs-xs);color:var(--muted);text-align:center;letter-spacing:.04em;padding:4px 0}.cal-cell{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;justify-content:space-between;min-height:56px;padding:4px 6px;display:flex;position:relative}.cal-blank{background:0 0;border-color:#0000}.cal-daynum{font-size:var(--fs-sm);color:var(--ink-soft)}.cal-today{border:2px solid var(--tomato)}.cal-future{opacity:.45}.cal-meals-full{background:var(--green-soft);border-color:var(--green)}.cal-meals-partial{background:var(--gold-soft)}.cal-cheat{background:var(--plum-soft);border-color:var(--plum)}.cal-badges{justify-content:flex-end;align-items:center;gap:4px;display:flex}.cal-dot{background:var(--green);border-radius:50%;width:8px;height:8px;display:inline-block}.cal-bench-flag{border:1px solid #0000;border-radius:2px;padding:2px 3px 1px;font-size:9px;font-weight:800;line-height:1}.cal-bench-flag-upcoming{color:var(--ink-soft);background:var(--surface);border-color:var(--border-strong)}.cal-bench-flag-hit{color:var(--green);background:var(--green-soft);border-color:var(--green)}.cal-bench-flag-missed{color:var(--gold);background:var(--gold-soft);border-color:var(--gold)}.cal-bench-upcoming{box-shadow:inset 0 0 0 1px var(--border-strong)}.cal-bench-hit{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--green) 45%, transparent)}.cal-bench-missed{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--gold) 45%, transparent)}.cal-cheat-tag{font-size:var(--fs-xs);color:var(--plum);font-weight:800}.cal-legend{gap:var(--sp-3);font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap;display:flex}.cal-legend-item{align-items:center;gap:5px;display:inline-flex}.cal-swatch{border:1px solid var(--border-strong);border-radius:3px;width:12px;height:12px;display:inline-block}.cal-swatch.cal-meals-full{background:var(--green-soft);border-color:var(--green)}.cal-swatch.cal-meals-partial{background:var(--gold-soft);border-color:var(--gold)}.cal-swatch.cal-cheat{background:var(--plum-soft);border-color:var(--plum)}.settings-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(290px,1fr));align-items:start;display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-soft);padding:var(--sp-4)}.panel h3{font-family:var(--font-display);font-size:var(--fs-md);margin-bottom:var(--sp-2);font-weight:600}.panel-subhead{margin-top:var(--sp-5)}.panel-blurb{margin:0 0 var(--sp-3);font-size:var(--fs-sm);color:var(--muted)}.panel-note{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);color:var(--ink-soft)}.goal-panel{border-color:var(--green)}.field-row{align-items:center;gap:var(--sp-2);margin-bottom:9px;display:flex}.field-row label{font-size:var(--fs-sm);color:var(--ink-soft);flex:1}.field-row input{width:140px}.backup-actions{gap:var(--sp-2);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.sync-error{color:var(--tomato);font-weight:700}.dislike-btn{font-size:var(--fs-xs);color:var(--muted);opacity:0;border:1px solid #0000;border-radius:99px;margin-left:4px;padding:1px 8px;transition:opacity .15s ease-out}.meal-items li:hover .dislike-btn,.dislike-btn:focus-visible{opacity:1}.dislike-btn:hover{color:var(--tomato);border-color:var(--tomato);background:var(--tomato-soft)}.food-chips{flex-wrap:wrap;gap:6px;display:flex}.chip{font-size:var(--fs-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--ink-soft);border-radius:99px;min-height:30px;padding:5px 12px;transition:border-color .15s ease-out}.chip:hover{border-color:var(--tomato)}.chip-off{background:var(--tomato-soft);border-color:var(--tomato);color:var(--tomato);text-decoration:line-through}@media (hover:none){.dislike-btn{opacity:1}}.toast{left:50%;bottom:calc(76px + env(safe-area-inset-bottom,0px));align-items:center;gap:var(--sp-3);background:var(--ink);color:var(--bg);font-size:var(--fs-sm);box-shadow:var(--shadow-lift);z-index:50;border-radius:99px;max-width:min(92vw,480px);padding:10px 12px 10px 18px;animation:.25s ease-out toast-in;display:flex;position:fixed;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.toast-undo{color:var(--gold-soft);border-radius:99px;padding:4px 8px;font-weight:800}.toast-undo:hover{background:#ffffff1f}.toast-close{color:var(--muted);font-size:var(--fs-md);border-radius:99px;padding:4px 8px;line-height:1}.login-wrap{min-height:100vh;padding:var(--sp-5);justify-content:center;align-items:center;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lift);padding:var(--sp-6) var(--sp-5);gap:var(--sp-3);text-align:center;flex-direction:column;width:100%;max-width:360px;display:flex}.login-card h1{font-size:var(--fs-lg);color:var(--green-deep);font-variation-settings:"SOFT" 60, "WONK" 1}.login-squiggle{width:130px;margin:-6px auto 0}.login-blurb{font-size:var(--fs-sm);color:var(--ink-soft);margin:0}.login-message{font-size:var(--fs-sm);color:var(--tomato);margin:0}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=700px){.tabs{display:none}.bottom-nav{display:flex}.app-main{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}.app-header-inner{padding-top:var(--sp-4);padding-bottom:var(--sp-3)}.brand h1{font-size:var(--fs-lg)}.brand-squiggle{width:110px}.header-stats{gap:var(--sp-4)}.stat-week{display:none}}@media (width<=560px){.meal-macros{width:100%;margin-left:36px}.item-qty{min-width:120px}.line-meta{width:100%;margin-left:36px}.tl-row{grid-template-columns:52px 14px 1fr}.cal-cell{min-height:44px;padding:3px 4px}.hero-numbers{gap:var(--sp-4)}.hero-stat-main .hero-value{font-size:var(--fs-xl)}.shop-totalbar{top:4px}}[data-theme=dark]{--bg:#201b12;--surface:#2b2418;--surface-dim:#251f14;--ink:#f0e8d5;--ink-soft:#cfc1a5;--muted:#9d8e74;--border:#3e3523;--border-strong:#574a2f;--green:#7fb092;--green-deep:#a6cab3;--green-soft:#2e4034;--tomato:#e08264;--tomato-soft:#4a2d22;--gold:#d4ad55;--gold-soft:#463b1d;--plum:#ca93b6;--plum-soft:#442a3b;--shadow-soft:0 1px 2px #00000059, 0 3px 10px #00000040;--shadow-lift:0 2px 4px #0006, 0 10px 28px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root[data-theme=auto],:root:not([data-theme]){--bg:#201b12;--surface:#2b2418;--surface-dim:#251f14;--ink:#f0e8d5;--ink-soft:#cfc1a5;--muted:#9d8e74;--border:#3e3523;--border-strong:#574a2f;--green:#7fb092;--green-deep:#a6cab3;--green-soft:#2e4034;--tomato:#e08264;--tomato-soft:#4a2d22;--gold:#d4ad55;--gold-soft:#463b1d;--plum:#ca93b6;--plum-soft:#442a3b;--shadow-soft:0 1px 2px #00000059, 0 3px 10px #00000040;--shadow-lift:0 2px 4px #0006, 0 10px 28px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}.intro-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow-soft)}.intro-card h3{font-family:var(--font-display);margin-bottom:var(--sp-2)}.intro-card ol{margin:0 0 var(--sp-2);gap:6px;padding-left:22px;display:grid}.intro-card p{margin:0 0 var(--sp-2);color:var(--ink-soft);font-size:var(--fs-sm)}.recap-card{background:var(--plum-soft);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4)}.recap-head{justify-content:space-between;align-items:baseline;display:flex}.recap-head h3{font-family:var(--font-display);font-size:var(--fs-md)}.recap-stats{gap:var(--sp-3);margin:var(--sp-2) 0;flex-wrap:wrap;display:flex}.recap-stat{font-weight:800;font-size:var(--fs-md);color:var(--ink)}.recap-good{color:var(--green-deep)}.recap-line{font-size:var(--fs-sm);color:var(--ink-soft);margin:0}.batch-note{align-items:center;gap:var(--sp-3);flex-wrap:wrap;justify-content:space-between;display:flex}.cooking-overlay{z-index:60;background:var(--bg);padding:var(--sp-5) var(--sp-4) var(--sp-6);position:fixed;inset:0;overflow-y:auto}.cooking-head{max-width:640px;margin:0 auto var(--sp-4);justify-content:space-between;align-items:center;display:flex}.cooking-head h3{font-family:var(--font-display);font-size:var(--fs-xl)}.cooking-steps{gap:var(--sp-3);max-width:640px;margin:0 auto;padding:0;list-style:none;display:grid}.cooking-steps li{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);align-items:center;gap:var(--sp-3);box-shadow:var(--shadow-soft);justify-content:space-between;display:flex}.cooking-steps label{align-items:center;gap:var(--sp-3);font-size:var(--fs-md);cursor:pointer;display:flex}.cooking-steps .step-done .step-label{color:var(--muted);text-decoration:line-through}.step-timer{white-space:nowrap;border:1px solid var(--border-strong);border-radius:999px;padding:6px 12px}.step-timer.timer-running{background:var(--gold-soft);color:var(--gold);font-variant-numeric:tabular-nums;font-weight:800}.cooking-alarm{max-width:640px;margin:var(--sp-4) auto 0;text-align:center;color:var(--tomato);font-weight:800}.ate-out-btn{margin-top:var(--sp-2);align-self:flex-start}.ate-out-form{align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--ink-soft);flex-wrap:wrap;display:flex}.ate-out-form input{width:90px;font-size:var(--fs-sm);padding:6px 8px}.ate-out-note{font-style:normal}.spark-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow-soft)}.spark-section h3{font-family:var(--font-display);font-size:var(--fs-md);margin-bottom:var(--sp-3)}.spark-bars{gap:var(--sp-2);align-items:flex-end;display:flex}.spark-col{flex-direction:column;flex:1;align-items:center;gap:4px;min-width:0;display:flex}.spark-track{background:var(--surface-dim);border-radius:6px;align-items:flex-end;width:100%;max-width:34px;height:64px;display:flex;overflow:hidden}.spark-fill{background:var(--gold);border-radius:6px 6px 0 0;width:100%;transition:height .3s}.spark-fill.spark-good{background:var(--green)}.spark-label{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}.measure-section{gap:var(--sp-3);flex-direction:column;align-items:flex-start;display:flex}.measure-entry{gap:var(--sp-2);align-items:center;display:flex}.measure-entry select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px}.measure-entry input{width:110px}.measure-kind{width:100%}.measure-kind h4{margin:0 0 var(--sp-1);font-size:var(--fs-sm);text-transform:capitalize;gap:var(--sp-3);align-items:baseline;display:flex}.measure-delta{color:var(--muted);font-weight:600;font-size:var(--fs-xs)}.chart-projection{stroke:var(--green);stroke-width:2px;stroke-dasharray:2 6;stroke-linecap:round;opacity:.7}.chart-band{fill:var(--green);opacity:.12}.chart-waist path{stroke:var(--plum);stroke-width:2px;stroke-dasharray:6 4;stroke-linecap:round;opacity:.85}.chart-waist rect{fill:var(--plum)}.chart-waist-label{fill:var(--plum);font-weight:600}.chart-toggles{justify-content:flex-end;gap:var(--sp-2);display:flex}.chip-toggle{font:inherit;font-size:var(--fs-xs);color:var(--plum);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:999px;padding:2px 10px}.chip-toggle:hover{border-color:var(--border-strong)}.chip-toggle-on{background:var(--plum-soft);border-color:var(--plum)}.records-strip{gap:var(--sp-2);flex-wrap:wrap;display:flex}.record-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);flex-direction:column;gap:1px;min-width:84px;display:flex}.record-value{font-family:var(--font-display);font-size:var(--fs-lg);font-variant-numeric:tabular-nums;color:var(--green-deep);font-weight:600}.record-label{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap}.insights-section{gap:var(--sp-3);flex-direction:column;display:flex}.insight-cards{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(250px,1fr));display:grid}.insight-card{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--border-strong);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4)}.insight-card h4{font-size:var(--fs-sm);margin:0 0 4px}.insight-card p{font-size:var(--fs-sm);color:var(--ink-soft);margin:0;line-height:1.5}.insight-good{border-left-color:var(--green);background:var(--green-soft)}.insight-warn{border-left-color:var(--gold);background:var(--gold-soft)}.insight-neutral{border-left-color:var(--plum)}.rate-section{gap:var(--sp-2);flex-direction:column;display:flex}.rate-chart{width:100%;height:auto}.rate-zero{stroke:var(--border-strong)}.rate-bar{fill:var(--gold)}.rate-bar-good{fill:var(--green)}.rate-bar-gain{fill:var(--tomato);opacity:.85}.rate-nodata{fill:var(--muted)}.whatif-panel{margin-top:var(--sp-3)}.whatif-body{margin-top:var(--sp-2);background:var(--surface-dim);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);gap:var(--sp-2);flex-direction:column;display:flex}.whatif-label{font-size:var(--fs-sm);color:var(--ink-soft)}.whatif-body input[type=range]{width:100%;accent-color:var(--green)}.whatif-scale{font-size:var(--fs-xs);color:var(--muted);justify-content:space-between;display:flex}.whatif-apply{color:var(--green-deep);font-weight:600}button.cal-cell{text-align:left;font:inherit;flex-direction:column;justify-content:space-between;align-items:flex-start;display:flex}.cal-tappable{cursor:pointer}.cal-tappable:hover{border-color:var(--border-strong)}.cal-selected{outline:2px solid var(--gold);outline-offset:1px}.cal-future{cursor:default}.cal-note-tag{color:var(--gold);font-weight:800;font-size:var(--fs-sm);line-height:.6}.cal-detail{margin-top:var(--sp-3);background:var(--surface-dim);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4)}.cal-detail-head{margin-bottom:var(--sp-2);justify-content:space-between;align-items:baseline;display:flex}.cal-detail-head h4{font-family:var(--font-display);font-size:var(--fs-md);margin:0}.cal-detail-body{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.cal-detail-meals{gap:8px;margin:0;padding:0;list-style:none;display:grid}.cal-detail-meals label{align-items:center;gap:var(--sp-2);cursor:pointer;font-size:var(--fs-sm);display:flex}.cal-detail-side{gap:var(--sp-2);flex-direction:column;align-items:flex-start;display:flex}.cal-detail-weight{font-size:var(--fs-sm);color:var(--ink-soft);margin:0}.cal-note-input{width:100%;font:inherit;font-size:var(--fs-sm);color:var(--ink);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);resize:vertical;padding:8px 10px}@media (width<=560px){.cal-detail-body{grid-template-columns:1fr}}.food-edit-row td{background:var(--surface-dim);padding:var(--sp-3) var(--sp-4)}.food-editor{gap:var(--sp-3);flex-direction:column;display:flex}.food-editor-fields{gap:var(--sp-3);flex-wrap:wrap;display:flex}.food-editor-field{font-size:var(--fs-xs);color:var(--ink-soft);flex-direction:column;gap:4px;display:flex}.food-editor-field input{width:110px;font-size:var(--fs-sm);padding:6px 8px}.food-editor-base{color:var(--gold);font-weight:600}.food-editor-actions{gap:var(--sp-2);display:flex}.tag-edited{background:var(--gold-soft);color:var(--gold)}.tag-diet{background:var(--surface-dim);color:var(--muted)}.price-btn{font:inherit;font-size:inherit;color:inherit;text-underline-offset:2px;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.price-btn:hover{color:var(--green-deep)}.price-input{width:76px;font-size:var(--fs-sm);padding:4px 6px}.pantry-servings{width:64px;font-size:var(--fs-sm);padding:4px 6px}.aisle-order-list{margin:0 0 var(--sp-2);gap:4px;padding:0;list-style:none;display:grid}.aisle-order-list li{background:var(--surface-dim);border-radius:var(--radius-sm);font-size:var(--fs-sm);justify-content:space-between;align-items:center;padding:4px 4px 4px 12px;display:flex}.aisle-order-btns{gap:2px;display:flex}.diet-filters{gap:var(--sp-2);flex-wrap:wrap;display:flex}.diet-filter{font-size:var(--fs-sm);border:1px solid var(--border-strong);cursor:pointer;color:var(--ink-soft);border-radius:999px;align-items:center;gap:6px;padding:5px 12px;display:inline-flex}.diet-filter input{accent-color:var(--green);margin:0}.diet-filter.diet-on{background:var(--tomato-soft);border-color:var(--tomato);color:var(--tomato);font-weight:700}.error-log{margin:var(--sp-2) 0;gap:6px;padding:0;list-style:none;display:grid}.error-log li{font-size:var(--fs-xs);background:var(--surface-dim);border-radius:var(--radius-sm);flex-direction:column;gap:2px;padding:6px 10px;display:flex}.error-time{color:var(--muted)}.error-msg{color:var(--ink-soft);word-break:break-word}.session-expired{background:var(--tomato-soft);border-color:var(--tomato)}
