:root{--ink:#21161e;--aubergine:#3c1832;--tomato:#e64c2f;--tomato-dark:#c83c23;--cream:#fbf4e8;--paper:#fffdf8;--yellow:#f5c84d;--green:#2f6c54;--line:#e7dbcf;--muted:#766a70;--shadow:0 14px 38px rgba(48,19,40,.1)}
*{box-sizing:border-box}html{background:var(--cream)}body{margin:0;color:var(--ink);background:var(--cream);font:16px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,textarea{font:inherit}button{color:inherit}.topbar{height:4.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.12);padding:0 2.4rem;background:var(--aubergine);color:#fff;position:sticky;top:0;z-index:20}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:.7rem}.brand-mark{width:2.4rem;height:2.4rem;display:grid;place-items:center;border-radius:.75rem;background:var(--tomato);transform:rotate(-3deg);font-size:1.5rem;font-weight:900}.brand strong,.brand small{display:block;line-height:1.05}.brand strong{font-size:1.05rem}.brand small{color:#eacfdc;font-size:.8rem;margin-top:.2rem}.account{display:flex;align-items:center;gap:.65rem;border:0;background:transparent;color:#ead8e2;cursor:pointer}.account>span{width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;background:var(--yellow);color:var(--aubergine);font-weight:900}.account small{font-size:.8rem}.layout{max-width:87.5rem;margin:0 auto;display:grid;grid-template-columns:14.5rem minmax(0,1fr);min-height:calc(100vh - 4.5rem)}.sidebar{padding:2.2rem 1.5rem 6rem 1.8rem;border-right:1px solid var(--line)}.eyebrow{margin:0 0 .6rem;color:var(--tomato);font-weight:900;font-size:.75rem;text-transform:uppercase;letter-spacing:.14em}.main-nav{display:grid;gap:.35rem}.main-nav button{border:0;background:transparent;display:flex;align-items:center;gap:.75rem;width:100%;padding:.75rem .8rem;border-radius:.75rem;text-align:left;cursor:pointer;color:#6b5d64;font-weight:700;font-size:.9rem}.main-nav button span{width:1.25rem;text-align:center}.main-nav button:hover,.main-nav button.active{background:#fff;color:var(--aubergine);box-shadow:0 .25rem 1.1rem rgba(56,24,45,.06)}.stewie-note{margin-top:2rem;border-radius:1rem;background:var(--aubergine);color:#fff;padding:1.1rem}.stewie-note>b{color:var(--yellow)}.stewie-note p{margin:.55rem 0 0;font-size:.82rem;line-height:1.55;color:#ead8e2}.stewie-note strong{color:#fff}.content{min-width:0;padding:2.2rem clamp(1.5rem,4vw,3.9rem) 6rem;position:relative}.week-head{min-height:13.5rem;border-radius:1.5rem;overflow:hidden;position:relative;background:var(--aubergine);box-shadow:var(--shadow);display:flex;align-items:end}.week-head img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.week-head:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(39,10,31,.97),rgba(51,15,40,.77) 48%,rgba(51,15,40,.08) 80%)}.week-copy{position:relative;z-index:1;padding:1.8rem 2rem;color:#fff;max-width:40rem}.week-copy h1,.panel-title h1{font-family:Georgia,"Times New Roman",serif;letter-spacing:-.035em}.week-copy h1{font-size:clamp(2rem,3.4vw,3.1rem);line-height:1;margin:.6rem 0}.week-copy p{margin:0;color:#efdae4}.kicker{display:inline-flex;padding:.35rem .65rem;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);border-radius:99rem;font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.status-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin:1rem 0 2rem}.status-card{background:#fff;border:1px solid var(--line);border-radius:.9rem;padding:.8rem 1rem;display:flex;align-items:center;gap:.7rem;font-size:.88rem}.status-dot{width:.75rem;height:.75rem;border-radius:50%;background:var(--green)}.status-dot.warn{background:var(--tomato)}.status-card strong,.status-card small{display:block}.status-card small{color:var(--muted);font-size:.75rem}.section-heading,.panel-title{display:flex;justify-content:space-between;align-items:end;gap:1.25rem}.section-heading{margin:0 0 1rem}.section-heading h2,.panel-title h1{margin:0;color:var(--aubergine);font-size:2.2rem}.secondary,.primary,.text-button{border:0;cursor:pointer}.secondary{background:#fff;border:1px solid var(--line);padding:.65rem .9rem;border-radius:.75rem;font-weight:800;font-size:.85rem}.primary{background:var(--tomato);color:#fff;padding:.7rem .95rem;border-radius:.7rem;font-weight:850;font-size:.88rem;box-shadow:0 .4rem 1rem rgba(230,76,47,.2)}.primary:hover{background:var(--tomato-dark)}.primary:disabled{background:#baaeb3;box-shadow:none;cursor:default}.full{width:100%}.recipe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem}.recipe-card{background:var(--paper);border:1px solid var(--line);border-radius:1.15rem;padding:1.25rem;min-height:14.5rem;display:flex;flex-direction:column}.recipe-card.reserve{border:2px solid var(--yellow);background:#fffaf0}.recipe-card.cooked{opacity:.64}.recipe-card:last-child:nth-child(odd){grid-column:span 2}.card-top{display:flex;align-items:center;min-height:1.6rem;gap:.5rem}.number{font-weight:900;font-size:.75rem;letter-spacing:.12em;color:#a4979c;margin-right:auto}.reserve-pill,.done-pill,.tiny-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;font-weight:900;padding:.35rem .5rem;border-radius:99rem}.reserve-pill{background:var(--yellow);color:#4a3510}.done-pill{background:#dcebe4;color:var(--green)}.recipe-card h3,.bank-list h3{font-family:Georgia,"Times New Roman",serif;color:var(--aubergine);font-size:1.45rem;line-height:1.1;margin:1rem 0 .45rem}.recipe-card p,.bank-list p{color:var(--muted);font-size:.88rem;margin:0}.meta{color:#8a7a81;font-size:.78rem;margin-top:.75rem}.card-actions{display:flex;align-items:center;gap:.8rem;margin-top:auto;padding-top:1rem}.text-button{background:transparent;color:var(--aubergine);padding:.5rem 0;font-size:.8rem;font-weight:900}.panel-title{border-bottom:1px solid var(--line);padding-bottom:1.5rem;margin-bottom:1.4rem}.panel-title>div>p:last-child{color:var(--muted);max-width:44rem;margin:.65rem 0 0}.planning-banner{background:var(--aubergine);color:white;border-radius:1rem;padding:1rem 1.2rem;margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.planning-banner p{margin:0;color:#ead8e2;font-size:.9rem}.planning-banner strong{color:white}.bank-list{display:grid;gap:.7rem}.bank-list article,.empty-card{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1rem 1.2rem;display:grid;grid-template-columns:1fr auto;align-items:center;gap:1.2rem}.bank-list h3{margin:.35rem 0}.tiny-label{background:#f2e7dc;color:#8c5b49}.bank-controls{display:flex;align-items:center;gap:.9rem}.bank-meta{text-align:center;min-width:3.8rem;color:var(--tomato)}.bank-meta strong,.bank-meta small{display:block}.bank-meta strong{font-size:1.35rem}.bank-meta small{font-size:.75rem}.week-toggle{min-width:6rem;border:1px solid var(--line);background:#fff;padding:.6rem;border-radius:.65rem;font-size:.78rem;font-weight:900;cursor:pointer}.week-toggle.selected{color:var(--green);background:#edf6f1;border-color:#b9d5c8}.empty-card{border:1px dashed #cdbcb0;color:var(--aubergine);cursor:pointer;background:transparent;display:flex;justify-content:center;min-height:5rem;width:100%;font-weight:800}.pantry-list{background:#fff;border:1px solid var(--line);border-radius:1.1rem;overflow:hidden}.pantry-row{display:grid;grid-template-columns:minmax(10rem,1fr) auto;align-items:center;gap:1.2rem;padding:1rem 1.2rem;border-bottom:1px solid #efe6de}.pantry-row:last-child{border-bottom:0}.pantry-row small{display:block;color:var(--muted);font-size:.75rem}.segmented{display:flex;border:1px solid var(--line);border-radius:.65rem;overflow:hidden}.segmented button{border:0;border-right:1px solid var(--line);background:#fff;padding:.55rem .7rem;font-size:.78rem;cursor:pointer;min-width:4rem}.segmented button:last-child{border-right:0}.segmented button.selected{background:var(--aubergine);color:#fff}.segmented button.state-Har{background:var(--green)}.segmented button.state-Lite{background:#d99427}.segmented button.state-Slut{background:var(--tomato)}.save-row{display:flex;justify-content:flex-end;margin-top:1rem}.shopping-card,.history-card{max-width:46rem;background:#fff;border:1px solid var(--line);border-radius:1.15rem;padding:1.4rem}.shopping-head{display:flex;align-items:center;gap:.8rem;padding-bottom:1rem;border-bottom:1px solid var(--line);color:var(--aubergine)}.shopping-icon{background:var(--yellow);padding:.65rem;border-radius:.75rem}.shopping-head strong,.shopping-head small{display:block}.shopping-head small{color:var(--muted);font-size:.78rem}.shopping-card ul,.history-list{list-style:none;padding:0;margin:.8rem 0 1.2rem}.shopping-card li,.history-list li{display:flex;align-items:center;gap:.7rem;min-height:3rem;border-bottom:1px solid #f1e9e2}.shopping-card li b{font-weight:500}.shopping-card li small{color:var(--muted);margin-left:auto}.shopping-card li button{border:0;background:transparent;color:var(--tomato);font-size:.78rem;font-weight:900;cursor:pointer}.history-list li strong{margin-right:auto}.history-list li span{color:var(--muted);font-size:.85rem}.fineprint{text-align:center;color:var(--muted);font-size:.75rem;margin:.6rem 0 0}.toast{position:fixed;top:5.2rem;right:1.5rem;z-index:40;background:var(--green);color:#fff;padding:.75rem 1rem;border-radius:.8rem;box-shadow:0 .75rem 1.8rem rgba(27,60,46,.25);max-width:min(30rem,calc(100vw - 2rem))}.loading{min-height:50vh;display:grid;place-content:center;text-align:center;color:var(--muted)}.loading span{width:2rem;height:2rem;border:.2rem solid var(--line);border-top-color:var(--tomato);border-radius:50%;animation:spin .8s linear infinite;margin:auto}.login-dialog,.recipe-dialog{border:0;border-radius:1.25rem;padding:0;width:min(28rem,calc(100vw - 2rem));box-shadow:0 2rem 5rem rgba(38,12,31,.3)}dialog::backdrop{background:rgba(37,15,31,.72);backdrop-filter:blur(.25rem)}.login-dialog form,.recipe-dialog form{padding:2rem}.login-dialog h1,.recipe-dialog h2{font:700 2rem/1.05 Georgia,serif;color:var(--aubergine);margin:.35rem 0 .7rem}.login-dialog p{color:var(--muted)}.login-mark{width:3.2rem;height:3.2rem;background:var(--tomato);color:white;display:grid;place-items:center;border-radius:1rem;font-size:2rem;margin-bottom:1.3rem}.person-choice{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin:1.25rem 0}.person-choice button{border:1px solid var(--line);background:#fff;padding:.75rem;border-radius:.7rem;font-weight:800;cursor:pointer}.person-choice button.selected{border-color:var(--tomato);background:#fff1eb;color:var(--tomato)}label{display:grid;gap:.35rem;color:var(--aubergine);font-size:.85rem;font-weight:850;margin-bottom:1rem}input,textarea{width:100%;border:1px solid #d9cbbf;border-radius:.65rem;background:#fff;padding:.7rem .8rem;outline:none}input:focus,textarea:focus{border-color:var(--tomato);box-shadow:0 0 0 .2rem rgba(230,76,47,.1)}textarea{min-height:7rem;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.form-error{min-height:1.3rem;color:var(--tomato)!important;font-size:.82rem}.dialog-close{float:right;border:0;background:transparent;font-size:1.7rem;color:var(--muted);cursor:pointer}.mobile-nav{display:none}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:800px){.topbar{height:4rem;padding:0 1rem}.account small{display:none}.layout{display:block;min-height:calc(100vh - 4rem)}.sidebar{display:none}.content{padding:1rem .85rem 6rem}.week-head{min-height:15rem;border-radius:1.1rem}.week-head img{object-position:65% center}.week-head:after{background:linear-gradient(0deg,rgba(42,12,34,.96),rgba(49,15,40,.6) 68%,rgba(49,15,40,.04))}.week-copy{padding:5.5rem 1.3rem 1.25rem}.week-copy h1{font-size:2.25rem}.status-strip{grid-template-columns:1fr;gap:.5rem;margin:.8rem 0 1.5rem}.section-heading,.panel-title{align-items:flex-start}.section-heading h2,.panel-title h1{font-size:1.9rem}.recipe-grid{grid-template-columns:1fr}.recipe-card,.recipe-card:last-child:nth-child(odd){grid-column:auto}.panel-title{flex-direction:column}.planning-banner{align-items:flex-start;flex-direction:column}.bank-list article{grid-template-columns:1fr}.bank-controls{justify-content:space-between}.pantry-row{grid-template-columns:1fr;gap:.65rem}.segmented{width:100%}.segmented button{flex:1;min-width:0;padding:.6rem .25rem}.toast{top:4.6rem;left:1rem;right:1rem}.mobile-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(5,1fr);z-index:25;padding:.5rem .2rem max(.5rem,env(safe-area-inset-bottom));background:rgba(255,253,248,.97);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(.85rem);backdrop-filter:blur(.85rem)}.mobile-nav button{background:transparent;border:0;display:grid;place-items:center;gap:.1rem;color:#8e7e85;font-size:.67rem;cursor:pointer}.mobile-nav button b{font-size:1rem}.mobile-nav button.active{color:var(--tomato);font-weight:900}}

html{-webkit-text-size-adjust:100%}.content{max-width:74rem;width:100%}.dashboard-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(15rem,34%);min-height:11.5rem;margin-bottom:1rem;border-radius:1.35rem;overflow:hidden;background:var(--aubergine);color:#fff;box-shadow:var(--shadow)}.dashboard-copy{padding:1.7rem 2rem;align-self:center}.dashboard-copy h1{font:700 clamp(2rem,4vw,3.25rem)/1 Georgia,"Times New Roman",serif;letter-spacing:-.035em;margin:.25rem 0 .7rem}.dashboard-copy p:last-child{color:#ead8e2;margin:0}.dashboard-intro img{width:100%;height:100%;min-height:11.5rem;object-fit:cover}.guide{background:#fff;border:1px solid var(--line);border-radius:1.2rem;padding:1.25rem;margin-bottom:2.2rem}.guide-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem}.guide-heading h2,.cooking-heading h2{font:700 2rem/1.05 Georgia,"Times New Roman",serif;color:var(--aubergine);margin:.2rem 0 0}.guide-heading>strong{font-size:.82rem;color:var(--muted)}.part-label{display:inline-flex;background:var(--yellow);color:#4a3510;border-radius:99rem;padding:.28rem .58rem;font-size:.72rem;font-weight:900;letter-spacing:.07em;text-transform:uppercase}.guide-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem}.guide-step{-webkit-appearance:none;appearance:none;border:1px solid var(--line);border-radius:.9rem;background:#fff;padding:.9rem;display:grid;grid-template-columns:2.1rem minmax(0,1fr);gap:.65rem;text-align:left;cursor:pointer;min-height:7.7rem;align-content:start}.guide-step:hover{border-color:#c9b7aa}.guide-step.is-done{background:#f0f8f3;border-color:#a8cfba}.guide-step.needs-action{background:#fff5f1;border-color:#efb6a8}.step-number{width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;background:var(--aubergine);color:#fff;font-weight:900}.is-done .step-number{background:var(--green)}.needs-action .step-number{background:var(--tomato)}.step-copy{min-width:0}.step-copy strong,.step-copy small{display:block}.step-copy strong{color:var(--aubergine);line-height:1.25}.step-copy small{color:var(--muted);font-size:.78rem;line-height:1.35;margin-top:.3rem}.step-state{grid-column:2;font-size:.73rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--tomato)}.is-done .step-state{color:var(--green)}.reserve-line{display:flex;align-items:flex-start;gap:.65rem;margin-top:.8rem;padding:.75rem .9rem;border-radius:.75rem;font-size:.84rem}.reserve-line span{width:1.35rem;height:1.35rem;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:900;flex:none}.reserve-line p{margin:0}.reserve-line.is-ready{background:#edf7f1;color:#285c48}.reserve-line.is-ready span{background:var(--green)}.reserve-line.is-warning{background:#fff4e5;color:#7f5212}.reserve-line.is-warning span{background:#d68c20}.cooking-heading{margin-top:0;align-items:center}.cooking-heading p{margin:.35rem 0 0;color:var(--muted)}.cooked-count{background:#fff;border:1px solid var(--line);border-radius:99rem;padding:.45rem .7rem;color:var(--muted);font-size:.78rem;font-weight:800;white-space:nowrap}.ingredients{margin-top:1rem;border-top:1px solid var(--line);padding-top:.75rem}.ingredients summary{cursor:pointer;color:var(--aubergine);font-weight:850;font-size:.82rem}.ingredients ul{list-style:none;padding:0;margin:.6rem 0 0}.ingredients li{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;color:var(--muted);font-size:.8rem}.ingredients li small{white-space:nowrap}.shopping-actions{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}.button-link{text-align:center;text-decoration:none}.order-button{-webkit-appearance:none;appearance:none;width:100%;margin-top:.75rem;border:1px solid var(--tomato);border-radius:.72rem;background:#fff5f1;color:var(--tomato);padding:.75rem;font-weight:900;cursor:pointer}.order-button.is-done{border-color:#a8cfba;background:#edf7f1;color:var(--green)}

.willys-status{display:flex;align-items:center;gap:.75rem;margin:1rem 0 .75rem;padding:.8rem .9rem;border-radius:.8rem;background:#f5efe9;border:1px solid var(--line)}.willys-status>span{width:2rem;height:2rem;display:grid;place-items:center;border-radius:.55rem;background:var(--aubergine);color:#fff;font-weight:950}.willys-status strong,.willys-status small{display:block}.willys-status small{color:var(--muted);font-size:.78rem;margin-top:.1rem}.willys-status.status-ready{background:#edf7f1;border-color:#a8cfba}.willys-status.status-ready>span{background:var(--green)}.willys-status.status-needs_input,.willys-status.status-failed,.willys-status.status-stale{background:#fff5f1;border-color:#efb6a8}.willys-status.status-needs_input>span,.willys-status.status-failed>span,.willys-status.status-stale>span{background:var(--tomato)}
.recommend-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(15rem,20rem);gap:1.25rem;align-items:center;background:var(--aubergine);color:#fff;border-radius:1.1rem;padding:1.2rem 1.3rem;margin-bottom:1rem}.recommend-card h3{font:700 1.55rem/1.1 Georgia,"Times New Roman",serif;margin:.5rem 0 .35rem}.recommend-card p{color:#ead8e2;margin:0;font-size:.86rem}.recommend-actions{display:grid;gap:.65rem}.recommend-actions label{color:#fff;margin:0;font-size:.77rem}.recommend-actions select{width:100%;border:1px solid rgba(255,255,255,.24);border-radius:.65rem;padding:.65rem .7rem;background:#fff;color:var(--ink);font:inherit}.recommend-status{display:block;margin-top:.75rem;color:var(--yellow);font-weight:800}.recommend-status.status-failed{color:#ffb9a9}.family-ratings{margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--line);max-width:24rem}.rating-title,.rating-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.rating-title{margin-bottom:.25rem}.rating-title strong{font-size:.78rem;color:var(--aubergine)}.rating-title small{font-size:.72rem;color:var(--muted)}.rating-row{min-height:1.65rem}.rating-row>span{font-size:.75rem;color:var(--muted)}.stars{display:flex}.star{border:0;background:transparent;color:#d7cbc1;padding:.05rem .08rem;font-size:1.05rem;line-height:1;cursor:pointer}.star.selected{color:#e4a91a}.star:disabled{opacity:1;cursor:default}.rating-help{font-size:.7rem!important;margin:.35rem 0 0!important;color:var(--tomato)!important}.week-readonly{font-size:.75rem;font-weight:850;color:var(--muted);white-space:nowrap}.history-week{padding:.85rem 0;border-bottom:1px solid var(--line)}.history-week:last-child{border-bottom:0}.history-week summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer}.history-week summary span,.history-week li span{color:var(--muted);font-size:.8rem}.history-week ul{list-style:none;padding:.55rem 0 0 1rem;margin:0}.history-week li{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0}.history-week li strong{font-size:.84rem}.history-week p{color:var(--muted);font-size:.82rem}.person-choice{grid-template-columns:repeat(3,1fr)}

@media(max-width:800px){.dashboard-intro{grid-template-columns:minmax(0,1fr) 7.5rem;min-height:9.5rem;border-radius:1rem}.dashboard-copy{padding:1.15rem}.dashboard-copy h1{font-size:2rem}.dashboard-copy p:last-child{font-size:.87rem}.dashboard-intro img{min-height:9.5rem}.guide{padding:.85rem;border-radius:1rem;margin-bottom:1.6rem}.guide-heading{align-items:flex-start}.guide-heading h2,.cooking-heading h2{font-size:1.7rem}.guide-heading>strong{padding-top:.25rem}.guide-steps{grid-template-columns:1fr}.guide-step{min-height:0;grid-template-columns:2.1rem minmax(0,1fr) auto;align-items:center}.step-state{grid-column:3;grid-row:1;align-self:center}.reserve-line{font-size:.8rem}.cooking-heading{align-items:flex-end}.cooking-heading p{font-size:.86rem}.recipe-card{min-height:0}.shopping-actions{grid-template-columns:1fr}.card-actions{flex-wrap:wrap}.recommend-card{grid-template-columns:1fr}.history-week summary,.history-week li{align-items:flex-start;flex-direction:column;gap:.15rem}.person-choice{grid-template-columns:repeat(2,1fr)}}

@media(max-width:430px){.dashboard-intro{grid-template-columns:1fr}.dashboard-intro img{display:none}.guide-heading{display:block}.guide-heading>strong{display:block;margin-top:.45rem}.guide-step{grid-template-columns:2rem minmax(0,1fr)}.step-state{grid-column:2;grid-row:auto}.cooked-count{font-size:.7rem}.brand small{font-size:.72rem}}
