:root{--bg: #f6f5f1;--surface: #ffffff;--surface-2: #efede7;--border: #e3e0d8;--text: #1f2421;--text-2: #5d655f;--muted: #8b928c;--accent: #2f7d4f;--accent-ink: #ffffff;--accent-soft: #e2f0e6;--warn: #b85c1e;--warn-soft: #fbeadb;--danger: #b3261e;--bar: #3d8f5e;--cold: #2d6fa8;--cold-soft: #e3eef8;--radius: 14px;--shadow: 0 1px 2px rgba(0, 0, 0, .05), 0 2px 8px rgba(0, 0, 0, .04);color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #121513;--surface: #1b1f1c;--surface-2: #252a26;--border: #2f3531;--text: #e9ece9;--text-2: #aab2ac;--muted: #7c847e;--accent: #5cbf83;--accent-ink: #0d1a12;--accent-soft: #1f3327;--warn: #f0a46a;--warn-soft: #3a281b;--danger: #f2867f;--bar: #5cbf83;--cold: #8cc0ee;--cold-soft: #1a2a38;--shadow: none;color-scheme:dark}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text);font:16px/1.4 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}.app{max-width:640px;margin:0 auto;min-height:100dvh;padding-bottom:calc(76px + env(safe-area-inset-bottom))}.header{position:sticky;top:0;z-index:5;padding:calc(12px + env(safe-area-inset-top)) 16px 10px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.header h1{margin:0;font-size:28px;font-weight:750;letter-spacing:-.02em}.header .sub{color:var(--text-2);font-size:14px;margin-top:2px}.header-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.header-row h1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-btns{display:flex;gap:6px;flex:none}@media (max-width: 370px){.header h1{font-size:25px}.header-btn{padding:8px 9px;font-size:13px}}.content{padding:4px 16px 96px}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;justify-content:center;background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.tabbar-inner{display:grid;grid-template-columns:repeat(5,1fr);width:100%;max-width:640px}.tab{position:relative;border:0;background:none;padding:8px 2px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--muted);font-size:11px;font-weight:600}.tab svg{width:24px;height:24px}.tab.active{color:var(--accent)}.tab .badge{position:absolute;top:4px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--warn);color:#fff;font-size:11px;line-height:18px;text-align:center}.tab-scan .scan-circle{width:48px;height:48px;margin-top:-18px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;box-shadow:0 4px 12px #2f7d4f59}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border)}.section-title{margin:20px 4px 8px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);display:flex;justify-content:space-between}.list{list-style:none;margin:0;padding:0}.list>li+li{border-top:1px solid var(--border)}.row{display:flex;align-items:center;gap:12px;padding:12px 14px;min-height:56px}.row .grow{flex:1;min-width:0}.row .title{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .meta{color:var(--text-2);font-size:13px}.row.clickable{cursor:pointer}.icon{font-size:22px;width:28px;text-align:center;flex:none}.picon{position:relative;flex:none;width:52px;height:52px;border-radius:16px;background:var(--surface-2);display:grid;place-items:center}.picon .emoji{font-size:32px;line-height:1}.picon.small{width:40px;height:40px;border-radius:12px}.picon.small .emoji{font-size:24px}.picon.empty .emoji{filter:grayscale(1);opacity:.4}.picon .count{position:absolute;right:-7px;bottom:-6px;min-width:26px;height:22px;padding:0 6px;border-radius:11px;background:var(--accent);color:var(--accent-ink);border:2px solid var(--surface);font-size:12px;font-weight:800;line-height:18px;text-align:center;font-variant-numeric:tabular-nums}.picon.small .count{min-width:22px;height:20px;font-size:11px;line-height:16px;right:-6px;bottom:-5px}.row.product{padding:10px 12px;min-height:72px;gap:14px}.staple-toggle{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin-bottom:14px;border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:10px 12px;cursor:pointer}.staple-toggle .star{font-size:26px;line-height:1;color:var(--muted)}.staple-toggle b{display:block;font-size:15px}.staple-toggle small{display:block;font-size:12px;color:var(--text-2)}.staple-toggle.on{border-color:#e0a800;background:color-mix(in srgb,#f5c400 14%,var(--surface))}.staple-mark{font-size:12px;margin-left:4px}.recs{margin-bottom:6px}.recs .row{gap:12px}.rec-reason{font-size:13px;color:var(--warn)}.rec-reason.stricat{color:var(--danger)}.rec-actions{display:flex;gap:6px}.picon.fresh-curand .emoji{filter:saturate(.55) sepia(.35) brightness(.95)}.picon.fresh-stricat .emoji{filter:grayscale(.5) sepia(.8) hue-rotate(-15deg) brightness(.7) contrast(.9)}.picon.fresh-stricat{background:color-mix(in srgb,var(--danger) 14%,var(--surface-2))}.fresh-ring{position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;width:calc(100% + 10px);height:calc(100% + 10px);pointer-events:none}.fresh-ring circle{fill:none;stroke-width:5;stroke-linecap:round}.fresh-ring .track{stroke:var(--border)}.picon:has(.fresh-ring){border-radius:50%}.picon .fresh-dot{position:absolute;left:-6px;top:-6px;width:20px;height:20px;border-radius:10px;background:var(--warn);color:#fff;font-size:12px;font-weight:800;line-height:20px;text-align:center;border:2px solid var(--surface)}.picon.fresh-stricat .fresh-dot{background:var(--danger);font-size:10px}.picon.small .fresh-dot{width:17px;height:17px;line-height:15px;font-size:10px;left:-5px;top:-5px}.fresh-label{font-size:10px;font-weight:750;line-height:1.1}.fresh-label.curand{color:var(--warn)}.fresh-label.stricat{color:var(--danger)}.fresh-summary{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:12px;margin-bottom:10px;font-size:14px;background:var(--warn-soft);color:var(--warn)}.fresh-summary b{font-weight:750}.fresh-bar{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden;margin:8px 0 4px;display:flex}.fresh-bar div{height:100%}.fresh-info{font-size:13px;color:var(--text-2)}.batches{list-style:none;margin:0;padding:0;display:grid;gap:8px}.batch{border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--surface)}.batch.stricat{border-color:color-mix(in srgb,var(--danger) 50%,transparent)}.batch.curand{border-color:color-mix(in srgb,var(--warn) 50%,transparent)}.batch-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.batch-since{font-size:13px;color:var(--text-2)}.batch-actions{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px;margin-top:8px}.batch-expiry{display:flex;flex-direction:column;gap:2px;flex:1;min-width:140px}.batch-expiry span{font-size:11px;font-weight:600;color:var(--text-2)}.batch-expiry .input{padding:0 8px;height:36px;font-size:14px}.batch-actions .btn.small{height:36px}.row.product .title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25}.row.product .stepper{gap:8px}.view-toggle{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:var(--surface-2);border-radius:12px;margin-bottom:12px}.view-toggle button{border:0;background:none;padding:8px;border-radius:9px;font-weight:650;color:var(--text-2);cursor:pointer}.view-toggle button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.fridge,.pantry{--fridge-in: #f4f8fb;--fridge-shell: #dfe6ec;--glass: #b9d6ee;--glass-shadow: rgba(45, 111, 168, .12);--frost: #e6f0f9;--wood: #c9a173;--wood-in: #fbf5ec;--bulb: #ffd88a}@media (prefers-color-scheme: dark){.fridge,.pantry{--fridge-in: #1a2127;--fridge-shell: #2c353d;--glass: #3d6688;--glass-shadow: rgba(0, 0, 0, .35);--frost: #1b2a37;--wood: #8a6a45;--wood-in: #221d17;--bulb: #c9a25a}}.fridge{position:relative;border:3px solid var(--fridge-shell);border-radius:26px;padding:12px 10px 10px;background:var(--fridge-in);box-shadow:var(--shadow),inset 0 0 0 1px #fff6}.fridge:before{content:"";position:absolute;top:6px;left:50%;transform:translate(-50%);width:64px;height:5px;border-radius:3px;background:var(--bulb);box-shadow:0 0 18px 6px color-mix(in srgb,var(--bulb) 45%,transparent)}.fridge-title{font-size:13px;font-weight:700;color:var(--cold);margin:6px 4px 8px}.fridge-top{display:grid;grid-template-columns:minmax(0,1fr) 88px;gap:8px}.fridge-body,.fridge-door{display:flex;flex-direction:column;gap:10px;min-width:0}.fridge-door{border-left:3px solid var(--fridge-shell);padding-left:8px}.drawers{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-top:2px}.fz{border:1px solid var(--border);border-radius:12px;padding:8px;background:var(--surface);min-width:0}.fridge .fz.shelf{background:none;border:0;border-radius:0;padding:4px 4px 6px;border-bottom:5px solid var(--glass);box-shadow:0 6px 8px -6px var(--glass-shadow)}.fz.drawer-veg,.fz.drawer-fruit,.fz.freezer{position:relative;border-radius:10px 10px 14px 14px;padding-top:14px}.fz.drawer-veg:before,.fz.drawer-fruit:before,.fz.freezer:before{content:"";position:absolute;top:5px;left:50%;transform:translate(-50%);width:34%;height:4px;border-radius:2px;background:currentColor;opacity:.35}.fz.drawer-veg{color:var(--accent)}.fz.drawer-fruit{color:var(--warn)}.fz.freezer{color:var(--cold)}.fz.door-bin{background:none;border:0;border-radius:0 0 12px 12px;padding:4px 2px 6px;border-bottom:5px solid var(--glass);box-shadow:inset 0 -14px 0 -8px color-mix(in srgb,var(--glass) 35%,transparent)}.fz-label{font-size:11px;font-weight:700;color:var(--text-2);margin:0 2px 6px;text-transform:uppercase;letter-spacing:.02em;line-height:1.25}.fz-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));justify-items:center;align-items:start;gap:12px 4px;min-height:52px}.fz-items:empty{min-height:0;display:block}.fz-items:empty:after{content:"gol";font-size:12px;color:var(--muted);padding:0 2px}.fz.drawer-veg{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.fz.drawer-veg .fz-label{color:var(--accent)}.fz.drawer-fruit{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 35%,transparent)}.fz.drawer-fruit .fz-label{color:var(--warn)}.fz.door-bin{flex:1}.fz.door-bin .fz-items{grid-template-columns:minmax(0,1fr)}.fz.freezer{background:var(--frost);border-color:color-mix(in srgb,var(--cold) 30%,transparent)}.fz.freezer+.fz.freezer{margin-top:8px}.fz.freezer .fz-label{color:var(--cold)}.freezer-divider{height:8px;border-radius:4px;background:var(--fridge-shell);margin:12px -10px 10px}.pantry{margin-top:14px;border:3px solid var(--wood);border-radius:18px;padding:10px;background:var(--wood-in)}.pantry .fz.shelf{background:none;border:0;border-radius:0;padding:4px 4px 6px;border-bottom:6px solid var(--wood)}.pantry-shelves{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.pantry-shelves>div{display:flex;min-width:0}.pantry-shelves>div>.fz{flex:1}.pantry-shelves>div:first-child,.pantry-shelves>div:nth-child(2n):last-child{grid-column:1 / -1}.fz.pantry-veg{color:var(--warn);position:relative;border-radius:10px 10px 14px 14px;background:color-mix(in srgb,var(--warn) 10%,var(--surface));border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.fz.pantry-veg .fz-label{color:var(--warn)}.zone-group{margin-bottom:10px}.zone-group-title{font-size:12px;font-weight:700;color:var(--text-2);margin:0 2px 6px}.ftile{width:100%;max-width:72px;border:0;background:none;padding:6px 0 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;border-radius:10px}.ftile .picon{margin-bottom:2px}.ftile:focus{outline:none}.ftile:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ftile .ftile-name{font-size:11px;line-height:1.2;color:var(--text-2);width:100%;text-align:center;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.fridge-empty{font-size:12px;color:var(--muted);align-self:center}.sheet-qty{display:flex;align-items:center;gap:14px}.sheet-qty .grow{flex:1;min-width:0}.sheet-qty .meta{font-size:13px;color:var(--text-2)}.zone-picks{display:flex;flex-wrap:wrap;gap:8px}.scanner{position:relative;border-radius:16px;overflow:hidden;background:#000;aspect-ratio:4 / 3}.scanner video{width:100%;height:100%;object-fit:cover;display:block}.scanner-frame{position:absolute;left:12%;right:12%;top:32%;bottom:32%;border:3px solid rgba(255,255,255,.9);border-radius:12px;box-shadow:0 0 0 999px #00000059}.scanner-hint{position:absolute;left:0;right:0;bottom:10px;text-align:center;color:#fff;font-size:14px;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.6)}.manual-code{display:flex;gap:8px}.manual-code .input{flex:1}.header-btn{border:0;background:var(--surface-2);color:var(--text);border-radius:12px;padding:8px 12px;font-weight:650;display:inline-flex;gap:6px;align-items:center;cursor:pointer;font-size:14px}.inbox-card{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:12px;border-color:var(--accent);background:var(--accent-soft)}.inbox-card .big{font-size:30px}.inbox-card .meta{font-size:13px;color:var(--text-2)}.steps{margin:14px 0 0;padding-left:22px;font-size:15px}.steps>li{margin-bottom:14px}.steps ul{padding-left:18px;margin:8px 0 0}.steps ul li{margin-bottom:8px}.steps code,.copy-row code{font-family:ui-monospace,monospace;font-size:13px;background:var(--surface-2);padding:1px 5px;border-radius:5px}.copy-field{margin:8px 0}.copy-label{display:block;font-size:12px;font-weight:700;color:var(--text-2);margin-bottom:4px}.copy-row{display:flex;align-items:center;gap:8px}.copy-row code{flex:1;min-width:0;overflow-x:auto;white-space:nowrap;padding:8px 10px;display:block}.swipe{position:relative;overflow:hidden}.list.card .swipe:first-child,.list.card .swipe:first-child .swipe-bg{border-radius:var(--radius) var(--radius) 0 0}.list.card .swipe:last-child,.list.card .swipe:last-child .swipe-bg{border-radius:0 0 var(--radius) var(--radius)}.list.card .swipe:only-child,.list.card .swipe:only-child .swipe-bg{border-radius:var(--radius)}.swipe-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--danger);color:#fff;display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-right:20px;font-weight:700;font-size:15px}.swipe-content{position:relative;background:var(--surface);touch-action:pan-y;user-select:none;-webkit-user-select:none}.swipe-content.animate{transition:transform .18s ease-out,opacity .18s}.swipe .x-btn{margin-right:-6px}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(88px + env(safe-area-inset-bottom));z-index:15;width:min(calc(100% - 32px),600px);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 10px 10px 16px;border-radius:14px;background:var(--text);color:var(--bg);font-size:15px;box-shadow:0 6px 20px #00000040;animation:fade .15s}.toast span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast .link-btn{color:var(--accent-soft);flex:none}@media (prefers-color-scheme: dark){.toast .link-btn{color:var(--accent-ink);background:var(--accent);border-radius:10px;padding:6px 12px}}.btn{border:0;border-radius:12px;padding:12px 16px;font-weight:650;background:var(--surface-2);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.danger{background:none;color:var(--danger)}.btn.block{width:100%}.btn:disabled{opacity:.5}.btn.small{padding:6px 12px;font-size:14px;border-radius:10px}.stepper{display:flex;align-items:center;gap:2px;flex:none}.stepper button{width:36px;height:36px;border-radius:50%;border:0;background:var(--surface-2);font-size:20px;line-height:1;cursor:pointer;display:grid;place-items:center}.stepper .qty{min-width:56px;text-align:center;font-weight:650;font-variant-numeric:tabular-nums}.stepper .qty small{font-weight:500;color:var(--text-2)}.input,.select{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface);font-size:16px;outline:none}.input:focus,.select:focus{border-color:var(--accent)}.field{display:block;margin-bottom:14px}.field>span{display:block;font-size:13px;font-weight:600;color:var(--text-2);margin:0 2px 6px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.search{position:relative;margin-bottom:10px}.search .input{padding-left:40px}.search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--muted)}.chips{display:flex;gap:8px;overflow-x:auto;padding:2px 0 6px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:6px 14px;font-size:14px;font-weight:600;white-space:nowrap;cursor:pointer;color:var(--text-2)}.chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tag{font-size:12px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--warn-soft);color:var(--warn);white-space:nowrap}.tag.ok{background:var(--accent-soft);color:var(--accent)}.empty{text-align:center;color:var(--text-2);padding:48px 24px}.empty .big{font-size:48px;margin-bottom:8px}.empty p{margin:6px 0 18px}.fab{position:fixed;right:max(16px,calc(50% - 304px));bottom:calc(88px + env(safe-area-inset-bottom));z-index:9;width:56px;height:56px;border-radius:18px;border:0;background:var(--accent);color:var(--accent-ink);font-size:28px;box-shadow:0 6px 16px #0003;cursor:pointer}.check{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);background:none;flex:none;cursor:pointer;display:grid;place-items:center;color:transparent}.check.done{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0006;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}.sheet{width:100%;max-width:640px;max-height:92dvh;overflow-y:auto;background:var(--bg);border-radius:20px 20px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));animation:slide .2s ease-out}.sheet-handle{width:40px;height:5px;border-radius:3px;background:var(--border);margin:0 auto 10px}.sheet h2{margin:4px 0 16px;font-size:20px}.sheet-actions{display:flex;gap:10px;margin-top:8px}.sheet-actions .btn{flex:1}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{transform:translateY(40px);opacity:.5}}.hero{padding:18px}.hero .label{color:var(--text-2);font-size:14px;font-weight:600}.hero .value{font-size:36px;font-weight:760;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:2px 0}.hero .delta{font-size:14px;color:var(--text-2)}.waste-line{margin-top:8px;padding-top:8px;border-top:1px solid var(--border);font-size:14px;color:var(--danger)}.month-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.month-nav .name{font-weight:700;font-size:17px;text-transform:capitalize}.icon-btn{width:40px;height:40px;border-radius:50%;border:0;background:var(--surface-2);cursor:pointer;display:grid;place-items:center}.icon-btn:disabled{opacity:.35}.icon-btn svg{width:20px;height:20px}.hbars{padding:6px 14px 10px}.hbar{padding:8px 0}.hbar-head{display:flex;justify-content:space-between;gap:8px;font-size:14px;margin-bottom:5px}.hbar-head .v{font-weight:650;font-variant-numeric:tabular-nums}.hbar-head .p{color:var(--muted);font-weight:500;margin-left:6px}.hbar-track{height:10px;border-radius:5px;background:var(--surface-2);overflow:hidden}.hbar-fill{height:100%;border-radius:5px;background:var(--bar)}.vbars{display:flex;align-items:flex-end;gap:8px;height:150px;padding:18px 14px 0}.vbar{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:4px;cursor:pointer}.vbar .fill{width:100%;max-width:36px;border-radius:4px 4px 0 0;background:var(--bar);opacity:.45;min-height:2px}.vbar.active .fill{opacity:1}.vbar .amt{font-size:11px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}.vbar-labels{display:flex;gap:8px;padding:6px 14px 12px;border-top:1px solid var(--border);margin:0}.vbar-labels span{flex:1;text-align:center;font-size:12px;color:var(--muted)}.vbar-labels span.active{color:var(--text);font-weight:700}.line-card{padding:12px;margin-bottom:10px}.line-top{display:flex;gap:8px;align-items:center}.line-top .input{padding:9px 12px;font-weight:600}.line-grid{display:grid;grid-template-columns:1.6fr .8fr .9fr 1fr;gap:6px;margin-top:8px}.line-grid .input,.line-grid .select{padding:8px;font-size:15px}.line-weight{font-size:13px;color:var(--text-2);margin:8px 2px 0}.line-weight .link-btn{padding:0 4px;font-size:13px}.line-card.suspect{border-color:var(--warn);box-shadow:0 0 0 1px var(--warn) inset}.line-check{font-size:13px;color:var(--warn);margin:8px 2px 0}.line-check .link-btn{padding:0 4px;font-size:13px}.line-raw{font-size:12px;color:var(--muted);margin:6px 2px 0;font-family:ui-monospace,monospace}.line-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;font-size:14px;color:var(--text-2)}.toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer}.toggle input{width:18px;height:18px;accent-color:var(--accent)}.x-btn{border:0;background:none;color:var(--muted);font-size:22px;width:36px;height:36px;cursor:pointer;flex:none}.sticky-foot{position:sticky;bottom:calc(76px + env(safe-area-inset-bottom));z-index:4;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;display:flex;align-items:center;gap:12px;box-shadow:0 -2px 12px #0000000f}.sticky-foot .sum{flex:1}.sticky-foot .sum b{font-size:20px;font-variant-numeric:tabular-nums}.sticky-foot .sum div{font-size:12px;color:var(--text-2)}.notice{padding:12px 14px;border-radius:12px;background:var(--warn-soft);color:var(--warn);font-size:14px;margin-bottom:12px}.notice.info{background:var(--accent-soft);color:var(--accent)}.progress{height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden;margin:16px 0 8px}.progress div{height:100%;background:var(--accent);transition:width .2s}.scan-hero{text-align:center;padding:28px 18px}.scan-hero .big{font-size:56px}.scan-hero h2{margin:8px 0 6px}.scan-hero p{color:var(--text-2);margin:0 0 20px}.stack{display:grid;gap:10px}.tips{color:var(--text-2);font-size:14px;padding:4px 18px 0}.tips li{margin:4px 0}.code-box{font-size:30px;font-weight:800;letter-spacing:.2em;text-align:center;padding:14px;border-radius:12px;background:var(--surface-2);font-family:ui-monospace,monospace;margin:10px 0}.auth{padding:calc(48px + env(safe-area-inset-top)) 20px 32px;max-width:420px;margin:0 auto}.auth .logo{font-size:56px;text-align:center}.auth h1{text-align:center;margin:6px 0 4px;font-size:30px}.auth .tagline{text-align:center;color:var(--text-2);margin:0 0 28px}.link-btn{border:0;background:none;color:var(--accent);font-weight:650;cursor:pointer;padding:8px}.error{color:var(--danger);font-size:14px;margin:-4px 2px 12px}.center{text-align:center}.splash{min-height:100dvh;display:grid;place-items:center;font-size:56px}.shop-start{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0 0}.shop-mode{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:var(--bg);overflow-y:auto;animation:fade .15s}.shop-head{position:sticky;top:0;z-index:2;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:var(--surface);border-bottom:1px solid var(--border)}.shop-head h1{margin:0;font-size:24px}.shop-sum{font-size:16px;font-weight:650;color:var(--accent);margin-top:2px}.shop-note{font-size:12px;color:var(--text-2)}.shop-body{max-width:640px;margin:0 auto;padding:4px 12px calc(32px + env(safe-area-inset-bottom))}.shop-aisle{font-size:14px;font-weight:700;color:var(--text-2);margin:18px 4px 8px;text-transform:uppercase;letter-spacing:.03em}.shop-row{width:100%;display:flex;align-items:center;gap:12px;min-height:68px;padding:10px 12px;margin-bottom:8px;border:1px solid var(--border);border-radius:16px;background:var(--surface);text-align:left;cursor:pointer;color:var(--text)}.shop-row .check{width:32px;height:32px}.shop-row .grow{flex:1;min-width:0}.shop-row .name{display:block;font-size:19px;font-weight:650;line-height:1.2}.shop-row small{display:block;font-size:13px;color:var(--accent)}.shop-row .price{font-size:14px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}.shop-row.done{opacity:.55}.shop-row.done .name{text-decoration:line-through}.aisle-hint{font-size:13px;color:var(--text-2);margin:14px 4px -10px}.aisle-list{list-style:none;margin:12px 0 4px;padding:0;counter-reset:aisle}.aisle-list li{display:flex;align-items:center;gap:8px;padding:6px 0;counter-increment:aisle}.aisle-list li+li{border-top:1px solid var(--border)}.aisle-list li:before{content:counter(aisle);width:22px;text-align:center;font-size:13px;font-weight:700;color:var(--muted)}.aisle-list .grow{flex:1;min-width:0;font-size:15px}.icon-btn.small{width:34px;height:34px;font-size:16px;font-weight:700;color:var(--text)}.price-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.price-stats>div{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column}.price-stats small{font-size:12px;color:var(--text-2)}.price-stats b{font-size:19px;font-variant-numeric:tabular-nums}.cook-entries{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin-bottom:12px}.cook-entry{width:100%;display:flex;align-items:center;gap:8px;padding:10px;text-align:left;cursor:pointer;font:inherit;color:var(--text)}.cook-entry .icon{font-size:24px;width:26px}.cook-entry .grow{flex:1;min-width:0}.cook-entry b{display:block;font-size:14px;line-height:1.2}.cook-entry small{display:block;color:var(--text-2);font-size:12px;margin-top:2px}.portions{display:flex;align-items:center;justify-content:space-between;padding:6px 4px 12px;font-weight:600}.stepper button:disabled{opacity:.4}.search-row{display:flex;gap:8px;align-items:flex-start}.search-row .search{flex:1;min-width:0}.search-row .btn{flex:none;height:46px}.side-chips{flex-wrap:wrap;margin-bottom:14px}.recipe-steps li.steps-head{list-style:none;margin-left:-22px;font-weight:700;margin-top:12px}.field-label{display:block;font-size:13px;font-weight:600;color:var(--text-2);margin:0 2px 6px}.kind-picks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.kind-pick{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:8px 6px;text-align:center;cursor:pointer;color:var(--text)}.kind-pick b{display:block;font-size:13px;line-height:1.25}.kind-pick small{display:block;font-size:11px;color:var(--text-2);margin-top:2px;line-height:1.2}.kind-pick.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent) inset}.plan-days{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.plan-day{display:flex;align-items:flex-start;gap:10px;padding:8px 6px 8px 10px;border:1px solid var(--border);border-radius:12px;background:var(--surface);min-height:56px}.plan-day.today{border-color:var(--accent)}.plan-meals{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.plan-meal{display:flex;align-items:center;gap:4px;min-width:0}.plan-meal.side{padding-left:14px}.plan-meal.side .name{font-weight:500}.plan-meal.done .name{text-decoration:line-through;color:var(--text-2)}.plan-empty.more{border:0;padding:4px 0;font-size:14px}.plan-date{width:44px;flex:none;display:flex;flex-direction:column;padding-top:2px}.plan-date b{font-size:14px}.plan-date small{font-size:11px;color:var(--text-2)}.plan-recipe{flex:1;min-width:0;display:flex;align-items:center;gap:8px;border:0;background:none;padding:0;text-align:left;cursor:pointer}.plan-recipe .emoji{font-size:22px}.plan-recipe .grow{flex:1;min-width:0}.plan-recipe .name{display:block;font-weight:600;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-recipe small{display:block;font-size:12px;color:var(--text-2)}.plan-empty{flex:1;border:1px dashed var(--border);background:none;border-radius:10px;padding:9px;color:var(--accent);font-weight:600;cursor:pointer;text-align:left}.recipe-card{padding:12px 14px;margin-bottom:10px;cursor:pointer}.recipe-card.ready{border-color:var(--accent)}.recipe-card .head{display:flex;align-items:center;gap:10px}.recipe-card .head b{flex:1;min-width:0}.recipe-card .emoji{font-size:24px}.recipe-card .meta,.recipe-meta{font-size:13px;color:var(--text-2);margin-top:4px}.recipe-card .uses{font-size:13px;color:var(--accent);font-weight:600;margin-top:4px}.ing-list{list-style:none;margin:0;padding:0}.ing-list li{display:flex;gap:10px;align-items:baseline;padding:7px 14px;font-size:15px}.ing-list li+li{border-top:1px solid var(--border)}.ing-list .mark{width:18px;flex:none;text-align:center;font-weight:700}.ing-list .have{color:var(--accent)}.ing-list .miss{color:var(--warn)}.ing-list .basic{color:var(--muted)}.ing-list small{display:block;color:var(--text-2);font-size:12px}.recipe-steps{margin:0;padding:0 0 0 22px}.recipe-steps li{margin:0 0 8px;line-height:1.45}.history-row.undone .title,.history-row.undone .history-delta,.history-row.undone b{text-decoration:line-through;opacity:.6}.history-check{width:22px;height:22px;margin-top:2px;accent-color:var(--accent);flex:none}.history-delta{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.plus{color:var(--accent)}.minus{color:var(--warn)}.history-lines{list-style:none;margin:8px 0 0;padding:0;font-size:14px}.history-lines li{display:flex;justify-content:space-between;gap:10px;padding:3px 0}.history-lines li.undone{text-decoration:line-through;opacity:.6}textarea.input{min-height:120px;resize:vertical;font:inherit;line-height:1.45}
