:root{--surface-page:#f4e9d5;--surface-card:#fbf5e8;--surface-raised:#fff;--surface-sunken:#eedfc4;--text-primary:#3a2a1c;--text-secondary:#8a7560;--text-tertiary:#b5a082;--text-inverse:#fbf5e8;--accent-emphasis:#b8412c;--accent-safe:#5c7349;--accent-emphasis-soft:#b8412c1a;--accent-safe-soft:#5c73491f;--line-soft:#e2d2b5;--line-strong:#c9b796;--line-overlay:#3a2a1c0f;--state-hover:#3a2a1c0a;--state-pressed:#3a2a1c14;--state-focus-ring:#b8412c66;--state-danger:#9c2a1a;--state-warning:#c77f26;--font-display:"DM Serif Display", Georgia, serif;--font-body:"DM Sans", -apple-system, system-ui, sans-serif;--type-display-xl-size:56px;--type-display-xl-line:1.05;--type-display-xl-tracking:-.02em;--type-display-lg-size:40px;--type-display-lg-line:1.05;--type-display-lg-tracking:-.02em;--type-display-md-size:28px;--type-display-md-line:1.1;--type-display-md-tracking:-.01em;--type-display-sm-size:22px;--type-display-sm-line:1.15;--type-display-sm-tracking:-.01em;--type-body-lg-size:17px;--type-body-lg-line:1.5;--type-body-size:15px;--type-body-line:1.5;--type-body-sm-size:14px;--type-body-sm-line:1.5;--type-label-size:13px;--type-label-line:1.4;--type-label-tracking:.01em;--type-eyebrow-size:11px;--type-eyebrow-line:1.4;--type-eyebrow-tracking:.2em;--type-meta-size:11px;--type-meta-line:1.4;--type-quantity-size:13px;--type-quantity-line:1.3;--type-day-label-size:18px;--type-day-label-line:1.2;--space-0:0px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--shadow-sm:0 1px 0 #3a2a1c0a;--shadow-md:0 1px 0 #3a2a1c0a, 0 8px 24px #3a2a1c0f;--shadow-lg:0 4px 12px #3a2a1c14, 0 24px 48px #3a2a1c1a;--motion-duration:.18s;--motion-ease:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--surface-page);color:var(--text-primary);font-family:var(--font-body);font-size:var(--type-body-size);line-height:var(--type-body-line);font-variant-numeric:tabular-nums;margin:0}h1,h2,h3,h4{font-family:var(--font-display);margin:0;font-weight:400}p{margin:0}button,input,select,textarea{color:inherit;font-family:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--state-focus-ring);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.weekPlanner{max-width:960px;padding:var(--space-8);margin:0 auto}.wpStatus{padding:var(--space-8);text-align:center;color:var(--text-secondary);font-size:var(--type-body-size)}.wpError{color:var(--state-danger)}.wpEmptyState{max-width:480px;margin:var(--space-16) auto;text-align:center;background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-8)}.wpEmptyText{color:var(--text-secondary);margin-bottom:var(--space-5)}.wpHeader{margin-bottom:var(--space-8)}.wpHeader .wpPrimaryButton{margin-top:var(--space-4)}.wpEditHouseholdLink{margin-left:var(--space-3)}.wpEyebrow{font-size:var(--type-eyebrow-size);line-height:var(--type-eyebrow-line);letter-spacing:var(--type-eyebrow-tracking);text-transform:uppercase;color:var(--accent-emphasis);margin-bottom:var(--space-1);font-weight:600}.wpHeading{font-size:var(--type-display-lg-size);line-height:var(--type-display-lg-line);letter-spacing:var(--type-display-lg-tracking)}.wpBulkActions{gap:var(--space-2);margin-bottom:var(--space-6);flex-wrap:wrap;display:flex}.wpPrimaryButton{background:var(--accent-emphasis);color:var(--text-inverse);font:600 var(--type-label-size) / 1 var(--font-body);letter-spacing:var(--type-label-tracking);border-radius:var(--radius-md);cursor:pointer;transition:filter var(--motion-duration) var(--motion-ease);border:none;padding:12px 20px}.wpPrimaryButton:hover{filter:brightness(.94)}.wpGhostButton{color:var(--accent-safe);border:1px solid var(--line-soft);font:600 var(--type-label-size) / 1 var(--font-body);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--motion-duration) var(--motion-ease);background:0 0;padding:6px 12px}.wpGhostButton:hover{background:var(--state-hover)}.wpGhostButtonSmall{color:var(--accent-safe);font:600 var(--type-meta-size) / 1 var(--font-body);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:4px 8px}.wpGhostButtonSmall:hover{background:var(--state-hover)}.wpDayGrid{gap:var(--space-6);flex-direction:column;display:flex}.wpDayCard{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-5) var(--space-6)}.wpDayLabel{font-family:var(--font-display);font-style:italic;font-size:var(--type-day-label-size);line-height:var(--type-day-label-line);color:var(--accent-emphasis);margin-bottom:var(--space-2)}.wpSlotRow{border-bottom:1px solid var(--line-soft);grid-template-columns:24px 1fr auto;align-items:center;gap:14px;padding:14px 0;display:grid}.wpSlotRow:last-child{border-bottom:none}.wpSlotRowDisabled{opacity:.55}.wpSlotToggle input{width:18px;height:18px;accent-color:var(--accent-safe)}.wpSlotMain{flex-direction:column;gap:2px;min-width:0;display:flex}.wpSlotMeta{font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--text-secondary)}.wpSlotStatusMuted{font-family:var(--font-display);font-style:italic;font-size:var(--type-day-label-size);color:var(--text-tertiary)}.wpSlotStatusLocked{font-family:var(--font-display);font-style:italic;font-size:var(--type-day-label-size);color:var(--accent-emphasis)}.wpSlotExplanation{font-size:var(--type-meta-size);color:var(--text-secondary)}.wpSlotActions{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.wpRandomizeNote{font-size:var(--type-body-sm-size);color:var(--state-warning);margin-top:var(--space-2)}.wpSlotStatusOut{font-size:var(--type-meta-size);letter-spacing:.05em;color:var(--text-secondary);font-weight:600}.wpMealSelect{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:var(--radius-md);font:500 var(--type-body-size) / 1.4 var(--font-body);color:var(--text-primary);max-width:100%;padding:6px 10px}.wpMealSelect:focus-visible{border-color:var(--accent-emphasis);box-shadow:0 0 0 3px #b8412c1f}.shoppingList{max-width:640px;padding:var(--space-8);margin:0 auto}.slHeading{font-size:var(--type-display-lg-size);line-height:var(--type-display-lg-line);margin:var(--space-4) 0 var(--space-6)}.slSectionCard{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-6)}.slSectionLabel{font-size:var(--type-eyebrow-size);letter-spacing:var(--type-eyebrow-tracking);text-transform:uppercase;color:var(--accent-emphasis);margin-bottom:var(--space-3);font-weight:600}.slRow{align-items:center;gap:var(--space-3);border-bottom:1px solid var(--line-soft);min-height:44px;padding:10px 0;display:flex}.slRow:last-child{border-bottom:none}.slCheckbox{cursor:pointer;background:0 0;border:none;flex:none;justify-content:center;align-items:center;width:18px;min-width:44px;height:18px;min-height:44px;padding:0;display:flex}.slCheckbox:before{content:"";border:1.5px solid var(--text-primary);border-radius:5px;width:18px;height:18px;display:block;position:absolute}.slCheckboxChecked:before{background:var(--accent-safe);border-color:var(--accent-safe)}.slCheckbox{color:var(--text-inverse);z-index:1;font-size:13px;position:relative}.slRowMain{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.slItemName{font-size:var(--type-body-size);color:var(--text-primary);font-weight:500}.slRowChecked .slItemName{color:var(--text-secondary);text-decoration:line-through}.slQuantity{font-family:var(--font-display);font-style:italic;font-size:var(--type-quantity-size);line-height:var(--type-quantity-line);color:var(--text-secondary);font-variant-numeric:tabular-nums}.slNotes{font-size:var(--type-body-sm-size);color:var(--text-secondary)}.slAddRow{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.slQuantityInput{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:var(--radius-md);width:64px;font:400 var(--type-body-size) / 1.4 var(--font-body);padding:8px 10px}.slUnitInput{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:var(--radius-md);width:80px;font:400 var(--type-body-size) / 1.4 var(--font-body);padding:8px 10px}.slTripTotal{font-size:var(--type-body-sm-size);color:var(--text-primary);margin:var(--space-2) 0 var(--space-3);font-weight:600}.feFieldLabel{font-size:var(--type-label-size);letter-spacing:var(--type-label-tracking);color:var(--text-primary);margin-bottom:var(--space-2);font-weight:600;display:block}.feHelperText{font-size:var(--type-body-sm-size);color:var(--text-secondary);margin-top:var(--space-1)}.feInlineEditDisplay{text-align:left;cursor:pointer;color:inherit;font:inherit;border-radius:var(--radius-sm);background:0 0;border:none;align-items:center;min-height:44px;padding:4px 0;display:inline-flex}.feInlineEditDisplay:hover{background:var(--state-hover)}.feExpandableCard{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.feExpandableCardHeader{width:100%;padding:var(--space-4) var(--space-5);cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;min-height:44px;display:flex}.feExpandableCardHeaderLeft{align-items:center;gap:var(--space-2);min-width:0;display:flex}.feExpandableCardDot{border-radius:50%;flex:none;width:10px;height:10px}.feExpandableCardTitleGroup{flex-direction:column;min-width:0;display:flex}.feExpandableCardName{color:var(--text-primary);font-weight:600}.feExpandableCardSummary{font-size:var(--type-body-sm-size);color:var(--text-secondary)}.feExpandableCardChevron{transition:transform var(--motion-duration) var(--motion-ease);color:var(--text-tertiary);flex:none}.feExpandableCardChevronOpen{transform:rotate(180deg)}.feExpandableCardBody{padding:0 var(--space-5) var(--space-5);gap:var(--space-5);flex-direction:column;display:flex}.feChipGroup{gap:var(--space-2);flex-wrap:wrap;display:flex}.feChip{min-height:36px;padding:6px var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--line-soft);color:var(--text-secondary);font:500 var(--type-body-sm-size) / 1 var(--font-body);cursor:pointer;transition:background var(--motion-duration) var(--motion-ease), border-color var(--motion-duration) var(--motion-ease);background:0 0}.feChip:hover{background:var(--state-hover)}.feChipSelected{background:var(--accent-emphasis-soft);border-color:var(--accent-emphasis);color:var(--accent-emphasis);font-weight:600}.feChipDisabled{opacity:.4;cursor:not-allowed}.feChipDisabled:hover{background:0 0}.feRadioGroup{gap:var(--space-3);flex-direction:column;display:flex}.feRadioOption{align-items:flex-start;gap:var(--space-2);cursor:pointer;display:flex}.feRadioInput{accent-color:var(--accent-emphasis);flex:none;width:18px;height:18px;margin-top:3px}.feRadioLabelGroup{flex-direction:column;display:flex}.feRadioLabel{font-size:var(--type-body-size);color:var(--text-primary);font-weight:500}.feSlider{gap:var(--space-2);flex-direction:column;display:flex}.feSliderTrackRow{align-items:center;gap:var(--space-3);display:flex}.feSliderInput{accent-color:var(--accent-emphasis);flex:1;height:44px}.feSliderEndLabel{font-size:var(--type-meta-size);color:var(--text-secondary);white-space:nowrap}.feColorPicker{flex-wrap:wrap;gap:12px;display:flex}.feColorSwatch{border-radius:var(--radius-pill);cursor:pointer;border:2px solid #0000;justify-content:center;align-items:center;width:32px;min-width:44px;height:32px;min-height:44px;padding:0;display:flex}.feColorSwatchInner{border-radius:var(--radius-pill);width:32px;height:32px}.feColorSwatchSelected{border-color:var(--accent-emphasis)}.feSeverityToggle{border-radius:var(--radius-pill);border:1px solid var(--line-soft);display:inline-flex;overflow:hidden}.feSeverityOption{padding:6px var(--space-4);min-height:44px;font:600 var(--type-body-sm-size) / 1 var(--font-body);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;align-items:center;display:flex}.feSeverityStrictSelected{background:var(--accent-emphasis);color:var(--text-inverse)}.feSeverityModerateSelected{background:var(--accent-safe);color:var(--text-inverse)}.feWizardProgress{gap:var(--space-2);flex-direction:column;display:flex}.feWizardProgressLabel{font-size:var(--type-eyebrow-size);letter-spacing:var(--type-eyebrow-tracking);text-transform:uppercase;color:var(--text-secondary);font-weight:600}.feWizardProgressTrack{background:var(--line-soft);border-radius:var(--radius-sm);height:3px;overflow:hidden}.feWizardProgressFill{background:var(--accent-emphasis);height:100%;transition:width var(--motion-duration) var(--motion-ease)}.feTagPicker{gap:var(--space-2);flex-direction:column;display:flex}.feTagPickerChips{gap:var(--space-2);flex-wrap:wrap;display:flex}.feTagChip{background:var(--accent-emphasis-soft);color:var(--text-secondary);font:500 var(--type-meta-size) / 1 var(--font-body);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:3px 9px;display:inline-flex}.feTagChipRemove{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:13px;line-height:1}.feTagPickerInputRow{gap:var(--space-2);display:flex}.feTagPickerInput{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:var(--radius-md);font:400 var(--type-body-size) / 1.4 var(--font-body);color:var(--text-primary);flex:1;padding:8px 10px}.feTagPickerSuggestions{flex-wrap:wrap;gap:6px;display:flex}.feTagSuggestion{border:1px solid var(--line-soft);color:var(--text-secondary);font:500 var(--type-meta-size) / 1 var(--font-body);border-radius:var(--radius-pill);cursor:pointer;background:0 0;padding:3px 9px}.feTagSuggestion:hover{background:var(--state-hover)}.feEditorSection{gap:var(--space-5);flex-direction:column;display:flex}.feSectionHeading{font-family:var(--font-display);font-style:italic;font-size:var(--type-display-sm-size);color:var(--text-primary);margin-bottom:var(--space-1)}.feSectionHeadingQuiet{font-family:var(--font-display);font-style:italic;font-size:var(--type-body-lg-size);color:var(--text-secondary);margin-bottom:var(--space-1)}.feSectionIntro{font-size:var(--type-body-sm-size);color:var(--text-secondary);margin-bottom:var(--space-3)}.feField{flex-direction:column;display:flex}.feTextInput{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:var(--radius-md);font:400 var(--type-body-lg-size) / 1.4 var(--font-body);color:var(--text-primary);padding:10px 14px}.feTextInput:focus-visible{border-color:var(--accent-emphasis);outline:none;box-shadow:0 0 0 3px #b8412c1f}.feSubsectionDivider{border:none;border-top:1px solid var(--line-soft);margin:var(--space-2) 0}.feRestrictionCard{background:var(--surface-sunken);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.feRestrictionCardHeader{justify-content:space-between;align-items:center;display:flex}.feRestrictionCardTitle{color:var(--text-primary);font-weight:600}.feRemoveButton{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;min-width:44px;min-height:44px;font-size:16px}.feRemoveButton:hover{color:var(--state-danger)}.feAddCustomButton{border:1px dashed var(--line-strong);border-radius:var(--radius-md);color:var(--accent-safe);font:600 var(--type-label-size) / 1 var(--font-body);padding:var(--space-3);cursor:pointer;text-align:left;background:0 0}.feAddCustomButton:hover{background:var(--state-hover)}.feCustomFormCard{background:var(--surface-card);border:1px solid var(--line-soft);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);flex-direction:column;display:flex}.feCustomFormActions{justify-content:flex-end;gap:var(--space-2);display:flex}.feOverlapNote{font-size:var(--type-meta-size);color:var(--text-tertiary)}.wizardPage{max-width:560px;padding:var(--space-8) var(--space-6) var(--space-16);margin:0 auto;position:relative}.wizardCancel{top:var(--space-6);right:var(--space-6);position:absolute}.wizardCard{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-8) var(--space-6);gap:var(--space-5);margin-top:var(--space-12);flex-direction:column;display:flex}.wizardWelcome{font-size:var(--type-display-md-size);line-height:var(--type-display-md-line);color:var(--text-primary)}.wizardError{font-size:var(--type-body-sm-size);color:var(--state-danger)}.wizardActions{justify-content:space-between;align-items:center;gap:var(--space-4);margin-top:var(--space-4);background:var(--surface-card);padding-top:var(--space-3);display:flex;position:sticky;bottom:0}.wizardPersonSummary{background:var(--surface-sunken);border-radius:var(--radius-md);padding:var(--space-4)}.wizardOrDivider{text-align:center;color:var(--text-tertiary);font-size:var(--type-body-sm-size)}.wizardCardHeader{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;min-height:44px;padding:0;display:flex}.editPage{max-width:640px;padding:var(--space-8) var(--space-6) var(--space-16);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.editHouseholdName{font-family:var(--font-display);font-size:var(--type-display-md-size);color:var(--text-primary)}.editCardMenu{position:relative}.editCardMenuPopover{background:var(--surface-raised);border:1px solid var(--line-soft);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:10;min-width:120px;position:absolute;top:100%;right:0}.editCardMenuItem{text-align:left;width:100%;padding:var(--space-3) var(--space-4);color:var(--state-danger);font:500 var(--type-body-sm-size) / 1 var(--font-body);cursor:pointer;background:0 0;border:none;min-height:44px;display:block}.editCardMenuItem:hover{background:var(--state-hover)}.mealLibrary,.mealForm{max-width:640px;padding:var(--space-8) var(--space-6) var(--space-16);gap:var(--space-4);flex-direction:column;margin:0 auto;display:flex}.mlFilters{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.mlGfCheckbox{font-size:var(--type-body-sm-size);color:var(--text-secondary);align-items:center;gap:6px;min-height:44px;display:flex}.mlMealList{gap:var(--space-2);flex-direction:column;display:flex}.mlMealRow{background:var(--surface-card);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-3) var(--space-4);text-align:left;cursor:pointer;border:none;flex-direction:column;gap:2px;min-height:44px;display:flex}.mlMealRow:hover{background:var(--state-hover)}.mlMealRowArchived{opacity:.5}.mlMealName{color:var(--text-primary);align-items:center;gap:var(--space-2);font-weight:600;display:flex}.mlGfBadge{background:var(--accent-safe-soft);color:var(--accent-safe);font:600 var(--type-meta-size) / 1 var(--font-body);border-radius:var(--radius-pill);padding:2px 8px}.mlMealMeta{font-size:var(--type-body-sm-size);color:var(--text-secondary)}.mlNumberRow{gap:var(--space-4);display:flex}.mlCheckRow{gap:var(--space-5);display:flex}.mlCheckRow label{font-size:var(--type-body-sm-size);color:var(--text-secondary);align-items:center;gap:6px;min-height:44px;display:flex}.mlIngredientRow{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.mlOptionalLabel{font-size:var(--type-meta-size);color:var(--text-secondary);align-items:center;gap:4px;min-height:44px;display:flex}.mlPrepNoteInput{flex:1;min-width:100px}.page{min-height:100%;padding:var(--space-8);justify-content:center;align-items:center;display:flex}.card{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-6);width:100%;max-width:480px}.eyebrow{font-family:var(--font-body);font-size:var(--type-eyebrow-size);line-height:var(--type-eyebrow-line);letter-spacing:var(--type-eyebrow-tracking);text-transform:uppercase;color:var(--accent-emphasis);margin-bottom:var(--space-3);font-weight:600}.heading{font-size:var(--type-display-md-size);line-height:var(--type-display-md-line);letter-spacing:var(--type-display-md-tracking);margin-bottom:var(--space-4)}.body{font-size:var(--type-body-size);color:var(--text-secondary);margin-bottom:var(--space-6)}.statusRow{align-items:center;gap:var(--space-2);margin-bottom:var(--space-6);display:flex}.statusDot{background:var(--text-tertiary);border-radius:50%;width:8px;height:8px}.statusDot[data-status=ok]{background:var(--accent-safe)}.statusDot[data-status=error]{background:var(--state-danger)}.statusText{font-size:var(--type-body-sm-size);color:var(--text-secondary)}.primaryButton{background:var(--accent-emphasis);color:var(--text-inverse);font:600 var(--type-label-size) / 1 var(--font-body);letter-spacing:var(--type-label-tracking);border-radius:var(--radius-md);cursor:pointer;transition:filter var(--motion-duration) var(--motion-ease);border:none;padding:12px 20px}.primaryButton:hover{filter:brightness(.94)}.primaryButton:active{filter:brightness(.88)}
