*{box-sizing:border-box}:root{color-scheme:light dark;--bg: #f6f7f6;--text: #1c2420;--muted: #5b6862;--surface: #ffffff;--border: #c5cec9;--divider: #e3e8e5;--accent: #2f6f4f;--on-accent: #ffffff;--accent-soft: #eef2ef;--danger: #a33333;--warn-text: #9a6b00;--warn-border: #d99a00;--checked: #8a948e;--badge-bg: #e7efea;--badge-fg: #2f6f4f;--badge-fridge-bg: #e3edf6;--badge-fridge-fg: #2b5d8a;--badge-freezer-bg: #e9e7f6;--badge-freezer-fg: #4d3f8f;--badge-pantry-bg: #f3ecdd;--badge-pantry-fg: #7a5c1e;--toast-bg: #263a30;--toast-text: #ffffff;--toast-action: #8fd4ae}@media (prefers-color-scheme: dark){:root{--bg: #101614;--text: #e4eae6;--muted: #98a49d;--surface: #1b221e;--border: #3a453f;--divider: #2a332e;--accent: #6fbf92;--on-accent: #0c1310;--accent-soft: #24312a;--danger: #e08585;--warn-text: #d9a94a;--warn-border: #a87d24;--checked: #7c877f;--badge-bg: #24312a;--badge-fg: #8fd4ae;--badge-fridge-bg: #1e2b36;--badge-fridge-fg: #8db8dd;--badge-freezer-bg: #262336;--badge-freezer-fg: #a99ae0;--badge-pantry-bg: #322b1d;--badge-pantry-fg: #d0aa5e;--toast-bg: #3a5245;--toast-text: #eef5f0;--toast-action: #a5e0c1}}body{margin:0;font-family:system-ui,sans-serif;background:var(--bg);color:var(--text)}.container{max-width:480px;margin:0 auto;padding:0 1rem 6rem}.topbar{max-width:480px;margin:0 auto;padding:.6rem 1rem 0;display:flex;justify-content:space-between;align-items:center}.topbar a{color:var(--accent);text-decoration:none;font-size:.9rem}.lang-toggle,.menu-button{background:transparent;color:var(--accent);border:1px solid var(--border);padding:.2rem .6rem;border-radius:6px;font-size:.85rem}.menu-button{font-size:1.1rem;line-height:1}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:19}.menu-panel{position:absolute;top:3rem;left:max(1rem,calc(50% - 240px + 1rem));z-index:20;background:var(--surface);border-radius:10px;box-shadow:0 4px 16px #0000002e;padding:.4rem;display:flex;flex-direction:column;min-width:220px}.menu-panel a,.menu-panel button{display:block;padding:.7rem .9rem;color:var(--text);text-decoration:none;font-size:1rem;text-align:left;background:transparent;border-radius:6px}.menu-panel a:active,.menu-panel button:active{background:var(--accent-soft)}.menu-panel hr{border:none;border-top:1px solid var(--divider);margin:.3rem 0}.menu-panel .menu-logout{color:var(--danger)}h1{font-size:1.4rem;color:var(--accent)}form{display:flex;flex-wrap:wrap;gap:.5rem}input,select{flex:1;padding:.6rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;min-width:0;background:var(--surface);color:var(--text)}select{flex:0 1 auto;min-width:fit-content}input.grow{flex:1 1 100%}input.quantity{flex:0 1 4.5rem}input.unit{flex:1 1 7rem}button{padding:.6rem 1rem;border:none;border-radius:8px;background:var(--accent);color:var(--on-accent);font-size:1rem;cursor:pointer}.list-tools{display:flex;gap:.5rem;margin-top:1rem}.list-tools input{flex:1}.fab{position:fixed;right:max(1rem,calc(50% - 240px + 1rem));bottom:calc(1.2rem + env(safe-area-inset-bottom));z-index:5;width:3.5rem;height:3.5rem;border-radius:50%;padding:0;font-size:1.9rem;line-height:1;box-shadow:0 4px 12px #00000047}.cards{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-top:1rem}.card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.15rem;background:var(--surface);border-radius:12px;padding:.9rem 1rem;box-shadow:0 1px 2px #0000000f;text-decoration:none;color:var(--text)}.card-icon{font-size:2.5rem;line-height:1;margin-bottom:.2rem}.card-count{font-size:1.7rem;font-weight:700;color:var(--accent)}.card-label{font-weight:600}.card-detail{font-size:.8rem;color:var(--muted)}.card.warn{border-left:3px solid var(--warn-border)}.card.warn .card-count{color:var(--warn-text)}.tiles{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.6rem;margin-top:1rem}.tile{display:flex;flex-direction:column;align-items:center;gap:.1rem;background:var(--surface);border-radius:12px;padding:.7rem .4rem;box-shadow:0 1px 2px #0000000f}.tile-count{font-size:1.4rem;font-weight:700;color:var(--accent)}.tile:nth-child(2) .tile-count{color:var(--danger)}.tile-label{font-size:.75rem;color:var(--muted);text-align:center}.stats-heading{font-size:1rem;color:var(--muted);margin:1.4rem 0 .4rem}.trend{display:flex;flex-direction:column;gap:.35rem}.bar-row{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:var(--muted)}.bar-week{flex:0 0 4.6rem}.bar-track{flex:1;display:flex;height:.7rem;border-radius:4px;overflow:hidden;background:var(--accent-soft)}.bar-consumed{background:var(--accent)}.bar-wasted{background:var(--danger)}.bar-counts{flex:0 0 2.4rem;text-align:right}.suggestions{margin-top:.8rem}.suggestion-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.3rem}.suggestion-item{display:flex;align-items:center}.suggestion-item .chip{border-style:dashed;border-top-right-radius:0;border-bottom-right-radius:0}.suggestion-dismiss{background:transparent;color:var(--muted);border:1px dashed var(--border);border-left:none;border-radius:0 999px 999px 0;padding:.35rem .6rem .35rem .4rem;font-size:.8rem}.suggestion-refresh{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.35rem .7rem;font-size:.9rem}.typeahead-row{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:.4rem}.items{list-style:none;padding:0;margin-top:1rem}.items li{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.7rem .9rem;margin-bottom:.4rem;background:var(--surface);border-radius:8px;box-shadow:0 1px 2px #0000000f}.items li em{color:var(--muted);font-style:normal}.filters{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}.chip{background:var(--surface);color:var(--accent);border:1px solid var(--border);padding:.35rem .8rem;border-radius:999px;font-size:.9rem}.chip.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.item-name{background:transparent;color:inherit;padding:0;text-align:left;flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem}.item-title{overflow-wrap:anywhere}.item-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.badge{font-size:.75rem;padding:.1rem .5rem;border-radius:999px;background:var(--badge-bg);color:var(--badge-fg)}.badge.fridge{background:var(--badge-fridge-bg);color:var(--badge-fridge-fg)}.badge.freezer{background:var(--badge-freezer-bg);color:var(--badge-freezer-fg)}.badge.pantry{background:var(--badge-pantry-bg);color:var(--badge-pantry-fg)}.row-actions{display:flex;gap:.3rem;align-items:center}.row-actions button{background:var(--accent-soft);color:var(--accent);padding:.25rem .7rem;font-size:1rem}.row-actions button:disabled{opacity:.35}.row-actions button.delete{background:transparent;color:var(--danger)}.row-actions button.secondary{background:transparent;color:var(--muted)}.items li.editing{display:block}.edit-form{width:100%}.date-field{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--muted);flex:1 1 100%}.date-field input{flex:1}.hint{flex:1 1 100%;margin:0;font-size:.85rem;color:var(--muted)}.chip.suggestion{border-style:dashed;flex:1 1 100%}.expiry{font-size:.8rem;color:var(--muted)}.item-meta .expiry{flex:1 1 100%}.expiry.expiring{color:var(--warn-text);font-weight:600}.expiry.expired{color:var(--danger);font-weight:600}.items li.expiring{border-left:3px solid var(--warn-border)}.items li.expired{border-left:3px solid var(--danger)}.entry-title{display:flex;align-items:center;gap:.5rem}.entry-days{font-size:.8rem;color:var(--muted);flex:1 1 100%}.items .empty{color:var(--muted);justify-content:center}.error{color:var(--danger)}.scanner{width:100%;border-radius:8px;background:#000;aspect-ratio:3 / 4;object-fit:cover}.scanner-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#000000e0;display:flex;flex-direction:column;justify-content:center;gap:1rem;padding:1rem}.scanner-overlay .scanner{max-height:65vh}.scanner-hint{color:#dfe6e2;text-align:center;margin:0}.tap-area{position:relative}.tap-area img{display:block}.scanner-controls{display:flex;justify-content:center;align-items:center;gap:1rem}.shutter{width:4rem;height:4rem;border-radius:50%;padding:0;font-size:1.7rem;line-height:1}.scanner-controls .secondary{background:transparent;color:#dfe6e2;border:1px solid #5b6862}.ocr-test input[type=file]{width:100%}.ocr-variants{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-top:.8rem}.ocr-variants img{width:100%;border-radius:6px;background:#fff}.ocr-variants figure{margin:0}.ocr-variants figcaption{font-size:.7rem;color:var(--muted);overflow-wrap:anywhere}.tap-marker{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;border:3px solid #8fc3a8;border-radius:50%;pointer-events:none;animation:tap-pulse .8s ease-out infinite}@keyframes tap-pulse{0%{transform:scale(.8);opacity:1}to{transform:scale(1.2);opacity:.4}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#00000080;display:flex;align-items:center;justify-content:center;padding:1rem}.dialog{background:var(--surface);border-radius:12px;padding:1.2rem;max-width:380px;width:100%;max-height:calc(100vh - 2rem);overflow-y:auto}.dialog p{margin:0 0 .8rem}.dialog-actions{display:flex;flex-direction:column;gap:.5rem}.name-with-scan{display:flex;gap:.5rem;flex:1 1 100%}.scan-button{background:var(--accent-soft);padding:.4rem .7rem;font-size:1.1rem}.barcode-hint button{padding:0 .4rem;margin-left:.3rem;font-size:.85rem}.dialog button.secondary{background:transparent;color:var(--muted);border:1px solid var(--border)}.checkbox{background:transparent;color:var(--accent);font-size:1.4rem;line-height:1;padding:0 .2rem}.items li.checked .item-name{text-decoration:line-through;color:var(--checked)}.checked-heading{font-size:1rem;color:var(--muted);margin:1.2rem 0 .4rem}.clear-checked{background:transparent;color:var(--muted);border:1px solid var(--border)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(5.4rem + env(safe-area-inset-bottom));z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.6rem;width:max-content;max-width:calc(100vw - 2rem);padding:.7rem 1rem;border-radius:10px;background:var(--toast-bg);color:var(--toast-text);box-shadow:0 4px 14px #00000040}.toast span{flex:1 1 8rem;min-width:0;overflow-wrap:anywhere}.toast button{background:transparent;color:var(--toast-action);font-weight:600;padding:0 .2rem;white-space:nowrap}
