:root{color-scheme:light;--font-display: "Fraunces", "Iowan Old Style", serif;--font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--h1: clamp(2.0239rem, 28.1006px + 1.3382vw, 2.6127rem);--h2: clamp(1.7599rem, 25.1238px + .9485vw, 2.1773rem);--h3: clamp(1.5304rem, 22.4205px + .6455vw, 1.8144rem);--h4: clamp(1.3308rem, 19.9742px + .4119vw, 1.512rem);--h5: clamp(1.1572rem, 17.7673px + .2337vw, 1.26rem);--h6: clamp(1.0062rem, 15.7818px + .0994vw, 1.05rem);--body: .875rem;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-headline: 700;--font-weight-title: var(--font-weight-medium);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-10: 2.5rem;--space-11: 2.75rem;--color-bg: #f1eee6;--color-surface: #faf8f3;--color-surface-raised: #ffffff;--color-border: rgba(28, 27, 25, .08);--color-text: #1c1b19;--color-text-muted: #8c8579;--color-text-faint: #b3ada0;--color-accent: #4f8f6b;--color-accent-strong: #3a6b50;--color-accent-bg: #dceae3;--color-highlight-bg: #dceaef;--color-highlight-strong: #3f7385;--color-status-open: #b8b2a6;--color-status-swap: #e3b341;--color-status-missing: #d1604a;--color-status-ready: #4f8f6b;--color-status-leftover: #a8927b;--color-tag-mint-bg: #dcefe3;--color-tag-mint-text: #2f6b4f;--color-tag-amber-bg: #fce8c9;--color-tag-amber-text: #8a6a1f;--color-tag-danger-bg: #f7deda;--color-tag-danger-text: #b23b2e;--radius-lg: 24px;--radius-md: 16px;--radius-pill: 999px;--shadow-card: 0 1px 2px rgba(28, 27, 25, .04), 0 12px 28px rgba(28, 27, 25, .06);font-family:var(--font-body);background:var(--color-bg);color:var(--color-text)}*{box-sizing:border-box}body,html,#root{margin:0;width:100%;min-height:100%}body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg)}.app-shell{display:flex;align-items:center;justify-content:center;padding:var(--space-5);width:100%}@media (min-width: 640px){.app-shell{padding:var(--space-8)}}.landing-logo{display:block;margin-bottom:var(--space-4)}.eyebrow{margin:0 0 var(--space-2);font-size:.75rem;font-weight:var(--font-weight-semibold);letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-muted)}.card{width:100%;min-width:320px;max-width:540px;padding:var(--space-7);border-radius:var(--radius-lg);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-card)}@media (min-width: 640px){.card{padding:var(--space-11)}}h1,h2,h3,h4,h5,h6{margin:0 0 var(--space-3);font-family:var(--font-display);line-height:1.1;letter-spacing:-.01em}h1,h2,h3{font-weight:var(--font-weight-headline)}h4,h5,h6{font-weight:var(--font-weight-title)}h1{font-size:var(--h1)}h2{font-size:var(--h2)}h3{font-size:var(--h3)}h4{font-size:var(--h4)}h5{font-size:var(--h5)}h6{font-size:var(--h6)}p{font-size:var(--body);line-height:1.6;margin:var(--space-3) 0;color:var(--color-text-muted)}.error{color:var(--color-status-missing)}.success{color:var(--color-accent-strong)}a{color:var(--color-accent-strong);font-weight:var(--font-weight-medium);text-decoration:none}a:hover{text-decoration:underline}form{display:flex;flex-direction:column;gap:var(--space-1);margin-top:var(--space-6)}label{font-size:.8rem;font-weight:var(--font-weight-medium);color:var(--color-text-muted);margin-top:var(--space-3)}input,select{padding:.7rem .85rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface-raised);color:var(--color-text);font-family:var(--font-body);font-size:1rem}select{cursor:pointer}input::placeholder{color:var(--color-text-faint)}input:focus,select:focus{outline:2px solid var(--color-accent);outline-offset:1px}.actions{display:flex;gap:var(--space-3);margin-top:var(--space-7)}.button{display:inline-flex;align-items:center;justify-content:center;text-align:center;padding:var(--space-3) var(--space-6);border-radius:var(--radius-pill);border:none;background:var(--color-text);color:var(--color-surface);font-family:var(--font-body);font-weight:var(--font-weight-semibold);font-size:.95rem;text-decoration:none;cursor:pointer;margin-top:var(--space-5);transition:opacity .15s ease}.button:hover{opacity:.85;text-decoration:none}.button:disabled{opacity:.5;cursor:not-allowed}.button-secondary{background:transparent;color:var(--color-text);border:1px solid var(--color-border)}.button-outline{background:transparent;color:var(--color-text);border:1px solid var(--color-text)}.button-secondary-filled{background:var(--color-border);color:var(--color-text);border:none}.button-text{background:transparent;color:var(--color-accent-strong);border:none;padding:var(--space-2) var(--space-3)}.button-text:hover{opacity:1;text-decoration:underline}.chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);background:var(--color-surface-raised);border:1px solid var(--color-border);font-size:.85rem;color:var(--color-text)}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-status-open)}.status-dot.ready{background:var(--color-status-ready)}.status-dot.swap{background:var(--color-status-swap)}.status-dot.missing{background:var(--color-status-missing)}.status-dot.leftover{background:var(--color-status-leftover)}.cell-highlight{background:var(--color-highlight-bg);color:var(--color-highlight-strong)}.tag{display:inline-flex;align-items:center;padding:.3rem var(--space-3);border-radius:var(--radius-pill);font-size:.8rem;font-weight:var(--font-weight-medium)}.tag-mint{background:var(--color-tag-mint-bg);color:var(--color-tag-mint-text)}.tag-amber{background:var(--color-tag-amber-bg);color:var(--color-tag-amber-text)}.tag-danger{background:var(--color-tag-danger-bg);color:var(--color-tag-danger-text)}.app-layout{display:flex;width:100%;min-height:100vh;align-items:stretch;background:var(--color-bg)}.sidebar{display:none;flex-direction:column;width:220px;flex-shrink:0;align-self:flex-start;position:sticky;top:0;height:100vh;padding:var(--space-7) var(--space-5);border-right:1px solid var(--color-border);gap:var(--space-6)}.sidebar-brand{display:flex;align-items:center;gap:var(--space-2);margin:0;font-family:var(--font-display);font-size:1.5rem;font-weight:var(--font-weight-semibold)}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-1)}.sidebar .nav-link{flex-direction:row;justify-content:flex-start;gap:var(--space-3);padding:.6rem var(--space-3);font-size:.9rem}.sidebar .nav-link:hover{background:var(--color-surface)}.sidebar-settings{margin-top:auto}.sidebar-account-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-content{display:flex;flex-direction:column;flex:1;min-width:0}.app-topbar{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-5) 0}.topbar-brand{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-display);font-size:1.35rem;font-weight:var(--font-weight-semibold)}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:none;background:var(--color-surface-raised);color:var(--color-text);box-shadow:var(--shadow-card);cursor:pointer;transition:opacity .15s ease}.icon-button:hover{opacity:.85}.icon-button:disabled{opacity:.5;cursor:not-allowed}.avatar{flex-shrink:0;border-radius:50%;object-fit:cover}.avatar-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--color-accent-bg);color:var(--color-accent-strong);font-weight:var(--font-weight-semibold);font-family:var(--font-body)}.app-main{flex:1;width:100%;padding:var(--space-5);padding-bottom:5.5rem}.page{max-width:880px;margin:0 auto}.page-subtitle{margin-top:calc(-1 * var(--space-1))}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-around;background:var(--color-surface-raised);border-top:1px solid var(--color-border);padding:var(--space-2) var(--space-1)}.bottom-nav .nav-link{flex-direction:column;gap:var(--space-1);padding:.35rem var(--space-2);font-size:.7rem}.nav-link{display:flex;align-items:center;border-radius:var(--radius-md);color:var(--color-text-muted);font-weight:var(--font-weight-medium);text-decoration:none}.nav-link:hover{text-decoration:none}.nav-link.active{color:var(--color-accent-strong);background:var(--color-accent-bg)}@media (min-width: 768px){.sidebar{display:flex}.app-topbar,.bottom-nav{display:none}.app-main{padding:var(--space-10);padding-bottom:var(--space-10)}}.section-title{margin:var(--space-8) 0 var(--space-4)}.section-description{margin:0 0 var(--space-4)}.tab-nav{display:flex;gap:var(--space-2);margin-top:var(--space-6);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-3)}.tab-link{padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);color:var(--color-text-muted);font-weight:var(--font-weight-medium);font-size:.9rem;text-decoration:none}.tab-link:hover{background:var(--color-surface);text-decoration:none}.tab-link.active{color:var(--color-accent-strong);background:var(--color-accent-bg)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4);margin-top:var(--space-6)}.stat-card{min-width:0;max-width:none}.stat-value{margin:var(--space-1) 0;font-family:var(--font-display);font-size:2rem;font-weight:var(--font-weight-semibold);color:var(--color-text)}.day-strip{display:flex;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-2);margin-top:var(--space-6)}.day-card{flex:0 0 auto;min-width:92px;padding:.85rem;border-radius:var(--radius-md);background:var(--color-surface);border:1px solid var(--color-border)}.day-card.cell-highlight{background:var(--color-highlight-bg);border-color:transparent}.day-card-top{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;color:var(--color-text-muted)}.day-card-date{margin:.4rem 0 0;font-family:var(--font-display);font-size:1.4rem;font-weight:var(--font-weight-semibold);color:var(--color-text)}.day-card-status{margin:.2rem 0 0;font-size:.8rem}.recipe-card{margin-top:var(--space-4);max-width:none;min-width:0}.recipe-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.recipe-card-head h3{margin:0;color:var(--color-text)}.tag-row{display:flex;gap:var(--space-2);margin-top:var(--space-3)}.list-card{margin-top:var(--space-6);max-width:none;min-width:0;padding:var(--space-2) var(--space-7)}.settings-card{margin-top:var(--space-6);max-width:none;min-width:0}.settings-card .section-title{margin-top:0}.avatar-upload-row{display:flex;align-items:center;gap:var(--space-5);margin-top:var(--space-4)}.avatar-upload-row .button{margin-top:0}.avatar-input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#1c1b1973;padding:var(--space-5);z-index:100}.modal-card{max-width:360px;display:flex;flex-direction:column;align-items:center}.crop-viewport{position:relative;overflow:hidden;border-radius:50%;background:var(--color-bg);touch-action:none;cursor:grab;margin-top:var(--space-4)}.crop-viewport:active{cursor:grabbing}.crop-image{position:absolute;top:0;left:0;max-width:none;-webkit-user-select:none;user-select:none}.crop-zoom{width:100%;margin-top:var(--space-5)}.household-members{list-style:none;margin:var(--space-4) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.household-member{display:flex;align-items:center;gap:var(--space-3)}.household-member-name{margin:0;color:var(--color-text);font-weight:var(--font-weight-medium)}.household-member-email{margin:0;font-size:.85rem}.invite-link-row{display:flex;gap:var(--space-3);margin-top:var(--space-5)}.invite-link-input{flex:1;min-width:0}.invite-link-row .button{margin-top:0}.household-rename-form{display:flex;flex-direction:row;align-items:center;gap:var(--space-3);margin-top:var(--space-1)}.household-rename-form .button{margin-top:0}.household-name-input{flex:1;min-width:0}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton{flex-shrink:0;background:var(--color-border);border-radius:var(--radius-md);animation:skeleton-pulse 1.5s ease-in-out infinite}.household-skeleton{display:flex;flex-direction:column;gap:var(--space-5);margin-top:var(--space-4)}.household-skeleton .household-rename-form{margin-top:0}.list-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) 0;border-bottom:1px solid var(--color-border)}.list-row:last-child{border-bottom:none}.inventory-row{flex-wrap:wrap;gap:var(--space-3)}.inventory-row-controls{display:flex;align-items:center;gap:var(--space-3)}.inventory-row-controls .button{margin-top:0}.inventory-count-input{width:4.5rem}.add-item-form{margin-top:var(--space-6);max-width:none;min-width:0;display:flex;flex-direction:column;gap:var(--space-2)}.add-item-form .button{align-self:flex-start;margin-top:var(--space-3)}.checkbox-row{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-2)}.checkbox-row input{width:auto}.planner-row{gap:var(--space-3)}.planner-row-controls{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1)}.planner-row-controls select{min-width:180px}.calendar-providers-card{margin-top:var(--space-4);max-width:none;min-width:0}.calendar-providers-head{display:flex;align-items:center;justify-content:space-between}.calendar-providers-head h3{margin:0}.value-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-5)}.value-item-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);background:var(--color-accent-bg);color:var(--color-accent-strong);margin-bottom:var(--space-3)}.value-item h4{margin:0 0 var(--space-2)}.value-item p{margin:0}.zone-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-5);margin-top:var(--space-6)}.zone-card{max-width:none;min-width:0}.zone-card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.zone-card-head h3{margin:0;text-transform:capitalize}.zone-progress-track{width:100%;height:8px;border-radius:var(--radius-pill);background:var(--color-border);margin:var(--space-3) 0;overflow:hidden}.zone-progress-fill{height:100%;background:var(--color-accent);border-radius:var(--radius-pill)}.zone-card .button{margin-top:var(--space-3)}.ingredient-row{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.ingredient-row .checkbox-row,.ingredient-row .button{margin-top:0}.list-row-meta{color:var(--color-text-muted)}
