:root{color-scheme:light;--color-brand: #0e5a38;--color-brand-dark: #0a4730;--color-cream: #f8faf6;--color-leaf: #1f9d55;--color-tomato: #fb4d3d;--color-tomato-ink: #c5371f;--color-lemon: #f6b800;--color-ink: #15231c;--color-muted: color-mix(in srgb, var(--color-ink) 55%, transparent);--color-border: color-mix(in srgb, var(--color-brand) 12%, transparent);--color-card: #ffffff;--color-meal: color-mix(in srgb, var(--color-leaf) 12%, transparent);--font-display: "Bricolage Grotesque", ui-sans-serif, system-ui, sans-serif;--font-body: "Hanken Grotesk", ui-sans-serif, system-ui, sans-serif;--font-accent: "Caveat", ui-serif, cursive;--radius-card: 16px}*{box-sizing:border-box}body{margin:0;font-family:var(--font-body);background:var(--color-cream);color:var(--color-ink);-webkit-font-smoothing:antialiased}a{color:var(--color-brand-dark);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-leaf);outline-offset:2px;border-radius:4px}.font-display{font-family:var(--font-display)}.app-shell{min-height:100vh}.layout-inner{max-width:64rem;margin-inline:auto;padding-inline:1rem}.app-header{position:sticky;top:0;z-index:30;border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-cream) 85%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app-header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.75rem}.brand{font-family:var(--font-display);font-weight:800;font-size:1.25rem;letter-spacing:-.02em;color:var(--color-brand-dark);text-decoration:none}.brand:hover{text-decoration:none}.header-nav{display:flex;align-items:center;gap:1rem;font-size:.875rem}.header-nav-link{color:color-mix(in srgb,var(--color-ink) 55%,transparent);text-decoration:none;transition:color .15s ease}.header-nav-link:hover{color:var(--color-brand-dark);text-decoration:none}.header-nav-desktop{display:none}.btn-header-login{padding:.375rem .875rem;border-radius:.5rem;background:var(--color-brand);color:#fff;font-weight:500;text-decoration:none;transition:background .15s ease}.btn-header-login:hover{background:var(--color-brand-dark);text-decoration:none}.btn-install{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border-radius:.5rem;border:1px solid color-mix(in srgb,var(--color-brand) 30%,transparent);background:color-mix(in srgb,var(--color-brand) 8%,transparent);font-size:inherit;font-weight:500;color:var(--color-brand-dark);cursor:pointer;transition:background .15s ease}.btn-install:hover{background:color-mix(in srgb,var(--color-brand) 15%,transparent)}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border:1px solid color-mix(in srgb,var(--color-brand) 25%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-brand) 8%,transparent);font-family:var(--font-display);font-size:.875rem;font-weight:700;color:var(--color-brand-dark);cursor:pointer;transition:border-color .15s ease,background .15s ease}.user-menu-trigger:hover{border-color:color-mix(in srgb,var(--color-brand) 45%,transparent);background:color-mix(in srgb,var(--color-brand) 15%,transparent)}.user-menu-panel{position:absolute;right:0;top:2.75rem;z-index:50;width:14rem;overflow:hidden;border:1px solid color-mix(in srgb,var(--color-brand) 15%,transparent);border-radius:.75rem;background:#fff;box-shadow:0 10px 28px -8px color-mix(in srgb,var(--color-brand) 25%,transparent)}.user-menu-email{margin:0;padding:.625rem 1rem;border-bottom:1px solid color-mix(in srgb,var(--color-brand) 10%,transparent);font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 45%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-list{list-style:none;margin:0;padding:.25rem 0}.user-menu-item{display:flex;align-items:center;gap:.625rem;width:100%;padding:.625rem 1rem;border:none;background:none;font:inherit;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 75%,transparent);text-align:left;text-decoration:none;cursor:pointer;transition:background .15s ease,color .15s ease}.user-menu-item:hover{background:color-mix(in srgb,var(--color-brand) 8%,transparent);color:var(--color-brand-dark);text-decoration:none}.user-menu-logout{border-top:1px solid color-mix(in srgb,var(--color-brand) 10%,transparent)}.app-main{max-width:64rem;margin:0 auto;padding:1.5rem 1rem 6rem}.app-footer{max-width:64rem;margin:0 auto;padding:2.5rem 1rem;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 40%,transparent)}.app-footer a{color:color-mix(in srgb,var(--color-ink) 55%,transparent)}.bottom-nav{position:fixed;inset-inline:0;bottom:0;z-index:40;border-top:1px solid var(--color-border);background:color-mix(in srgb,#fff 95%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.bottom-nav-list{display:flex;align-items:stretch;justify-content:space-around;max-width:28rem;margin:0 auto;padding:0;list-style:none}.bottom-nav-item{flex:1}.bottom-nav-link{display:flex;flex-direction:column;align-items:center;gap:.125rem;padding:.625rem 0;font-size:.6875rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 45%,transparent);text-decoration:none;transition:color .15s ease}.bottom-nav-link:hover,.bottom-nav-link.active{color:var(--color-brand-dark);text-decoration:none}.page-heading{margin-bottom:1.5rem}.eyebrow{display:inline-flex;align-items:center;gap:.375rem;margin:0 0 .5rem;font-size:.6875rem;line-height:1;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-brand)}.eyebrow-dot{display:inline-block;width:.375rem;height:.375rem;border-radius:1px;background:var(--color-leaf);transform:rotate(45deg)}.page-title{margin:0;font-family:var(--font-display);font-size:1.875rem;font-weight:700;letter-spacing:-.02em;line-height:1.15}.page-subtitle{margin:.375rem 0 0;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.page-subtitle--spaced{margin-bottom:1.25rem}.card{border-radius:var(--radius-card);background:#fff;border:1px solid color-mix(in srgb,var(--color-brand) 12%,transparent);box-shadow:0 1px 2px #15231c0a,0 10px 28px -18px #0e5a3840;padding:1rem}.ui-badge{display:inline-flex;align-items:center;border-radius:999px;padding:.125rem .625rem;font-size:.75rem;font-weight:600}.ui-badge--meal{background:color-mix(in srgb,var(--color-leaf) 12%,transparent);color:var(--color-brand-dark)}.ui-badge--neutral{background:color-mix(in srgb,var(--color-ink) 6%,transparent);color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.ui-badge--promo{background:color-mix(in srgb,var(--color-tomato) 12%,transparent);color:var(--color-tomato-ink)}.ui-badge--active{background:var(--color-brand);color:#fff}.ui-badge--draft{background:color-mix(in srgb,var(--color-lemon) 25%,transparent);color:#7a5b00}.ui-badge--saved{background:color-mix(in srgb,var(--color-leaf) 15%,transparent);color:var(--color-brand-dark)}.back-link{display:inline-flex;align-items:center;gap:.25rem;margin-bottom:.75rem;border:none;background:none;padding:0;font:inherit;font-size:.875rem;font-weight:500;color:var(--color-brand-dark);cursor:pointer}.back-link:hover{text-decoration:underline}.stack{display:grid;gap:1rem}.field{display:grid;gap:.35rem;font-size:.9rem}.field input,.field select,.field textarea{padding:.55rem .65rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.75rem;font:inherit;background:#fff}fieldset.field{border:none;padding:0;margin:0}fieldset.field legend{margin-bottom:.5rem;font-weight:600}.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.35rem .75rem}.checkbox{display:flex;align-items:center;gap:.4rem;font-size:.875rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.pref-form{display:grid;gap:2rem}.pref-fieldset{border:none;padding:0;margin:0}.pref-fieldset>legend{font-size:.875rem;font-weight:600;margin-bottom:.25rem}.pref-hint{margin:0 0 .75rem;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 50%,transparent)}.pref-chain-grid{display:grid;gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}.pref-pill-grid{display:flex;flex-wrap:wrap;gap:.5rem}.pref-pill{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;border:1px solid color-mix(in srgb,var(--color-brand) 12%,transparent);border-radius:.75rem;background:#fff;padding:.5rem .75rem;font-size:.875rem;font-weight:500;transition:border-color .15s ease,background .15s ease}.pref-pill:has(:checked){border-color:var(--color-brand);background:color-mix(in srgb,var(--color-leaf) 7%,#fff)}.pref-pill--choice{padding:.375rem .875rem;border-radius:.5rem}.pref-pill input[type=checkbox],.pref-pill input[type=radio]{accent-color:var(--color-brand)}.pref-allergen-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.375rem .75rem}@media(min-width:640px){.pref-allergen-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.pref-allergen{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 75%,transparent)}.pref-ingredient-section{margin-top:2.5rem;padding-top:2rem;border-top:1px solid color-mix(in srgb,var(--color-brand) 12%,transparent)}.pref-chip{display:inline-flex;align-items:center;gap:.375rem;border-radius:999px;padding:.25rem .75rem;font-size:.875rem}.pref-chip--liked{border:1px solid color-mix(in srgb,var(--color-leaf) 35%,transparent);background:color-mix(in srgb,var(--color-leaf) 12%,#fff);color:var(--color-brand-dark)}.pref-chip--disliked{border:1px solid color-mix(in srgb,var(--color-tomato) 40%,transparent);background:color-mix(in srgb,var(--color-tomato) 10%,#fff);color:var(--color-tomato-ink)}.pref-chip button{border:none;background:none;padding:0;font:inherit;line-height:1;opacity:.6;cursor:pointer}.pref-chip button:hover{opacity:1}.pref-add-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem}.pref-add-row label{display:grid;gap:.25rem;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.pref-add-row select{min-width:10rem;padding:.5rem .65rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.5rem;font:inherit;background:#fff}.btn-primary{padding:.5rem 1rem;border:none;border-radius:.5rem;background:var(--color-brand);color:#fff;font-weight:600;font-size:.875rem;cursor:pointer;transition:background .15s ease}.btn-primary:hover:not(:disabled){background:var(--color-brand-dark)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;padding:.375rem 1rem;border:1px solid color-mix(in srgb,#000 15%,transparent);border-radius:.5rem;background:#fff;color:color-mix(in srgb,#000 70%,transparent);font-size:.875rem;font-weight:500;text-decoration:none;cursor:pointer;transition:border-color .15s ease}.btn-secondary:hover{border-color:color-mix(in srgb,#000 30%,transparent);text-decoration:none}.btn-link{border:none;background:none;color:var(--color-brand-dark);font:inherit;font-size:.875rem;cursor:pointer;text-decoration:underline}.btn-danger{padding:.55rem 1rem;border:1px solid #d64545;border-radius:.5rem;background:#fff5f5;color:#9b2226;cursor:pointer}.auth-card{max-width:24rem;margin:0 auto}.auth-footer{margin-top:1rem}.filter-row{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.filter-chip{padding:.375rem .875rem;border-radius:999px;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);background:#fff;font-size:.875rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 70%,transparent);cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.filter-chip:hover{border-color:color-mix(in srgb,var(--color-leaf) 50%,transparent);color:var(--color-brand-dark)}.filter-chip.active{border-color:var(--color-brand);background:var(--color-brand);color:#fff}.search-field{position:relative;margin-bottom:1rem}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);color:color-mix(in srgb,var(--color-ink) 35%,transparent);pointer-events:none}.search-input{width:100%;padding:.625rem 2.5rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.75rem;background:#fff;font:inherit;font-size:.875rem;color:var(--color-ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.search-input::placeholder{color:color-mix(in srgb,var(--color-ink) 35%,transparent)}.search-input:focus{border-color:color-mix(in srgb,var(--color-brand) 50%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-brand) 15%,transparent)}.search-clear{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;padding:.25rem;border:none;border-radius:999px;background:none;color:color-mix(in srgb,var(--color-ink) 40%,transparent);cursor:pointer}.search-clear:hover{background:color-mix(in srgb,var(--color-brand) 8%,transparent);color:var(--color-brand-dark)}.search-count{margin:0 0 .75rem;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 50%,transparent)}.error{color:#9b2226}.hint,.status-line{font-size:.875rem;color:var(--color-muted)}.onboarding-form,.section-gap{margin-top:1rem}.section-title{margin:0;font-size:1rem;font-weight:600}.section-title-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.section-heading{margin:0 0 .75rem;font-family:var(--font-display);font-size:1.125rem;font-weight:700}.page-title--sm{font-size:1.125rem}.note-sm{margin:0 0 .5rem;font-size:.75rem;color:var(--color-muted)}.meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:1rem;padding:1rem}.meta-grid__item dt{margin:0;font-size:.6875rem;font-weight:400;letter-spacing:.05em;text-transform:uppercase;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.meta-grid__item dd{margin:.125rem 0 0;font-weight:500;font-variant-numeric:tabular-nums}.content-columns{display:grid;grid-template-columns:1fr;gap:2rem;margin-top:1.5rem}.split-rows{list-style:none;margin:0;padding:0}.split-rows>li{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-bottom:.375rem;border-bottom:1px solid color-mix(in srgb,var(--color-brand) 8%,transparent);font-size:.875rem}.split-rows>li+li{margin-top:.375rem}.split-rows__main{min-width:0;overflow:hidden;text-overflow:ellipsis;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.split-rows__main--strong{font-weight:500;color:var(--color-ink)}.split-rows__aside{flex-shrink:0;font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.split-rows__hint{margin-left:.25rem;font-size:.75rem;font-weight:400;color:color-mix(in srgb,var(--color-ink) 35%,transparent)}.split-rows__lead{display:flex;min-width:0;align-items:center;gap:.5rem}.meta-grid__price{display:inline-flex;align-items:center;gap:.375rem}.ingredient-pref-hint{margin-bottom:.25rem}.ingredient-pref-toggle{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;padding:0;border-radius:999px;border:1px dashed color-mix(in srgb,var(--color-ink) 25%,transparent);background:transparent;font-size:1rem;line-height:1;color:color-mix(in srgb,var(--color-ink) 35%,transparent);cursor:pointer;transition:border-color .15s ease,color .15s ease}.ingredient-pref-toggle:hover:not(:disabled){border-color:var(--color-brand);color:var(--color-brand-dark)}.ingredient-pref-toggle:disabled{opacity:.5;cursor:not-allowed}.ingredient-pref-toggle--liked{border-color:transparent;color:var(--color-brand-dark)}.ingredient-pref-toggle--disliked{border-color:transparent;color:var(--color-tomato-ink)}.price-info{position:relative;display:inline-flex}.price-info-trigger{display:inline-flex;align-items:center;justify-content:center;width:1rem;height:1rem;padding:0;border:1px solid currentColor;border-radius:999px;background:transparent;font-size:.625rem;font-weight:700;line-height:1;color:inherit;opacity:.7;cursor:pointer;transition:opacity .15s ease,border-color .15s ease,background .15s ease,color .15s ease}.price-info-trigger:hover,.price-info-trigger--open{opacity:1}.price-info-trigger--open{border-color:var(--color-brand);background:var(--color-brand);color:#fff}.price-info-panel{position:absolute;right:0;top:1.5rem;z-index:30;display:block;width:18rem;max-width:min(18rem,calc(100vw - 2rem));padding:.75rem;text-align:left;font-size:.75rem;font-weight:400;line-height:1.625;color:color-mix(in srgb,var(--color-ink) 75%,transparent);box-shadow:0 10px 28px -8px color-mix(in srgb,var(--color-brand) 25%,transparent)}.price-info-title{margin:0 0 .5rem;font-weight:600;color:var(--color-ink)}.price-info-lead{margin:0 0 .5rem;color:color-mix(in srgb,var(--color-ink) 55%,transparent)}.price-info-lines{list-style:none;margin:0 0 .5rem;padding:0 0 .5rem;border-bottom:1px solid color-mix(in srgb,var(--color-brand) 10%,transparent)}.price-info-lines li{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.price-info-lines li+li{margin-top:.375rem}.price-info-line-main{min-width:0}.price-info-star{color:var(--color-brand-dark)}.price-info-qty{color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.price-info-line-price{flex-shrink:0;font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.price-info-muted{margin:0 0 .5rem;color:color-mix(in srgb,var(--color-ink) 50%,transparent)}.price-info-totals{display:grid;gap:.25rem;font-variant-numeric:tabular-nums}.price-info-total-row{display:flex;justify-content:space-between;gap:.5rem}.price-info-total-value{font-weight:500;color:var(--color-ink)}.price-info-foot{margin:.5rem 0 0;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.price-info-link{display:block;margin-top:.5rem;font-weight:500;color:var(--color-brand-dark);text-decoration:none}.price-info-link:hover{text-decoration:underline}.steps-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.steps-list>li{display:flex;gap:.75rem;font-size:.875rem;line-height:1.625}.steps-list__num{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:999px;background:var(--color-brand);color:#fff;font-size:.75rem;font-weight:600}.steps-list__text{min-width:0;padding-top:.0625rem}.detail-header{display:flex;align-items:flex-start;gap:1rem;margin-top:.75rem}.detail-icon{display:none;flex-shrink:0;align-items:center;justify-content:center;padding:.75rem;border-radius:1rem;background:color-mix(in srgb,var(--color-leaf) 10%,transparent)}.detail-head{min-width:0;flex:1}.detail-head .recipe-badges{margin-bottom:.5rem}.detail-title{margin:0;font-family:var(--font-display);font-size:1.875rem;font-weight:800;letter-spacing:-.02em;line-height:1.15}.inline-note{margin:1rem 0 0;font-size:.875rem}.inline-note strong,.inline-note-label{font-weight:500}.member-list{list-style:none;margin:0;padding:0}.member-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-top:1px solid var(--color-border)}.member-row:first-child{border-top:none}.banner{padding:.75rem 1rem;border-radius:.75rem;font-size:.875rem}.banner.success{border:1px solid color-mix(in srgb,var(--color-leaf) 40%,transparent);background:color-mix(in srgb,var(--color-leaf) 10%,transparent);color:var(--color-brand-dark)}.banner.warning{border:1px solid color-mix(in srgb,var(--color-lemon) 60%,transparent);background:color-mix(in srgb,var(--color-lemon) 12%,transparent);color:#7a5b00}.banner-info{border:1px solid color-mix(in srgb,var(--color-brand) 25%,transparent);background:color-mix(in srgb,var(--color-brand) 5%,transparent);color:var(--color-brand-dark)}.banner-link{margin-left:.25rem;font-weight:500;text-decoration:underline;text-underline-offset:2px;color:inherit}.banner-link:hover{opacity:.85;text-decoration:underline}.detail-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.detail-actions{display:flex;flex-shrink:0;align-items:center;gap:.5rem}.detail-action-btn{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.5rem;background:#fff;font:inherit;font-size:.875rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 70%,transparent);cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.detail-action-btn:hover:not(:disabled){border-color:color-mix(in srgb,var(--color-brand) 40%,transparent);color:var(--color-brand-dark)}.detail-action-btn:disabled{opacity:.6;cursor:not-allowed}.detail-action-btn--active,.detail-action-btn--saved{border-color:color-mix(in srgb,var(--color-brand) 40%,transparent);background:color-mix(in srgb,var(--color-brand) 10%,transparent);color:var(--color-brand-dark)}.detail-action-btn--saved{border-color:color-mix(in srgb,var(--color-tomato) 40%,transparent);background:color-mix(in srgb,var(--color-tomato) 10%,transparent);color:var(--color-tomato-ink)}.detail-action-btn--saved:hover:not(:disabled){border-color:color-mix(in srgb,var(--color-tomato) 40%,transparent);color:var(--color-tomato-ink)}.invite-code{font-family:ui-monospace,monospace;font-size:1.25rem;letter-spacing:.2em;font-weight:700}.button-row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.join-input{width:8rem;padding:.55rem .65rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.75rem;font-family:ui-monospace,monospace;text-transform:uppercase;letter-spacing:.15em}.pref-subtitle{margin:0 0 .5rem;font-size:.875rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.pref-page{max-width:42rem;margin:0 auto}.produce-icon{width:3rem;height:3rem}@media(min-width:640px){.detail-icon{display:inline-flex}.meta-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1024px){.content-columns{grid-template-columns:1fr 1.4fr}}.recipe-grid{display:grid;grid-template-columns:1fr;gap:1rem}.recipe-card{display:flex;flex-direction:column;height:100%}.recipe-card-top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.recipe-badges{display:flex;flex-wrap:wrap;gap:.25rem}.recipe-title{margin:0 0 .5rem;font-family:var(--font-display);font-size:1rem;font-weight:700;line-height:1.35}.recipe-title a{color:inherit;text-decoration:none}.recipe-title a:hover{text-decoration:underline}.price-chip{display:inline-flex;align-items:center;gap:.25rem;padding:.125rem .625rem;border-radius:999px;background:color-mix(in srgb,var(--color-brand) 8%,transparent);font-size:.75rem;font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-brand-dark);white-space:nowrap}.price-chip.promo{background:color-mix(in srgb,var(--color-lemon) 25%,transparent);color:#7a5b00}.meta{color:var(--color-muted);font-size:.75rem}.recipe-card-footer{margin-top:auto}.offer-promos{display:flex;flex-wrap:wrap;gap:.35rem;margin:0 0 .5rem}.recipe-card-selected{border-width:2px;border-color:var(--color-brand);background:color-mix(in srgb,var(--color-leaf) 5%,transparent)}.offer-toggle{width:100%;margin-top:.75rem;padding:.375rem .75rem;border-radius:.5rem;border:none;background:var(--color-brand);color:#fff;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .15s ease}.offer-toggle:hover:not(:disabled){background:var(--color-brand-dark)}.offer-toggle.selected{border:1px solid color-mix(in srgb,var(--color-brand) 40%,transparent);background:transparent;color:var(--color-brand-dark)}.offer-toggle.selected:hover:not(:disabled){border-color:var(--color-brand)}.offer-toggle:disabled{opacity:.6;cursor:not-allowed}.plan-form{display:grid;gap:.75rem;max-width:24rem;margin-bottom:1.5rem}.plan-header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:1rem}.plan-meta{margin:0;font-size:.875rem}.plan-meta.subtle{color:var(--color-muted)}.plan-summary-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.5rem;padding:.75rem 1rem;border-radius:.75rem;background:color-mix(in srgb,var(--color-leaf) 7%,transparent);font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.plan-actions{margin-bottom:1rem}.plan-items{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.plan-item{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 0;border-top:1px solid var(--color-border)}.plan-item:first-child{border-top:none}.plan-item.cooked{opacity:.65}.plan-item-actions{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.plan-saving{font-size:.8125rem;color:var(--color-brand-dark);white-space:nowrap}.alt-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.alt-card{display:flex;flex-direction:column;gap:.5rem}.alt-header{display:flex;justify-content:space-between;gap:1rem;align-items:center}.alt-title{margin:0;font-size:1.125rem}.alt-promos{display:flex;flex-wrap:wrap;gap:.35rem;margin:0}.offer-filters{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-bottom:1.25rem}.offer-filters .field{min-width:10rem}.active-plan-card{margin-bottom:1.5rem}.active-plan-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.75rem}.active-plan-dishes{display:flex;flex-wrap:wrap;gap:.375rem;list-style:none;margin:.75rem 0 0;padding:0}.active-plan-dishes a{display:inline-block;padding:.25rem .75rem;border-radius:999px;background:color-mix(in srgb,var(--color-leaf) 10%,transparent);font-size:.75rem;font-weight:500;text-decoration:none}.active-plan-dishes a:hover{background:color-mix(in srgb,var(--color-leaf) 20%,transparent)}.offer-section-title{margin-bottom:.75rem}.offer-cta{margin-top:1.5rem;padding:1rem;text-align:center;background:color-mix(in srgb,var(--color-leaf) 7%,transparent);border-color:color-mix(in srgb,var(--color-leaf) 20%,transparent)}.offer-cta p{margin:0 0 .75rem;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.shopping-page{display:grid;gap:1rem;min-width:0}.shopping-header{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;margin-top:.75rem}.shopping-toolbar{display:flex;flex-wrap:wrap;gap:.5rem}.btn-shopping-secondary{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:1px solid color-mix(in srgb,var(--color-ink) 15%,transparent);border-radius:.5rem;background:#fff;font:inherit;font-size:.875rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 70%,transparent);cursor:pointer;transition:border-color .15s ease,color .15s ease}.btn-shopping-secondary:hover:not(:disabled){border-color:color-mix(in srgb,var(--color-ink) 30%,transparent);color:var(--color-brand-dark)}.btn-shopping-secondary:disabled{opacity:.45;cursor:not-allowed}.btn-shopping-danger{padding:.375rem .75rem;border:none;border-radius:.5rem;background:var(--color-tomato);font:inherit;font-size:.875rem;font-weight:500;color:#fff;cursor:pointer}.btn-shopping-danger:disabled{opacity:.45;cursor:not-allowed}.shopping-chain-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.shopping-chain-form.is-disabled{opacity:.55;pointer-events:none}.shopping-chain-label{display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.shopping-chain-label select{padding:.375rem .75rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.5rem;font:inherit;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 80%,transparent);background:#fff}.shopping-chain-hint{font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.shopping-stale-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;padding:.75rem 1rem;border-radius:.75rem;border:1px solid color-mix(in srgb,var(--color-tomato) 25%,transparent);background:color-mix(in srgb,var(--color-tomato) 7%,transparent);font-size:.875rem;color:var(--color-tomato-ink)}.shopping-auth-banner{padding:.75rem 1rem;border-radius:.75rem;border:1px solid color-mix(in srgb,var(--color-tomato) 25%,transparent);background:color-mix(in srgb,var(--color-tomato) 7%,transparent);font-size:.875rem;color:var(--color-tomato-ink)}.shopping-summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem 1.5rem;padding:.75rem 1rem;border-radius:.75rem;background:color-mix(in srgb,var(--color-leaf) 7%,transparent);font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.shopping-disclaimer{margin:.5rem 0 1.5rem;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.shopping-hide-done{margin-left:auto;border:none;background:none;font:inherit;font-size:.875rem;font-weight:500;color:var(--color-brand-dark);cursor:pointer;text-decoration:none}.shopping-hide-done:hover{text-decoration:underline}.saving-badge{padding:.125rem .75rem;border-radius:999px;background:color-mix(in srgb,var(--color-lemon) 25%,transparent);color:#7a5b00;font-weight:500}.offline-banner{padding:.75rem 1rem;border-radius:.75rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);background:color-mix(in srgb,var(--color-leaf) 7%,transparent);font-size:.9375rem;color:var(--color-muted)}.pending-badge{padding:.125rem .75rem;border-radius:999px;background:color-mix(in srgb,var(--color-brand) 10%,transparent);font-size:.75rem;color:var(--color-brand-dark)}.shopping-empty-msg{padding:1.5rem;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.shopping-groups{display:grid;gap:1.5rem}.shopping-category{margin:0 0 .5rem;font-size:.875rem;font-weight:600;text-transform:capitalize;color:var(--color-brand-dark)}.shopping-list-card{list-style:none;margin:0;padding:0;overflow:hidden}.shopping-item{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem;padding:.625rem .75rem;border-bottom:1px solid color-mix(in srgb,var(--color-brand) 8%,transparent);font-size:.875rem}.shopping-item:last-child{border-bottom:none}.shopping-item-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;min-width:0;flex:1}.shopping-check{display:inline-flex;align-items:baseline;gap:.5rem;min-width:0;cursor:pointer}.shopping-toggle{display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;flex-shrink:0;border:1px solid color-mix(in srgb,var(--color-ink) 25%,transparent);border-radius:.25rem;font-size:.75rem;color:transparent;transition:border-color .15s ease,background .15s ease,color .15s ease}.shopping-toggle.checked{border-color:var(--color-brand);background:var(--color-brand);color:#fff}.shopping-print-box{display:none;width:.75rem;height:.75rem;flex-shrink:0;align-self:center;border:1px solid color-mix(in srgb,var(--color-ink) 60%,transparent)}.shopping-name{font-weight:500;color:color-mix(in srgb,var(--color-ink) 80%,transparent)}.shopping-name.is-checked{color:color-mix(in srgb,var(--color-ink) 40%,transparent);text-decoration:line-through}.shopping-qty{margin-left:.5rem;font-weight:400;color:color-mix(in srgb,var(--color-ink) 55%,transparent)}.shopping-checked-by{font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.shopping-item-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.promo-chip{padding:.125rem .5rem;border-radius:999px;background:color-mix(in srgb,var(--color-tomato) 10%,transparent);font-size:.75rem;color:var(--color-tomato-ink)}.promo-loyalty{margin-left:.25rem;font-weight:500;white-space:nowrap}.shopping-delete{border:none;background:none;font:inherit;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 30%,transparent);cursor:pointer;transition:color .15s ease}.shopping-delete:hover:not(:disabled){color:#9b2226}.shopping-delete:disabled{opacity:.4;cursor:not-allowed}.shopping-delete--icon{font-size:.875rem}.shopping-pantry{margin-top:2rem}.shopping-pantry-title{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:var(--color-brand-dark)}.shopping-pantry-hint{margin:0 0 .5rem;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.shopping-pantry-list{list-style:none;margin:0;padding:0;border:1px solid color-mix(in srgb,var(--color-brand) 12%,transparent);border-radius:.75rem;background:color-mix(in srgb,var(--color-ink) 2%,transparent);overflow:hidden}.shopping-pantry-item{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.25rem 1rem;padding:.5rem .75rem;border-bottom:1px solid color-mix(in srgb,var(--color-brand) 8%,transparent);font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.shopping-pantry-item:last-child{border-bottom:none}.shopping-add{margin-top:1.5rem;padding:1rem;border:1px dashed color-mix(in srgb,var(--color-brand) 25%,transparent);border-radius:1rem;background:#fff}.shopping-add[disabled]{opacity:.55;pointer-events:none}.shopping-add form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.5rem}.shopping-add-label{display:flex;flex:1 1 12rem;flex-direction:column;gap:.25rem;font-size:.75rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.shopping-add-label--narrow{flex:0 1 5rem}.shopping-add-label input,.shopping-add-label select{padding:.375rem .75rem;border:1px solid color-mix(in srgb,var(--color-brand) 20%,transparent);border-radius:.5rem;font:inherit;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 80%,transparent);background:#fff}.shopping-item-row{padding:.65rem 1rem}.shopping-item-row.checked .shopping-name{opacity:.45;text-decoration:line-through}.shopping-items{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.shopping-empty{display:grid;gap:1rem}@media print{.shopping-toolbar,.shopping-chain-form,.shopping-stale-banner,.shopping-auth-banner,.offline-banner,.shopping-hide-done,.shopping-toggle,.shopping-delete,.shopping-add,.shopping-disclaimer,.shopping-pantry,.pending-badge{display:none!important}.shopping-print-box{display:inline-block!important}.shopping-summary{background:transparent;padding:0;margin-bottom:.5rem}.shopping-groups{columns:2;column-gap:2rem}.shopping-group{break-inside:avoid;margin-bottom:.75rem}.shopping-category{text-decoration:underline;color:#000}.shopping-list-card{border:none;box-shadow:none;background:transparent}.shopping-item{break-inside:avoid;padding:.25rem 0;border-color:color-mix(in srgb,#000 15%,transparent)}.shopping-name{font-weight:400;color:#000}.shopping-qty{color:color-mix(in srgb,#000 70%,transparent)}.promo-chip{background:transparent;padding:0;color:color-mix(in srgb,#000 70%,transparent)}}.dashboard-grid{display:grid;grid-template-columns:1fr;gap:1.5rem}.dashboard-card-title{margin:0 0 .75rem;font-size:.875rem;font-weight:600}.dashboard-context{margin-bottom:1.5rem;padding:.75rem 1rem;border-radius:.75rem;background:color-mix(in srgb,var(--color-brand) 5%,transparent);font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.to-cook-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.to-cook-item{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem 0;border-top:1px solid var(--color-border);font-size:.875rem}.to-cook-item:first-child{border-top:none}.admin-actions,.admin-stats{margin-bottom:1rem}.admin-stat-row{display:flex;flex-wrap:wrap;gap:1rem 1.5rem;font-size:.9375rem;color:var(--color-muted)}.admin-status-list,.admin-review-list,.admin-run-list{list-style:none;margin:.75rem 0 0;padding:0}.admin-review-item,.admin-run-item{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;padding:.75rem 0;border-top:1px solid var(--color-border)}.admin-review-item:first-child,.admin-run-item:first-child{border-top:none}.admin-review-main{display:grid;gap:.25rem}.admin-review-suggestion{font-size:.875rem;color:var(--color-brand-dark)}.admin-run-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;font-size:.875rem}.admin-run-error{color:#9b2226}.badge-ok{background:color-mix(in srgb,var(--color-leaf) 15%,transparent);color:var(--color-brand-dark)}.badge-partial{background:color-mix(in srgb,var(--color-lemon) 25%,transparent);color:#7a5b00}.badge-error{background:#fff5f5;color:#9b2226}.badge-running,.badge-dry_run{background:#f0f0f0;color:var(--color-muted)}.landing{display:grid;gap:5rem;padding-bottom:1rem;min-width:0;overflow-x:clip}.landing-hero{display:grid;gap:2rem;align-items:center;min-width:0}.landing-sample{min-width:0;max-width:100%}.landing-hero-copy{text-align:center}.landing-title{margin:.75rem 0 0;font-family:var(--font-display);font-size:clamp(2rem,5vw,3rem);font-weight:800;line-height:1.05;letter-spacing:-.02em}.landing-accent{position:relative;color:var(--color-brand-dark);white-space:nowrap}.landing-accent:after{content:"";position:absolute;left:0;right:0;bottom:-.15rem;height:.5rem;border-radius:999px;background:color-mix(in srgb,var(--color-lemon) 50%,transparent);z-index:-1}.landing-tagline{margin:1rem 0 0;font-family:var(--font-accent);font-size:1.5rem;color:var(--color-tomato-ink)}.landing-lead{margin:.75rem auto 0;max-width:28rem;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.landing-cta-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:1.25rem;margin-top:1.75rem}.landing-cta-row--center{justify-content:center}.btn-landing-primary,.btn-landing-inverse{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;border-radius:.75rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:background .15s ease}.btn-landing-primary{background:var(--color-brand);color:#fff;box-shadow:0 1px 2px #15231c0a}.btn-landing-primary:hover{background:var(--color-brand-dark);text-decoration:none}.btn-landing-inverse{background:#fff;color:var(--color-brand-dark)}.btn-landing-inverse:hover{background:var(--color-lemon);text-decoration:none}.landing-link{font-size:.875rem;font-weight:600;color:var(--color-brand-dark);text-decoration:none}.landing-link:hover{text-decoration:underline}.landing-link--inverse{color:#ffffffe6}.landing-link--inverse:hover{color:#fff}.landing-note{margin:.75rem 0 0;font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.landing-sample-title{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.landing-meals{list-style:none;margin:0;padding:0;display:grid;gap:.625rem;min-width:0}.landing-meal{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;border:1px solid color-mix(in srgb,var(--color-brand) 10%,transparent);border-radius:.75rem;background:var(--color-cream);min-width:0}.landing-meal .price-chip{flex-shrink:0;margin-top:.125rem}.landing-meal-main{min-width:0;flex:1}.landing-meal-labels{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:.125rem}.landing-meal-type{font-size:.625rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:color-mix(in srgb,var(--color-ink) 45%,transparent)}.landing-meal-promo{padding:.125rem .375rem;border-radius:999px;background:color-mix(in srgb,var(--color-tomato) 12%,transparent);font-size:.625rem;font-weight:600;color:var(--color-tomato-ink)}.landing-meal-title{margin:0;font-size:.875rem;font-weight:500;color:color-mix(in srgb,var(--color-ink) 80%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:639px){.landing-meal{flex-direction:column;align-items:stretch;gap:.5rem}.landing-meal .price-chip{align-self:flex-start;margin-top:0}.landing-meal-title{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}}.landing-sample-foot{margin:.75rem 0 0;padding-top:.75rem;border-top:1px solid color-mix(in srgb,var(--color-brand) 10%,transparent);font-size:.75rem;color:color-mix(in srgb,var(--color-ink) 50%,transparent)}.landing-section-title{margin:0 0 1.5rem;text-align:center}.landing-values{list-style:none;margin:0;padding:0;display:grid;gap:1.25rem}.landing-value{text-align:center}.landing-value h3{margin:.75rem 0 0;font-family:var(--font-display);font-size:1.125rem}.landing-value p{margin:.375rem 0 0;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.landing-value-icon{display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:1rem;background:color-mix(in srgb,var(--color-leaf) 12%,transparent);color:var(--color-brand-dark)}.landing-compare{display:grid;gap:1rem}.landing-compare h3{margin:0;font-family:var(--font-display);font-size:1.125rem}.landing-compare ul{list-style:none;margin:.75rem 0 0;padding:0;display:grid;gap:.5rem}.landing-compare li{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 70%,transparent)}.landing-compare-highlight{border-color:color-mix(in srgb,var(--color-leaf) 35%,transparent);background:color-mix(in srgb,var(--color-leaf) 4%,transparent)}.landing-compare-highlight h3{color:var(--color-brand-dark)}.landing-compare-highlight svg{color:var(--color-leaf);flex-shrink:0}.landing-steps{list-style:none;margin:0;padding:0;display:grid;gap:1.5rem}.landing-steps li{text-align:center}.landing-step-num{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;background:var(--color-brand);font-family:var(--font-display);font-size:.875rem;font-weight:700;color:#fff}.landing-steps h3{margin:.75rem 0 0;font-family:var(--font-display)}.landing-steps p{margin:.25rem 0 0;font-size:.875rem;color:color-mix(in srgb,var(--color-ink) 60%,transparent)}.landing-final{padding:3rem 1.5rem;text-align:center;background:var(--color-brand);color:#fff;border:none;box-shadow:none}.landing-final h2{margin:0;font-family:var(--font-display);font-size:1.5rem;font-weight:800}.landing-final>p{margin:.5rem auto 0;max-width:28rem;font-size:.875rem;color:#fffc}.landing-final-foot{margin:1.5rem 0 0;font-size:.75rem;color:#ffffff8c}@media(min-width:640px){.landing-hero{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}.landing-hero-copy{text-align:left}.landing-lead{margin-left:0}.landing-values{grid-template-columns:repeat(3,minmax(0,1fr))}.landing-compare{grid-template-columns:repeat(2,minmax(0,1fr))}.landing-steps{grid-template-columns:repeat(3,minmax(0,1fr))}}.tabular-nums{font-variant-numeric:tabular-nums}@media(min-width:640px){.header-nav-desktop{display:inline}.app-main{padding-bottom:1.5rem}.bottom-nav{display:none}.recipe-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1024px){.recipe-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@media print{.app-header,.app-footer,.bottom-nav{display:none!important}.app-main{max-width:none;padding:0}}
