:root{--bg:#fbfaf6;--surface:#fff;--text:#1f2a24;--muted:#6b766f;--border:#e6e2d8;--brand:#2f7d4f;--brand-ink:#fff;--accent:#f2b33d;--danger:#c2412d;--good:#2f9e5b;--mid:#e0a020;--bad:#d4513b;--radius:14px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#121714;--surface:#1b221e;--text:#e9efe9;--muted:#9aa69e;--border:#2c3630;--brand:#4fb07a;--brand-ink:#0d1a12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0}body{font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}input,select,button{font:inherit;color:inherit}input,select{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex:1;min-width:0;padding:10px 12px}h1,h2,h3,h4{margin:0 0 6px;line-height:1.2}.muted{color:var(--muted)}.small{font-size:.85em}.warn{color:var(--danger);font-weight:600}.error{color:var(--danger)}.status{color:var(--brand);font-weight:500}.lede{color:var(--muted);margin:0 0 12px}.app{flex-direction:column;min-height:100dvh;display:flex}.top{padding:calc(12px + env(safe-area-inset-top)) 16px 8px;background:var(--bg);z-index:2;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.top h1{font-size:1.5rem}main{padding-bottom:calc(80px + env(safe-area-inset-bottom));flex:1}.page{max-width:640px;margin:0 auto;padding:0 16px 16px}.tabs{background:var(--surface);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);z-index:3;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabs button{color:var(--muted);background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;font-size:.75rem;display:flex}.tabs button span{font-size:1.35rem}.tabs button.active{color:var(--brand);font-weight:600}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:999px;padding:10px 16px}.btn.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);font-weight:600}.btn:disabled{opacity:.6}.link{color:var(--brand);cursor:pointer;background:0 0;border:0;padding:4px}.link.danger{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;margin:12px 0;padding:14px;display:flex}.scanner{border-radius:var(--radius);aspect-ratio:4/3;background:#000;position:relative;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%;display:block}.scanner-frame{border:3px solid #ffffffd9;border-radius:12px;position:absolute;inset:28% 12%;box-shadow:0 0 0 999px #00000040}.scanner-error{color:#fff;background:#0009;border-radius:8px;margin:0;padding:8px;position:absolute;inset:auto 12px 12px}.manual{flex-wrap:wrap;gap:6px;width:100%;display:flex}.qty{flex:0 0 76px;max-width:76px}.identified{align-items:center;gap:8px;display:flex}.identified input[type=checkbox]{flex:0;width:20px;height:20px}.basket-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding-top:6px;display:flex}.nutri{color:#fff;vertical-align:middle;border-radius:6px;place-items:center;width:22px;height:22px;font-size:.75rem;font-weight:700;display:inline-grid}.nutri-a{background:#038141}.nutri-b{background:#85bb2f}.nutri-c{background:#e5b000}.nutri-d{background:#ee8100}.nutri-e{background:#e63e11}.health{border-left:6px solid var(--mid)}.health-great{border-left-color:var(--good)}.health-limit{border-left-color:var(--bad)}.health-head{align-items:center;gap:12px;display:flex}.health-head img,.swap img,.item img,.item-ph{object-fit:contain;background:#fff;border-radius:10px;flex:0 0 48px;width:48px;height:48px}.lights{flex-wrap:wrap;gap:6px;display:flex}.light{color:#fff;border-radius:999px;padding:2px 8px;font-size:.8rem}.light-low{background:var(--good)}.light-medium{background:var(--mid)}.light-high{background:var(--bad)}.tips{margin:0;padding-left:18px}.swaps-title{margin-top:4px;font-weight:600}.swap{align-items:center;gap:10px;display:flex}.swap img{flex-basis:36px;width:36px;height:36px}.swap span{flex:1}.search{width:100%;margin-bottom:8px}.items{margin:0;padding:0;list-style:none}.item{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 0;display:flex}.item-ph{background:var(--border);color:var(--muted);text-transform:uppercase;place-items:center;font-weight:700;display:grid}.item-main{flex:1;min-width:0}.item-name{overflow-wrap:anywhere;font-weight:500}.stepper{align-items:center;gap:4px;display:flex}.stepper button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:50%;width:32px;height:32px}.stepper span{text-align:center;font-variant-numeric:tabular-nums;min-width:54px}.empty{text-align:center;padding-top:48px}.empty-art{font-size:3.5rem}.unlock .progress{background:var(--border);border-radius:999px;height:10px;overflow:hidden}.unlock .progress div{background:var(--accent);height:100%}.recipe-head{text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.recipe-head p{margin:4px 0}.recipe-body ul,.recipe-body ol{margin:4px 0 12px;padding-left:20px}.recipe-body li{margin:4px 0}.recipe-body li.need{color:var(--muted)}.health-note{background:color-mix(in srgb, var(--brand) 10%, transparent);border-radius:10px;padding:10px}.login{text-align:center;max-width:380px;margin:0 auto;padding:64px 16px}.login .card{text-align:left}.link.expiry{font:inherit;color:inherit;text-underline-offset:3px;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.link.expiry.warn{color:var(--danger)}.est{color:var(--muted);font-weight:400}.date-input{font:inherit;padding:2px 6px}.use-soon{border-left:6px solid var(--accent)}.use-soon ul{margin:6px 0 10px;padding-left:18px}.uses-up{background:color-mix(in srgb, var(--accent) 22%, transparent);border-radius:999px;margin-top:6px;padding:2px 10px;font-size:.85em;display:inline-block}.tabs.five{grid-template-columns:repeat(5,1fr)}.family-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.members{margin:0;padding:0;list-style:none}.members li{align-items:center;gap:10px;padding:6px 0;display:flex}.avatar{background:color-mix(in srgb, var(--brand) 18%, transparent);width:32px;height:32px;color:var(--brand);text-transform:uppercase;border-radius:50%;flex:0 0 32px;place-items:center;font-weight:700;display:grid}.member-name{overflow-wrap:anywhere;flex:1;min-width:0}.invite-code{letter-spacing:.08em;font:700 1.6rem/1.2 ui-monospace,SF Mono,Menlo,monospace}.household-name{color:var(--muted);font-size:.85rem;font-weight:500}.top-actions{align-items:center;gap:8px;display:flex}.page.wide{max-width:1040px}.segmented{border:1px solid var(--border);background:var(--surface);border-radius:999px;max-width:100%;margin:4px 0 8px;padding:3px;display:inline-flex;overflow-x:auto}.segmented button{cursor:pointer;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:999px;padding:6px 14px}.segmented button.active{background:var(--brand);color:var(--brand-ink);font-weight:600}.segmented.views{width:fit-content;margin-bottom:4px;display:flex}.tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:8px 0;display:grid}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.tile-label{color:var(--muted);font-size:.8rem;font-weight:600}.tile-value{font-variant-numeric:tabular-nums;margin:2px 0;font-size:1.7rem;font-weight:700;line-height:1.2}.tile-sub{color:var(--muted);font-size:.78rem}.charts{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:0 12px;display:grid}.chart{gap:6px}.chart svg{width:100%;height:110px;display:block;overflow:visible}.chart-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.chart-head h3{margin:0;font-size:.95rem}.chart-readout{font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:600}.chart-bar{fill:var(--brand);opacity:.85}.chart-bar.active{opacity:1;fill:var(--accent)}.chart-grid{stroke:var(--border);stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.chart-axis{stroke:var(--border);vector-effect:non-scaling-stroke}.chart-foot{justify-content:space-between;display:flex}.two-col{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:0 12px;display:grid}.kv{border-bottom:1px solid var(--border);justify-content:space-between;gap:12px;padding:4px 0;display:flex}.kv:last-child{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.mono{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.85em}.link.left{text-align:left;overflow-wrap:anywhere;padding:0}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.9rem}.table th,.table td{border-bottom:1px solid var(--border);text-align:left;padding:6px 8px}.table th{color:var(--muted);font-size:.8rem;font-weight:600}.table th.num,.table td.num{text-align:right}.admin-list{margin:0;padding:0;list-style:none}.admin-list .card{gap:4px}.admin-list .card.disabled{opacity:.7}.admin-row-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.badges{flex-wrap:wrap;gap:4px;display:flex}.badge{background:var(--border);color:var(--text);border-radius:999px;padding:2px 8px;font-size:.72rem}.badge.brand{background:color-mix(in srgb, var(--brand) 18%, transparent);color:var(--brand);font-weight:600}.badge.danger{background:color-mix(in srgb, var(--danger) 16%, transparent);color:var(--danger);font-weight:600}.row.actions{gap:6px;margin:6px 0 0}.btn.small{padding:6px 12px;font-size:.85rem}.notice{border-left:6px solid var(--accent)}.pantry-peek{max-height:320px;margin:4px 0 0;padding:0;list-style:none;overflow-y:auto}.pantry-peek li{border-top:1px solid var(--border);justify-content:space-between;gap:8px;padding:4px 0;display:flex}.chip{background:color-mix(in srgb, var(--brand) 14%, transparent);overflow-wrap:anywhere;border-radius:999px;align-items:center;gap:4px;padding:2px 4px 2px 12px;font-size:.9rem;display:inline-flex}.check{align-items:center;gap:6px;display:inline-flex}.check input{flex:none;width:16px;height:16px;margin:0;padding:0}.feed{margin:0;padding:0;list-style:none}.feed li{border-bottom:1px solid var(--border);padding:8px 0}.feed-main{justify-content:space-between;gap:8px;display:flex}.nowrap{white-space:nowrap}.about{border-top:1px solid var(--border);max-width:640px;color:var(--muted);text-align:left;margin:24px auto 0;padding:16px;font-size:.9rem}.about h2{color:var(--text);font-size:1rem}.about p{margin:0 0 8px}.about ul{gap:4px;margin:0;padding:0;list-style:none;display:grid}.login .about{padding:16px 0 0}.list-items{margin:0;padding:0;list-style:none}.list-items li{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:6px 0;display:flex}.list-items li:first-child{border-top:0}.list-items li.done span{color:var(--muted);text-decoration:line-through}.list-items .check{align-items:flex-start}.list-items .check input{margin-top:3px}.row.tight{margin:4px 0 0}.ticked{border-left:6px solid var(--good)}.chips{flex-wrap:wrap;gap:6px;margin:8px 0;display:flex}.chip.add{cursor:pointer;color:inherit;font:inherit;border:0;padding:4px 12px;font-size:.9rem}.chip.add:disabled{opacity:.6}.oil-list{margin:8px 0;padding:0;list-style:none}.oil-list li{align-items:center;gap:8px;padding:2px 0;display:flex}.oil-list li>span{flex:1}
