:root{font-family:Segoe UI,system-ui,sans-serif;color:#24352b;background:#f5f7f2;font-synthesis:none;--green:#276347;--line:#dce4da}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer;border:1px solid var(--line);border-radius:9px;padding:.55rem .8rem;background:#fff;color:inherit;min-height:40px}button:hover{background:#edf3e9;border-color:#98b49d}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #d1a041;outline-offset:2px}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#1c4d35}.plain,.text-button{border:0;background:transparent;text-align:left;padding:.3rem 0}.text-button{color:var(--green)}.plain:hover,.text-button:hover{background:transparent;text-decoration:underline}.grow{flex:1;min-width:0}input,select,textarea{border:1px solid #cbd6c9;border-radius:8px;padding:.6rem .7rem;background:#fff;min-width:0;width:100%;color:inherit}textarea{resize:vertical}input[type=checkbox]{width:19px;height:19px;accent-color:var(--green);flex:none}input[type=date]{width:auto}label{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;margin-bottom:1rem}.check{display:flex;flex-direction:row;align-items:center;gap:.5rem;margin:0}a{color:var(--green)}h1{font-size:clamp(1.6rem,3vw,2.2rem);font-weight:650;letter-spacing:-.04em;margin:0}h2{font-size:1.2rem;margin:.25rem 0 1rem}h3{font-size:1rem;margin:0}p{line-height:1.6}.app-header{background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:2rem;padding:1rem 3vw;position:sticky;top:0;z-index:3}.brand{text-decoration:none;font-size:1.6rem;font-weight:750;letter-spacing:-.05em}.brand span{display:block;font-size:.65rem;font-weight:500;letter-spacing:.13em;color:#758374}.app-header nav{display:flex;gap:.4rem;flex:1;flex-wrap:wrap}.app-header nav button{border:0;background:transparent}.app-header nav button.active{background:#e8f0e4;color:var(--green);font-weight:650}.save-status{font-size:.75rem;color:#64765e;white-space:nowrap}main{max-width:1600px;margin:auto;padding:2rem 3vw 5rem}.eyebrow{font-size:.65rem;font-weight:700;letter-spacing:.17em;color:#6f846b;margin:0 0 .5rem}.page-heading,.section-heading{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.4rem}.toolbar,.inline,.row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.toolbar input:not([type=checkbox]){width:230px}.toolbar .check{white-space:nowrap}.app-body{border:0;padding:0;margin:0;min-width:0}.muted,small{color:#6e7d6b;font-size:.82rem}.block{display:block}.week-summary{background:#eaf0e3;padding:1.25rem;border:1px solid #d5dfce;border-radius:15px;margin:1.5rem 0}.progress-cards{display:flex;flex-wrap:wrap;gap:.65rem;margin:.8rem 0}.progress-card{width:175px;min-height:84px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.75rem}.progress-card span{font-size:.75rem;display:block;color:#6e7d6b}.progress-card strong{font-size:.9rem;font-weight:650;display:block;margin:.35rem 0 .55rem}.track{height:5px;background:#e9ede6;border-radius:6px;overflow:hidden;position:relative}.fill,.excess{position:absolute;inset:0 auto 0 0;background:#65955c}.excess{background:#ca4d45}.incomplete{border-color:#dba94b;background:#fff8e9}.incomplete details{font-size:.72rem;margin-top:.5rem}.planner-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:2rem}.days{display:flex;flex-direction:column;gap:.4rem;align-self:start;position:sticky;top:108px}.days button{text-align:left;border:0;background:transparent;padding:.8rem}.days small{display:block;margin-top:.25rem}.days .selected{background:var(--green);color:white}.days .selected small{color:#d8e6d1}.day-content{min-width:0}.day-content>.check{margin-bottom:1rem}.meal-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1.5rem}.meal-block{background:#fff;border:1px solid var(--line);border-radius:12px;min-height:120px;padding:1rem;min-width:0}.meal-block.main-meal{background:#f0f5eb}.meal-block header{display:flex;align-items:center;justify-content:space-between;gap:.4rem;margin-bottom:1rem}.meal-block header button{font-size:.78rem}.meal-entry{border-top:1px solid var(--line);padding:.8rem 0 .4rem}.entry-info{display:flex;flex-direction:column;gap:.35rem;overflow-wrap:anywhere}.entry-info strong{font-size:.9rem;font-weight:600}.entry-info span{font-size:.8rem}.meal-entry .row-actions{margin-top:.5rem}.row-actions button{padding:.25rem .5rem;font-size:.75rem;min-height:34px}.product-group,.panel{background:#fff;border:1px solid var(--line);border-radius:12px;margin:1rem 0;padding:1.25rem;min-width:0}.group-heading{margin-bottom:.5rem}.group-heading .plain{font-weight:650}.group-heading small{margin-left:.6rem}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:.86rem}th{font-size:.73rem;color:#708069;font-weight:500;background:#f5f7f2;white-space:nowrap}th,td{padding:.75rem .7rem;border-bottom:1px solid #e8ede5}td:first-child{min-width:190px}td a{display:block;white-space:nowrap}td input[type=checkbox]{width:19px}.recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.recipe-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:1.4rem}.recipe-card p{font-size:.84rem}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.fields.six{grid-template-columns:repeat(6,minmax(0,1fr))}.group-row{display:flex;align-items:center;gap:.5rem;padding:.7rem 0;border-top:1px solid var(--line)}.group-row small{display:block}.error,.warning{padding:.9rem 1rem;border-radius:9px;font-size:.86rem}.error{color:#8b2820;background:#fbeae5;white-space:pre-line}.warning{background:#fff4d8;color:#835d13}.banner{display:flex;justify-content:space-between;margin-bottom:1rem}.modal-backdrop{position:fixed;inset:0;background:#102b2060;display:flex;align-items:center;justify-content:center;padding:2vh 2vw;z-index:10;overflow:auto;backdrop-filter:blur(3px)}.modal{background:#fbfcf8;box-shadow:0 24px 100px #132a2930;border-radius:17px;padding:1.6rem;width:960px;max-width:100%;max-height:96vh;overflow:auto}.modal.wide{width:1100px}.modal.small{width:510px}.modal header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.modal header h2{margin:0}.modal fieldset{border:0;margin:0;padding:0;min-width:0}.modal footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.6rem;margin-top:1.5rem}.editor-columns{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:.8rem 0}.editor-columns h3{margin-bottom:.8rem}.inline{margin-bottom:.6rem}.inline>input,.inline>select{flex:1;width:100px}.instructions{height:390px;min-height:200px}.ingredient-list{max-height:360px;overflow:auto;min-height:80px;padding-bottom:20px}.ingredient{display:flex;gap:.3rem;border-bottom:1px solid var(--line);align-items:center;padding:.4rem 0}.ingredient .plain{font-size:.82rem;overflow-wrap:anywhere}.ingredient>button:not(.plain){padding:.3rem}.connect{max-width:540px;margin:8vh auto;background:#fff;border:1px solid var(--line);border-radius:18px;padding:2.5rem}.connect h1{margin-bottom:1rem}.file-input{display:inline-flex;margin:0;padding:.6rem;border:1px solid var(--line);border-radius:9px;cursor:pointer}.file-input input{max-width:240px;padding:.2rem;font-size:.8rem}.loading{padding:15vh 10vw}#blazor-error-ui{display:none;position:fixed;bottom:0;width:100%;background:#fff2ca;padding:1rem;z-index:100}
@media(max-width:1100px){.meal-grid{grid-template-columns:1fr}.fields.six{grid-template-columns:repeat(3,minmax(0,1fr))}.app-header{gap:1rem}.save-status{display:none}.planner-layout{gap:1rem;grid-template-columns:160px minmax(0,1fr)}}
@media(max-width:680px){main{padding:1.2rem .8rem 3rem}.app-header{padding:.7rem .8rem;gap:.5rem;flex-wrap:wrap;position:static}.brand{font-size:1.3rem}.brand span{display:none}.app-header nav{width:100%;flex:auto;flex-wrap:nowrap;overflow:auto;gap:0}.app-header nav button{font-size:.8rem;padding:.5rem .6rem;white-space:nowrap}.page-heading{align-items:flex-start;flex-direction:column}.toolbar{width:100%;gap:.4rem}.toolbar input:not([type=checkbox]){flex:1;min-width:100px;width:160px}.planner-layout{grid-template-columns:1fr}.days{position:static;display:flex;flex-direction:row;overflow:auto;gap:.4rem;padding-bottom:.6rem}.days button{min-width:115px;padding:.7rem;font-size:.82rem}.progress-card{width:calc(50% - .33rem);min-height:85px}.week-summary{padding:.9rem}.meal-block{padding:.8rem}.fields.six{grid-template-columns:repeat(2,minmax(0,1fr))}.editor-columns{grid-template-columns:1fr}.modal-backdrop{padding:0;align-items:stretch}.modal{border-radius:0;max-height:100dvh;padding:1rem;width:100%}.modal.small{width:100%}.instructions{height:220px}.group-row{flex-wrap:wrap}.group-row .grow{flex-basis:100%}.panel,.product-group{padding:.85rem}.recipe-grid{grid-template-columns:1fr}.connect{padding:1.4rem;margin:4vh 0}.section-heading{align-items:flex-start}th,td{padding:.6rem}.group-heading .text-button{font-size:.72rem}}
@media(max-width:680px){.progress-cards{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;scroll-snap-type:x proximity}.progress-card{width:166px;flex:0 0 166px;scroll-snap-align:start}.week-summary{overflow:hidden}.day-content>.progress-cards{max-width:100%}}

body:has(.modal-backdrop){overflow:hidden}
.remember-device{margin-top:.25rem}.sign-out{font-size:.8rem;white-space:nowrap}@media(max-width:680px){.sign-out{margin-left:auto}.app-header nav{order:3}}
/* Recipe ingredients: product names and actual recipe weights have their own columns. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.modal.recipe-editor{width:1200px}
.recipe-columns{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.recipe-columns>section{min-width:0}
.ingredient-table-wrap{border:1px solid var(--line);border-radius:9px;background:#fff}
.ingredient-table{table-layout:fixed;font-size:.86rem}
.ingredient-table .ingredient-weight-column{width:5.75rem}
.ingredient-table .ingredient-actions-column{width:7.25rem}
.ingredient-table th{position:sticky;top:0;z-index:1;padding:.65rem .7rem;font-weight:600}
.ingredient-table td{padding:.65rem .7rem;vertical-align:middle}
.ingredient-table td:first-child{min-width:0}
.ingredient-table .ingredient-weight{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-weight:600}
.ingredient-row{cursor:pointer}
.ingredient-row:hover{background:#f4f8ef}
.ingredient-row.is-editing{background:#e8f0e4;box-shadow:inset 3px 0 var(--green)}
.ingredient-product{display:flex;align-items:flex-start;gap:.5rem;min-height:0;width:100%;border:0;border-radius:3px;background:transparent;padding:0;text-align:left;font-size:inherit;line-height:1.45}
.ingredient-product:hover{background:transparent;border:0}
.ingredient-product>span:last-child{min-width:0}
.ingredient-grip{color:#8a9a82;flex:none}
.ingredient-name{overflow-wrap:anywhere}
.ingredient-portion{display:block;margin-top:.2rem;font-size:.73rem;font-weight:400}
.ingredient-actions>div{display:flex;justify-content:flex-end;gap:.25rem}
.ingredient-actions button{width:1.9rem;min-height:34px;padding:.25rem;font-size:.85rem}
@media(max-width:680px){
 .recipe-columns{grid-template-columns:minmax(0,1fr)}
 .ingredient-table colgroup{display:none}
 .ingredient-table thead tr,.ingredient-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) 5.25rem}
 .ingredient-table th,.ingredient-table td{display:block;padding:.6rem;border-bottom:0}
 .ingredient-table thead{display:block;position:sticky;top:0;z-index:1;background:#f5f7f2}
 .ingredient-table th{position:static}
 .ingredient-table .ingredient-actions-heading{display:none}
 .ingredient-table .ingredient-actions{grid-column:1/-1;padding-top:0}
 .ingredient-row{border-bottom:1px solid var(--line)}
 .ingredient-actions button{width:40px;min-height:40px}
}
