:root{--green:#2f6f4f;--green-dark:#24573e;--green-soft:#e3efe7;--bg:#faf8f3;--card:#fff;--text:#22262a;--muted:#6b7178;--border:#e3dfd6;--danger:#b3261e;--radius:12px;--nav-height:60px;color:var(--text);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{min-height:100dvh;margin:0}h1{margin:0;font-size:1.5rem}h2{margin:0;font-size:1.1rem}h3{margin:0;font-size:1rem}a{color:var(--green)}input,textarea,select{font:inherit;border:1px solid var(--border);width:100%;color:inherit;background:#fff;border-radius:8px;padding:10px 12px}input:focus,textarea:focus{outline:2px solid var(--green);outline-offset:-1px}input[type=checkbox]{width:auto;accent-color:var(--green)}input[type=color]{flex:none;width:40px;height:40px;padding:2px}textarea{resize:vertical}label{gap:6px;font-weight:500;display:grid}label.check{align-items:center;gap:8px;font-weight:400;display:flex}.field-label{margin-bottom:6px;font-weight:500}button,.button{font:inherit;border:1px solid var(--border);min-height:44px;color:var(--text);cursor:pointer;white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:10px 16px;text-decoration:none;display:inline-flex}button:disabled{opacity:.5;cursor:default}button.primary,.button.primary{background:var(--green);border-color:var(--green);color:#fff}button.primary:hover:not(:disabled){background:var(--green-dark)}button.danger{color:var(--danger);border-color:currentColor}button.small,.button.small{min-height:36px;padding:6px 12px;font-size:.9rem}button.icon{background:0 0;border-color:#0000;min-width:36px;min-height:36px;padding:4px;font-size:1.1rem}button.link{color:var(--green);background:0 0;border:none;min-height:0;padding:0;text-decoration:underline}button.on{background:var(--green-soft);border-color:var(--green)}.error{color:var(--danger);margin:0}.muted{color:var(--muted)}.splash{text-align:center;min-height:100dvh;color:var(--muted);place-items:center;padding:24px;display:grid}.main{max-width:1200px;padding:16px 16px calc(var(--nav-height) + 24px + env(safe-area-inset-bottom));margin:0 auto}.nav{z-index:10;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:1px solid var(--border);background:#fff;display:flex;position:fixed;inset:auto 0 0}.nav a{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:.8rem;text-decoration:none;display:flex}.nav a span{font-size:1.3rem}.nav a.active{color:var(--green);font-weight:600}@media (width>=800px){.nav{top:0;border-top:none;border-bottom:1px solid var(--border);justify-content:flex-start;gap:8px;height:56px;padding:0 max(16px,50% - 600px);position:sticky;inset:0 0 auto}.nav a{flex-direction:row;flex:none;gap:8px;padding:0 16px;font-size:1rem}.nav a span{font-size:1.1rem}.main{padding-bottom:32px}}.stack{gap:16px;display:grid}.stack>p{margin:0}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.page-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.back{font-weight:500;text-decoration:none}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spacer{flex:1}.empty{text-align:center;justify-items:center;gap:12px;padding:32px 16px;display:grid}.empty p{margin:0}.update-banner{z-index:20;left:12px;right:12px;bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + 12px);border-radius:var(--radius);background:var(--text);color:#fff;justify-content:space-between;align-items:center;gap:12px;max-width:480px;margin:0 auto;padding:10px 12px 10px 16px;display:flex;position:fixed;box-shadow:0 4px 16px #0003}@media (width>=800px){.update-banner{bottom:16px}}.login{place-items:center;min-height:100dvh;padding:16px;display:grid}.login-card{text-align:center;justify-items:center;gap:16px;width:min(360px,100%);display:grid}.login-card label,.login-card button{text-align:left;width:100%}.login-card button{justify-content:center}.chips{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.chip{--chip:var(--green);border-radius:999px;min-height:36px;padding:6px 14px;font-size:.9rem}.chip.on{background:var(--chip);border-color:var(--chip);color:#fff}.chip-add{gap:4px;display:inline-flex}.chip-add input{border-radius:999px;width:140px;padding:6px 10px}.tag-line{flex-wrap:wrap;gap:6px;display:flex}.pill{--member:var(--muted);background:#f0ede6;border-radius:999px;padding:2px 10px;font-size:.8rem}.pill.meal{background:var(--green-soft);color:var(--green-dark)}.pill.member{background:color-mix(in srgb, var(--member) 15%, white);color:var(--member)}.member-tabs{scrollbar-width:none;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.member-tabs button{--member:var(--green);border-radius:999px;flex:none;min-height:40px}.member-tabs button.on{background:var(--member);border-color:var(--member);color:#fff}.member-tabs .dot{background:var(--member);border-radius:50%;width:10px;height:10px}.member-tabs button.on .dot{background:#fff}.week-bar{justify-content:space-between;align-items:center;margin:12px 0;display:flex}.week-bar button.icon{font-size:1.8rem}.week-label{justify-items:center;gap:2px;display:grid}.days{gap:12px;display:grid}@media (width>=800px){.days{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}.day{gap:4px;padding:12px;display:grid}.day.today{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}.day h3{margin-bottom:4px}.meal-row{border-top:1px solid #f0ede6;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name add""items items";align-items:center;gap:4px 8px;padding:6px 0;display:grid}.meal-row .meal-items{grid-area:items}.meal-row button.add{grid-area:add}.meal-name{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);grid-area:name;font-size:.8rem;font-weight:600}.meal-items{gap:4px;margin:0;padding:0;list-style:none;display:grid}.meal-items:empty{display:none}.entry{text-align:left;white-space:normal;background:#fbfaf7;justify-content:space-between;width:100%;min-height:36px;padding:6px 10px}.entry-label{overflow-wrap:break-word;flex:1;min-width:0}.entry-label.recipe{font-weight:500}.entry-members{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:2px 6px;max-width:55%;font-size:.9rem;display:inline-flex}.entry-member{align-items:center;gap:1px;display:inline-flex}.entry-member:empty{display:none}.member-dot{--member:var(--green);background:var(--member);color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;font-size:.7rem;font-weight:600;display:inline-grid}button.add{min-width:44px;min-height:32px;color:var(--green);border-style:dashed;padding:0;font-size:1.2rem}.dialog{border-radius:var(--radius);background:var(--bg);width:min(560px,100vw - 16px);max-height:calc(100dvh - 32px);color:inherit;border:none;padding:0}.dialog::backdrop{background:#0006}.dialog-body{padding:16px}.dialog-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.segmented{border:1px solid var(--border);border-radius:8px;grid-auto-columns:1fr;grid-auto-flow:column;display:grid;overflow:hidden}.segmented button{border:none;border-radius:0}.segmented button.on{background:var(--green);color:#fff}.repeat{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.repeat button.stepper{border-color:var(--border);background:#fff;min-width:44px;min-height:44px}.repeat-count{text-align:center;min-width:4.5em;font-weight:600}.reviews{gap:8px;display:grid}.review{--member:var(--green);border:1px solid var(--border);border-left:4px solid var(--member);background:var(--card);border-radius:8px;gap:6px;padding:10px 12px;display:grid}.review-head{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.review-head .muted{font-size:.85rem}.review-options{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.review-option{background:#fff;min-height:44px;padding:0;font-size:1.4rem}.review-option.on{background:var(--green-soft);border-color:var(--green);outline:2px solid var(--green);outline-offset:-2px}.recipe-picker{gap:8px}.selected-recipe{margin:0}.filters{flex-wrap:wrap;gap:4px 16px;font-size:.9rem;display:flex}.picker-list{gap:4px;max-height:40dvh;margin:0;padding:0;list-style:none;display:grid;overflow-y:auto}.picker-item{text-align:left;white-space:normal;justify-content:flex-start;width:100%;padding:6px}.picker-item.on{background:var(--green-soft);border-color:var(--green);font-weight:600}.picker-item img,.thumb-placeholder{object-fit:cover;background:#f0ede6;border-radius:6px;flex:none;width:40px;height:40px}.search-row{gap:8px;display:flex}.recipe-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.recipe-card{color:inherit;height:100%;padding:0;text-decoration:none;display:block;overflow:hidden}.recipe-card img,.photo-placeholder{aspect-ratio:16/10;object-fit:cover;background:#f0ede6;place-items:center;width:100%;font-size:2.5rem;display:grid}.recipe-card-body{gap:8px;padding:12px;display:grid}.recipe{max-width:760px;margin:0 auto}.recipe-photo{aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius);width:100%}.description{white-space:pre-wrap;margin:0}.recipe section h2{margin-bottom:8px}.ingredients,.utensils{gap:6px;margin:0;padding-left:20px;display:grid}.ingredients .qty{font-weight:600}.steps{white-space:pre-wrap;gap:12px;margin:0;padding-left:24px;display:grid}.recipe-form{max-width:760px;margin:0 auto}.photo-field{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.photo-field img{aspect-ratio:16/10;object-fit:cover;border-radius:8px;width:128px}.crop-area{touch-action:none;background:#222;border-radius:8px;height:min(60dvh,420px);position:relative;overflow:hidden}.zoom{align-items:center;gap:12px;font-weight:400;display:flex}.zoom input{accent-color:var(--green);background:0 0;border:none;flex:1;padding:0}.hint{margin:0;font-size:.9rem}.photo-field label.button{font-weight:400;display:inline-flex}.ingredient-rows{gap:12px;display:grid}.ingredient-row{grid-template-columns:70px 80px 1fr;align-items:center;gap:6px;display:grid}.ingredient-row .note{grid-column:1/3}.ingredient-row .row-buttons{justify-self:end}.ingredient-subs{border-left:3px solid var(--green-soft);grid-column:1/-1;padding-left:12px}.ingredient-subs .field-label{font-size:.9rem}@media (width>=640px){.ingredient-row{grid-template-columns:70px 90px 2fr 1.5fr auto}.ingredient-row .note{grid-column:auto}}.row-buttons{flex:none;display:inline-flex}.prompt-rows{gap:8px;display:grid}.prompt-row{align-items:center;gap:6px;display:flex}.prompt-row input{flex:1;min-width:0}.choice-field .chips+.suggestions{margin-top:8px}.chip-add input:disabled{opacity:.5}.suggestions .chip{border-style:dashed;min-height:30px;padding:4px 12px}.step-rows{gap:8px;margin:0;padding-left:24px;display:grid}.step-row>*{vertical-align:top}.step-row{display:list-item}.step-row textarea{width:calc(100% - 112px)}.sticky-actions{bottom:calc(var(--nav-height) + env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--bg) 30%);padding:12px 0;position:sticky}@media (width>=800px){.sticky-actions{bottom:0}}.section-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.recipe .section-header{margin-bottom:8px}.recipe .section-header h2{margin:0}.shopping{max-width:640px;margin:0 auto}.shop-list,.shop-pick{margin:0;padding:4px 12px;list-style:none}.shop-pick{max-height:50dvh;padding:0;overflow-y:auto}.shop-list li,.shop-pick li{border-bottom:1px solid #f0ede6;align-items:center;gap:8px;min-height:48px;display:flex}.shop-list li:last-child,.shop-pick li:last-child{border-bottom:none}.shop-list label.check,.shop-pick label.check{cursor:pointer;flex:1;align-items:flex-start;min-width:0;padding:8px 0}.shop-list input[type=checkbox],.shop-pick input[type=checkbox]{flex:none;width:22px;height:22px;margin:0}.item-name{font-size:1.05rem;display:block}.item-recipes{color:var(--muted);font-size:.8rem;display:block}.shop-list li.bought .item-name{color:var(--muted);text-decoration:line-through}.bought h2{color:var(--muted);font-size:1rem}.pill.on-list{background:var(--green-soft);color:var(--green-dark);margin-left:6px}.chip.staple-toggle{flex:none;min-height:32px;padding:4px 10px;font-size:.8rem}.chip.staple-chip{border:1px solid var(--border);cursor:default;background:#fff;align-items:center;gap:2px;padding-right:2px;display:inline-flex}.chip.staple-chip button.icon{min-width:28px;min-height:28px;font-size:.8rem}.settings{max-width:640px;margin:0 auto}.settings-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.settings-list:empty{display:none}.settings-list li{align-items:center;gap:8px;display:flex}.inline-form{gap:8px;display:flex}.suggest{max-width:760px;margin:0 auto}.suggestions-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.suggestion{gap:6px;display:grid}.suggestion-head{align-items:center;gap:10px;display:flex}.suggestion-head img{object-fit:cover;border-radius:8px;flex:none;width:48px;height:48px}.suggestion-head .thumb-placeholder{width:48px;height:48px}.suggestion-title{min-width:0;color:inherit;flex:1;font-size:1.05rem;font-weight:600;text-decoration:none}.pill.ready{background:var(--green-soft);color:var(--green-dark);white-space:nowrap}.pill.missing-count{background:color-mix(in srgb, var(--danger) 12%, white);color:var(--danger);white-space:nowrap}.suggestion-detail{margin:0;font-size:.95rem}.suggestion .actions{justify-content:flex-end;margin-top:4px}.notice{background:var(--green-soft);color:var(--green-dark);border-radius:8px;margin:0;padding:10px 12px}
