:root{--color-bg:#eef3ea;--color-bg-deep:#dfe8d9;--color-bg-elevated:#f7faf5;--color-surface:#fcfdfb;--color-ink:#1c2418;--color-ink-muted:#4f5c48;--color-accent:#2f5d3a;--color-accent-mid:#3d754b;--color-accent-soft:#d7e8db;--color-accent-hover:#23462c;--color-tomato:#c45c3e;--color-tomato-soft:#f4ddd5;--color-herb:#8aa879;--color-danger:#9b2c2c;--color-border:#c5d2bc;--color-border-strong:#9aaf8f;--color-focus:#2f5d3a;--shadow-soft:0 18px 50px #1c24181a;--shadow-lift:0 8px 24px #1c241814;--radius:18px;--radius-sm:12px;--nav-height:4.35rem;--font-display:"Fraunces", Georgia, "Times New Roman", serif;--font-body:"Manrope", "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 900px 520px at 8% -8%, #2f5d3a33, transparent 60%), radial-gradient(ellipse 780px 520px at 100% -4%, #c45c3e29, transparent 58%), radial-gradient(ellipse 600px 420px at 50% 110%, #8aa8792e, transparent 60%), linear-gradient(165deg, #f5f9f2 0%, var(--color-bg) 45%, #e3ecdc 100%);background-attachment:fixed;margin:0;font-size:1.05rem;line-height:1.55}body:before{content:"";pointer-events:none;z-index:0;opacity:.28;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.45'/%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:after{content:"";left:var(--space-4);right:var(--space-4);background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--color-accent) 45%, var(--color-border)) 20%, color-mix(in srgb, var(--color-tomato) 35%, var(--color-border)) 80%, transparent);height:1px;position:absolute;bottom:0}.app-header .lede{color:var(--color-ink-muted);margin:var(--space-2) 0 0;max-width:32ch;font-size:.95rem}.brand-credit{margin:0 0 var(--space-2);font-family:var(--font-display);letter-spacing:.04em;color:var(--color-tomato);font-size:.82rem;font-style:italic;font-weight:500}.brand-lockup{align-items:center;gap:var(--space-3);margin:0;display:flex}.brand-mark{filter:drop-shadow(0 8px 16px #2f5d3a47);flex-shrink:0;width:3.1rem;height:3.1rem;animation:4.5s ease-in-out infinite brand-bob}.brand-lockup--lg .brand-mark{width:4.6rem;height:4.6rem}.brand-title{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.01em;flex-wrap:wrap;align-items:baseline;gap:.28em;margin:0;padding-bottom:.08em;font-size:clamp(1.85rem,5vw,2.35rem);font-weight:700;line-height:1.12;display:flex}.brand-lockup--lg .brand-title{font-size:clamp(2.55rem,8vw,3.45rem);line-height:1.08}.brand-meal{color:var(--color-accent)}.brand-planner{color:var(--color-tomato)}.main{padding:var(--space-4) var(--space-4) var(--space-5);flex:1}.banner{background:linear-gradient(135deg, var(--color-accent-soft), #e8f2e9);border:1px solid color-mix(in srgb, var(--color-accent) 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{border:1px solid color-mix(in srgb, var(--color-border) 80%, white);border-radius:var(--radius);padding:var(--space-5);box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);animation:fade-up .42s var(--ease-out);background:linear-gradient(#fcfdfbf7,#f7faf5f0);position:relative}.panel:before{content:"";border-radius:var(--radius) 0 0 var(--radius);background:linear-gradient(180deg, var(--color-accent-mid), var(--color-tomato));opacity:.85;width:4px;position:absolute;inset:0 auto 0 0}.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-accent);font-size:.75rem;font-weight:700}.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:650;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);padding:.7rem .95rem;transition:border-color .16s,box-shadow .16s;box-shadow:inset 0 1px 2px #1c24180a}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) 20%, 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) 35%, 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;border:1px solid #0000;border-radius:999px;padding:.7rem 1.2rem;font-weight:700;text-decoration:none;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:linear-gradient(160deg, var(--color-accent-mid), var(--color-accent));color:#fff;box-shadow:0 10px 24px #2f5d3a47}.btn-primary:hover{background:linear-gradient(160deg, var(--color-accent), var(--color-accent-hover))}.btn-secondary{border-color:var(--color-border);color:var(--color-ink);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffa6}.btn-secondary:hover{border-color:var(--color-accent);background:var(--color-accent-soft)}.btn-danger{border-color:color-mix(in srgb, var(--color-danger) 45%, var(--color-border));color:var(--color-danger);background:0 0}.btn-danger:hover{background:color-mix(in srgb, var(--color-danger) 10%, 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.2);backdrop-filter:blur(18px)saturate(1.2);border-top:1px solid color-mix(in srgb, var(--color-border) 70%, transparent);background:#f7faf5d1;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -10px 30px #1c24180f}.bottom-nav ul{gap:var(--space-1);grid-template-columns:repeat(3,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);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;font-size:.75rem;font-weight:700;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), #e7f0e8);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-accent) 20%, transparent)}.bottom-nav .nav-icon{font-size:1.2rem;line-height:1}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:.4rem;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);font:inherit;color:inherit;cursor:pointer;transition:background-color .16s ease, border-color .16s ease, transform .16s var(--ease-out);background:#ffffffb3;border:1px solid #0000;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:.2rem;padding:.2rem;font-weight:600;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) 35%, transparent);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) 70%, white)}.calendar-cell--shop{background:color-mix(in srgb, var(--color-tomato-soft) 55%, white)}.calendar-cell--marked.calendar-cell--shop{background:linear-gradient(145deg, color-mix(in srgb, var(--color-accent-soft) 75%, white), color-mix(in srgb, var(--color-tomato-soft) 70%, 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-tomato)}.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-tomato-soft) 50%, 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:1px solid var(--color-border);cursor:pointer;background:#ffffffb3;border-radius:999px;padding:.4rem .9rem;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) 80%, white);border:1px solid var(--color-border)}.grocery-check-list{gap:var(--space-3)}.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}.auth-screen{min-height:100dvh;padding:var(--space-5);place-items:center;display:grid}.auth-hero{gap:var(--space-4);flex-direction:column;width:min(100%,26rem);display:flex}.auth-copy{color:var(--color-ink-muted);margin:0}.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:#fff;text-align:center;box-shadow:var(--shadow-soft);animation:fade-up .28s var(--ease-out);border-radius:999px;padding:.85rem 1.1rem}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes brand-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
