:root{--color-canvas: #faf9f7;--color-surface: #ffffff;--color-surface-muted: #f4f3f1;--color-divider: #efeeec;--color-ink: #1a1c1b;--color-ink-soft: #444748;--color-cta: #000000;--color-accent: #4e635a;--color-accent-wash: #cee5da;--color-border: #c4c7c7;--color-error: #ba1a1a;--color-error-wash: #ffdad6;--font-display: "Newsreader", Georgia, serif;--font-ui: "Manrope", system-ui, sans-serif;--text-display-xl: 56px;--text-display-lg: 44px;--text-title: 32px;--text-subtitle: 24px;--text-body: 16px;--text-body-sm: 14px;--text-label: 12px;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--radius-sm: 2px;--radius-md: 4px;--radius-lg: 4px;--focus-ring: 2px solid var(--color-accent)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%;background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-ui)}body{overflow-x:hidden}button,input{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--color-ink);font-family:var(--font-display);font-weight:500;letter-spacing:-.03em}p{color:var(--color-ink-soft);line-height:1.55}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:fixed;left:var(--space-md);top:var(--space-md);z-index:100;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);padding:var(--space-sm) var(--space-md);font-weight:800}.material-symbols-outlined{font-size:1.25rem;font-variation-settings:"FILL" 0,"wght" 400,"GRAD" 0,"opsz" 24;line-height:1}.icon--filled{font-variation-settings:"FILL" 1,"wght" 500,"GRAD" 0,"opsz" 24}.app-shell{min-height:100vh;background:var(--color-canvas)}.side-rail{display:none}.app-frame{min-height:100vh;padding:var(--space-md) var(--space-md) 92px}.top-bar{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--space-md);background:var(--color-canvas);margin:calc(var(--space-md) * -1) calc(var(--space-md) * -1) var(--space-lg);padding:var(--space-md)}.top-bar h2{font-size:var(--text-subtitle)}.search-field{display:none}.top-actions{display:flex;align-items:center;gap:var(--space-sm)}.avatar,.icon-button{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink-soft)}.avatar{background:var(--color-accent-wash);color:var(--color-accent);font-weight:800}.brand-block{margin-bottom:var(--space-xl)}.brand-block h1{font-size:var(--text-subtitle)}.brand-block p{margin-top:var(--space-xs);font-size:var(--text-body-sm)}.rail-footer,.side-nav{display:flex;flex-direction:column;gap:var(--space-sm)}.rail-footer{margin-top:auto;padding-top:var(--space-md);border-top:1px solid var(--color-divider)}.nav-item,.tab-button{border:0;background:transparent;color:var(--color-ink-soft)}.nav-item{display:flex;align-items:center;gap:12px;min-height:42px;border-radius:var(--radius-md);padding:0 12px;text-align:left;font-weight:700}.nav-item:hover,.nav-item--active{background:var(--color-accent-wash);color:var(--color-ink)}.nav-item--active{border-right:2px solid var(--color-ink)}.bottom-tabs{position:fixed;left:0;right:0;bottom:0;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-xs);border-top:1px solid var(--color-border);background:var(--color-canvas);padding:var(--space-sm)}.tab-button{display:flex;min-width:0;flex-direction:column;align-items:center;gap:var(--space-xs);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-xs);font-size:11px;font-weight:800}.tab-button--active{background:var(--color-accent-wash);color:var(--color-ink)}.page{display:grid;gap:var(--space-xl)}.page-main,.page-side{display:flex;min-width:0;flex-direction:column;gap:var(--space-xl)}.page--single{display:flex;flex-direction:column}.page-hero,.page-title-row{display:flex;flex-direction:column;gap:var(--space-sm)}.page-hero h1,.page-title-row h1{font-size:clamp(var(--text-title),8vw,var(--text-display-xl));line-height:.95}.page-title-row{justify-content:space-between}.eyebrow{color:var(--color-ink-soft);font-size:var(--text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase}.card{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);padding:var(--space-lg)}.card--muted{background:var(--color-surface-muted)}.card--error{border-color:var(--color-error);background:var(--color-error-wash)}.card h2{font-size:var(--text-subtitle)}.button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:38px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);padding:0 14px;font-size:var(--text-label);font-weight:800;text-transform:uppercase;letter-spacing:.08em}button.chip{cursor:pointer}.button--primary{border-color:var(--color-cta);background:var(--color-cta);color:var(--color-surface)}.button--wide{width:100%;margin-bottom:var(--space-lg)}.button--pill{border-radius:999px;white-space:nowrap}.button--light{border-color:var(--color-surface);background:var(--color-surface)}.button--outline-light{border-color:var(--color-surface);background:transparent;color:var(--color-surface)}.text-button{display:inline-flex;align-items:center;gap:var(--space-xs);border:0;background:transparent;color:var(--color-ink-soft);padding:0;font-size:var(--text-label);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.input{width:100%;min-height:42px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-ink);padding:10px 12px}.input--ghost{border:0;background:transparent;padding:0}.input:focus-visible,.search-field input:focus-visible,.button:focus-visible,.text-button:focus-visible,.icon-button:focus-visible,.nav-item:focus-visible,.tab-button:focus-visible,.check-control:focus-visible,.chip:focus-visible{outline:var(--focus-ring);outline-offset:2px}.button:disabled,.input:disabled,.icon-button:disabled,.chip:disabled,.grocery-item input:disabled,.nav-item--disabled{cursor:not-allowed;opacity:.62}.chip{display:inline-flex;align-items:center;width:fit-content;min-height:26px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);color:var(--color-ink-soft);padding:0 10px;font-size:var(--text-label);font-weight:800;text-transform:uppercase;letter-spacing:.08em}.chip--accent{border-color:var(--color-accent-wash);background:var(--color-accent-wash);color:var(--color-accent)}.section-header,.card-topline,.progress-copy,.action-row,.meta-line,.category-header,.category-header>div{display:flex;align-items:center}.section-header,.card-topline,.progress-copy,.category-header{justify-content:space-between;gap:var(--space-md);margin-bottom:var(--space-md)}.section-header h2{font-size:clamp(var(--text-subtitle),5vw,var(--text-title))}.action-row{flex-wrap:wrap;gap:var(--space-sm)}.meta-line{flex-wrap:wrap;gap:var(--space-xs);color:var(--color-ink-soft);font-size:var(--text-body-sm)}.meta-line__urgent{color:var(--color-error);font-weight:800}.agenda-grid,.grocery-grid,.recipe-grid,.routine-grid,.settings-grid{display:grid;gap:var(--space-md)}.agenda-card{display:flex;flex-direction:column;gap:var(--space-sm)}.agenda-card h3{font-size:var(--text-subtitle)}.agenda-card p{font-size:var(--text-body-sm)}.list-card,.task-list-card{padding:0;overflow:hidden}.simple-row,.grocery-item,.task-row{display:flex;align-items:center;gap:var(--space-sm);border-bottom:1px solid var(--color-divider);padding:var(--space-md)}.simple-row:last-child,.grocery-item:last-child,.task-row:last-child{border-bottom:0}.simple-row strong{margin-left:auto;color:var(--color-error);font-size:var(--text-label);text-transform:uppercase}.simple-row .material-symbols-outlined{margin-left:auto;color:var(--color-ink-soft)}.progress-card,.quick-list-card,.alert-card,.insight-card,.settings-card{display:flex;flex-direction:column;gap:var(--space-md)}.stack-form,.invite-result,.undo-card{display:flex;flex-direction:column;gap:var(--space-sm)}.form-error{color:var(--color-error);font-weight:800}.card-empty-copy{padding:var(--space-md);color:var(--color-ink-soft)}.grocery-list-select{min-width:min(100%,220px)}.grocery-item small{display:block;margin-top:2px;color:var(--color-ink-soft);font-size:var(--text-body-sm);font-weight:500}.progress-track{height:8px;overflow:hidden;border-radius:999px;background:var(--color-surface-muted)}.progress-track span{display:block;width:37%;height:100%;background:var(--color-ink)}.quick-add-row{display:grid;grid-template-columns:1fr auto;gap:var(--space-sm)}.dot-list{display:flex;flex-direction:column;gap:var(--space-sm);margin:0;padding:0;list-style:none}.dot-list li{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-body-sm)}.dot-list li span{width:8px;height:8px;border:1px solid var(--color-accent);border-radius:999px;background:var(--color-accent-wash)}.alert-card{background:var(--color-error-wash);border-color:var(--color-error-wash);overflow:hidden}.alert-card>.material-symbols-outlined{align-self:flex-end;color:var(--color-error);font-size:4rem}.check-control{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 auto;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-canvas);color:var(--color-accent);font-weight:900}.task-row--done h3{text-decoration:line-through;color:var(--color-ink-soft)}.task-form-card{display:grid;gap:var(--space-md)}.task-form-grid{display:grid;gap:var(--space-sm)}.task-row__content{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--space-xs)}.task-row h3{font-family:var(--font-ui);font-size:var(--text-body);font-weight:800;letter-spacing:0}.assignee{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:999px;background:var(--color-accent-wash);color:var(--color-accent);font-size:var(--text-label);font-weight:800}.mini-calendar h2{margin-bottom:var(--space-md)}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-xs);text-align:center}.calendar-grid span{min-height:30px;border-radius:var(--radius-md);padding-top:6px;font-size:var(--text-body-sm)}.calendar-grid--weekdays span{min-height:auto;color:var(--color-ink-soft);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.calendar-day--muted{opacity:.45}.calendar-day--selected{background:var(--color-ink);color:var(--color-surface);font-weight:800}.insight-card{background:var(--color-surface-muted)}.insight-card>.material-symbols-outlined{color:var(--color-ink-soft)}.routines-section{border-top:1px solid var(--color-divider);padding-top:var(--space-lg)}.routine-card{min-height:176px}.routine-card>.material-symbols-outlined{color:var(--color-ink-soft)}.routine-card h3{margin-top:var(--space-md);font-size:var(--text-subtitle)}.routine-card p{margin-top:var(--space-sm);font-size:var(--text-body-sm)}.routine-card--new{border-style:dashed;color:var(--color-ink-soft)}.grocery-add-card{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--space-md)}.grocery-add-card .button{grid-column:1 / -1}.category-pills{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:var(--space-sm)}.category-pills span{border:1px solid var(--color-divider);border-radius:999px;background:var(--color-surface-muted);padding:6px 10px;color:var(--color-ink-soft);font-size:var(--text-body-sm)}.category-header>div{gap:var(--space-sm)}.category-header h2{font-size:var(--text-subtitle)}.grocery-item input{width:20px;height:20px;accent-color:var(--color-ink)}.grocery-item__check span{flex:1}.grocery-item__check{display:flex;flex:1;align-items:center;gap:var(--space-sm)}.grocery-item button{border:0;background:transparent;color:var(--color-ink-soft)}.grocery-item--checked .grocery-item__check span{color:var(--color-ink-soft);text-decoration:line-through}.dinner-section .section-header .text-button{border:1px solid var(--color-accent-wash);border-radius:var(--radius-md);background:var(--color-accent-wash);color:var(--color-accent);padding:6px 10px}.dinner-hero{min-height:420px;display:flex;align-items:flex-end;border-radius:var(--radius-lg);background:linear-gradient(to top,var(--color-ink),transparent),radial-gradient(circle at 82% 18%,var(--color-accent-wash),transparent 28%),linear-gradient(135deg,var(--color-accent),var(--color-ink-soft));color:var(--color-surface);overflow:hidden;padding:var(--space-lg)}.dinner-hero__content{max-width:720px;display:flex;flex-direction:column;gap:var(--space-md)}.dinner-hero h1{color:var(--color-surface);font-size:clamp(var(--text-title),8vw,var(--text-display-xl));line-height:1}.dinner-hero p{color:var(--color-surface-muted)}.hero-tags{display:flex;gap:var(--space-sm)}.hero-tags .chip{background:var(--color-surface);color:var(--color-ink)}.recipe-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}.filter-scroll{display:flex;gap:var(--space-sm);overflow-x:auto;padding-bottom:var(--space-xs)}.recipe-search-form{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.recipe-card{padding:0;overflow:hidden}.recipe-card__art{position:relative;min-height:180px;background:var(--color-surface-muted)}.recipe-card__art--wash{background:linear-gradient(135deg,var(--color-accent-wash),var(--color-surface))}.recipe-card__art--muted{background:linear-gradient(135deg,var(--color-surface-muted),var(--color-accent-wash))}.recipe-card__art--dark{background:linear-gradient(135deg,var(--color-ink),var(--color-accent))}.recipe-card__favorite{position:absolute;right:var(--space-sm);top:var(--space-sm);display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--color-divider);border-radius:999px;background:var(--color-surface);color:var(--color-error)}.recipe-card__body{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md)}.recipe-card h3{font-size:var(--text-subtitle)}.recipe-card p{font-size:var(--text-body-sm)}.meal-plan-card{display:flex;flex-direction:column;gap:var(--space-md);justify-content:space-between;background:var(--color-surface-muted)}.meal-plan-card h2{margin:var(--space-xs) 0}.meal-plan-list{display:grid;gap:var(--space-sm);min-width:min(100%,420px)}.meal-plan-entry{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);border:1px solid var(--color-divider);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-sm)}.meal-plan-entry p{margin-top:2px}.recipe-form-grid{display:grid;gap:var(--space-md)}.settings-card>.material-symbols-outlined{color:var(--color-accent)}.settings-card p{margin:var(--space-sm) 0 var(--space-md)}@media(min-width:720px){.page-title-row{flex-direction:row;align-items:flex-end}.agenda-grid,.grocery-grid,.recipe-grid,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grocery-add-card{grid-template-columns:auto 1fr auto}.grocery-add-card .button{grid-column:auto}.category-pills{grid-column:2 / 3}.meal-plan-card{flex-direction:row;align-items:flex-start}.recipe-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.side-rail{position:fixed;inset:0 auto 0 0;z-index:30;display:flex;width:280px;flex-direction:column;border-right:1px solid var(--color-divider);background:var(--color-canvas);padding:var(--space-lg) var(--space-md)}.app-frame{margin-left:280px;padding:0}.top-bar{grid-template-columns:auto minmax(260px,420px) auto;height:64px;border-bottom:1px solid var(--color-divider);padding:0 var(--space-xl);margin:0}.search-field{display:flex;align-items:center;gap:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);padding:0 12px}.search-field input{width:100%;min-height:38px;border:0;background:transparent;color:var(--color-ink);outline:0}.page{min-height:calc(100vh - 64px);grid-template-columns:minmax(0,1fr) 320px;padding:var(--space-xl)}.page--single{display:flex;padding:var(--space-xl)}.bottom-tabs{display:none}.routine-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.grocery-grid,.recipe-grid,.settings-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
