:root{--bg: #f6f3ee;--surface: #ffffff;--surface-2: #f0ece5;--line: #e4ded4;--text: #1f2521;--muted: #6b7470;--accent: #2f6f5e;--accent-soft: #dcebe5;--warm: #d98f3d;--warm-soft: #fbe9d2;--danger: #b2473c;--danger-soft: #f7dcd8;--info-soft: #e3ebf5;--treat: #8b5e9c;--treat-soft: #ece2f2;--radius: 14px;--nav-h: 64px;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #15171b;--surface: #1f2328;--surface-2: #272c32;--line: #343a42;--text: #ecece8;--muted: #9aa39e;--accent: #6fb79f;--accent-soft: #23372f;--warm: #e8a85a;--warm-soft: #3d2d18;--danger: #e07a6e;--danger-soft: #3f2320;--info-soft: #22303f;--treat: #c39ad6;--treat-soft: #342a3a}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.4;-webkit-text-size-adjust:100%}body{padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom))}a{color:var(--accent)}button,input,select,textarea{font:inherit;color:inherit}h1{font-size:1.35rem;margin:0 0 4px}h2{font-size:1.1rem;margin:18px 0 8px}h3{font-size:1rem;margin:12px 0 6px}p{margin:6px 0}.muted{color:var(--muted)}.small{font-size:.85rem}.tiny{font-size:.76rem}.bold{font-weight:600}.page{max-width:640px;margin:0 auto;padding:14px 16px 24px;padding-top:calc(14px + env(safe-area-inset-top))}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin:10px 0}.card.soft{background:var(--surface-2)}.row{display:flex;align-items:center;gap:10px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.grow{flex:1}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stack>*+*{margin-top:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 14px;cursor:pointer;min-height:44px;text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn.warm{background:var(--warm);border-color:var(--warm);color:#fff;font-weight:600}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn.ghost{background:transparent;border-color:transparent;color:var(--accent)}.btn.sm{min-height:36px;padding:6px 10px;font-size:.9rem;border-radius:10px}.btn:disabled{opacity:.5;cursor:default}.btn.block{width:100%}.field{display:block;margin:8px 0}.field>span{display:block;font-size:.85rem;color:var(--muted);margin-bottom:4px}input[type=text],input[type=number],input[type=email],input[type=password],input[type=date],input[type=time],select,textarea{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:10px 12px;min-height:44px}input[type=number]{-moz-appearance:textfield}textarea{min-height:80px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0}.inline-inputs{display:flex;gap:8px}.inline-inputs>*{flex:1;min-width:0}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);border-radius:999px;padding:6px 12px;background:var(--surface);cursor:pointer;font-size:.9rem;min-height:36px}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}.chip.treat.on{background:var(--treat-soft);border-color:var(--treat);color:var(--treat)}.badge{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line);white-space:nowrap}.badge.usda{background:var(--info-soft)}.badge.generic{background:var(--warm-soft);color:var(--warm);border-color:transparent}.badge.label,.badge.recipe{background:var(--accent-soft);color:var(--accent);border-color:transparent}.badge.treat{background:var(--treat-soft);color:var(--treat);border-color:transparent}.badge.quick{background:var(--danger-soft);color:var(--danger);border-color:transparent}.progress{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}.progress>div{height:100%;background:var(--accent);border-radius:999px;transition:width .3s}.progress>div.over{background:var(--warm)}.big{font-size:1.9rem;font-weight:700;letter-spacing:-.02em}.stat{text-align:center}.stat .v{font-size:1.25rem;font-weight:700}.stat .l{font-size:.75rem;color:var(--muted)}.list{margin:0;padding:0;list-style:none}.list li{padding:10px 0;border-top:1px solid var(--line)}.list li:first-child{border-top:0}.entry{display:flex;justify-content:space-between;gap:8px;cursor:pointer}.entry .name{font-weight:500}.entry .sub{font-size:.8rem;color:var(--muted)}.notice{padding:10px 12px;border-radius:10px;font-size:.88rem;background:var(--info-soft);margin:8px 0}.notice.warn{background:var(--warm-soft)}.notice.danger{background:var(--danger-soft)}.notice.ok{background:var(--accent-soft)}.demo-banner{position:sticky;top:0;z-index:30;background:var(--warm);color:#fff;text-align:center;padding:6px;font-size:.85rem;font-weight:600}nav.bottom{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);display:flex;z-index:20}nav.bottom a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-decoration:none;color:var(--muted);font-size:.72rem}nav.bottom a.active{color:var(--accent);font-weight:600}nav.bottom a svg{width:24px;height:24px}.sheet-backdrop{position:fixed;inset:0;background:#0006;z-index:40;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--bg);width:100%;max-width:640px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:14px 16px calc(20px + env(safe-area-inset-bottom))}.sheet .handle{width:40px;height:4px;border-radius:2px;background:var(--line);margin:0 auto 10px}.fab{position:fixed;right:16px;bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:0;font-size:1.8rem;box-shadow:0 6px 18px #00000040;z-index:25;cursor:pointer}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + 20px + env(safe-area-inset-bottom));background:var(--text);color:var(--bg);padding:10px 16px;border-radius:10px;z-index:50;font-size:.9rem;max-width:90%}.tabs{display:flex;gap:4px;background:var(--surface-2);border-radius:12px;padding:4px;margin:8px 0}.tabs button{flex:1;border:0;background:transparent;padding:8px 6px;border-radius:9px;font-size:.9rem;cursor:pointer}.tabs button.on{background:var(--surface);font-weight:600;box-shadow:0 1px 3px #0000001a}table.simple{width:100%;border-collapse:collapse;font-size:.88rem}table.simple td,table.simple th{padding:6px 4px;border-top:1px solid var(--line);text-align:left}table.simple th{color:var(--muted);font-weight:500}.bars{display:flex;align-items:flex-end;gap:6px;height:120px}.bars .b{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:2px}.bars .bar{width:100%;border-radius:4px 4px 0 0;background:var(--accent);min-height:2px}.bars .bar.exp{background:var(--warm);opacity:.6}.bars .bar.missing{background:repeating-linear-gradient(45deg,var(--line),var(--line) 3px,transparent 3px,transparent 6px)}.bars .lbl{font-size:.65rem;color:var(--muted)}details summary{cursor:pointer;color:var(--accent);font-size:.9rem}.kv{display:flex;justify-content:space-between;gap:8px;padding:4px 0;font-size:.92rem}.kv span:last-child{font-weight:600;text-align:right}.section-card{border-left:4px solid var(--accent)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}@media (min-width: 700px){body{padding-bottom:0;padding-left:200px}nav.bottom{inset:0 auto auto 0;width:200px;height:100vh;flex-direction:column;justify-content:flex-start;padding-top:24px;border-top:0;border-right:1px solid var(--line)}nav.bottom a{flex:0 0 auto;flex-direction:row;justify-content:flex-start;gap:10px;padding:12px 20px;font-size:.95rem}.fab{right:24px;bottom:24px}.toast{bottom:24px}}
