:root{--bg:#f6f3ec;--card:#fbf9f4;--text:#1c3f6e;--muted:#4d6485;--border:#d6d8d6;--primary:#1c3f6e;--primary-soft:#e1e7ef;--on-primary:#f6f3ec;--tomato:#a3402a;--danger:#9a2c24;--warn:#80500a;--warn-soft:#f4e7cd;--bad-soft:#f2dcd7;--radius:12px;--font-body:"Roboto", "Segoe UI", system-ui, -apple-system, sans-serif;--font-display:var(--font-body);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}a{color:var(--primary);text-underline-offset:2px}a:visited{color:var(--primary)}body{background:var(--bg);color:var(--text);font:16px/1.45 var(--font-body);-webkit-tap-highlight-color:transparent;margin:0}.app{max-width:720px;min-height:100vh;margin:0 auto}.topbar{z-index:5;background:var(--primary);color:var(--on-primary);padding:calc(env(safe-area-inset-top,0px) + 12px) 16px 12px;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky;top:0}.topbar h1{font:700 1.25rem/1.2 var(--font-display);align-items:center;gap:8px;margin:0;display:flex}.topbar-actions{align-items:center;gap:10px;display:flex}.install-btn{background:var(--on-primary);min-height:40px;color:var(--primary);font:600 .95rem/1 var(--font-body);cursor:pointer;border:0;border-radius:999px;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.sync-state{opacity:.9;display:inline-flex}.sync-state.sync-sync{opacity:.55}.sync-state.sync-offline,.sync-state.sync-auth{color:#ffd6cf}.content{padding:12px 16px calc(96px + env(safe-area-inset-bottom))}.tabbar{z-index:5;background:var(--card);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.tabbar button{max-width:180px;color:var(--muted);background:0 0;border:0;border-radius:0;flex-direction:column;flex:1;align-items:center;gap:2px;padding:10px 0 8px;font-size:.75rem;display:flex;position:relative}.tabbar button.active{color:var(--primary);font-weight:600}.badge{background:var(--danger);color:#fff;border-radius:9px;min-width:18px;padding:0 5px;font-size:.7rem;line-height:18px;position:absolute;top:4px;left:calc(50% + 6px)}h2{font:700 1.35rem/1.2 var(--font-display);text-wrap:balance;margin:0 0 4px}h3{font:650 1.02rem/1.25 var(--font-display);margin:0 0 8px}.muted{color:var(--muted)}small.muted{font-size:.78rem}.empty{text-align:center;color:var(--muted);padding:32px 8px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:14px}button,input,select,textarea{font:inherit;color:inherit;border:1px solid var(--border);background:var(--card);border-radius:8px}button,a.button{cursor:pointer;padding:8px 12px}a.button{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;text-decoration:none;display:inline-block}button.armed{background:var(--tomato);border-color:var(--tomato);color:#fff}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary);font-weight:600}button.ghost{background:0 0}button.danger{color:var(--danger);border-color:var(--danger);background:0 0}button.icon{color:var(--muted);background:0 0;border-color:#0000;padding:4px 8px}button.link{color:var(--primary);text-align:left;background:0 0;border:0;padding:0;font-weight:600}button.wide{width:100%;padding:12px}input,select,textarea{min-width:0;padding:8px 10px}input.mini{width:72px}input:focus,select:focus,textarea:focus,button:focus-visible,a.button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.grow{flex:1;min-width:0}.row{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.people{align-items:center;gap:6px;display:flex}.stepper{border:1px solid var(--border);background:var(--card);border-radius:8px;align-items:center;display:inline-flex}.stepper button{min-width:44px;min-height:44px;color:var(--primary);background:0 0;border:0;padding:0;font-size:1.3rem;line-height:1}.stepper output{text-align:center;font-variant-numeric:tabular-nums;min-width:2ch;font-weight:600}.stepper.small button{min-width:36px;min-height:36px;font-size:1.1rem}.day h3{color:var(--primary);letter-spacing:.01em}.slot{align-items:center;gap:8px;padding:4px 0;display:flex}.slot-label{width:56px;color:var(--muted);flex-shrink:0;font-size:.9rem}.slot select{flex:1;min-width:0}.slot input.mini{width:56px}.recipe-item{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;width:100%;display:flex}.ingredients,.checklist,.pantry,.suggestions{margin:0;padding:0;list-style:none}.ingredients li{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;display:flex}.ingredients li.have span:first-child:after{content:" ✓";color:var(--primary)}.steps{white-space:pre-wrap}.editor label{color:var(--muted);flex-direction:column;gap:4px;margin-bottom:10px;font-size:.9rem;display:flex}.editor label input,.editor label textarea{color:var(--text)}.editor .row label{flex:1}.ing-row{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.ing-row select{max-width:150px}.checklist li{border-bottom:1px solid var(--border);align-items:center;display:flex}.checklist li:last-child{border-bottom:0}.checklist label{cursor:pointer;flex:1;align-items:center;gap:10px;padding:9px 0;display:flex}.checklist input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary)}.checklist li.done .grow,.checklist li.done .qty{color:var(--muted);text-decoration:line-through}.qty{white-space:nowrap;font-weight:600}.pantry li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0;display:flex}.pantry li:last-child{border-bottom:0}.pantry input.mini{width:64px}.pantry .date{width:140px}.unit{width:28px;font-size:.85rem}.pill{white-space:nowrap;border-radius:10px;padding:2px 8px;font-size:.75rem}.pill.ok{background:var(--primary-soft);color:var(--primary)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--danger)}.suggestions li{padding:6px 0}.pantry li>.grow{min-width:140px;font-weight:500}@media (width<=480px){.pantry li>.grow{flex-basis:100%}}.qty,.pantry input.mini,.badge{font-variant-numeric:tabular-nums}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.toolbar>.muted{white-space:nowrap}.small{font-size:.82rem}.chips{flex-wrap:wrap;gap:6px;margin:4px 0 10px;display:flex}.chip{border:1px solid var(--border);background:var(--card);color:var(--muted);border-radius:999px;align-items:center;gap:6px;padding:5px 11px;font-size:.85rem;display:inline-flex}.chip.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);font-weight:600}.chip.missing{background:var(--bad-soft);color:var(--danger);border-color:#0000}.chip.static{cursor:default}.chip-count{font-variant-numeric:tabular-nums;opacity:.8;font-weight:500}.check{align-items:center;gap:8px;font-size:.9rem;display:flex}.check input{width:18px;height:18px;accent-color:var(--primary)}.tools-card{flex-direction:column;gap:8px;display:flex}.tools-head{text-align:left;background:0 0;border:0;align-items:center;gap:8px;width:100%;padding:0;display:flex}.tools-field{border:0;margin:0 0 10px;padding:0}.tools-field legend{color:var(--muted);margin-bottom:4px;padding:0;font-size:.9rem}.offers{margin:0;padding:0;list-style:none}.offer{align-items:flex-start;gap:12px;display:flex}.offer-main{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.offer-name{overflow-wrap:anywhere;font-weight:600}.offer-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;display:flex}.price{font:700 1.2rem/1 var(--font-display);color:var(--text);font-variant-numeric:tabular-nums}.store-tag{letter-spacing:.04em;text-transform:uppercase;color:var(--tomato);white-space:nowrap;align-self:flex-start;font-size:.7rem;font-weight:600}.ilv-note{border-left:3px solid var(--primary);color:var(--text);background:#1c3f6e0f;margin-top:4px;padding:6px 8px;line-height:1.35;display:block}.ilv-note a{color:var(--primary);text-decoration:underline}.small-btn{padding:4px 10px;font-size:.82rem}.sources ul{margin:0 0 8px;padding-left:18px}.sources li{margin-bottom:4px}.sources a{color:var(--primary)}.checklist li{flex-wrap:wrap}.item-offers{flex-basis:100%;padding:0 0 8px 30px}.offer-hint{color:var(--text);text-align:left;background:0 0;border:0;padding:0;font-size:.82rem}.offer-hint .pill{margin-right:4px}.offer-mini{margin:6px 0 0;padding:0;font-size:.82rem;list-style:none}.offer-mini li{border-bottom:1px dashed var(--border);align-items:baseline;gap:8px;padding:4px 0;display:flex}.offer-mini li:last-child{border-bottom:0}.tally .chips{margin-bottom:6px}button.small{font-size:.85rem}.tabbar button{font-size:.7rem}.toolbar>.muted{flex:none}.recipe-item{flex-direction:row;align-items:center;gap:8px;padding:0;display:flex}.recipe-open{text-align:left;background:0 0;border:0;flex-direction:column;flex:1;align-items:flex-start;gap:2px;min-width:0;padding:14px;display:flex}.star{color:var(--muted);background:0 0;border:0;padding:8px 12px;font-size:1.5rem;line-height:1}.star.on{color:var(--warn)}.title-row{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.filters{scrollbar-width:none;flex-wrap:nowrap;padding-bottom:4px;overflow-x:auto}.filters .chip{flex-shrink:0}.paste{margin-bottom:10px}.paste summary{cursor:pointer;color:var(--primary);margin-bottom:6px;font-size:.9rem;font-weight:600}.paste textarea{width:100%;margin-bottom:6px}.assistant .status{flex-direction:column;gap:4px;display:flex}.status-row{align-items:center;gap:10px;display:flex}.dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:10px;height:10px}.dot.ok{background:var(--primary)}.dot.down{background:var(--danger)}.status.down{border-color:var(--danger)}.mode-chips{scrollbar-width:none;flex-wrap:nowrap;margin-bottom:4px;overflow-x:auto}.mode-chips .chip{flex-shrink:0}label.button.file-btn{cursor:pointer}.preview{align-items:flex-start;gap:12px;display:flex}.preview img{aspect-ratio:1;object-fit:cover;border:1px solid var(--border);border-radius:8px;width:120px;max-width:45%}.preview-side{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.audio-preview{flex-direction:column;gap:8px;display:flex}.audio-preview audio{width:100%}.rec-dot{background:var(--danger);border-radius:50%;width:12px;height:12px;animation:1s infinite pulse}@keyframes pulse{50%{opacity:.3}}.request{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.request textarea{width:100%}.progress-card{flex-direction:column;gap:8px;margin-top:12px;display:flex}.steps-row{flex-wrap:wrap;gap:8px;display:flex}.step{border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:.8rem}.step.on{border-color:var(--primary);color:var(--primary);font-weight:600}.step.done{background:var(--primary-soft);color:var(--primary);border-color:#0000}.bar{background:var(--border);border-radius:3px;height:6px;overflow:hidden}.bar span{background:var(--primary);height:100%;transition:width .2s;display:block}.error-card{border-color:var(--danger);background:var(--bad-soft);margin-top:12px}.error-card pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.75rem}.error-text{color:var(--danger)}.assistant details>summary{cursor:pointer}.assistant details textarea{width:100%;margin:8px 0}.prompt{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--primary-soft);border-radius:6px;padding:8px;font-size:.8rem}.success-card{border-color:var(--primary);background:var(--primary-soft);flex-direction:column;align-items:flex-start;gap:6px;margin-top:12px;display:flex}.notice h3{margin-bottom:6px}.review{margin-top:12px}.review-rows{flex-direction:column;gap:6px;margin:8px 0;padding:0;list-style:none;display:flex}.review-rows li{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.review-rows li.excluded input:not([type=checkbox]),.review-rows li.excluded select{opacity:.45}.review-rows input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary)}.stack{flex-direction:column;gap:4px;display:flex}.review .editor label{color:var(--muted)}@media (prefers-reduced-motion:reduce){.rec-dot{animation:none}}label.button{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:8px 12px;display:inline-block}label.button:focus-within{outline:2px solid var(--primary);outline-offset:1px}.review-rows .grow{min-width:110px}.review-rows select{width:68px}.review-rows input.mini{width:64px}
