:root{--color-bg:#f3e8d8;--color-bg-deep:#e5d4bd;--color-bg-elevated:#faf3e8;--color-surface:#fffaf4;--color-ink:#3a2e26;--color-ink-muted:#6d5c4f;--color-accent:#4f6f5a;--color-accent-mid:#5f8270;--color-accent-soft:#d9e6dd;--color-accent-hover:#3d5847;--color-brass:#c99555;--color-brass-soft:#f3e2c4;--color-cherry:#b25a4a;--color-cherry-soft:#f5ddd6;--color-wood:#8b6a4a;--color-wood-light:#d9c0a0;--color-copper:#c99555;--color-danger:#9a3f35;--color-border:#e0ceb6;--color-border-strong:#c4ad92;--color-focus:#4f6f5a;--shadow-soft:0 16px 36px #3a2e261a;--shadow-lift:0 8px 18px #3a2e2614;--radius:18px;--radius-sm:12px;--nav-height:4.5rem;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"Nunito", "Segoe UI", sans-serif;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--touch:44px;--ease-out:cubic-bezier(.22, 1, .36, 1);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{height:100%}body{min-height:100%;font-family:var(--font-body);color:var(--color-ink);background-color:var(--color-bg);background-image:radial-gradient(ellipse 920px 540px at 10% -6%, #fff4dce6, transparent 55%), radial-gradient(ellipse 760px 480px at 100% 0%, #4f6f5a24, transparent 52%), radial-gradient(ellipse 640px 420px at 50% 110%, #c9955529, transparent 55%), linear-gradient(168deg, #faf2e6 0%, var(--color-bg) 45%, #e8d7c2 100%);background-attachment:fixed;margin:0;font-size:1.05rem;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;opacity:.2;background-image:linear-gradient(#8b6a4a0d 1px,#0000 1px),linear-gradient(90deg,#8b6a4a0a 1px,#0000 1px);background-size:40px 40px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(85% 75% at 50% 20%,#000 30%,#0000 100%);mask-image:radial-gradient(85% 75% at 50% 20%,#000 30%,#0000 100%)}body:after{content:"";pointer-events:none;z-index:0;opacity:.18;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.4'/%3E%3C/svg%3E");position:fixed;inset:0}#root{z-index:1;min-height:100dvh;position:relative}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 var(--space-3);font-weight:650;line-height:1.15}p{margin:0 0 var(--space-3)}a{color:var(--color-accent)}a:hover{color:var(--color-accent-hover)}img{max-width:100%;height:auto}:focus{outline:none}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}.skip-link{left:var(--space-4);z-index:1000;background:var(--color-ink);color:#fff;padding:var(--space-3) var(--space-4);border-radius:8px;text-decoration:none;position:absolute;top:-100px}.skip-link:focus{top:var(--space-4)}.app-shell{max-width:42rem;min-height:100dvh;padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));flex-direction:column;margin:0 auto;display:flex}.app-header{padding:var(--space-5) var(--space-4) var(--space-4);justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex;position:relative}.app-header-actions{flex-wrap:wrap;justify-content:flex-end}.app-header:after{content:"";left:var(--space-4);right:var(--space-4);background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-brass) 50%, var(--color-border)) 22%, color-mix(in srgb, var(--color-accent) 45%, var(--color-border)) 78%, transparent);border-radius:999px;height:2px;animation:none;position:absolute;bottom:0}.brand-credit{margin:0 0 var(--space-2);font-family:var(--font-display);letter-spacing:.02em;text-transform:none;color:var(--color-ink-muted);font-size:.9rem;font-style:italic;font-weight:650}.brand-credit--header{margin-bottom:var(--space-1)}.brand-lockup{align-items:center;gap:var(--space-3);margin:0;display:flex}.brand-lockup--lg{text-align:center;gap:var(--space-4);flex-direction:column}.brand-mark{width:3rem;height:3rem;animation:brand-settle .7s var(--ease-out) both;border-radius:18px;flex-shrink:0;box-shadow:0 10px 22px #4f6f5a2e}.brand-lockup--lg .brand-mark{border-radius:22px;width:5.5rem;height:5.5rem}.brand-title{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.015em;flex-wrap:wrap;align-items:baseline;gap:.28em;margin:0;padding-bottom:.06em;font-size:clamp(1.85rem,5vw,2.3rem);font-weight:700;line-height:1.08;display:flex}.brand-lockup--lg .brand-title{justify-content:center;font-size:clamp(2.5rem,8vw,3.4rem);line-height:1.02}.brand-meal{color:var(--color-accent)}.brand-planner{color:var(--color-wood);font-style:normal;font-weight:650}.main{padding:var(--space-4) var(--space-4) var(--space-5);flex:1}.banner{background:linear-gradient(135deg, var(--color-brass-soft), #fff6ea);border:1px solid color-mix(in srgb, var(--color-brass) 28%, transparent);color:var(--color-ink);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);margin-bottom:var(--space-4);box-shadow:var(--shadow-lift);font-size:.95rem}.panel{background:color-mix(in srgb, var(--color-surface) 94%, #fff);border:1px solid color-mix(in srgb, var(--color-border) 90%, var(--color-wood-light));border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow-soft), inset 0 1px 0 #fffcf6cc;animation:fade-up .42s var(--ease-out);position:relative}.guide-panel{gap:var(--space-4);display:grid}.guide-steps{gap:var(--space-2);color:var(--color-ink);margin:0;padding-left:1.25rem;display:grid}.guide-steps--compact{margin-top:var(--space-3);gap:var(--space-1)}.guide-example{padding:var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-accent) 6%, var(--color-bg-elevated));border:1px solid color-mix(in srgb, var(--color-accent) 18%, var(--color-border))}.guide-examples,.guide-example-list{gap:var(--space-3);display:grid}.guide-example--component{background:color-mix(in srgb, var(--color-bg-deep) 28%, white)}.guide-example-label{letter-spacing:.12em;text-transform:uppercase;color:var(--color-ink-muted);margin:0;font-size:.72rem;font-weight:650}.guide-coach{border-color:color-mix(in srgb, var(--color-accent) 28%, var(--color-border));background:color-mix(in srgb, var(--color-accent) 5%, var(--color-bg-elevated))}.panel:before{content:none}.panel--board{background:var(--color-surface);border-color:var(--color-border);box-shadow:var(--shadow-soft)}.panel--board:after{content:none}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.muted{color:var(--color-ink-muted)}.eyebrow{margin:0 0 var(--space-2);letter-spacing:.12em;text-transform:uppercase;color:var(--color-wood);font-size:.74rem;font-weight:800}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}label.field-label{margin-bottom:var(--space-2);letter-spacing:-.01em;font-weight:700;display:block}.field-hint{color:var(--color-ink-muted);margin-top:var(--space-1);font-size:.9rem;display:block}input[type=text],input[type=email],input[type=date],input[type=datetime-local],input[type=file],select,textarea{width:100%;min-height:var(--touch);font:inherit;color:inherit;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);box-shadow:none;padding:.7rem .95rem;transition:border-color .16s,box-shadow .16s}input:hover,select:hover,textarea:hover{border-color:var(--color-border-strong)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--color-accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-accent) 22%, transparent)}textarea{resize:vertical;min-height:6rem}.checkbox-grid{gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}.checkbox-row{align-items:center;gap:var(--space-3);min-height:var(--touch);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-accent-soft) 45%, white);cursor:pointer;border:1px solid #0000;padding:.55rem .85rem;transition:border-color .16s,background-color .16s;display:flex}.checkbox-row:hover{border-color:color-mix(in srgb, var(--color-accent) 25%, transparent)}.checkbox-row input{width:1.35rem;height:1.35rem;accent-color:var(--color-accent);flex-shrink:0}.btn{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--touch);min-width:var(--touch);font:inherit;letter-spacing:-.01em;cursor:pointer;transition:transform .18s var(--ease-out), background-color .18s ease, border-color .18s ease, box-shadow .18s ease, color .18s ease;border:1px solid #0000;border-radius:999px;padding:.72rem 1.3rem;font-weight:800;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:linear-gradient(165deg, var(--color-accent-mid), var(--color-accent));color:#fffaf4;box-shadow:0 12px 24px #4f6f5a42}.btn-primary:hover{background:linear-gradient(165deg, var(--color-accent), var(--color-accent-hover))}.btn-secondary{background:color-mix(in srgb, var(--color-surface) 85%, transparent);border-color:var(--color-border);color:var(--color-ink);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.btn-secondary:hover{border-color:var(--color-brass);background:var(--color-brass-soft)}.btn-ghost{color:var(--color-ink-muted);box-shadow:none;background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--color-ink);background:color-mix(in srgb, var(--color-surface) 80%, transparent)}.btn-danger{border-color:color-mix(in srgb, var(--color-danger) 40%, var(--color-border));color:var(--color-danger);background:0 0}.btn-danger:hover{background:color-mix(in srgb, var(--color-danger) 8%, white)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.bottom-nav{z-index:50;height:calc(var(--nav-height) + env(safe-area-inset-bottom,0px));padding:var(--space-2) var(--space-3) calc(var(--space-2) + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(18px)saturate(1.08);backdrop-filter:blur(18px)saturate(1.08);border-top:1px solid color-mix(in srgb, var(--color-wood) 28%, var(--color-border));background:linear-gradient(#fffaf4eb,#f5ead8f5);position:fixed;bottom:0;left:0;right:0;box-shadow:0 -12px 28px #3a2e2614}.bottom-nav ul{gap:var(--space-1);grid-template-columns:repeat(4,1fr);max-width:42rem;margin:0 auto;padding:0;list-style:none;display:grid}.bottom-nav a{min-height:var(--touch);color:var(--color-ink-muted);letter-spacing:0;text-transform:none;border-radius:16px;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;font-size:.72rem;font-weight:800;text-decoration:none;transition:background-color .18s,color .18s;display:flex}.bottom-nav a:hover{color:var(--color-accent);background:color-mix(in srgb, var(--color-accent-soft) 55%, transparent)}.bottom-nav a[aria-current=page]{color:var(--color-accent);background:linear-gradient(180deg, var(--color-accent-soft), #eef5f0);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-accent) 16%, transparent)}.bottom-nav .nav-icon{font-size:1.2rem;line-height:1}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:.45rem;display:grid}.calendar-dow{text-align:center;letter-spacing:.06em;text-transform:uppercase;color:var(--color-ink-muted);padding:var(--space-2) 0;font-size:.72rem;font-weight:800}.calendar-cell{aspect-ratio:1;min-height:var(--touch);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-surface) 85%, var(--color-bg-deep));font:inherit;color:inherit;cursor:pointer;box-shadow:none;transition:background-color .16s ease, border-color .16s ease, transform .16s var(--ease-out);border:1px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;padding:.2rem;font-weight:650;display:flex}.calendar-cell--empty{cursor:default;pointer-events:none;background:0 0}.calendar-cell:hover{border-color:color-mix(in srgb, var(--color-accent) 28%, var(--color-border));transform:translateY(-1px)}.calendar-cell--today{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.calendar-cell--marked{background:color-mix(in srgb, var(--color-accent-soft) 72%, white)}.calendar-cell--shop{background:color-mix(in srgb, var(--color-brass-soft) 70%, white)}.calendar-cell--marked.calendar-cell--shop{background:linear-gradient(145deg, color-mix(in srgb, var(--color-accent-soft) 78%, white), color-mix(in srgb, var(--color-brass-soft) 75%, white))}.calendar-dots{gap:.2rem;min-height:.4rem;display:flex}.dot{border-radius:50%;width:.4rem;height:.4rem;display:inline-block}.dot-meal{background:var(--color-accent)}.dot-shop{background:var(--color-brass)}.legend .dot{vertical-align:middle;margin-right:.35rem}.list-plain{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.list-link{color:inherit;padding:var(--space-3) 0;flex-direction:column;gap:.2rem;text-decoration:none;display:flex}.list-link:hover strong{color:var(--color-accent)}.meal-list-item{align-items:center;gap:var(--space-4);flex-direction:row;padding:var(--space-3) var(--space-4)!important;display:flex!important}.meal-list-copy{flex-direction:column;gap:.2rem;min-width:0;display:flex}.meal-thumb{border-radius:var(--radius-sm);object-fit:cover;background:var(--color-accent-soft);border:1px solid var(--color-border);flex-shrink:0;width:4.5rem;height:4.5rem}.meal-thumb--empty{background:linear-gradient(145deg, var(--color-accent-soft), color-mix(in srgb, var(--color-brass-soft) 55%, white));display:inline-block}.photo-preview{margin-top:var(--space-3);border-radius:var(--radius-sm);border:1px solid var(--color-border);box-shadow:var(--shadow-lift);overflow:hidden}.photo-preview img{width:100%;display:block}.photo-preview--slot{max-width:14rem}.chip-option{align-items:center;gap:var(--space-2);min-height:var(--touch);border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;padding:.4rem .95rem;font-weight:600;display:inline-flex}.chip-option:has(input:checked){border-color:var(--color-accent);background:var(--color-accent-soft)}.slot-card{padding:var(--space-4);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-bg-elevated) 70%, white);border:1px solid var(--color-border)}.ingredient-stock-check{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-bg-deep) 25%, white);margin:0}.ingredient-stock-check legend{padding:0 var(--space-2)}.grocery-check-list{gap:var(--space-3)}.grocery-dept-stack{gap:var(--space-5)}.grocery-dept-title{margin:0 0 var(--space-2);font-family:var(--font-display);letter-spacing:.02em;color:var(--color-ink);border-bottom:1px solid var(--color-border);padding-bottom:.35rem;font-size:1.05rem;font-weight:600}.grocery-check-row{min-height:3.25rem;padding:.75rem 1rem}.grocery-check-row.is-checked{opacity:.62;background:color-mix(in srgb, var(--color-bg-deep) 40%, white)}.grocery-check-row.is-checked strong{text-decoration:line-through}.grocery-check-label{flex-direction:column;gap:.1rem;display:flex}.grocery-draft-row{align-items:flex-end}.grocery-decide-row{gap:var(--space-3)}.grocery-review-card.is-kept{border-color:color-mix(in srgb, var(--color-accent) 45%, var(--color-border));background:color-mix(in srgb, var(--color-accent) 8%, var(--color-bg-elevated))}.grocery-skipped-row{opacity:.78;justify-content:space-between;align-items:center}.auth-screen{min-height:100dvh;padding:var(--space-5);background:radial-gradient(70% 50% at 50% 0,#fff4dcf2,#0000 60%),radial-gradient(55% 45% at 90% 85%,#4f6f5a29,#0000 55%),linear-gradient(#faf1e3 0%,#f0e0cb 55%,#e4cfb4 100%);place-items:center;display:grid;position:relative;overflow:hidden}.auth-atmosphere{pointer-events:none;background:radial-gradient(circle,#fffaebd9,#0000 70%);border-radius:50%;height:42%;animation:4.5s ease-in-out infinite alternate soft-glow;position:absolute;inset:-10% 20% auto}.auth-atmosphere:before,.auth-atmosphere:after{content:none}.auth-hero{align-items:center;gap:var(--space-4);width:min(100%,26rem);animation:fade-up .52s var(--ease-out);flex-direction:column;display:flex;position:relative}.auth-form{width:100%;padding:var(--space-6) var(--space-5)}.auth-copy{color:var(--color-ink-muted);text-align:center;max-width:22rem;margin:0;font-size:1.05rem;line-height:1.45}.auth-footnote{text-align:center;font-family:var(--font-display);color:var(--color-ink-muted);max-width:22rem;margin:0;font-size:.95rem;font-style:italic;font-weight:650}.ingredient-chips{flex-wrap:wrap;align-items:center;gap:.5rem;min-height:2.5rem;display:flex}.ingredient-chip{border-radius:var(--radius-sm);border:1px solid color-mix(in srgb, var(--color-accent) 22%, var(--color-border));background:color-mix(in srgb, var(--color-accent-soft) 55%, var(--color-surface));min-height:2.25rem;color:var(--color-ink);font:inherit;cursor:pointer;align-items:center;gap:.4rem;padding:.35rem .75rem;font-weight:600;display:inline-flex}.ingredient-chip:hover{border-color:var(--color-accent)}.ingredient-combobox{position:relative}.ingredient-suggestions{z-index:20;background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);max-height:14rem;box-shadow:var(--shadow-lift);margin:.35rem 0 0;padding:.25rem;list-style:none;position:absolute;left:0;right:0;overflow:auto}.ingredient-suggestions button{width:100%;min-height:var(--touch);text-align:left;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;padding:.55rem .75rem;font-weight:650}.ingredient-suggestions button:hover,.ingredient-suggestions button:focus-visible{background:color-mix(in srgb, var(--color-accent-soft) 65%, transparent)}.ingredient-suggestions__create{color:var(--color-accent)!important}.ingredient-library-list{gap:var(--space-2)}.ingredient-library-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);display:flex}.toast-region{left:50%;bottom:calc(var(--nav-height) + 1rem + env(safe-area-inset-bottom,0px));z-index:80;pointer-events:none;width:min(92vw,28rem);position:fixed;transform:translate(-50%)}.toast{background:var(--color-ink);color:#fffaf4;text-align:center;box-shadow:var(--shadow-soft);animation:fade-up .28s var(--ease-out);border-radius:999px;padding:.85rem 1.15rem}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes brand-settle{0%{opacity:0;transform:translateY(6px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes soft-glow{0%{opacity:.65;transform:scale(1)}to{opacity:1;transform:scale(1.04)}}.page-stack{gap:var(--space-5)}.page-header h1{margin:0 0 var(--space-2)}.lede{max-width:40rem;margin:0;line-height:1.5}.settings-member-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.settings-member-row{justify-content:space-between;align-items:center;gap:var(--space-3);padding-block:var(--space-2);border-bottom:1px solid color-mix(in srgb, var(--color-border) 70%, transparent);display:flex}.settings-member-row:last-child{border-bottom:none}.settings-member-main{flex-direction:column;gap:.15rem;min-width:0;display:flex}.settings-member-email{word-break:break-word;font-weight:650}.settings-member-meta{font-size:.88rem}@media (width<=420px){.brand-lockup--lg .brand-title{font-size:clamp(2.2rem,10vw,2.8rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
