:root{font-family:'Segoe UI',system-ui,sans-serif;color:#364a3b;background:#f6f1e7;font-synthesis:none;--ink:#364a3b;--soft:#657562;--sage:#687f58;--line:#dcdccb;--cream:#fffdf7;--peach:#f0dfce;--rose:#8d5146}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button{cursor:pointer;border:1px solid var(--line);background:var(--cream);color:var(--ink);border-radius:10px;padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:background .15s}button:hover{background:#e9eddf}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--sage);color:#fffdf5;border-color:var(--sage)}button.primary:hover{background:#536b46}button.quiet{border-color:transparent;background:transparent}button.danger{color:#914d40}input,select,textarea{padding:10px 12px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--cream);min-width:0}input[type=checkbox]{width:18px;height:18px;accent-color:var(--sage);flex-shrink:0}input[type=number]{width:100%}textarea{min-height:120px;resize:vertical}a{color:#4e7043}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Georgia,serif;font-weight:400;letter-spacing:-.6px}h1{font-size:34px;line-height:1.15;margin-bottom:8px}h2{font-size:25px;margin-bottom:10px}h3{font-size:16px;font-weight:600;margin-bottom:10px}p{line-height:1.6}small,.muted{font-size:13px;color:var(--soft);line-height:1.5}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;font-weight:600;color:var(--soft);margin-bottom:12px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.grow{flex:1;min-width:150px}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:6px;font-size:13px}.check{display:flex;gap:9px;align-items:center;line-height:1.5;padding:7px 0}.check span{min-width:0}.check:has(input:checked).step{text-decoration:line-through;color:var(--soft)}.panel{background:var(--cream);border:1px solid var(--line);padding:22px;border-radius:18px;margin:18px 0}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:7px;padding:4px 8px;font-size:12px;background:#e9eddf;color:#536448}.badge.peach{background:#f0dfce;color:#72563d}.badge.warn{background:#f5e8cf;color:#7a5d25}.badge.rose{background:#efddd7;color:#8c4b3f}.badge.neutral{background:#eeece3;color:#657562}.hint{padding:13px 16px;border-radius:11px;background:#ecefdf;font-size:13px;line-height:1.6}.hint.warn{background:#f6e8cf;color:#755b2f}.hint.error{background:#f0ded7;color:#88483f}.empty{text-align:center;padding:48px 22px;background:var(--cream);border:1px dashed #cbd2bb;border-radius:18px}.empty img{width:72px;margin-bottom:14px}.empty p{max-width:470px;margin:8px auto 18px}.spacer{height:16px}.app-shell{display:grid;grid-template-columns:214px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:#e5ebd8;border-right:1px solid #d5dcc6;padding:27px 15px;display:flex;flex-direction:column;gap:24px}.wordmark{display:flex;align-items:center;gap:10px;padding:0 8px}.wordmark img{width:43px;height:43px}.wordmark strong{display:block;font:23px/1 Georgia,serif}.wordmark small{font-size:10px;letter-spacing:1.5px;text-transform:uppercase}.sidebar nav{display:flex;flex-direction:column;gap:6px}.sidebar nav button{justify-content:flex-start;text-align:left;border:0;background:transparent;padding:12px}.sidebar nav button.active{background:#fbfcf3;box-shadow:0 2px 5px #4a60300a}.sidebar footer{margin-top:auto;padding:10px;font-size:12px;color:var(--soft)}.nav-icon{width:22px;text-align:center;font-size:17px}.workspace{position:relative;isolation:isolate;min-width:0;padding:32px 36px 45px;overflow:hidden}.produce{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.08;background-image:url('../assets/produce.svg');background-size:530px 530px}.topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:10px}.topline p{margin:0}.week-summary{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;background:#e9eddc}.amount{font-size:27px;font-weight:600;letter-spacing:-.7px}.budget-track{height:6px;background:#dbe0cf;border-radius:6px;overflow:hidden;margin-top:9px;max-width:220px}.budget-fill{height:100%;background:var(--sage);width:var(--progress,0%)}.budget-fill.over{background:#b57559}.plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.meal-card{border:1px solid var(--line);border-radius:17px;background:var(--cream);overflow:hidden;display:flex;flex-direction:column}.meal-photo{width:100%;aspect-ratio:2.1;object-fit:cover;display:block;background:#e8eadc}.photo-fallback{aspect-ratio:2.1;display:flex;align-items:center;justify-content:center;background:#e8eadc;color:var(--soft);font-size:13px}.meal-body{padding:17px;flex:1;display:flex;flex-direction:column}.meal-body .meal-title{border:0;background:transparent;padding:0;justify-content:flex-start;text-align:left;font:22px/1.2 Georgia,serif;margin:9px 0}.meal-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:auto;padding-top:15px}.meal-actions button{font-size:12px;padding:7px 9px}.day-label{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:12px;color:var(--soft)}.recipe-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.recipe-grid .meal-body .meal-title{font-size:20px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid #e6e5d9}.list-row:last-child{border:0}.list-row .check{flex:1;min-width:0}.list-row .check small{display:block}.list-row:has(.shopping-check:checked){opacity:.55}.list-row:has(.shopping-check:checked) strong{text-decoration:line-through}.pantry-row{display:grid;grid-template-columns:minmax(110px,1fr) 100px 90px 145px auto;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #e5e5d8}.pantry-row .field{font-size:11px}.staple-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.staple-item{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--cream);display:grid;grid-template-columns:minmax(0,1fr) 74px 70px;gap:8px;align-items:center}.staple-item input,.staple-item select{padding:6px}.staple-item:has(input[type=checkbox]:checked){background:#e9eddf}.staple-item .check{font-size:13px}.staple-tools{position:sticky;top:0;background:#fffdf7;padding-bottom:12px;z-index:1}.source{font-size:11px;color:var(--soft);margin-top:7px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:18px 0}.stat-grid>div{background:#eef0e3;padding:12px;border-radius:10px}.stat-grid strong{display:block;font-size:23px}.recipe-hero{width:100%;max-height:290px;object-fit:cover;border-radius:13px;margin-bottom:18px}.recipe-details{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:26px;margin-top:22px}.step{align-items:flex-start;padding:13px 0;border-bottom:1px solid #e6e5d9}.step input{margin-top:4px}.source-links{font-size:12px;margin:12px 0;display:flex;gap:12px;flex-wrap:wrap}.pill-options{display:flex;gap:8px;flex-wrap:wrap}.pill-options label{border:1px solid var(--line);border-radius:10px;padding:8px 11px;display:flex;align-items:center;gap:7px;font-size:13px;background:var(--cream)}.pill-options label:has(input:checked){background:#e7ecda;border-color:#b0bf9a}dialog{padding:0;border:1px solid var(--line);border-radius:20px;background:#fffdf7;color:var(--ink);width:min(930px,calc(100vw - 50px));max-height:90vh;box-shadow:0 18px 80px #24321e33}dialog::backdrop{background:#26332170;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:20px 25px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fffdf7;z-index:3}.dialog-head h2{margin:0;font-size:24px}.dialog-content{padding:23px 25px}.dialog-foot{display:flex;justify-content:flex-end;gap:9px;margin-top:22px;flex-wrap:wrap}.dialog-foot.sticky{position:sticky;bottom:0;background:#fffdf7;padding:15px 0;border-top:1px solid var(--line)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#354b31;color:#fffdf7;box-shadow:0 6px 25px #30452630;border-radius:12px;padding:13px 20px;max-width:90vw;z-index:100;display:none;font-size:13px}#toast.visible{display:block}.error-text{color:#8c4b3f;font-size:13px;min-height:18px;margin-top:10px}.store-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.store-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:#fffdf7}.store-card h3{margin-bottom:5px}.price-note{font-size:12px;color:var(--soft);margin:8px 0}.break{overflow-wrap:anywhere}[hidden]{display:none!important}.no-margin{margin:0}.text-button{border:0;background:transparent;padding:0;color:#4e7043;text-decoration:underline}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line)}.table-wrap{overflow:auto}
@media(min-width:1500px){.plan-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.workspace{padding-inline:48px}}@media(max-width:1050px){.app-shell{grid-template-columns:178px minmax(0,1fr)}.workspace{padding:25px 22px}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.store-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pantry-row{grid-template-columns:minmax(100px,1fr) 80px 75px auto}.pantry-row .expiry-field{grid-column:1/4;grid-row:auto}.fields{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:static;padding:15px;gap:12px}.sidebar nav{flex-direction:row;flex-wrap:wrap}.sidebar nav button{padding:8px;font-size:12px}.sidebar footer{display:none}.workspace{padding:20px 16px}.plan-grid,.grid,.recipe-details,.staple-grid{grid-template-columns:1fr}.fields{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(2,1fr)}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}h1{font-size:29px}.meal-photo{aspect-ratio:2.3}.topline{flex-wrap:wrap}dialog{width:calc(100vw - 20px)}.dialog-content{padding:18px}.pantry-row{grid-template-columns:minmax(100px,1fr) 75px 75px auto}.staple-item{grid-template-columns:minmax(0,1fr) 70px 70px}}@media(max-width:420px){.recipe-grid{grid-template-columns:1fr}.store-grid{grid-template-columns:1fr}.pantry-row{grid-template-columns:1fr 70px 70px}.pantry-row .expiry-field{grid-column:1/3}.stat-grid{gap:6px}.dialog-head{padding:14px}.sidebar nav .nav-icon{display:none}}
.budget-meter{appearance:none;display:block;width:220px;max-width:100%;height:6px;border:0;border-radius:6px;overflow:hidden;margin-top:9px;background:#dbe0cf}.budget-meter::-webkit-progress-bar{background:#dbe0cf}.budget-meter::-webkit-progress-value{background:#687f58}
.receipt-review-row{padding:17px 0;border-bottom:1px solid var(--line)}.receipt-review-row small{display:block;color:var(--soft);font-size:12px}.receipt-review-row:has([data-receipt-field="selected"]:not(:checked)){background:#f5f1e8}.coverage-panel{background:#edf0e1}.coverage-panel h3{margin-bottom:6px}
.phone-pairing{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:center;padding:20px 0}.phone-qr{width:250px;max-width:100%;border-radius:12px;background:white}#phone-receipt-url{font-size:12px}#receipt-phone-panel{margin-top:12px}@media(max-width:620px){.phone-pairing{grid-template-columns:1fr}.phone-qr{justify-self:center}}
@media print{.sidebar,.topline button,.meal-actions,.no-print,#toast,.produce{display:none!important}.app-shell{display:block}.workspace{padding:0}.panel{break-inside:avoid;box-shadow:none}.list-row{break-inside:avoid}body{background:white}dialog[open]{position:static;max-height:none;width:100%;overflow:visible;border:0}body:has(dialog[open]) #app{display:none}.dialog-head{position:static}.dialog-head button,.dialog-foot{display:none}}

@media(max-width:760px){button,input,select{min-height:44px}input,select,textarea{font-size:16px}.sidebar nav button{min-height:44px}.workspace{min-width:0}.break{overflow-wrap:anywhere}}
