@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500&family=Source+Serif+4:wght@700&display=swap";:root{--bg:#f4f1ea;--bg-raised:#fffaf2;--bg-sunk:#f2ecdf;--text:#1a2238;--text-soft:#6b6860;--text-faint:#a09c92;--border:#ddd6c5;--accent:#2d6b82;--border-strong:#cfc7b3;--olive:#6b7a3f;--olive-soft:#e8ecd8;--olive-deep:#525e2e;--terracotta:#c8724b;--terracotta-soft:#f5e1d5;--teal:#4f8378;--teal-soft:#dceae5;--butter:#d9a93c;--butter-soft:#f3e6c0;--rose:#b45a5a;--rose-soft:#f2d8d4;--danger:#a8432a;--display:"Fraunces", Georgia, serif;--mono:"JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--text);font-family:"Inter", -apple-system, system-ui, sans-serif, var(--display);-webkit-font-smoothing:antialiased;margin:0;padding:0}body{min-height:100vh;font-size:16px;line-height:1.4}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:1.75rem}h2{font-size:1.35rem}h3{font-size:1.05rem}.mono,.label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);font-size:.72rem}button{cursor:pointer;color:inherit;font-family:inherit;font-size:inherit;background:0 0;border:none;padding:0}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit;background:var(--bg);border:1px solid var(--border);border-radius:8px;width:100%;padding:.55rem .7rem}input:focus,textarea:focus,select:focus{border-color:var(--olive);box-shadow:0 0 0 3px var(--olive-soft);outline:none}#root{min-height:100vh;padding-bottom:96px}.app{max-width:720px;margin:0 auto;padding:1.25rem 1rem 1rem}.topbar{padding-top:env(safe-area-inset-top);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.brand{font-family:var(--display);letter-spacing:-.02em;font-size:1.6rem;font-weight:600;line-height:1}.brand em{color:var(--terracotta);font-style:italic;font-weight:400}.budget-pill{font-family:var(--mono);background:var(--bg-raised);border:1px solid var(--border);white-space:nowrap;color:var(--text-soft);border-radius:999px;padding:.4rem .8rem;font-size:.78rem}.budget-pill .amount{color:var(--text);font-weight:600}.budget-pill.ok .amount{color:var(--olive)}.budget-pill.over .amount{color:var(--danger)}.week-nav{font-family:var(--mono);color:var(--text-soft);align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.85rem;display:flex}.week-nav button{border:1px solid var(--border);background:var(--bg-raised);color:var(--text);border-radius:8px;padding:.4rem .7rem}.week-nav .today-tag{color:var(--terracotta);text-transform:uppercase;letter-spacing:.12em;font-size:.68rem}.section{margin-bottom:1.75rem}.section-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.75rem;display:flex}.section-head h2{font-style:italic;font-weight:500}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:12px;margin-bottom:.5rem;padding:.85rem 1rem}.day-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:14px;margin-bottom:.6rem;overflow:hidden}.day-card.today{border-color:var(--terracotta);box-shadow:0 0 0 1px var(--terracotta)}.day-card.past{opacity:.58}.day-card-head{border-bottom:1px solid var(--border);background:var(--bg-sunk);justify-content:space-between;align-items:center;padding:.6rem 1rem;display:flex}.day-card-head .day-name{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-soft);font-size:.72rem;font-weight:600}.day-card.today .day-card-head .day-name{color:var(--terracotta)}.entry-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:.7rem;padding:.7rem 1rem;display:flex}.entry-row:last-child{border-bottom:none}.entry-stripe{border-radius:2px;flex-shrink:0;align-self:stretch;width:4px}.entry-stripe.cook{background:var(--terracotta)}.entry-stripe.reheat{background:var(--terracotta-soft);border:1px solid var(--terracotta)}.entry-stripe.wrap{background:var(--olive)}.entry-stripe.hero{background:var(--teal)}.entry-stripe.prep{background:#7a6a9a}.entry-stripe.prep-use{background:#e3dcef;border:1px solid #7a6a9a}.entry-stripe.out{background:var(--butter)}.entry-stripe.leftover{background:var(--teal-soft);border:1px solid var(--teal)}.entry-stripe.breakfast{background:#e8a747}.entry-stripe.convenience{background:#6b8aa8}.entry-stripe.solo{background:var(--border-strong)}.entry-body{flex:1;min-width:0}.entry-title{font-size:1rem;font-weight:500;line-height:1.3}.entry-meta{flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;display:flex}.entry-actions{align-items:flex-start;gap:.25rem;display:flex}.btn-x{width:28px;height:28px;color:var(--text-faint);background:0 0;border-radius:6px;justify-content:center;align-items:center;display:inline-flex}.btn-x:hover{color:var(--danger);background:var(--rose-soft)}.day-add{background:var(--bg-raised);flex-wrap:wrap;gap:.4rem;padding:.5rem 1rem;display:flex}.day-add button{border:1px dashed var(--border-strong);color:var(--text-soft);font-size:.78rem;font-family:var(--mono);letter-spacing:.04em;background:0 0;border-radius:999px;padding:.35rem .65rem}.day-add button:hover{background:var(--bg-sunk);color:var(--text);border-style:solid}.day-add button.primary{border-color:var(--terracotta);color:var(--terracotta)}.day-add button.primary:hover{background:var(--terracotta-soft)}.chip{font-family:var(--mono);letter-spacing:.06em;background:var(--bg-sunk);color:var(--text-soft);text-transform:uppercase;border-radius:999px;align-items:center;padding:3px 7px;font-size:.66rem;font-weight:500;display:inline-flex}.chip.cook{background:var(--terracotta-soft);color:#8f4a2d}.chip.reheat{background:var(--terracotta-soft);color:#8f4a2d;border:1px dashed #c8724b}.chip.wrap{background:var(--olive-soft);color:var(--olive-deep)}.chip.hero{background:var(--teal-soft);color:#35615a}.chip.prep{color:#4a3e66;background:#e3dcef}.chip.prep-use{color:#4a3e66;background:#efeaf6;border:1px dashed #7a6a9a}.chip.out,.chip.sweet{background:var(--butter-soft);color:#8a6a14}.chip.leftover{background:var(--teal-soft);color:#35615a;border:1px dashed var(--teal)}.chip.breakfast{color:#8a5e14;background:#fbe5bf}.chip.convenience{color:#3f5670;background:#dde5ee}.chip.solo{background:var(--bg-sunk);color:var(--text-soft);border:1px dashed var(--border-strong)}.chip.ok{background:var(--olive-soft);color:var(--olive-deep)}.chip.warn{background:var(--butter-soft);color:#8a6a14}.chip.danger{background:var(--rose-soft);color:var(--danger)}.btn{border:1px solid var(--border);background:var(--bg-raised);font-size:.9rem;font-family:var(--display);border-radius:8px;padding:.55rem .9rem;font-weight:500;transition:all .1s}.btn:hover{background:var(--bg-sunk)}.btn.primary{background:var(--olive);color:#fffaf2;border-color:var(--olive)}.btn.primary:hover{background:var(--olive-deep)}.btn.accent{background:var(--terracotta);color:#fffaf2;border-color:var(--terracotta)}.btn.accent:hover{background:#a85c3a}.btn.ghost{color:var(--text-soft);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--bg-sunk);color:var(--text)}.btn.small{padding:.3rem .6rem;font-size:.82rem}.btn.danger{color:var(--danger)}.btn-row{flex-wrap:wrap;gap:.5rem;display:flex}.list-item{border-bottom:1px solid var(--border);text-align:left;align-items:center;gap:.7rem;width:100%;padding:.7rem .85rem;display:flex}.list-item:last-child{border-bottom:none}.list-item.bought{color:var(--text-faint)}.list-item.bought .item-name{text-decoration:line-through}.list-item .item-name{font-size:1rem}.list-item .item-name-block{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.list-item .item-source{font-family:var(--display);color:var(--text-soft);text-transform:none;white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;font-style:italic;overflow:hidden}.list-item.bought .item-source{opacity:.7;text-decoration:line-through}.list-item .item-price{font-family:var(--mono);color:var(--text-soft);font-size:.8rem}.check{border:1.5px solid var(--border-strong);background:var(--bg);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;display:inline-flex}.list-item.bought .check{background:var(--olive);border-color:var(--olive);color:#fffaf2}.check svg{width:16px;height:16px;display:none}.list-item.bought .check svg{display:block}.category-group{margin-bottom:1.25rem}.category-group h3{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-soft);margin-bottom:.45rem;padding-left:.25rem;font-size:.72rem;font-weight:600}.category-group .card-wrap{background:var(--bg-raised);border:1px solid var(--border);border-radius:12px;overflow:hidden}.category-group h3.pantry-section-head{justify-content:space-between;align-items:baseline;gap:1rem;padding-right:.5rem;display:flex}.pantry-col-headers{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);font-size:.6rem;font-weight:400}.toggle{background:#d9d2c2;border:1px solid #b8ad94;border-radius:999px;flex-shrink:0;width:50px;height:30px;transition:background .15s,border-color .15s;position:relative}.toggle.on{background:var(--olive);border-color:var(--olive-deep)}.toggle .thumb{background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #0003}.toggle.on .thumb{transform:translate(20px)}.pantry-row{background:var(--bg-raised);border:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:10px;align-items:center;gap:.5rem;margin-bottom:.4rem;padding:.75rem .9rem;transition:background .12s,border-color .12s,box-shadow .12s;display:flex;position:relative}.pantry-row:before{content:"";background:0 0;border-radius:10px 0 0 10px;width:3px;position:absolute;top:0;bottom:0;left:0}.pantry-row:hover{border-color:var(--border-strong);background:#fbf8f0}.pantry-row:active{transform:scale(.998)}.pantry-row.is-owned{background:var(--olive-soft);border-color:#c7cfa8}.pantry-row.is-owned:before{background:var(--olive)}.pantry-row.is-owned:hover{background:#e6ecd0}.pantry-row .item-name{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.pantry-row .item-name-text{text-transform:capitalize}.pantry-row .item-note-input{font-family:var(--display);color:var(--text-soft);text-transform:none;background:0 0;border:none;border-radius:0;width:100%;padding:0;font-size:.78rem;font-style:italic}.pantry-row .item-note-input::placeholder{color:var(--text-faint);font-style:italic}.pantry-row .item-note-input:focus{box-shadow:none;color:var(--text);background:var(--bg);border-bottom:1px dashed var(--border-strong);outline:none}.pantry-row.is-owned .item-note-input{color:var(--olive-deep)}.pantry-row .toggle-hint{letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);margin-right:.2rem;font-size:.7rem;font-weight:700}.pantry-row.is-owned .toggle-hint{color:var(--olive-deep)}.nav{background:var(--bg-raised);border-top:1px solid var(--border);padding:.5rem .5rem calc(.5rem + env(safe-area-inset-bottom));z-index:10;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav button{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:2px;padding:.45rem .25rem .4rem;font-size:.64rem;transition:all .12s;display:flex}.nav button svg{width:22px;height:22px}.nav button.active{color:var(--terracotta);background:var(--terracotta-soft)}.modal-backdrop{z-index:100;background:#2b2a2780;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--bg);width:100%;max-width:720px;max-height:88vh;padding:1.1rem 1rem calc(1.5rem + env(safe-area-inset-bottom));border-top:3px solid var(--terracotta);border-radius:20px 20px 0 0;overflow-y:auto}.modal-head{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.modal-head h2{font-style:italic;font-weight:500}.modal-head .close{background:var(--bg-raised);border:1px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.modal-tabs{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border);gap:.25rem;margin-bottom:.75rem;font-size:.75rem;display:flex;overflow-x:auto}.modal-tabs button{color:var(--text-soft);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.5rem .75rem}.modal-tabs button.active{color:var(--terracotta);border-bottom-color:var(--terracotta)}.meal-card{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem .25rem;display:flex}.meal-card:last-child{border-bottom:none}.meal-card .title{font-size:1rem;font-weight:500}.meal-card .sub{font-family:var(--mono);color:var(--text-soft);margin-top:3px;font-size:.7rem}.meal-card .add-btn{background:var(--terracotta);color:#fffaf2;font-family:var(--mono);letter-spacing:.06em;border:none;border-radius:8px;padding:.4rem .8rem;font-size:.72rem;font-weight:500}.meal-card .add-btn:hover{background:#a85c3a}.meal-card.clickable{cursor:pointer;transition:background .12s}.meal-card.clickable:hover{background:#fbf8f0}.chip.time{color:#6a5d2c;font-variant-numeric:tabular-nums;background:#efe9d8;border:1px solid #d9cfa6}button.chip.time{cursor:pointer;transition:background .1s,border-color .1s}button.chip.time:hover{background:#e4ddc4;border-color:#bdb083}.recipe-meta{flex-wrap:wrap;gap:.4rem;margin:.25rem 0 .75rem;display:flex}.recipe-section{margin-top:1rem}.recipe-section h3{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);margin:0 0 .5rem;font-size:.72rem;font-weight:600}.recipe-steps{counter-reset:step;margin:0;padding:0;list-style:none}.recipe-steps li{border-top:1px solid var(--border);padding:.5rem 0 .5rem 2rem;line-height:1.45;position:relative}.recipe-steps li:first-child{border-top:none}.recipe-steps li:before{counter-increment:step;content:counter(step);background:var(--terracotta-soft);color:#8f4a2d;width:1.4rem;height:1.4rem;font-family:var(--mono);border-radius:50%;justify-content:center;align-items:center;font-size:.72rem;font-weight:600;display:inline-flex;position:absolute;top:.55rem;left:0}.recipe-ingredients{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.recipe-ingredients li{background:var(--bg-raised);border:1px solid var(--border);text-transform:capitalize;border-radius:999px;padding:.3rem .7rem;font-size:.88rem}.recipe-notes{background:var(--butter-soft);color:#7a5a14;border-radius:10px;padding:.75rem;font-style:italic;line-height:1.45}.paste-textarea{width:100%;min-height:260px;font-family:var(--mono);border:1px solid var(--border);background:var(--bg-raised);resize:vertical;border-radius:10px;padding:.7rem;font-size:.82rem;line-height:1.5}.tab-bar{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--border);gap:.25rem;margin-bottom:1rem;font-size:.75rem;display:flex;overflow-x:auto}.tab-bar button{color:var(--text-soft);white-space:nowrap;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.55rem .8rem}.tab-bar button.active{color:var(--terracotta);border-bottom-color:var(--terracotta)}.chip-select{font-family:var(--mono);letter-spacing:.06em;background-color:var(--bg-sunk);color:var(--text-soft);text-transform:uppercase;border:1px solid var(--border);cursor:pointer;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 4l3 3 3-3' stroke='%236b6860' stroke-width='1.3' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 5px center;background-repeat:no-repeat;background-size:9px;border-radius:999px;align-items:center;width:auto;padding:3px 20px 3px 7px;font-size:.66rem;font-weight:500;display:inline-flex}.chip-select:hover,.chip-select.meal{background-color:var(--bg-raised)}.chip-select.produce{background-color:var(--olive-soft);color:var(--olive-deep)}.chip-select.protein{background-color:var(--rose-soft);color:var(--danger)}.chip-select.dairy{background-color:var(--butter-soft);color:#8a6a14}.chip-select.drinks{color:#2f4d72;background-color:#d8e3f2}.chip-select.frozen{background-color:var(--teal-soft);color:#35615a}.chip-select.pantry{background-color:var(--terracotta-soft);color:#8f4a2d}.chip-select.sauces{color:#7a5a1f;background-color:#f5e4c8}.chip-select.seasoning{color:#7d3b1a;background-color:#f2d9c9}.chip-select.other{background-color:var(--bg-sunk);color:var(--text-soft)}.empty-state{text-align:center;color:var(--text-soft);padding:1.5rem 1rem;font-style:italic}.chip-tag{font-family:var(--mono);letter-spacing:.06em;background:var(--bg-sunk);color:var(--text-soft);text-transform:uppercase;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;padding:3px 8px;font-size:.66rem;font-weight:500;transition:border-color .1s;display:inline-flex}.chip-tag:hover{border-color:var(--border-strong)}.chip-tag.produce{background:var(--olive-soft);color:var(--olive-deep)}.chip-tag.protein{background:var(--rose-soft);color:var(--danger)}.chip-tag.dairy{background:var(--butter-soft);color:#8a6a14}.chip-tag.drinks{color:#2f4d72;background:#d8e3f2}.chip-tag.frozen{background:var(--teal-soft);color:#35615a}.chip-tag.pantry{background:var(--terracotta-soft);color:#8f4a2d}.chip-tag.sauces{color:#7a5a1f;background:#f5e4c8}.chip-tag.seasoning{color:#7d3b1a;background:#f2d9c9}.chip-tag.other{background:var(--bg-sunk);color:var(--text-soft)}.pantry-nav{z-index:5;background:var(--bg);border-bottom:1px solid var(--border);-webkit-overflow-scrolling:touch;gap:.3rem;margin:0 -.1rem .75rem;padding:.5rem .1rem;display:flex;position:sticky;top:0;overflow-x:auto}.pantry-nav::-webkit-scrollbar{display:none}.pantry-nav button{background:var(--bg-raised);border:1px solid var(--border);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-soft);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:.35rem .7rem;font-size:.68rem}.pantry-nav button:hover{background:var(--bg-sunk);color:var(--text)}.pantry-nav button.have{background:var(--olive-soft);color:var(--olive-deep);border-color:var(--olive)}.have-section .card-wrap{background:var(--olive-soft);border-color:var(--olive)}.have-section h3{color:var(--olive-deep)}.have-subhead{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--olive-deep);opacity:.7;background:var(--olive-soft);border-bottom:1px solid #525e2e1f;padding:.45rem .85rem .2rem;font-size:.62rem}.summary-grid{grid-template-columns:1fr 1fr;gap:.5rem;margin-bottom:1rem;display:grid}.summary-grid .stat{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;padding:.75rem}.summary-grid .stat .value{font-family:var(--display);font-size:1.5rem;font-weight:600;line-height:1}.summary-grid .stat .label{font-family:var(--mono);color:var(--text-soft);text-transform:uppercase;letter-spacing:.1em;margin-top:4px;font-size:.65rem}.quick-add{gap:.5rem;margin-bottom:1rem;display:flex}.quick-add input{flex:1}.field{margin-bottom:.75rem}.field label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft);margin-bottom:4px;font-size:.7rem;display:block}.window-controls{font-family:var(--mono);color:var(--text-soft);justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.78rem;display:flex}.window-controls button{border:1px solid var(--border);background:var(--bg-raised);color:var(--text);border-radius:8px;padding:.4rem .7rem}.window-controls button.today-jump{border-color:var(--terracotta);color:var(--terracotta);font-weight:600}.window-controls button.window-reset{border-color:var(--text-faint);color:var(--text-soft);padding:.35rem .55rem;font-size:.72rem}.window-controls button.window-reset:hover{color:var(--danger);border-color:var(--danger)}.window-controls .range-label{color:var(--text-soft);text-align:center;flex:1}.day-card.is-yesterday{opacity:.65}.day-card-head .day-date{font-family:var(--mono);color:var(--text-soft);font-size:.78rem}.day-card.today .day-card-head{background:var(--terracotta-soft)}.day-card.today .day-name{color:var(--terracotta);font-weight:600}.template-bar{background:var(--bg-raised);border:1px solid var(--border);font-family:var(--mono);color:var(--text-soft);border-radius:10px;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.85rem;padding:.55rem .75rem;font-size:.78rem;display:flex}.template-bar .label-text{letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);margin-right:.15rem;font-size:.7rem}.template-bar select.chip-select{background-color:var(--bg);max-width:180px;padding-right:22px}.template-bar .tpl-btn{border:1px solid var(--border);background:var(--bg);color:var(--text);font-family:var(--mono);letter-spacing:.04em;white-space:nowrap;border-radius:8px;padding:.35rem .7rem;font-size:.74rem}.template-bar .tpl-btn:hover{background:var(--bg-sunk);border-color:var(--border-strong)}.template-bar .tpl-btn.primary{border-color:var(--olive);color:var(--olive-deep);background:var(--olive-soft)}.template-bar .tpl-btn.primary:hover{background:#dde5c0}.template-bar .tpl-btn.danger{color:var(--danger)}.template-bar .tpl-btn.danger:hover{background:var(--rose-soft);border-color:var(--rose)}.template-bar .spacer{flex:1}.tpl-modal-body{color:var(--text);padding:.5rem 0 .25rem}.tpl-modal-body .tpl-summary{color:var(--text-soft);background:var(--bg-sunk);border-radius:10px;margin-bottom:.85rem;padding:.7rem .85rem;font-size:.92rem;line-height:1.5}.tpl-modal-body .tpl-summary strong{color:var(--text);font-weight:600}.tpl-modal-actions{flex-direction:column;gap:.5rem;display:flex}.tpl-modal-actions .btn{width:100%;padding:.7rem .9rem;font-size:.95rem}@media (width>=480px){.tpl-modal-actions{flex-direction:row}}.past-strip{background:var(--bg-sunk);border:1px solid var(--border);color:var(--text-soft);border-radius:8px;align-items:center;gap:.6rem;margin-bottom:.3rem;padding:.45rem .85rem;font-size:.85rem;line-height:1.3;display:flex}.past-strip .past-day{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);flex-shrink:0;min-width:36px;font-size:.7rem;font-weight:600}.past-strip .past-summary{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-style:italic;overflow:hidden}.past-strip .past-summary.empty{color:var(--text-faint);opacity:.7}.past-strip .past-date{font-family:var(--mono);color:var(--text-faint);flex-shrink:0;font-size:.7rem}.past-strip.clickable{cursor:pointer;transition:background .12s,border-color .12s}.past-strip.clickable:hover{background:var(--bg-raised);border-color:var(--border-strong)}.past-strip .past-toggle{font-family:var(--mono);color:var(--text-faint);text-align:center;-webkit-user-select:none;user-select:none;flex-shrink:0;width:14px;font-size:.7rem}.week-divider{align-items:center;gap:.6rem;margin:1.1rem 0 .5rem;display:flex}.week-divider:first-child{margin-top:.25rem}.week-divider .line{background:var(--border-strong);opacity:.6;flex:1;height:1px}.week-divider .label{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-soft);flex-shrink:0;font-size:.68rem;font-weight:600}.week-divider.this-week .label{color:var(--terracotta)}.expiry-banner{border:1px solid var(--butter);color:#6b4a14;background:#fdf3e7;border-radius:12px;flex-direction:column;gap:.25rem;margin-bottom:1rem;padding:.7rem .9rem;font-size:.88rem;display:flex}.expiry-banner .banner-head{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:#8a6420;justify-content:space-between;align-items:center;font-size:.7rem;display:flex}.expiry-banner .banner-head button{color:#8a6420;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;background:0 0;border:1px solid #d8b884;border-radius:6px;padding:.2rem .5rem;font-size:.68rem}.expiry-banner ul{margin:.2rem 0 0;padding:0;font-size:.85rem;list-style:none}.expiry-banner li{padding:.15rem 0}.price-input{width:4.5rem;font-family:var(--mono);border:1px solid var(--border);background:var(--bg);text-align:right;border-radius:6px;padding:.25rem .4rem;font-size:.78rem}.price-input:focus{border-color:var(--olive);box-shadow:0 0 0 2px var(--olive-soft)}.chip.shelf-ok{background:var(--olive-soft);color:var(--olive-deep)}.chip.shelf-warn{background:var(--butter-soft);color:#8a6420}.chip.shelf-soon{background:var(--terracotta-soft);color:var(--terracotta)}.chip.shelf-expired{background:var(--rose-soft);color:var(--danger);font-weight:600}.chip.shelf-danger{background:var(--rose-soft);color:var(--danger)}.chip.in-cart{background:var(--teal-soft);color:#35615a;font-style:italic}.picker-search,.pantry-search,.lib-search{padding:.5rem .7rem;font-size:.92rem}.pantry-tag{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;vertical-align:middle;border-radius:999px;margin-left:.5rem;padding:.1rem .45rem;font-size:.6rem;font-weight:500;display:inline-block}.pantry-tag.have{background:var(--olive-soft);color:var(--olive-deep)}.pantry-tag.needs-buying{background:var(--terracotta-soft);color:var(--terracotta)}.meal-card.is-unowned{background:var(--bg-sunk)}.entry-stripe.snack{background:#6b9a6e}.chip.snack{color:#2f5732;background:#dcebde}.extras-group .card-wrap{background:var(--bg-raised)}.extras-add-row{border-bottom:1px solid var(--border);background:var(--bg-sunk);gap:.4rem;padding:.55rem .85rem;display:flex}.extras-add-row .extras-add-name{flex:1;min-width:0}.extras-add-row .extras-add-price{flex-shrink:0;width:70px}.extras-add-row button{flex-shrink:0;padding:.55rem .85rem}.chip.uses{background:var(--olive-soft);color:var(--olive-deep);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer;border:1px solid #0000;border-radius:999px;flex-shrink:0;padding:.18rem .55rem;font-size:.66rem}.chip.uses:hover{border-color:var(--olive)}.chip.uses.open{background:var(--olive);color:#fff}.pantry-row-uses{background:var(--bg-sunk);border:1px solid var(--border);border-top:none;border-radius:0 0 12px 12px;flex-wrap:wrap;align-items:center;gap:.4rem;margin:-.5rem 0 .55rem;padding:.55rem .85rem;display:flex}.pantry-row-uses .label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-right:.25rem;font-size:.66rem}.use-pill{background:var(--bg-raised);border:1px solid var(--border);color:var(--text-soft);border-radius:999px;padding:.18rem .6rem;font-size:.78rem;display:inline-block}.use-pill-meal{border-color:var(--terracotta);color:#8f4a2d}.use-pill-wrap{border-color:var(--olive);color:var(--olive-deep)}.use-pill-hero{border-color:var(--teal);color:#35615a}.use-pill-prep{color:#5d4f7d;border-color:#7a6a9a}.use-pill-breakfast{border-color:var(--butter);color:#8a6a14}.use-pill-convenience{border-color:var(--rose);color:var(--danger)}.use-pill-snack{color:#2f5732;border-color:#6b9a6e}.pantry-row.uses-open{border-bottom:none;border-bottom-right-radius:0;border-bottom-left-radius:0}.budget-pill.between{background:var(--bg-sunk);color:var(--text-soft)}.budget-pill.between .amount{color:var(--olive-deep)}.budget-pill.cold{background:var(--bg-sunk);color:var(--text-faint);font-style:italic}.shop-toolbar{background:var(--bg-raised);border:1px solid var(--border);border-radius:12px;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.7rem .9rem;display:flex}.shop-toolbar .toolbar-stat{font-family:var(--mono);color:var(--text-soft);font-size:.78rem}.shop-toolbar .toolbar-stat strong{color:var(--text);font-weight:600}.shop-toolbar .complete-btn{background:var(--olive);color:#fff;letter-spacing:.02em;border:none;border-radius:8px;margin-left:auto;padding:.55rem .95rem;font-size:.85rem;font-weight:600}.shop-toolbar .complete-btn:disabled{background:var(--text-faint);cursor:default;opacity:.6}.runs-history{margin-top:1.5rem}.runs-history h3{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft);margin-bottom:.5rem;font-size:.72rem}.run-row{border:1px solid var(--border);background:var(--bg-raised);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:.35rem;padding:.5rem .85rem;font-size:.88rem;display:flex}.run-row .run-cost{font-family:var(--mono);color:var(--olive-deep);font-weight:600}.run-row .run-date{font-family:var(--mono);color:var(--text-soft);font-size:.74rem}.tracker-dashboard{background:var(--bg-raised);border:1px solid var(--border);border-radius:14px;margin-bottom:1.25rem;padding:.85rem}.tracker-windowtoggle{gap:.3rem;margin-bottom:.7rem;display:flex}.tracker-windowtoggle button{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--border-strong);color:var(--text-soft);cursor:pointer;background:0 0;border-radius:999px;padding:.3rem .7rem;font-size:.72rem}.tracker-windowtoggle button.active{background:var(--olive);border-color:var(--olive);color:#fffaf2}.tracker-stats{grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:.85rem;display:grid}@media (width>=600px){.tracker-stats{grid-template-columns:repeat(4,1fr)}}.tracker-stat{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.15rem;padding:.55rem .7rem;display:flex}.tracker-stat-label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);font-size:.65rem}.tracker-stat strong{font-family:var(--display);color:var(--olive-deep);font-size:1.4rem;font-weight:600}.tracker-top{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:.55rem .7rem}.tracker-top-head{justify-content:space-between;align-items:center;margin-bottom:.45rem;display:flex}.tracker-top-head>span{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-soft);font-size:.7rem}.tracker-toptoggle{gap:.2rem;display:flex}.tracker-toptoggle button{font-family:var(--mono);border:1px solid var(--border);color:var(--text-soft);cursor:pointer;background:0 0;border-radius:999px;padding:.18rem .55rem;font-size:.68rem}.tracker-toptoggle button.active{background:var(--olive-soft);border-color:var(--olive);color:var(--olive-deep)}.tracker-top-list{flex-direction:column;gap:.2rem;display:flex}.tracker-top-row{grid-template-columns:18px 1fr auto;align-items:center;gap:.5rem;font-size:.88rem;display:grid}.tracker-top-rank{font-family:var(--mono);color:var(--text-faint);font-size:.72rem}.tracker-top-name{color:var(--text)}.tracker-top-val{font-family:var(--mono);color:var(--olive-deep);font-size:.78rem;font-weight:600}.tracker-runs h3{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft);margin-bottom:.5rem;font-size:.72rem}.tracker-run{border:1px solid var(--border);background:var(--bg-raised);border-radius:10px;margin-bottom:.35rem;overflow:hidden}.tracker-run-head{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:none;grid-template-columns:1fr auto 18px;align-items:center;gap:.7rem;padding:.55rem .85rem;font-family:inherit;display:grid}.tracker-run-date{font-family:var(--mono);color:var(--text);font-size:.85rem}.tracker-run-stats{align-items:baseline;gap:.6rem;font-size:.85rem;display:flex}.tracker-run-stats strong{font-family:var(--mono);color:var(--olive-deep)}.tracker-run-count{font-family:var(--mono);color:var(--text-soft);font-size:.74rem}.tracker-run-caret{font-family:var(--mono);color:var(--text-soft);font-size:.85rem}.tracker-run-body{border-top:1px solid var(--border);padding:0 .85rem .7rem}.tracker-run-meals{color:var(--text-soft);padding:.55rem 0 .4rem;font-size:.82rem}.tracker-run-meals-label{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);font-size:.68rem}.tracker-run-items{margin:.35rem 0 0;padding:0;list-style:none}.tracker-run-items li{border-bottom:1px dashed var(--border);justify-content:space-between;padding:.25rem 0;font-size:.85rem;display:flex}.tracker-run-items li:last-child{border-bottom:none}.tracker-run-itemprice{font-family:var(--mono);color:var(--text-soft)}.list-item .price-input{margin-left:auto}.pantry-row .price-input{margin-left:.4rem}.built-content{padding-bottom:1.5rem}.built-hero{background:var(--bg-raised);border:1px solid var(--border);border-radius:14px;margin-bottom:1.5rem;padding:1.25rem 1.1rem}.built-hero h2{font-family:var(--display);color:var(--terracotta);margin-bottom:.85rem;font-size:1.5rem;font-style:italic;font-weight:500;line-height:1.2}.built-hero p{color:var(--text);margin:0 0 .7rem;font-size:.95rem;line-height:1.55}.built-hero p:last-child{margin-bottom:0}.built-section{margin-bottom:2rem}.built-section h4{font-family:var(--display);color:var(--olive-deep);margin-bottom:.65rem;font-size:1.1rem;font-weight:600}.built-section>p{color:var(--text-soft);margin:0 0 .85rem;font-size:.9rem;line-height:1.55}.built-section>ul{margin:.5rem 0 0;padding-left:1.1rem;font-size:.9rem;line-height:1.55}.built-section>ul li{color:var(--text);margin-bottom:.55rem}.built-section>ul li strong{color:var(--olive-deep)}.built-grid{grid-template-columns:1fr;gap:.7rem;display:grid}.built-card{background:var(--bg-raised);border:1px solid var(--border);border-radius:12px;padding:.85rem .95rem}.built-card h5{font-family:var(--display);color:var(--text);letter-spacing:-.005em;margin:0 0 .45rem;font-size:.98rem;font-weight:600}.built-card p{color:var(--text);margin:0 0 .5rem;font-size:.88rem;line-height:1.5}.built-card p:last-child{margin-bottom:0}.built-card ul{margin:0;padding-left:1.1rem;font-size:.85rem;line-height:1.5}.built-card ul li{color:var(--text);margin-bottom:.3rem}.built-card .card-label{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--terracotta);margin-bottom:.5rem;font-size:.66rem}.built-card .layman{color:var(--text-soft);background:var(--bg-sunk);border-left:2px solid var(--olive-soft);border-radius:6px;margin-top:.55rem;padding:.55rem .7rem;font-size:.85rem;line-height:1.5}.built-card .layman em{color:var(--olive-deep);font-style:italic;font-weight:600}.built-arch{font-family:var(--mono);background:var(--bg-sunk);border:1px solid var(--border);white-space:pre;color:var(--text);border-radius:8px;margin:0 0 .85rem;padding:.75rem .9rem;font-size:.7rem;line-height:1.55;overflow-x:auto}.built-cta{background:var(--terracotta-soft);border:1px solid var(--terracotta);font-family:var(--display);color:#8f4a2d;border-radius:14px;margin-top:1rem;padding:1.1rem;font-size:1rem;line-height:1.5}.built-card code,.built-section code,.built-hero code{font-family:var(--mono);background:var(--bg-sunk);color:var(--text);border-radius:4px;padding:1px 5px;font-size:.82em}@media (width>=560px){.built-grid{grid-template-columns:1fr 1fr}}@media (width<=480px){.app{padding:.75rem .75rem .5rem}.brand{font-size:1.3rem}h1{font-size:1.4rem}.shop-toolbar .complete-btn{width:100%;margin-top:.5rem;margin-left:0}.shop-toolbar{flex-direction:column;align-items:flex-start}.built-hero{padding:1rem .9rem}.built-hero h2{font-size:1.25rem}.built-arch{font-size:.62rem}}
