:root{--bg:#fbfaf7;--surface:#fff;--text:#1f2421;--muted:#5d665f;--accent:#2f6b4f;--border:#e3e1da;--danger:#b3261e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#161a18;--surface:#1e2320;--text:#e9ece9;--muted:#a3ada6;--accent:#7cc4a0;--border:#2e3531;--danger:#f2a7a1}}*,:before,:after{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.shell{max-width:90rem;margin:0 auto;padding:1rem}.shell-header h1{color:var(--accent);margin:0;font-size:1.5rem}.tagline{color:var(--muted);margin:.25rem 0 0}.shell-main{margin-top:1.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:.75rem;flex-direction:column;gap:.75rem;max-width:28rem;padding:1rem;display:flex}.card h2,.card h3,.card p{margin:0}.muted,.field-hint{color:var(--muted);font-size:.875rem}.field{flex-direction:column;gap:.25rem;display:flex}.field label{font-weight:600}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:.5rem;padding:.625rem .75rem}input[aria-invalid=true],.field-hint.invalid,.form-error{border-color:var(--danger);color:var(--danger)}button{font:inherit;color:var(--surface);background:var(--accent);cursor:pointer;border:0;border-radius:.5rem;padding:.625rem 1rem;font-weight:600}button.secondary{color:var(--accent);border:1px solid var(--accent);background:0 0;align-self:flex-start}button:disabled{opacity:.6;cursor:default}a{color:var(--accent)}@media (width>=48rem){.shell{padding:2rem}.shell-header h1{font-size:2rem}}.stack{flex-direction:column;gap:1rem;display:flex}@media (width>=64rem){.card-grid{columns:22rem;column-gap:1rem;display:block}.card-grid>.card{break-inside:avoid;max-width:none;margin-bottom:1rem}}.card h4{margin:.5rem 0 0}.actions{flex-wrap:wrap;gap:.5rem;display:flex}.list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.list li{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding-bottom:.5rem;display:flex}.nav{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.25rem;margin-top:1rem;display:flex}.nav a{color:var(--muted);border-bottom:2px solid #0000;margin-bottom:-1px;padding:.5rem .75rem;font-weight:600;text-decoration:none}.nav a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.nav .family-switcher{flex-basis:100%;margin-bottom:.25rem}.week-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.75rem;display:flex}.week-header h2,.week-header p{margin:0}.week{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.day{background:var(--surface);border:1px solid var(--border);border-radius:.75rem;padding:.75rem}.day.today{border-color:var(--accent)}.day h3{align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:1rem;display:flex}.badge{color:var(--surface);background:var(--accent);border-radius:999px;padding:0 .5rem;font-size:.75rem;font-weight:600}.day-slots{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.75rem;display:grid}.slot{flex-direction:column;gap:.375rem;min-width:0;display:flex}.slot h4{color:var(--muted);margin:0;font-size:.875rem}.slot.retired h4{font-style:italic}.meals{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:flex}.meal{background:var(--bg);border:1px solid var(--border);border-radius:.5rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem .5rem;padding:.375rem .5rem;display:flex}.meal.editing{display:block}.meal-title{overflow-wrap:anywhere}.meal-actions{gap:.25rem;display:flex}button.link-button{color:var(--accent);background:0 0;padding:.25rem .375rem;font-size:.875rem}button.link-button.danger{color:var(--danger)}.recipe-form{gap:.375rem;display:flex}.recipe-form input{flex:1;min-width:0;padding:.375rem .5rem}.recipe-form button{padding:.375rem .75rem}.meal-summary{flex-direction:column;min-width:0;display:flex}.meal-run{font-size:.8125rem}.meal.run{background:color-mix(in srgb, var(--accent) 12%, var(--surface));border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.meal.continues-before{border-top-style:dashed;border-top-left-radius:0;border-top-right-radius:0}.meal.continues-after{border-bottom-style:dashed;border-bottom-right-radius:0;border-bottom-left-radius:0}.meal.highlighted{outline:2px solid var(--accent);outline-offset:1px}.meal.ended:not(.editing) .meal-title{color:var(--muted)}.view-toggle button{padding:.375rem .75rem}@media (width>=64rem){.week-header{justify-content:flex-start;gap:.75rem 1.5rem}.view-toggle{margin-left:auto}}.calendar-scroll{overflow-x:auto}.calendar{table-layout:fixed;border-collapse:separate;border-spacing:.375rem;width:100%;min-width:56rem;margin:-.375rem}.calendar thead td,.calendar th[scope=row]{width:7rem}.calendar th{text-align:left;vertical-align:top;padding:.25rem .5rem;font-size:.9375rem}.calendar thead td{background:0 0;border:0;padding:0}.calendar thead th.today{color:var(--accent)}.calendar thead th .badge{margin-left:.375rem}.calendar th[scope=row]{color:var(--muted);overflow-wrap:anywhere}.calendar tr.retired th[scope=row]{font-style:italic}.calendar td{vertical-align:top;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;padding:.375rem}.calendar td.today{border-color:var(--accent)}.calendar td.unused{background:0 0;border-style:dashed}.calendar .meals{margin-bottom:.25rem}.calendar .meal{padding:0;display:block}.calendar .meal-open{text-align:left;width:100%;color:var(--text);border-radius:inherit;background:0 0;padding:.375rem .5rem;font-weight:400;display:block}.calendar .meal.continues-before,.calendar .meal.continues-after{border-top-style:solid;border-bottom-style:solid;border-radius:.5rem}.calendar .meal.continues-before{border-left-style:dashed;border-top-left-radius:0;border-bottom-left-radius:0}.calendar .meal.continues-after{border-right-style:dashed;border-top-right-radius:0;border-bottom-right-radius:0}.calendar button.add-meal{text-align:left;width:100%;color:var(--muted);font-weight:400}.calendar button.add-meal:hover,.calendar button.add-meal:focus-visible{color:var(--accent)}.plan-dialog{width:min(32rem,100vw - 2rem);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:.75rem;padding:0}.plan-dialog::backdrop{background:#0006}.plan-dialog-body{flex-direction:column;gap:.75rem;padding:1rem;display:flex}.plan-dialog-header{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.plan-dialog-header h3{color:var(--accent);margin:0;font-size:1rem}.plan-dialog p{margin:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.run-form{flex-direction:column;gap:.5rem;display:flex}.run-form p{margin:0}.position-picker{border:1px solid var(--border);border-radius:.5rem;grid-template-columns:auto 1fr;align-items:center;gap:.375rem .5rem;margin:0;padding:.5rem;display:grid}.position-picker legend{padding:0 .25rem;font-weight:600}.position-picker label{color:var(--muted);font-size:.875rem}.position-picker input,.position-picker select{min-width:0;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:.5rem;padding:.375rem .5rem}.run-form .actions button{padding:.375rem .75rem}.card.shopping{max-width:36rem}.add-item{gap:.5rem;display:flex}.add-item input{flex:1;min-width:0}.items{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.item{border-bottom:1px solid var(--border);align-items:center;gap:.5rem;display:flex}.item .tick{text-align:left;min-height:3rem;color:var(--text);background:0 0;border-radius:0;flex:1;align-items:center;gap:.75rem;padding:.5rem 0;font-weight:400;display:flex}.tick-box{border:2px solid var(--accent);border-radius:.375rem;flex:none;width:1.5rem;height:1.5rem}.item.is-bought .tick-box{background:var(--accent);box-shadow:inset 0 0 0 3px var(--surface)}.item.is-bought .item-text{color:var(--muted);text-decoration:line-through}.item-text{overflow-wrap:anywhere}.item .edit{flex:none;align-self:center;padding:.375rem .625rem;font-size:.875rem}.item.editing form{flex-direction:column;flex:1;gap:.5rem;padding:.5rem 0;display:flex}button.secondary.danger{color:var(--danger);border-color:var(--danger)}.meal-group,.shopping .ungrouped{border-bottom:1px solid var(--border);flex-direction:column;gap:.5rem;padding:.75rem 0;display:flex}.meal-group h3,.shopping .ungrouped h3{overflow-wrap:anywhere;margin:0;font-size:1.0625rem}.card p.meal-group-run{margin:-.375rem 0 0;font-size:.875rem}.meal-group-description summary{color:var(--muted);cursor:pointer;padding:.25rem 0;font-size:.875rem}.meal-group-description p.recipe-description{max-height:12rem;margin:.25rem 0 0;overflow-y:auto}@media (width>=64rem){.card.shopping{max-width:none}.shopping-groups{flex-direction:column;gap:1rem;display:flex}.meal-groups{columns:20rem;column-gap:1rem}.meal-groups .meal-group{border:1px solid var(--border);break-inside:avoid;border-radius:.75rem;margin-bottom:1rem;padding:.75rem}.shopping-groups .ungrouped{order:-1}.shopping .ungrouped .add-item{max-width:36rem}.shopping .ungrouped .items,.shopping .bought .items{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));column-gap:2rem;display:grid}}.bought summary{cursor:pointer;min-height:3rem;padding:.75rem 0;font-weight:600}select{font:inherit;max-width:100%;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:.5rem;padding:.625rem .75rem}select[aria-invalid=true]{border-color:var(--danger)}.card.recipes{max-width:40rem}.recipe-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.recipe-entry{border-bottom:1px solid var(--border);flex-direction:column;gap:.375rem;padding:.75rem 0;display:flex}.recipe-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem .5rem;display:flex}.card .recipe-heading h3{overflow-wrap:anywhere;font-size:1rem}.recipe-actions{gap:.25rem;display:flex}.card p.recipe-description{white-space:pre-wrap;overflow-wrap:anywhere}.recipe-edit{flex-direction:column;gap:.75rem;display:flex}.recipe-edit textarea{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);resize:vertical;border-radius:.5rem;padding:.625rem .75rem}@media (width>=64rem){.card.recipes{max-width:none}.recipe-list{columns:20rem;column-gap:2rem;display:block}.recipe-entry{break-inside:avoid}.card.recipes>.recipe-edit{max-width:40rem}}.archived-recipes summary{cursor:pointer;min-height:3rem;padding:.75rem 0;font-weight:600}.operator-title{margin:0}@media (width>=64rem){.operator-page .card{max-width:none}.operator-page .card>.field,.operator-page .card>form{max-width:28rem}.operator-page .card>button{align-self:flex-start}}.subnav{flex-wrap:wrap;gap:.5rem;display:flex}.subnav a{color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:.5rem .75rem;font-weight:600;text-decoration:none}.subnav a[aria-current=page]{color:var(--surface);background:var(--accent);border-color:var(--accent)}.entry{overflow-wrap:anywhere;flex-direction:column;gap:.125rem;min-width:0;display:flex}.entry .badge{align-self:flex-start}.list li>.operator-form{flex-basis:100%}.badge.status-used,.badge.status-expired,.badge.status-revoked{color:var(--text);background:var(--border)}input.code{letter-spacing:.05em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.125rem}
