/* ==========================================================================
   Chef Lesly · Executive Box Lunch · Fort Worth
   Production stylesheet — Dynasty Cloudflare Pages
   Last refactored: 2026-06-09 (Talos build)
   ========================================================================== */

/* =========================================================
   DESIGN TOKENS — pastel pink, locked per Don's brief
   ========================================================= */
:root{
  --pink:#b03ea0;
  --pink-soft:#f6e3f1;
  --pink-deep:#8a2c7d;
  --cream:#fbf6f3;
  --ink:#1f1419;
  --ink-muted:#5a4a55;
  --surface:#ffffff;
  --surface-2:#fbf3f7;
  --border:#ecd9e6;
  --divider:#f0e0ea;

  --font-display:'Playfair Display', Georgia, serif;
  --font-ui:'Manrope', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;

  --text-xs:.78rem;
  --text-sm:.92rem;
  --text-base:1rem;
  --text-lg:1.2rem;
  --text-xl:1.45rem;
  --text-2xl:1.85rem;
  --text-3xl:2.4rem;
  --text-display:clamp(2.4rem, 5.4vw, 4.4rem);

  --space-1:.4rem;
  --space-2:.65rem;
  --space-3:1rem;
  --space-4:1.4rem;
  --space-5:1.85rem;
  --space-6:2.5rem;
  --space-7:3.5rem;
  --space-8:5rem;

  --radius-sm:.4rem;
  --radius-md:.7rem;
  --radius-lg:1rem;
  --radius-xl:1.4rem;
  --radius-full:999px;

  --shadow-sm:0 1px 2px rgba(31,20,25,.06);
  --shadow-md:0 12px 32px rgba(176,62,160,.10), 0 2px 6px rgba(31,20,25,.05);
  --shadow-lg:0 30px 70px rgba(176,62,160,.18), 0 4px 12px rgba(31,20,25,.08);

  --transition:200ms cubic-bezier(.2,.7,.2,1);
  --color-primary:var(--pink);
  --color-primary-highlight:var(--pink-soft);
  --color-text:var(--ink);
  --color-text-muted:var(--ink-muted);
  --color-surface:var(--surface);
  --color-surface-2:var(--surface-2);
  --color-border:var(--border);
  --color-divider:var(--divider);
}
[data-theme="dark"]{
  --pink:#de72cb;
  --pink-soft:#3a1d35;
  --pink-deep:#f3a3e1;
  --cream:#0f0a0d;
  --ink:#f7eaf2;
  --ink-muted:#c2adb9;
  --surface:#1a1116;
  --surface-2:#22161e;
  --border:#3a2532;
  --divider:#3a2532;

  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow-md:0 12px 32px rgba(0,0,0,.45), 0 2px 6px rgba(0,0,0,.35);
  --shadow-lg:0 30px 70px rgba(0,0,0,.55), 0 4px 12px rgba(0,0,0,.35);
}

/* =========================================================
   BASE
   ========================================================= */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
html, body{margin:0;padding:0;overflow-x:hidden}
body{
  font-family:var(--font-ui);
  color:var(--color-text);
  background:var(--cream);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--pink);text-decoration:none;transition:color var(--transition)}
a:hover{color:var(--pink-deep)}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-text);line-height:1.15;margin:0;letter-spacing:-.01em}
h1{font-size:var(--text-display);font-weight:700}
h2{font-size:clamp(2rem, 3.6vw, 2.9rem);font-weight:700}
h3{font-size:var(--text-xl);font-weight:600}
p{margin:0}

.shell{max-width:1180px;margin:0 auto;padding:0 var(--space-5)}
.section{padding:var(--space-8) 0}
.section-head{display:grid;gap:var(--space-3);max-width:760px;margin-bottom:var(--space-6)}
.eyebrow{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .85rem;border-radius:var(--radius-full);background:var(--pink-soft);color:var(--pink);font-size:var(--text-xs);font-weight:800;letter-spacing:.08em;text-transform:uppercase;width:fit-content}
.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}

/* =========================================================
   BUTTONS
   ========================================================= */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.95rem 1.6rem;border-radius:var(--radius-full);font-weight:800;font-size:var(--text-sm);font-family:var(--font-ui);border:1.5px solid transparent;cursor:pointer;transition:transform var(--transition), box-shadow var(--transition), background var(--transition), color var(--transition);text-decoration:none;line-height:1;letter-spacing:.01em}
.btn-primary{background:var(--pink);color:#fff;border-color:var(--pink);box-shadow:var(--shadow-md)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);background:var(--pink-deep);border-color:var(--pink-deep);color:#fff}
[data-theme="dark"] .btn-primary{color:#1a0f17}
[data-theme="dark"] .btn-primary:hover{color:#1a0f17}
.btn-ghost{background:transparent;color:var(--color-text);border-color:var(--color-border)}
.btn-ghost:hover{border-color:var(--pink);color:var(--pink);transform:translateY(-2px)}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none}

/* =========================================================
   NAV
   ========================================================= */
.nav{position:sticky;top:0;z-index:50;background:color-mix(in oklab, var(--cream) 88%, transparent);backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid var(--color-border)}
.nav-inner{display:flex;align-items:center;justify-content:space-between;height:72px;gap:var(--space-4)}
.brand{display:flex;align-items:center;gap:.7rem;font-family:var(--font-display);font-weight:700;font-size:1.15rem;color:var(--color-text)}
.brand-mark{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--pink) 0%, var(--pink-deep) 100%);color:#fff;font-family:var(--font-display);font-style:italic;font-size:1.3rem;font-weight:600;box-shadow:var(--shadow-sm)}
.brand-name{display:flex;flex-direction:column;line-height:1.05}
.brand-name small{font-family:var(--font-ui);font-weight:600;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--color-text-muted)}

.nav-links{display:flex;align-items:center;gap:var(--space-5);list-style:none;margin:0;padding:0}
.nav-links a{color:var(--color-text);font-weight:700;font-size:var(--text-sm);position:relative;padding:.5rem 0}
.nav-links a::after{content:"";position:absolute;left:50%;right:50%;bottom:0;height:2px;background:var(--pink);transition:left var(--transition), right var(--transition)}
.nav-links a:hover::after{left:0;right:0}

.nav-actions{display:flex;align-items:center;gap:var(--space-3)}
.theme-toggle{width:42px;height:42px;border-radius:50%;border:1px solid var(--color-border);background:var(--surface);color:var(--color-text);cursor:pointer;display:grid;place-items:center;transition:all var(--transition)}
.theme-toggle:hover{border-color:var(--pink);color:var(--pink)}
[data-theme="light"] .theme-toggle .icon-sun{display:block}
[data-theme="light"] .theme-toggle .icon-moon{display:none}
[data-theme="dark"] .theme-toggle .icon-sun{display:none}
[data-theme="dark"] .theme-toggle .icon-moon{display:block}
.nav-toggle{display:none;width:42px;height:42px;border-radius:50%;border:1px solid var(--color-border);background:var(--surface);cursor:pointer;color:var(--color-text)}
@media (max-width:880px){
  .nav-links,.nav-actions .btn{display:none}
  .nav-toggle{display:grid;place-items:center}
}
/* mobile drawer */
.drawer{position:fixed;top:72px;right:0;width:min(320px,100vw);height:calc(100vh - 72px);background:var(--cream);transform:translateX(100%);transition:transform var(--transition),visibility var(--transition);z-index:49;border-left:1px solid var(--color-border);padding:var(--space-6) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);visibility:hidden;pointer-events:none;overflow-y:auto;box-shadow:-12px 0 32px rgba(0,0,0,.12)}
.drawer-backdrop{position:fixed;inset:72px 0 0 0;background:rgba(0,0,0,.4);z-index:48;opacity:0;visibility:hidden;transition:opacity var(--transition),visibility var(--transition)}
.drawer-backdrop.is-open{opacity:1;visibility:visible}
.drawer.is-open{transform:translateX(0);visibility:visible;pointer-events:auto}
.drawer a{color:var(--color-text);font-weight:700;font-size:1.1rem;padding:.6rem 0;border-bottom:1px solid var(--color-divider)}
.drawer .btn{margin-top:var(--space-4)}

/* =========================================================
   HERO
   ========================================================= */
.hero{padding:calc(var(--space-7) + 24px) 0 var(--space-8);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;top:-25%;right:-10%;width:60vw;height:60vw;background:radial-gradient(circle, var(--pink-soft) 0%, transparent 60%);pointer-events:none;z-index:0}
.hero-grid{display:grid;gap:var(--space-7);align-items:center;position:relative;z-index:1}
@media (min-width:980px){.hero-grid{grid-template-columns:1.05fr .95fr}}
.hero-text .eyebrow{margin-bottom:var(--space-3)}
.hero-text h1{margin-bottom:var(--space-4)}
.hero-text .lede{font-size:var(--text-lg);color:var(--color-text-muted);max-width:48ch;margin-bottom:var(--space-5);line-height:1.55}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-5)}
.hero-tags{display:flex;flex-wrap:wrap;gap:.5rem}
.hero-tags span{padding:.35rem .85rem;border-radius:var(--radius-full);background:var(--surface);border:1px solid var(--color-border);color:var(--color-text-muted);font-size:.78rem;font-weight:700}

.hero-media{position:relative}
.hero-avatar{
  width:100%;
  aspect-ratio:1/1;
  max-width:520px;
  margin:0 auto;
  border-radius:var(--radius-xl);
  overflow:hidden;
  background:var(--pink-soft);
  box-shadow:var(--shadow-lg);
  position:relative;
}
.hero-avatar img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.hero-quote{
  position:absolute;
  bottom:-28px;
  left:-12px;
  right:18%;
  background:var(--surface);
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  padding:var(--space-4) var(--space-5);
  box-shadow:var(--shadow-md);
  font-family:var(--font-display);
  font-style:italic;
  font-size:1.05rem;
  color:var(--color-text);
  line-height:1.45;
}
.hero-quote::before{content:"\201C";position:absolute;top:-18px;left:18px;font-family:var(--font-display);color:var(--pink);font-size:4rem;line-height:1;opacity:.7}
.hero-quote cite{display:block;margin-top:.6rem;font-style:normal;font-family:var(--font-ui);font-weight:700;font-size:.78rem;color:var(--pink);letter-spacing:.06em;text-transform:uppercase}
@media (max-width:560px){
  .hero-quote{position:static;margin-top:var(--space-4);right:0;left:0}
}

/* =========================================================
   STORY
   ========================================================= */
.story{background:var(--surface);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}
.story-grid{display:grid;gap:var(--space-6);align-items:center}
@media (min-width:880px){.story-grid{grid-template-columns:1fr 1.2fr}}
.story-photo{aspect-ratio:4/5;border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md);background:var(--pink-soft)}
.story-photo img{width:100%;height:100%;object-fit:cover}
.story-body p{color:var(--color-text-muted);font-size:var(--text-base);margin-bottom:var(--space-3);max-width:62ch}
.story-body p:last-child{margin-bottom:0}
.story-body h2{margin-bottom:var(--space-4)}
.story-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--color-divider)}
.story-stats div{display:flex;flex-direction:column;gap:.2rem}
.story-stats strong{font-family:var(--font-display);font-size:1.6rem;color:var(--pink)}
.story-stats span{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:700;letter-spacing:.04em;text-transform:uppercase}

/* =========================================================
   MENU SHOWCASE
   ========================================================= */
.menu{background:var(--cream)}
.menu-feature{display:grid;gap:var(--space-6);align-items:start;margin-bottom:var(--space-8)}
@media (min-width:880px){.menu-feature{grid-template-columns:1.1fr 1fr}}
.menu-feature.reverse{direction:rtl}
.menu-feature.reverse > *{direction:ltr}
.menu-photo{aspect-ratio:3/2;border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-lg)}
.menu-photo img{width:100%;height:100%;object-fit:cover}
.menu-content h3{font-size:var(--text-2xl);margin-bottom:var(--space-2)}
.menu-content > .eyebrow{margin-bottom:var(--space-3)}
.menu-content > p.lead{color:var(--color-text-muted);margin-bottom:var(--space-4);font-size:var(--text-base)}

.menu-section-head{font-family:var(--font-display);font-size:var(--text-lg);margin:var(--space-5) 0 var(--space-2);color:var(--pink)}
.menu-section-head.lg{margin-top:var(--space-6)}
.menu-section-note{font-size:var(--text-sm);color:var(--color-text);margin:0 0 var(--space-3);padding:.6rem .85rem;border-left:3px solid var(--pink);background:var(--surface-2);border-radius:var(--radius-sm)}
.menu-section-note strong{font-weight:800}

.menu-list{display:flex;flex-direction:column;gap:var(--space-3);list-style:none;margin:0;padding:0}
.menu-item{display:grid;grid-template-columns:1fr auto;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--color-divider)}
.menu-item:last-child{border-bottom:0}
.menu-item h4{font-family:var(--font-ui);font-size:var(--text-sm);font-weight:800;margin:0;color:var(--color-text);letter-spacing:.01em}
.menu-item p{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:.25rem;line-height:1.5}
.menu-item .price{font-family:var(--font-display);font-size:var(--text-base);color:var(--pink);font-weight:700;align-self:start;white-space:nowrap}
.menu-item .alc-only-tag{font-family:var(--font-ui);font-size:.72rem;font-weight:600;color:var(--pink);background:var(--pink-soft);padding:.15rem .5rem;border-radius:999px;letter-spacing:.02em;margin-left:.4rem;vertical-align:middle}

/* charcuterie variant — card grid */
.charc-grid{display:grid;gap:var(--space-3);grid-template-columns:repeat(2,1fr);margin-top:var(--space-5)}
@media (min-width:560px){.charc-grid{grid-template-columns:repeat(4,1fr)}}
.charc-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--surface);text-align:center;transition:all var(--transition);display:flex;flex-direction:column;align-items:center;gap:.4rem;min-height:130px;justify-content:center}
.charc-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--pink)}
.charc-card h4{font-family:var(--font-display);font-size:var(--text-lg);margin:0}
.charc-card .serves{display:block;font-size:var(--text-xs);color:var(--color-text-muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.charc-card .price{display:block;font-family:var(--font-display);font-size:var(--text-2xl);color:var(--pink);font-weight:700;line-height:1;margin-top:.2rem}
.menu-content .boardroom-note{margin-top:var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted)}

/* =========================================================
   ORDER
   ========================================================= */
.order{background:var(--surface);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}
.order .section-head p{color:var(--color-text-muted);font-size:var(--text-base);margin-top:var(--space-3)}

.order-wrap{display:grid;gap:var(--space-6);align-items:start}
.order-wrap > *{min-width:0}
@media (min-width:980px){.order-wrap{grid-template-columns:minmax(0,1.55fr) minmax(320px,1fr)}}
.order-panel{background:var(--surface-2);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-6);box-shadow:var(--shadow-md);min-width:0}
@media (max-width:560px){.order-panel{padding:var(--space-4)}}
.order-rules{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-5)}
.order-rules span{padding:.4rem .85rem;border-radius:var(--radius-full);background:var(--pink-soft);color:var(--pink);font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.tabs{display:flex;gap:var(--space-2);padding:var(--space-1);background:var(--surface);border:1px solid var(--color-border);border-radius:var(--radius-full);width:fit-content;max-width:100%;overflow-x:auto;margin-bottom:var(--space-5)}
.tab{padding:.6rem 1.2rem;border-radius:var(--radius-full);border:none;background:transparent;color:var(--color-text-muted);font-weight:800;font-size:var(--text-sm);white-space:nowrap;transition:all var(--transition);cursor:pointer;font-family:var(--font-ui)}
.tab[aria-selected="true"]{background:var(--pink);color:#fff;box-shadow:var(--shadow-sm)}
[data-theme="dark"] .tab[aria-selected="true"]{color:#1a0f17}
.tabpanel{display:none}
.tabpanel.is-active{display:block}

.box-meta{display:grid;gap:var(--space-3);margin-bottom:var(--space-5)}
@media (min-width:560px){.box-meta{grid-template-columns:repeat(2,1fr)}}
.box-meta label.full{grid-column:1/-1}
.box-meta label{display:flex;flex-direction:column;gap:var(--space-2);font-size:var(--text-sm);font-weight:700}
.box-meta input,.box-meta select{width:100%;padding:.85rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--surface);color:var(--color-text);font:inherit;transition:border-color var(--transition),box-shadow var(--transition)}
.box-meta input:focus,.box-meta select:focus{outline:none;border-color:var(--pink);box-shadow:0 0 0 4px var(--pink-soft)}
.box-meta small{display:block;margin-top:.4rem;font-size:var(--text-xs);color:var(--color-text-muted);font-weight:600}
.box-actions{margin-bottom:var(--space-4)}
.box-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);font-weight:700;width:100%}
.box-bulk > select{flex:1 1 140px;min-width:0;max-width:100%;padding:.55rem .7rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--surface);color:var(--color-text);font:inherit}
.box-rows{display:grid;gap:var(--space-2)}
.box-row{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden;transition:border-color var(--transition),box-shadow var(--transition)}
.box-row.is-open{border-color:var(--pink);box-shadow:0 0 0 3px var(--color-primary-highlight)}
.box-summary{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--space-3);align-items:center;padding:.65rem .85rem;cursor:pointer;width:100%;border:0;background:transparent;color:inherit;text-align:left;font:inherit}
.box-summary:hover{background:rgba(176,62,160,.06)}
.box-summary .row-label{font-weight:800;font-size:var(--text-sm);color:var(--color-text-muted);min-width:54px}
.box-summary .row-summary-text{font-size:var(--text-sm);color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.box-summary .row-summary-text.is-empty{color:var(--color-text-muted);font-style:italic}
.box-summary .row-status{font-size:1rem;line-height:1;width:18px;text-align:center}
.box-summary .row-status.ok{color:#3aa676}
.box-summary .row-chevron{display:inline-block;transition:transform var(--transition);font-size:.8rem;color:var(--color-text-muted)}
.box-row.is-open .row-chevron{transform:rotate(180deg)}
.box-body{display:none;padding:0 .85rem .85rem;gap:var(--space-2);grid-template-columns:1fr 1fr auto;align-items:center}
.box-row.is-open .box-body{display:grid}
@media (max-width:560px){.box-body{grid-template-columns:1fr 1fr;grid-template-areas:"sand sand" "side side" "remove remove"}.box-body .row-sand{grid-area:sand}.box-body .row-side{grid-area:side}.box-body .row-remove{grid-area:remove;justify-self:end}}
.box-body select{width:100%;padding:.7rem .8rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--surface);color:var(--color-text);font:inherit;min-width:0}
.box-add{margin-top:var(--space-3);width:100%;padding:.85rem 1rem;border:1px dashed var(--color-border);border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);font:inherit;font-weight:700;cursor:pointer;transition:border-color var(--transition),color var(--transition),background var(--transition)}
.box-add:hover{border-color:var(--pink);color:var(--pink);background:var(--color-primary-highlight)}
.box-add[disabled]{opacity:.5;cursor:not-allowed}
.row-remove{background:transparent;border:1px solid var(--color-border);color:var(--color-text-muted);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:1.1rem;line-height:1;cursor:pointer;flex-shrink:0}
.row-remove:hover{color:var(--pink);border-color:var(--pink)}
.dessert-note{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--pink-soft);color:var(--pink);font-size:var(--text-sm);font-weight:700;display:flex;align-items:center;gap:.6rem}
.dessert-note::before{content:"\2728";font-size:1.15rem}
.dessert-note.inline{margin-top:var(--space-5)}

.alc-group{margin-top:var(--space-5)}
.alc-group:first-child{margin-top:0}
.alc-group h4{margin:0 0 var(--space-3);font-family:var(--font-display);font-size:var(--text-lg);color:var(--color-text)}
.alc-grid{display:grid;gap:var(--space-3)}
@media (min-width:560px){.alc-grid{grid-template-columns:repeat(2,1fr)}}
.alc-item{display:grid;grid-template-columns:1fr auto;gap:var(--space-3);align-items:center;padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--surface)}
.alc-item .alc-name{font-weight:800;font-size:var(--text-sm);color:var(--color-text)}
.alc-item .alc-desc{display:block;margin-top:.25rem;font-size:var(--text-xs);color:var(--color-text-muted);line-height:1.45;font-weight:500}
.alc-item .alc-price{display:block;margin-top:.4rem;color:var(--pink);font-weight:800;font-size:var(--text-sm)}
.alc-intro{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-4)}
.qty{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--surface);padding:.2rem}
.qty button{width:32px;height:32px;border-radius:50%;border:none;background:transparent;color:var(--color-text);font-size:1.1rem;font-weight:800;cursor:pointer;display:grid;place-items:center;font-family:var(--font-ui)}
.qty button:hover{background:var(--pink-soft);color:var(--pink)}
.qty button[disabled]{opacity:.35;cursor:not-allowed}
.qty span{min-width:28px;text-align:center;font-weight:800;font-size:var(--text-sm);font-variant-numeric:tabular-nums}

.cart{position:sticky;top:96px;background:var(--surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow-md);display:flex;flex-direction:column;gap:var(--space-3)}
@media (max-width:979px){.cart{position:relative;top:auto}}
.cart h3{font-family:var(--font-display);font-size:var(--text-xl);margin:0;color:var(--color-text)}
.cart-empty{padding:var(--space-4);border-radius:var(--radius-md);background:var(--surface-2);color:var(--color-text-muted);font-size:var(--text-sm);text-align:center}
.cart-lines{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3);max-height:280px;overflow-y:auto}
.cart-line{display:grid;grid-template-columns:1fr auto;gap:var(--space-2);font-size:var(--text-sm);padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);border:1px solid var(--color-border)}
.cart-line .cl-name{font-weight:800;color:var(--color-text)}
.cart-line .cl-meta{color:var(--color-text-muted);font-size:var(--text-xs);margin-top:.2rem}
.cart-line .cl-amount{font-weight:800;color:var(--color-text);font-variant-numeric:tabular-nums;text-align:right}
.alc-group-note{font-size:var(--text-xs);color:var(--color-text-muted);margin:.6rem 0 0;padding:.5rem .75rem;border-left:2px solid var(--color-border);font-style:italic}
.cart-totals{display:grid;gap:.4rem;padding:var(--space-3) 0;border-top:1px solid var(--color-divider);font-size:var(--text-sm)}
.cart-totals .cart-row{display:flex;justify-content:space-between;align-items:baseline;color:var(--color-text-muted)}
.cart-totals .cart-row.total{font-size:var(--text-lg);font-weight:800;color:var(--color-text);border-top:1px dashed var(--color-divider);padding-top:.6rem;margin-top:.2rem}
.cart-totals .cart-row strong{font-variant-numeric:tabular-nums;color:var(--color-text);font-weight:800}
.cart-impact{padding:var(--space-3);border-radius:var(--radius-md);background:var(--pink-soft);color:var(--pink);font-size:var(--text-sm);font-weight:700;line-height:1.45}
.cart-gate{padding:var(--space-3);border-radius:var(--radius-md);background:var(--surface-2);border:1px dashed var(--color-border);color:var(--color-text-muted);font-size:var(--text-xs);font-weight:700;line-height:1.45}
.cart-gate.is-met{background:rgba(67,122,34,.10);border-color:rgba(67,122,34,.3);color:#2a6a1d;border-style:solid}
[data-theme="dark"] .cart-gate.is-met{color:#a8e09c;background:rgba(67,122,34,.18)}

.buyer{margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--color-divider)}
.buyer h3{font-family:var(--font-display);font-size:var(--text-xl);margin:0 0 var(--space-4);color:var(--color-text)}
.buyer-grid{display:grid;gap:var(--space-3)}
@media (min-width:640px){.buyer-grid{grid-template-columns:repeat(2,1fr)}}
.buyer-grid label{display:flex;flex-direction:column;gap:.4rem;font-size:var(--text-sm);font-weight:700}
.buyer-grid label.full{grid-column:1/-1}
.buyer-grid input,.buyer-grid select,.buyer-grid textarea{width:100%;padding:.85rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--surface);color:var(--color-text);font:inherit;transition:border-color var(--transition),box-shadow var(--transition)}
.buyer-grid input:focus,.buyer-grid select:focus,.buyer-grid textarea:focus{outline:none;border-color:var(--pink);box-shadow:0 0 0 4px var(--pink-soft)}
.form-status{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:700;display:none}
.form-status.is-success{display:block;background:rgba(67,122,34,.12);color:#2a6a1d;border:1px solid rgba(67,122,34,.3)}
.form-status.is-error{display:block;background:rgba(192,57,43,.10);color:#9a2222;border:1px solid rgba(192,57,43,.3)}
.form-status.is-info{display:block;background:var(--pink-soft);color:var(--pink-deep);border:1px solid var(--pink)}
[data-theme="dark"] .form-status.is-success{color:#a8e09c}
[data-theme="dark"] .form-status.is-error{color:#f4a4a4}
.submit-row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5);align-items:center}
.submit-row .btn[disabled],.submit-row .btn[aria-busy="true"]{opacity:.55;cursor:not-allowed;transform:none;box-shadow:var(--shadow-sm)}
.submit-row small{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:700}
.spinner{width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;display:inline-block;margin-right:.5rem;vertical-align:-2px;animation:cl-spin .8s linear infinite}
@keyframes cl-spin{to{transform:rotate(360deg)}}

/* =========================================================
   COMMUNITY / GIVING
   ========================================================= */
.community{background:linear-gradient(135deg, var(--pink) 0%, var(--pink-deep) 100%);color:#fff;position:relative;overflow:hidden}
[data-theme="dark"] .community{background:linear-gradient(135deg, #4a1c42 0%, #2c0e27 100%)}
.community::before{content:"";position:absolute;top:-30%;right:-15%;width:60vw;height:60vw;background:radial-gradient(circle, rgba(255,255,255,.15) 0%, transparent 60%);pointer-events:none}
.community .shell{position:relative;z-index:1}
.community .eyebrow{background:rgba(255,255,255,.15);color:#fff;backdrop-filter:blur(8px)}
.community h2{color:#fff;margin-bottom:var(--space-4)}
.community .lede{font-size:var(--text-lg);opacity:.92;max-width:60ch;margin-bottom:var(--space-6);line-height:1.55}
.impact-grid{display:grid;gap:var(--space-4);grid-template-columns:1fr}
@media (min-width:680px){.impact-grid{grid-template-columns:repeat(3,1fr)}}
.impact-card{padding:var(--space-5);background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.20);border-radius:var(--radius-lg);backdrop-filter:blur(12px)}
.impact-card strong.big{display:block;font-family:var(--font-display);font-size:3rem;line-height:1;color:#fff;margin-bottom:.4rem}
.impact-card span.label{display:block;font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;opacity:.85;margin-bottom:var(--space-3)}
.impact-card p{font-size:var(--text-sm);opacity:.92;line-height:1.55;margin:0}

/* =========================================================
   TESTIMONIALS
   ========================================================= */
.testimonials{background:var(--surface)}
.test-grid{display:grid;gap:var(--space-5);grid-template-columns:1fr}
@media (min-width:760px){.test-grid{grid-template-columns:repeat(2,1fr)}}
.test-card{padding:var(--space-5);background:var(--surface-2);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--space-3)}
.test-card blockquote{margin:0;font-family:var(--font-display);font-size:var(--text-lg);font-style:italic;color:var(--color-text);line-height:1.45}
.test-card blockquote::before{content:"\201C";font-family:var(--font-display);color:var(--pink);font-size:3rem;display:block;line-height:.6;margin-bottom:.5rem}
.test-card cite{display:flex;flex-direction:column;font-style:normal}
.test-card cite strong{font-family:var(--font-ui);font-weight:800;font-size:var(--text-sm);color:var(--color-text)}
.test-card cite span{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:600}

/* =========================================================
   FOOTER
   ========================================================= */
.footer{background:var(--cream);border-top:1px solid var(--color-border);padding:var(--space-7) 0 var(--space-5)}
.footer-grid{display:grid;gap:var(--space-5)}
@media (min-width:780px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr}}
.footer h4{font-family:var(--font-ui);font-size:var(--text-xs);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-3)}
.footer-brand p{color:var(--color-text-muted);font-size:var(--text-sm);max-width:42ch;line-height:1.55}
.footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.footer a{color:var(--color-text);font-size:var(--text-sm);font-weight:600}
.footer a:hover{color:var(--pink)}
.footer-meta{color:var(--color-text-muted);font-weight:600;font-size:var(--text-sm)}
.footer-bottom{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-divider);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);font-weight:600}
.heart{color:var(--pink)}

/* =========================================================
   UTIL
   ========================================================= */
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
::selection{background:var(--pink);color:#fff}
[data-theme="dark"] ::selection{color:#1a0f17}
:focus-visible{outline:3px solid var(--pink);outline-offset:2px;border-radius:var(--radius-sm)}

/* =========================================================
   V2 · Step-based ordering · Mode chips · Variety breakdown
   Confirmation card
   ========================================================= */
.step{display:grid;grid-template-columns:48px 1fr;gap:var(--space-3);margin:var(--space-5) 0;align-items:start}
.step-num{width:36px;height:36px;border-radius:999px;background:var(--pink);color:#fff;font-weight:800;font-family:var(--font-display);font-size:1.1rem;display:grid;place-items:center;margin-top:4px;box-shadow:0 4px 12px rgba(176,62,160,.25)}
.step-body{min-width:0}
.step-title{font-family:var(--font-display);font-weight:600;font-size:clamp(1.25rem,2vw,1.55rem);margin:0 0 .25rem;color:var(--color-text)}
.step-sub{margin:0 0 var(--space-3);color:var(--color-text-muted);font-size:.95rem}
.step-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-3)}
.opt{font-weight:400;color:var(--color-text-muted);font-size:.85em}

/* Mode chips */
.mode-chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-2);margin-bottom:var(--space-3)}
.mode-chip{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:var(--space-3);border:2px solid var(--color-divider);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;text-align:left;transition:all .18s ease;font:inherit}
.mode-chip[hidden]{display:none !important}
.mode-chip:hover{border-color:var(--pink);transform:translateY(-1px)}
.mode-chip.is-active{border-color:var(--pink);background:linear-gradient(135deg, rgba(176,62,160,.08), rgba(176,62,160,.02));box-shadow:0 6px 18px rgba(176,62,160,.18)}
.mode-label{font-family:var(--font-display);font-weight:600;font-size:1.05rem;color:var(--color-text)}
.mode-sub{font-size:.85rem;color:var(--color-text-muted)}

/* Variety breakdown card */
.variety-card{background:linear-gradient(135deg, rgba(176,62,160,.06), rgba(176,62,160,.01));border:1px solid rgba(176,62,160,.18);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-3)}
.variety-head{margin-bottom:var(--space-2)}
.vh-eyebrow{display:block;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--pink);margin-bottom:4px}
.variety-head h4{font-family:var(--font-display);font-weight:600;font-size:1.15rem;margin:0;color:var(--color-text)}
.variety-list{list-style:none;padding:0;margin:0 0 var(--space-2);display:grid;gap:.4rem}
.variety-list li{display:flex;align-items:center;gap:.6rem;font-size:1rem;color:var(--color-text)}
.qty-pill{display:inline-grid;place-items:center;min-width:32px;height:32px;padding:0 10px;border-radius:999px;background:var(--pink);color:#fff;font-weight:700;font-family:var(--font-display);font-size:.95rem}
.variety-foot{margin:var(--space-2) 0 0;font-size:.9rem;color:var(--color-text-muted)}

/* Variety sides toggle */
.side-mode-toggle{border:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}
.side-mode-toggle legend{font-weight:700;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin-right:.5rem;padding:0}
.side-mode-toggle .radio{display:inline-flex;align-items:center;gap:.4rem;font-size:.95rem;color:var(--color-text);cursor:pointer}
.side-mode-toggle select{padding:.4rem .6rem;border-radius:var(--radius-sm);border:1px solid var(--color-divider);background:var(--color-surface);font:inherit}
.side-mode-toggle select:disabled{opacity:.5;cursor:not-allowed}

/* Chef's Pick card */
.chefs-pick-card{background:linear-gradient(135deg, rgba(176,62,160,.08), rgba(176,62,160,.02));border:1px solid rgba(176,62,160,.18);border-radius:var(--radius-md);padding:var(--space-4)}
.cp-eyebrow{display:block;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--pink);margin-bottom:.4rem}
.chefs-pick-card h4{font-family:var(--font-display);font-weight:600;font-size:1.3rem;margin:0 0 .5rem;color:var(--color-text)}
.cp-desc,.cp-side,.cp-note,.cp-foot{margin:.4rem 0;color:var(--color-text);font-size:.95rem}
.cp-note{color:var(--color-text-muted);font-style:italic}
.cp-foot{font-size:.85rem;color:var(--color-text-muted)}

/* All-One grid */
.allone-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-3);margin-bottom:var(--space-2)}
.allone-grid label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:600;color:var(--color-text)}
.allone-grid select{padding:.6rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--color-divider);background:var(--color-surface);font:inherit;font-weight:400}
.allone-note{font-size:.9rem;color:var(--color-text-muted);margin:0}

/* Cart line · mode badge */
.cl-mode{display:inline-block;margin-left:.4rem;padding:2px 8px;background:rgba(176,62,160,.12);color:var(--pink);border-radius:999px;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;vertical-align:middle}

/* Confirmation card */
.confirm-card{background:var(--color-surface);border:1px solid var(--color-divider);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:0 12px 36px rgba(0,0,0,.08);max-width:720px;margin:0 auto}
.confirm-inner{text-align:center}
.confirm-check{width:64px;height:64px;border-radius:999px;background:linear-gradient(135deg, #2da44e, #1a7f37);color:#fff;font-size:2rem;display:grid;place-items:center;margin:0 auto var(--space-3);box-shadow:0 8px 24px rgba(45,164,78,.3)}
.confirm-title{font-family:var(--font-display);font-weight:600;font-size:clamp(1.5rem,3vw,2rem);margin:0 0 .5rem;color:var(--color-text)}
.confirm-id{margin:0 0 var(--space-4);color:var(--color-text-muted);font-size:.95rem}
.confirm-id strong{color:var(--pink);font-family:var(--font-display);letter-spacing:.04em}
.confirm-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3);margin:var(--space-4) 0;padding:var(--space-3);background:linear-gradient(135deg, rgba(176,62,160,.04), rgba(176,62,160,.01));border-radius:var(--radius-sm)}
.confirm-summary>div{display:flex;flex-direction:column;gap:.2rem}
.confirm-summary span{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}
.confirm-summary strong{font-family:var(--font-display);font-weight:600;font-size:1.2rem;color:var(--color-text)}
.confirm-breakdown{margin:var(--space-4) 0;padding:var(--space-3);background:var(--color-bg);border-radius:var(--radius-sm);text-align:left}
.confirm-breakdown h4{font-family:var(--font-display);font-weight:600;font-size:1rem;margin:0 0 var(--space-2);color:var(--color-text)}
.confirm-breakdown p{margin:var(--space-2) 0 0;font-size:.85rem;color:var(--color-text-muted)}
.confirm-next{margin:var(--space-3) 0;color:var(--color-text);font-size:.95rem;line-height:1.55}
.confirm-next a{color:var(--pink);font-weight:600;text-decoration:underline}
.btn.ghost{background:transparent;border:2px solid var(--pink);color:var(--pink);padding:.7rem 1.4rem;border-radius:var(--radius-sm);font-weight:700;cursor:pointer;font:inherit;transition:all .18s}
.btn.ghost:hover{background:var(--pink);color:#fff}

/* Step grid responsiveness */
@media (max-width: 640px){
  .step{grid-template-columns:36px 1fr;gap:var(--space-2)}
  .step-num{width:32px;height:32px;font-size:1rem}
  .mode-chips{grid-template-columns:1fr 1fr}
  .confirm-summary{grid-template-columns:1fr 1fr}
}

/* =========================================================
   V2 polish · mobile fixes
   ========================================================= */
/* Step 1 inputs full-width, label as block */
.step-grid label{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;font-weight:700;color:var(--color-text)}
.step-grid input,.step-grid select{width:100%;padding:.7rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font:inherit;font-weight:500;transition:border-color .18s,box-shadow .18s}
.step-grid input:focus,.step-grid select:focus{outline:none;border-color:var(--pink);box-shadow:0 0 0 3px rgba(176,62,160,.18)}
.step-grid small{font-size:.78rem;color:var(--color-text-muted);font-weight:400}

/* À la carte items — give text more breathing room on narrow screens */
@media (max-width: 540px){
  .alc-item{grid-template-columns:1fr;gap:var(--space-2);padding:var(--space-3)}
  .alc-item .qty{justify-self:start;margin-top:.5rem}
  .alc-item .alc-name{font-size:1rem}
  .alc-item .alc-desc{font-size:.85rem}
}

/* Cart line metadata — let text wrap and not get clipped */
.cart-line .cl-meta{word-wrap:break-word;overflow-wrap:anywhere;line-height:1.45}

/* Mode chips stay 2-up on small phones */
@media (max-width: 480px){
  .mode-chips{grid-template-columns:1fr 1fr}
  .mode-chip{padding:var(--space-2)}
  .mode-label{font-size:.95rem}
  .mode-sub{font-size:.78rem}
}


/* =====================================================
   Order builder · à la carte groups now collapsible
   ===================================================== */
details.alc-group{border-top:1px solid var(--color-border)}
details.alc-group:first-child{border-top:none;margin-top:0}
details.alc-group>summary.alc-summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) 0;margin-bottom:var(--space-2);user-select:none}
details.alc-group>summary.alc-summary::-webkit-details-marker{display:none}
details.alc-group>summary.alc-summary h4{margin:0}
details.alc-group>summary.alc-summary::after{content:"\25BE";margin-left:auto;color:var(--color-text-muted);transition:transform var(--transition)}
details.alc-group[open]>summary.alc-summary::after{transform:rotate(180deg)}
details.alc-group>summary.alc-summary:hover h4{color:var(--pink)}


/* À la carte group count badge — secondary confirmation signal */
.alc-count{
  display:inline-flex;
  align-items:center;
  margin-left:var(--space-2);
  padding:.12rem .55rem;
  border-radius:var(--radius-full);
  background:var(--pink-soft);
  color:var(--pink-deep);
  font-family:var(--font-ui);
  font-size:var(--text-xs);
  font-weight:700;
  line-height:1.5;
  letter-spacing:.01em;
  white-space:nowrap;
}
.alc-count[hidden]{display:none}


/* =========================================================
   À la carte sandwiches — lighter post-$250 block
   Sits below the main Step 3 charcuterie/sides/dessert.
   Secondary hierarchy: smaller heading, muted, locked < $250.
   ========================================================= */
.order-subtle-divider{
  border:0;
  border-top:1px dashed var(--color-border);
  margin:var(--space-5) 0 var(--space-4);
  opacity:.7;
}
.order-ala-carte.note-block{
  margin-top:var(--space-4);
  padding:var(--space-4);
  border:1px dashed var(--color-border);
  border-radius:var(--radius-lg);
  background:color-mix(in srgb, var(--surface) 70%, transparent);
}
.order-ala-carte .eyebrow-small{
  display:inline-block;
  margin:0 0 .35rem;
  padding:.1rem .55rem;
  font-family:var(--font-ui);
  font-size:var(--text-xs);
  font-weight:700;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--pink-deep);
  background:var(--pink-soft);
  border-radius:var(--radius-full);
}
.order-ala-carte h4{
  margin:.15rem 0 .35rem;
  font-family:var(--font-display);
  font-size:var(--text-base);
  font-weight:700;
  color:var(--color-text);
  letter-spacing:.005em;
}
.order-ala-carte .muted{
  margin:0 0 var(--space-3);
  color:var(--color-text-muted);
  font-size:var(--text-sm);
  line-height:1.5;
}
.ala-carte-sand-grid{
  display:grid;
  gap:var(--space-2);
}
@media (min-width:560px){
  .ala-carte-sand-grid{grid-template-columns:repeat(2,1fr)}
}
.ala-carte-sand-item{
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  gap:var(--space-3);
  padding:.55rem .75rem;
  border:1px solid var(--color-border);
  border-radius:var(--radius-md);
  background:var(--surface);
  transition:opacity .15s ease, background .15s ease;
}
.ala-carte-sand-info{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.ala-carte-sand-name{
  font-family:var(--font-ui);
  font-weight:700;
  font-size:var(--text-sm);
  color:var(--color-text);
  line-height:1.3;
}
.ala-carte-sand-price{
  font-family:var(--font-ui);
  font-weight:700;
  font-size:var(--text-xs);
  color:var(--pink);
  letter-spacing:.01em;
}
.ala-carte-helper{
  margin:var(--space-3) 0 0;
  font-size:var(--text-xs);
  color:var(--color-text-muted);
  font-style:italic;
}
.ala-carte-helper[hidden]{display:none}

/* Locked state — block is visible but disabled below the $150 order floor */
.order-ala-carte.is-locked{
  opacity:.78;
}
.order-ala-carte.is-locked .ala-carte-sand-item{
  background:color-mix(in srgb, var(--surface) 60%, transparent);
}
.order-ala-carte.is-locked .ala-carte-sand-qty button{
  cursor:not-allowed;
  opacity:.5;
}

/* =========================================================
   FAQ — accordion between Order and Giving
   ========================================================= */
.faq.section{background:transparent}
.faq .section-head{margin-bottom:var(--space-5)}
.faq-list{
  display:grid;
  gap:var(--space-2);
  max-width:780px;
  margin:0 auto;
}
.faq-item{
  border:1px solid var(--color-border);
  border-radius:var(--radius-lg);
  background:var(--surface);
  overflow:hidden;
  transition:border-color .15s ease, background .15s ease;
}
.faq-item[open]{
  border-color:color-mix(in srgb, var(--pink) 40%, var(--color-border));
}
.faq-item > summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-3);
  padding:var(--space-4) var(--space-4);
  min-height:48px;
  font-family:var(--font-ui);
  font-weight:700;
  color:var(--color-text);
}
.faq-item > summary::-webkit-details-marker{display:none}
.faq-item > summary:hover{background:color-mix(in srgb, var(--pink-soft) 35%, var(--surface))}
.faq-item > summary:focus-visible{outline:2px solid var(--pink);outline-offset:2px}
.faq-q{
  font-size:var(--text-base);
  line-height:1.35;
  flex:1 1 auto;
}
.faq-chev{
  flex:0 0 auto;
  width:28px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:var(--radius-full);
  background:var(--pink-soft);
  color:var(--pink-deep);
  font-size:1.1rem;
  font-weight:800;
  line-height:1;
  position:relative;
}
.faq-chev::before,
.faq-chev::after{
  content:"";
  position:absolute;
  background:currentColor;
  border-radius:2px;
  transition:transform .2s ease, opacity .2s ease;
}
.faq-chev::before{width:12px;height:2px}
.faq-chev::after{width:2px;height:12px}
.faq-item[open] .faq-chev::after{transform:scaleY(0);opacity:0}
.faq-a{
  padding:0 var(--space-4) var(--space-4);
  color:var(--color-text-muted);
  font-size:var(--text-sm);
  line-height:1.6;
}
.faq-a p{margin:0}

@media (max-width:560px){
  .faq-item > summary{padding:.9rem 1rem}
  .faq-q{font-size:var(--text-sm)}
  .faq-a{padding:0 1rem 1rem;font-size:var(--text-sm)}
}


/* =========================================================
   Cart gate — stacked unlock callout when $250 minimum is met
   ========================================================= */
.cart-gate.is-met{display:flex;flex-direction:column;gap:.4rem}
.cart-gate .gate-line{display:block;line-height:1.45}
.cart-gate .gate-line-primary{font-weight:700}
.cart-gate .gate-line-unlock{
  font-family:var(--font-ui);
  font-size:var(--text-xs);
  font-weight:600;
  color:var(--pink-deep);
  letter-spacing:.005em;
  opacity:.95;
}


/* =========================================================
   Step 3 inline progress hint
   ========================================================= */
.step-progress{
  margin:.25rem 0 var(--space-3);
  padding:.5rem .75rem;
  border-radius:var(--radius-md);
  font-family:var(--font-ui);
  font-size:var(--text-sm);
  line-height:1.4;
  display:none;
}
.step-progress:not(:empty){display:block}
.step-progress strong{font-weight:700}
.step-progress.is-under{
  background:color-mix(in srgb, var(--pink-soft) 60%, transparent);
  color:var(--pink-deep);
  border:1px solid color-mix(in srgb, var(--pink) 25%, transparent);
}
.step-progress.is-met{
  background:color-mix(in srgb, #d9efd9 60%, transparent);
  color:#1f5b2a;
  border:1px solid color-mix(in srgb, #1f5b2a 18%, transparent);
}


/* =========================================================
   Cart restore banner (shown above the order form when a
   meaningful draft is found in localStorage)
   ========================================================= */
.order-restore{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-3);
  padding:var(--space-3) var(--space-4);
  margin-bottom:var(--space-3);
  background:color-mix(in srgb, var(--pink-soft) 70%, var(--surface));
  border:1px solid color-mix(in srgb, var(--pink) 35%, transparent);
  border-radius:var(--radius-lg);
}
.order-restore[hidden]{display:none}
.order-restore-body{flex:1 1 260px;min-width:0}
.order-restore-title{
  margin:0 0 .15rem;
  font-family:var(--font-ui);
  font-weight:700;
  font-size:var(--text-base);
  color:var(--color-text);
}
.order-restore-summary{
  margin:0;
  font-family:var(--font-ui);
  font-size:var(--text-sm);
  color:var(--color-text-muted);
  line-height:1.4;
}
.order-restore-summary strong{color:var(--color-text);font-weight:700}
.order-restore-actions{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-2);
  flex:0 0 auto;
}
.order-restore-actions .btn{padding:.55rem 1rem;font-size:var(--text-sm)}
@media (max-width:560px){
  .order-restore{flex-direction:column;align-items:stretch}
  .order-restore-actions{justify-content:stretch}
  .order-restore-actions .btn{flex:1 1 0}
}

/* Delivery date picker — fresh-window hint under the date select */
.delivery-window-note {
  display: block;
  margin-top: 6px;
  font-size: 13px;
  color: var(--ink-3, #6b7280);
  line-height: 1.4;
}
.delivery-window-note strong {
  color: var(--ink-1, #111);
  font-weight: 600;
}

/* =========================================================
   PRINT RECEIPT
   - Hidden on screen by default
   - Confirm card gets a side-by-side action row for the print + new-order buttons
   - @media print: show only the receipt, suppress everything else, black on white
   ========================================================= */

#print-receipt {
  display: none;
}

.confirm-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-top: 14px;
}
.confirm-actions .btn { flex: 0 1 auto; }

@media print {
  /* Hide every layer except the receipt itself.
     Use display:none so non-receipt content doesn't reserve page space
     (visibility:hidden was causing 12 blank trailing pages). */
  body > *:not(#print-receipt) { display: none !important; }

  /* Reset page chrome */
  html, body {
    background: #fff !important;
    color: #111 !important;
    margin: 0 !important;
    padding: 0 !important;
    height: auto !important;
    overflow: visible !important;
  }

  /* Show the receipt as the sole page content */
  #print-receipt {
    display: block !important;
    position: static !important;
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
    background: #fff !important;
    color: #111 !important;
    font-family: Georgia, 'Times New Roman', serif !important;
  }

  .receipt-wrap {
    box-sizing: border-box;
    width: 100%;
    max-width: 7.5in;
    margin: 0 auto;
    padding: 0.5in 0.6in;
    font-size: 11pt;
    line-height: 1.5;
  }

  .receipt-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    border-bottom: 2px solid #111;
    padding-bottom: 12px;
    margin-bottom: 18px;
  }
  .receipt-logo {
    font-family: Georgia, 'Times New Roman', serif;
    font-size: 24pt;
    font-weight: 700;
    letter-spacing: 0.5px;
    color: #111;
  }
  .receipt-tag {
    font-size: 9.5pt;
    color: #444;
    margin-top: 2px;
    font-style: italic;
  }
  .receipt-meta {
    font-size: 10pt;
    text-align: right;
    color: #222;
  }
  .receipt-meta div { margin-bottom: 3px; }
  .receipt-meta strong { display: inline-block; min-width: 56px; }

  .receipt-block { margin: 14px 0; page-break-inside: avoid; }
  .receipt-h {
    font-size: 11pt;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #111;
    border-bottom: 1px solid #999;
    padding-bottom: 4px;
    margin: 0 0 8px 0;
  }

  .receipt-kv {
    width: 100%;
    border-collapse: collapse;
  }
  .receipt-kv th {
    text-align: left;
    font-weight: 600;
    width: 32%;
    padding: 3px 8px 3px 0;
    color: #333;
    font-size: 10pt;
    vertical-align: top;
  }
  .receipt-kv td {
    padding: 3px 0;
    color: #111;
    font-size: 10.5pt;
  }

  .receipt-items {
    width: 100%;
    border-collapse: collapse;
    margin-top: 4px;
  }
  .receipt-items thead th {
    text-align: left;
    font-size: 9pt;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 6px 4px;
    border-bottom: 1.5px solid #111;
    color: #111;
  }
  .receipt-items tbody td {
    padding: 8px 4px;
    border-bottom: 1px dotted #bbb;
    vertical-align: top;
    font-size: 10.5pt;
  }
  .receipt-items td:first-child {
    width: 36px;
    font-weight: 700;
  }
  .r-num {
    text-align: right;
    white-space: nowrap;
  }
  .r-name { font-weight: 600; }
  .r-sub  { font-size: 9pt; color: #555; margin-top: 2px; font-style: italic; }

  .receipt-totals {
    margin-top: 18px;
    border-top: 2px solid #111;
    padding-top: 10px;
  }
  .receipt-money th { text-align: left; font-weight: 500; padding: 3px 0; color: #333; }
  .receipt-money td { text-align: right; font-weight: 600; padding: 3px 0; color: #111; }
  .receipt-money .r-total th,
  .receipt-money .r-total td {
    font-size: 12pt;
    font-weight: 700;
    padding: 6px 0;
    border-top: 1px solid #888;
    border-bottom: 1px solid #888;
    color: #111;
  }

  .receipt-footer {
    margin-top: 28px;
    padding-top: 12px;
    border-top: 1px solid #999;
    font-size: 9.5pt;
    color: #444;
    line-height: 1.55;
  }
  .receipt-footer p { margin: 4px 0; }
  .receipt-fineprint { font-size: 8.5pt; color: #666; margin-top: 8px !important; }

  /* Prevent any link decoration ink waste */
  #print-receipt a { color: #111 !important; text-decoration: none !important; }

  @page {
    size: letter;
    margin: 0.4in;
  }
}


/* ============================================================
   VEGGIE PLATTER v2 — inline expand inside menu
   ============================================================ */

/* Menu collapse behavior (sandwiches + sides) */
.menu-list.js-collapse[data-collapsed="true"] > .menu-item:nth-child(n+4) {
  display: none;
}
.menu-more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 8px 0 18px;
  background: transparent;
  border: 1px solid rgba(204,123,140,.35);
  color: var(--brand-pink, #cc7b8c);
  padding: 8px 16px;
  border-radius: 999px;
  font: 600 13px/1 'Inter', system-ui, sans-serif;
  letter-spacing: .02em;
  cursor: pointer;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.menu-more:hover { background: rgba(204,123,140,.08); }
.menu-more .chev { display: inline-block; transition: transform .2s ease; font-size: 11px; }
.menu-more[aria-expanded="true"] .chev { transform: rotate(180deg); }

/* Veggie row — single menu-item, full-width clickable toggle */
#veggie-row { margin-bottom: 0; }
.veg-item { padding: 0; border: none; }
.veg-toggle {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  text-align: left;
  background: transparent;
  border: none;
  border-top: 1px solid rgba(0,0,0,.08);
  padding: 18px 0;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.veg-toggle:hover { background: rgba(0,0,0,.015); }
.veg-toggle h4 { margin: 0 0 4px; font: 600 17px/1.3 'Playfair Display', Georgia, serif; }
.veg-toggle p { margin: 0; color: rgba(0,0,0,.62); font-size: 14px; line-height: 1.45; max-width: 56ch; }
.veg-toggle-meta { display: inline-flex; align-items: center; gap: 10px; flex-shrink: 0; }
.veg-toggle-meta .price { font: 600 16px/1 'Inter', sans-serif; }
.veg-toggle-meta .chev { display: inline-block; transition: transform .2s ease; color: var(--brand-pink, #cc7b8c); font-size: 14px; }
.veg-toggle[aria-expanded="true"] .chev { transform: rotate(180deg); }
.veg-toggle[aria-expanded="true"] { background: rgba(0,0,0,.02); }


/* ============================================================
   Chef Lesly Chalkboard — Veggie Platter expanded state
   Green slate, chalk-on-board treatment. No gray utility boxes.
   ============================================================ */
.veg-panel {
  /* Deep black chalkboard — match the masthead artwork board */
  --chalk: #f5efe2;
  --chalk-soft: rgba(245,239,226,.78);
  --chalk-faint: rgba(245,239,226,.55);
  --chalk-line: rgba(245,239,226,.22);
  --chalk-pink: #f3b5c3;     /* warm chalk-pink accent (echoes brand-pink) */
  --chalk-mint: #b6e6c2;     /* asparagus accent */
  --board: #0a0a0a;          /* deep black slate */
  --board-deep: #000;

  position: relative;
  background-color: var(--board);
  color: var(--chalk);
  border-radius: 16px;
  margin: 0 -8px 22px;
  overflow: hidden;
  box-shadow:
    0 22px 60px rgba(0,0,0,.35),
    inset 0 0 0 1px rgba(245,239,226,.05),
    inset 0 0 80px rgba(0,0,0,.55);

  background-image:
    /* corner vignettes for slate depth */
    radial-gradient(ellipse 70% 40% at 20% 0%, rgba(245,239,226,.05), transparent 60%),
    radial-gradient(ellipse 60% 50% at 85% 100%, rgba(0,0,0,.55), transparent 65%),
    radial-gradient(ellipse 50% 60% at 10% 100%, rgba(0,0,0,.40), transparent 60%),
    /* faint horizontal chalk-streak grain */
    repeating-linear-gradient(2deg, rgba(245,239,226,.012) 0 2px, transparent 2px 6px),
    /* soft board gradient */
    linear-gradient(180deg, #141414 0%, #0a0a0a 45%, #050505 100%);
}
.veg-panel::before {
  /* wooden frame edge highlight */
  content: "";
  position: absolute; inset: 0;
  border-radius: 16px;
  pointer-events: none;
  box-shadow:
    inset 0 0 0 1px rgba(245,239,226,.12),
    inset 0 0 0 6px rgba(0,0,0,.18);
}
.veg-panel::after {
  /* chalk dust at the bottom edge */
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 38px;
  pointer-events: none;
  background:
    radial-gradient(ellipse 60% 100% at 30% 100%, rgba(245,239,226,.10), transparent 70%),
    radial-gradient(ellipse 40% 100% at 75% 100%, rgba(245,239,226,.06), transparent 70%);
  filter: blur(2px);
}
.veg-panel[hidden] { display: none !important; }
.veg-panel-inner { position: relative; padding: 0 30px 28px; }

/* Masthead — blend into chalkboard */
.veg-mast {
  position: relative;
  margin: 0 -30px 4px;
  background: #000;
  overflow: hidden;
}
.veg-mast img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 300px;
  object-fit: cover;
  opacity: .95;
}
.veg-mast-fade {
  position: absolute; left: 0; right: 0; bottom: -1px;
  height: 90px;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(10,10,10,0) 0%, rgba(10,10,10,.55) 55%, var(--board) 100%);
}

/* Lede + chalk label */
.veg-lede {
  font: 400 15.5px/1.6 'Manrope', system-ui, sans-serif;
  color: var(--chalk-soft);
  margin: 18px 0 22px;
  max-width: 60ch;
  letter-spacing: .005em;
}
.veg-chalk-label {
  display: inline-block;
  font: 600 13px/1 'Caveat', 'Playfair Display', cursive;
  font-style: italic;
  color: var(--chalk-pink);
  letter-spacing: .04em;
  margin-right: 10px;
  transform: translateY(-2px);
  font-size: 18px;
}

/* Section labels in chalk handwriting */
.veg-section-label {
  display: block;
  font: 600 22px/1.1 'Caveat', cursive;
  color: var(--chalk);
  margin: 0 0 10px;
  letter-spacing: .01em;
}

/* Platter option cards — chalkboard tiles, no gray fills */
.veg-opts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin: 0 0 22px;
}
.veg-opt {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 16px 14px 14px;
  background: rgba(245,239,226,.03);
  border: 1.5px dashed rgba(245,239,226,.28);
  border-radius: 10px;
  color: var(--chalk);
  cursor: pointer;
  font: inherit;
  text-align: left;
  transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.veg-opt:hover {
  background: rgba(245,239,226,.06);
  border-color: rgba(245,239,226,.45);
  transform: translateY(-1px);
}
.veg-opt.is-active {
  background: rgba(243,181,195,.10);
  border: 1.5px solid var(--chalk-pink);
  box-shadow:
    0 0 0 1px rgba(243,181,195,.30),
    0 8px 24px rgba(243,181,195,.10);
}
.veg-opt.is-active::before {
  /* hand-drawn underline accent */
  content: "";
  position: absolute;
  left: 14px; right: 14px; bottom: 6px;
  height: 2px;
  background: linear-gradient(90deg, transparent 0, var(--chalk-pink) 20%, var(--chalk-pink) 80%, transparent 100%);
  opacity: .55;
  border-radius: 2px;
}
.veg-opt-name {
  font: 700 22px/1.05 'Caveat', cursive;
  color: var(--chalk);
  letter-spacing: .005em;
}
.veg-opt-sub {
  font: 400 12px/1.35 'Manrope', sans-serif;
  color: var(--chalk-faint);
}
.veg-opt-price {
  font: 600 17px/1 'Playfair Display', serif;
  margin-top: 6px;
  color: var(--chalk);
}

/* Chosen-5 note and side picker — chalk frames, never gray cards */
.veg-chosen-note,
.veg-pick {
  position: relative;
  background: transparent;
  border: none;
  border-top: 1px dashed var(--chalk-line);
  border-bottom: 1px dashed var(--chalk-line);
  border-radius: 0;
  padding: 16px 4px 18px;
  margin: 0 0 18px;
  font: 400 14px/1.55 'Manrope', sans-serif;
  color: var(--chalk-soft);
}
.veg-pick[hidden] { display: none !important; }
.veg-chosen-note[hidden] { display: none !important; }

.veg-chosen-note::before {
  content: "Lesly's pick";
  display: block;
  font: 600 22px/1 'Caveat', cursive;
  color: var(--chalk-pink);
  margin-bottom: 6px;
}

.veg-pick-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin: 0 0 12px;
}
.veg-pick-label {
  font: 700 24px/1 'Caveat', cursive;
  letter-spacing: .01em;
  color: var(--chalk);
  text-transform: none;
}
.veg-counter {
  font: 600 14px/1 'Caveat', cursive;
  color: var(--chalk-pink);
  font-size: 18px;
}

.veg-sides-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px 18px;
  margin: 4px 0 8px;
}
.veg-side {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 4px;
  background: transparent;
  border: none;
  border-radius: 0;
  cursor: pointer;
  font: 500 18px/1.2 'Caveat', cursive;
  color: var(--chalk);
  transition: color .15s ease, transform .12s ease;
}
.veg-side:hover { color: var(--chalk-pink); transform: translateX(2px); }
.veg-side input[type="checkbox"] {
  appearance: none;
  width: 18px; height: 18px;
  border: 1.5px solid var(--chalk-soft);
  border-radius: 3px;
  background: transparent;
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
}
.veg-side input[type="checkbox"]:checked {
  background: var(--chalk-pink);
  border-color: var(--chalk-pink);
}
.veg-side input[type="checkbox"]:checked::after {
  content: "✓";
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -55%);
  color: var(--board-deep);
  font: 700 14px/1 'Manrope', sans-serif;
}
.veg-side.is-checked { color: var(--chalk); }
.veg-side.is-checked .veg-side-name { text-decoration: underline; text-decoration-color: var(--chalk-pink); text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
.veg-side.is-disabled { opacity: .35; cursor: not-allowed; }
.veg-side.is-disabled input { pointer-events: none; }
.veg-side-name { flex: 1; }

.veg-included {
  margin: 10px 0 0;
  font: 400 14px/1.4 'Caveat', cursive;
  color: var(--chalk-faint);
  font-style: italic;
  font-size: 16px;
}

/* Premium add-ons — chalk callout, mint accent. Multiple options, each +$1.50 */
.veg-toggle-tiers {
  font: 500 14px/1.2 'Caveat', cursive;
  color: var(--chalk-mint, #b6e6c2);
  letter-spacing: 0.2px;
}
.veg-premiums {
  margin: 4px 0 20px;
  padding: 14px 16px;
  background: rgba(182,230,194,.05);
  border: 1.5px dashed rgba(182,230,194,.32);
  border-radius: 10px;
}
.veg-premiums-label {
  display: block;
  font: 600 13px/1 'Manrope', sans-serif;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: var(--chalk-mint, #b6e6c2);
  margin-bottom: 10px;
}
.veg-premium-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
}
@media (min-width: 640px) {
  .veg-premium-list { grid-template-columns: 1fr 1fr; }
}
.veg-premium {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: transparent;
  border: 1px solid rgba(182,230,194,.22);
  border-radius: 8px;
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
}
.veg-premium:hover { background: rgba(182,230,194,.08); border-color: rgba(182,230,194,.45); }
.veg-premium.is-checked { background: rgba(182,230,194,.12); border-color: var(--chalk-mint, #b6e6c2); }
.veg-premium input[type="checkbox"] {
  appearance: none;
  width: 18px; height: 18px;
  border: 1.5px solid var(--chalk-mint, #b6e6c2);
  border-radius: 3px;
  background: transparent;
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
}
.veg-premium input[type="checkbox"]:checked {
  background: var(--chalk-mint, #b6e6c2);
  border-color: var(--chalk-mint, #b6e6c2);
}
.veg-premium input[type="checkbox"]:checked::after {
  content: "✓";
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -55%);
  color: var(--board-deep, #14201a);
  font: 700 14px/1 'Manrope', sans-serif;
}
.veg-premium-name {
  font: 600 16px/1.2 'Caveat', cursive;
  color: var(--chalk, #f3efe6);
}
.veg-premium-tag {
  font: 700 12px/1 'Manrope', sans-serif;
  color: var(--chalk-mint, #b6e6c2);
  white-space: nowrap;
}

/* CTA row — qty, subtotal, add button */
.veg-cta-row {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
  padding: 18px 0 0;
  border-top: 1px dashed var(--chalk-line);
  margin-top: 4px;
}
.veg-qty {
  display: inline-flex;
  flex-direction: column;
  gap: 4px;
}
.veg-qty span {
  font: 500 16px/1 'Caveat', cursive;
  letter-spacing: .02em;
  color: var(--chalk-faint);
  text-transform: none;
}
.veg-qty input {
  width: 80px;
  padding: 10px 12px;
  background: rgba(245,239,226,.04);
  border: 1.5px dashed rgba(245,239,226,.32);
  border-radius: 8px;
  color: var(--chalk);
  font: 700 18px/1 'Playfair Display', serif;
  text-align: center;
}
.veg-qty input:focus {
  outline: none;
  border-color: var(--chalk-pink);
  background: rgba(245,239,226,.07);
}
.veg-total {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  margin-left: auto;
  text-align: right;
}
.veg-total span {
  font: 500 16px/1 'Caveat', cursive;
  letter-spacing: .02em;
  color: var(--chalk-faint);
  text-transform: none;
}
.veg-total strong {
  font: 700 30px/1 'Playfair Display', serif;
  color: var(--chalk);
}

.veg-add {
  padding: 14px 26px;
  background: var(--chalk-pink);
  color: var(--board-deep);
  border: none;
  border-radius: 999px;
  font: 700 15px/1 'Manrope', sans-serif;
  letter-spacing: .03em;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(243,181,195,.22);
  transition: background .15s ease, transform .15s ease, box-shadow .15s ease;
}
.veg-add:hover {
  background: #e89bad;
  transform: translateY(-1px);
  box-shadow: 0 10px 22px rgba(243,181,195,.32);
}
.veg-add:disabled {
  background: rgba(245,239,226,.10);
  color: rgba(245,239,226,.35);
  cursor: not-allowed;
  box-shadow: none;
}

.veg-feedback {
  margin: 14px 0 0;
  padding: 12px 16px;
  background: rgba(182,230,194,.10);
  border: 1.5px dashed rgba(182,230,194,.45);
  border-radius: 10px;
  color: var(--chalk-mint);
  font: 600 16px/1.4 'Caveat', cursive;
  font-size: 18px;
}
.veg-feedback[hidden] { display: none !important; }

/* Toggle row chevron color when expanded */
.veg-toggle[aria-expanded="true"] .chev { color: #4f7a5e; }

/* Mobile */
@media (max-width: 720px) {
  .veg-panel-inner { padding: 0 18px 22px; }
  .veg-mast { margin: 0 -18px 4px; }
  .veg-mast img { max-height: 200px; }
  .veg-opts { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .veg-sides-grid { grid-template-columns: 1fr; gap: 4px 0; }
  .veg-opt-name { font-size: 20px; }
  .veg-cta-row { gap: 12px; }
  .veg-total { margin-left: 0; text-align: left; }
  .veg-total strong { font-size: 26px; }
  .veg-add { flex: 1 1 100%; padding: 14px 22px; }
  .veg-lede { margin-top: 16px; }
}

/* ===== Charcuterie collapsed section (homepage, below testimonials) ===== */
.charcuterie { background: var(--surface); }
.charc-collapse {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  /* Solid surface (no translucent white fallback) so the headings sit on a
     clean, fully-opaque card in both themes. */
  background: var(--surface);
  overflow: hidden;
  transition: box-shadow var(--transition), border-color var(--transition);
}
.charc-collapse[open] {
  box-shadow: var(--shadow-md);
  border-color: var(--pink);
}
.charc-summary {
  list-style: none;
  cursor: pointer;
  padding: var(--space-5) var(--space-6);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
}
.charc-summary::-webkit-details-marker { display: none; }
.charc-summary:hover { background: color-mix(in srgb, var(--pink-soft) 35%, transparent); }
.charc-summary:focus-visible { outline: 2px solid var(--pink); outline-offset: 2px; }
.charc-summary-head { display: flex; flex-direction: column; gap: .25rem; }
/* Richer, higher-contrast heading treatment — the title/eyebrow/lede were
   rendering too faint against the dark plum. Use the pink accent for the
   eyebrow, full text color for the title, and a stronger lede tone. */
.charc-summary-head .eyebrow { color: var(--pink); opacity: 1; font-weight: 800; letter-spacing: .1em; }
.charc-summary-head h2 { margin: 0; color: var(--color-text); }
.charc-summary-lede { margin: .25rem 0 0; color: var(--color-text); opacity: .92; font-size: var(--text-base); }
.charc-chev {
  width: 14px; height: 14px;
  border-right: 2px solid var(--color-text);
  border-bottom: 2px solid var(--color-text);
  transform: rotate(45deg);
  transition: transform var(--transition);
  flex: 0 0 auto;
}
.charc-collapse[open] .charc-chev { transform: rotate(-135deg); }
.charc-body { padding: 0 var(--space-6) var(--space-6); }
@media (max-width: 560px) {
  .charc-summary { padding: var(--space-4); }
  .charc-body { padding: 0 var(--space-4) var(--space-4); }
  /* Veggie toggle: stack vertically so the pricing tiers get their own full
     line instead of being crammed beside the title and wrapping awkwardly. */
  .veg-toggle { flex-direction: column; align-items: stretch; gap: 8px; }
  .veg-toggle-meta {
    width: 100%;
    justify-content: space-between;
    align-items: baseline;
  }
  .veg-toggle-tiers { line-height: 1.35; white-space: normal; }
}

/* ===== Belt-and-suspenders: force charcuterie body hidden when not open ===== */
.charc-collapse:not([open]) > .charc-body {
  display: none !important;
}
.charc-collapse[open] > .charc-body {
  display: block;
}


/* =========================================================
   PATCH · Blank-space & eye-jitter fix (2026-07-21)
   Goal: eliminate the dead voids in #order and #menu by turning
   the short right/left columns into authored, full-height editorial
   rails. No redesign — same plum-black palette, serif headlines,
   pink accent, left-aligned rhythm. Overrides load last so they win.
   ========================================================= */

/* ---- Shared: slim editorial support cards that fill the rails ---- */
.rail-note{
  position:relative;
  padding:var(--space-4) var(--space-4) var(--space-4) calc(var(--space-4) + 3px);
  border:1px solid var(--color-border);
  border-left:3px solid var(--pink);
  border-radius:var(--radius-md);
  background:linear-gradient(180deg,
    color-mix(in srgb, var(--pink-soft) 55%, var(--surface)) 0%,
    var(--surface) 100%);
  box-shadow:var(--shadow-sm);
}
.rail-note + .rail-note{margin-top:var(--space-3)}
.rail-note-label{
  display:block;
  font-family:var(--font-ui);
  font-size:.7rem;
  font-weight:800;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--pink);
  margin-bottom:.5rem;
}
.rail-note p{
  margin:0;
  font-size:var(--text-sm);
  line-height:1.55;
  color:var(--color-text-muted);
}
.rail-note p + p{margin-top:.55rem}
.rail-note-sig{
  font-family:var(--font-display);
  font-style:italic;
  color:var(--pink) !important;
  font-size:var(--text-base) !important;
}
.rail-note-list{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:.55rem;
  font-size:var(--text-sm);
  line-height:1.5;
  color:var(--color-text-muted);
}
.rail-note-list li{position:relative;padding-left:1.1rem}
.rail-note-list li::before{
  content:"";
  position:absolute;left:.15rem;top:.55rem;
  width:5px;height:5px;border-radius:50%;
  background:var(--pink);
}
.rail-note-list strong{color:var(--color-text);font-weight:800}
.rail-note--give{
  border-left-color:var(--pink-deep);
  background:linear-gradient(180deg,
    color-mix(in srgb, var(--pink-soft) 70%, var(--surface)) 0%,
    var(--surface) 100%);
}

/* =========================================================
   #ORDER · authored right rail
   ========================================================= */
/* Subtle tonal lift for the whole section so the rail's field
   doesn't share the raw page edge. */
.order{background:linear-gradient(180deg,
  color-mix(in srgb, var(--surface-2) 60%, var(--surface)) 0%,
  var(--surface) 55%)}

@media (min-width:980px){
  /* The rail is the right grid cell; stretch it to full row height
     and give it a continuous tonal field + a faint divider cue so it
     reads as one designed column instead of a card floating in a void. */
  .order-wrap{align-items:stretch}
  .order-rail{
    align-self:stretch;
    display:block;
    padding-left:var(--space-5);
    border-left:1px solid var(--color-divider);
    background:linear-gradient(180deg,
      color-mix(in srgb, var(--pink-soft) 22%, transparent) 0%,
      transparent 55%);
  }
}
/* rail-stack = the cart + editorial notes grouped together. It sits at
   the top of the full-height rail. The cart keeps its original sticky
   so it tracks the scroll; the notes fill the space beneath it, and the
   rail's divider + tonal field span the whole section so the column
   reads complete rather than dying under the cart. */
.rail-stack{display:flex;flex-direction:column;gap:var(--space-3)}
.order-rail .cart{margin-bottom:0}

/* =========================================================
   #MENU · authored left rail (photo + notes fill the column)
   ========================================================= */
.menu{background:linear-gradient(180deg,
  color-mix(in srgb, var(--surface-2) 45%, var(--cream)) 0%,
  var(--cream) 45%)}

.menu-rail{display:flex;flex-direction:column;gap:var(--space-4)}
@media (min-width:880px){
  /* Sides now live in the left rail (box photo + 2 notes + Sides), so both
     columns carry real content and run top-aligned to a near-matching height.
     No centering trick needed — the columns are genuinely balanced, and the
     full-width 3-col sandwich board caps the section. */
  .menu-feature{align-items:start;grid-template-columns:0.92fr 1fr;gap:var(--space-7)}
  .menu-rail{align-self:start}
  /* The Sides block inside the rail gets a little top separation */
  .rail-sides{margin-top:var(--space-2)}
  /* Tighten the right column's vertical run */
  .menu-content > h3{margin-bottom:var(--space-2)}
  .menu-content .menu-section-head{margin:var(--space-4) 0 var(--space-2)}
  .menu-content .menu-section-head.lg{margin-top:var(--space-5)}
  .menu-content .sandwich-hero{margin-bottom:var(--space-3)}
  .menu-content .menu-section-note{font-size:var(--text-xs);line-height:1.55;margin-bottom:var(--space-3)}
  .menu-content .menu-list{gap:var(--space-2)}
  .menu-content .menu-item{padding:var(--space-2) 0}
}
/* On the reverse charcuterie feature there is no rail — leave as-is. */
.menu-feature.reverse .menu-photo{aspect-ratio:3/2}

/* =========================================================
   Tighten vertical rhythm where content hangs loose
   ========================================================= */
.step{margin:var(--space-4) 0}
.step:first-of-type{margin-top:0}
.step-title{margin-bottom:.2rem}
.step-sub{margin-bottom:var(--space-2)}
/* Trim the gap under short helper copy in step 1. */
.step-grid small{margin-top:.3rem}

/* =========================================================
   Responsive · rails collapse cleanly to single column
   ========================================================= */
@media (max-width:979px){
  .order-rail{
    display:flex;flex-direction:column;gap:var(--space-3);
    border-left:0;padding-left:0;background:none;
  }
}
@media (max-width:879px){
  .menu-rail{position:static;top:auto}
}

/* =========================================================
   PHOTO PLACEHOLDERS · Kairos image slots (2026-07-21)
   Reuses the real .menu-photo frame (radius/shadow/token
   palette). An empty .photo-slot shows a labeled placeholder;
   once a real <img> is dropped in, .photo-slot is removed and
   the existing .menu-photo img{object-fit:cover} takes over.
   Nothing here uses off-brand hex or fonts — tokens only.
   ========================================================= */
.photo-slot{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.4rem;text-align:center;padding:var(--space-4);
  background:linear-gradient(150deg,
    color-mix(in srgb, var(--pink-deep) 30%, var(--surface-2)) 0%,
    var(--surface-2) 60%,
    color-mix(in srgb, var(--ink) 20%, var(--surface-2)) 100%);
  border:1px dashed color-mix(in srgb, var(--pink) 45%, transparent);
  border-radius:inherit;
}
.photo-slot .ps-id{
  font-family:var(--font-ui);font-weight:800;font-size:var(--text-xs);
  letter-spacing:.14em;text-transform:uppercase;
  color:color-mix(in srgb, var(--pink) 70%, var(--color-text));
}
.photo-slot .ps-cap{
  font-family:var(--font-display);font-size:var(--text-sm);font-style:italic;
  color:var(--color-text-muted);max-width:24ch;line-height:1.3;
}
/* Photo frame that can hold a placeholder OR a real image */
.photo-frame{position:relative;border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-lg)}
.photo-frame img{width:100%;height:100%;object-fit:cover;display:block}

/* Order rail hero + squares — sit under the cart, inside .rail-stack.
   The ratio classes live ON the .photo-frame, so target them directly. */
.photo-frame.rail-photo{aspect-ratio:3/4}
.photo-frame.rail-photo.sq{aspect-ratio:1/1}

/* Sandwich emphasis: wide hero inside .menu-content */
.photo-frame.sandwich-hero{aspect-ratio:16/9;margin:0 0 var(--space-4)}

/* Full-width sandwich board (PH-05/06/07) — spans BOTH columns below the
   .menu-feature grid so the section baseline flattens and the right-column
   dead space is eliminated. Square-ish cards read designed, not stacked. */
.sandwich-band-label{
  display:block;
  font-family:var(--font-ui);font-weight:800;font-size:var(--text-xs);
  letter-spacing:.14em;text-transform:uppercase;color:var(--pink);
}
.sandwich-board{margin-top:var(--space-7)}
.sandwich-board-head{
  display:flex;align-items:baseline;justify-content:space-between;
  gap:var(--space-3);flex-wrap:wrap;
  margin-bottom:var(--space-4);
  padding-bottom:var(--space-3);
  border-bottom:1px solid rgba(255,255,255,.10);
}
.sandwich-board-price{
  font-family:var(--font-display);font-style:italic;
  font-size:var(--text-sm);color:rgba(255,255,255,.66);
}
.sandwich-board-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:var(--space-4);
}
/* Masters are true 9:16; display as squarish 4:5 cards. object-fit:cover keeps
   the sandwich hero centered, trimming the dark negative space top & bottom. */
.sandwich-board-grid .photo-frame{aspect-ratio:4/5}
.sandwich-board-grid .photo-frame img{object-position:center 60%}
/* caption under each sandwich photo */
.photo-cap{
  position:absolute;left:0;right:0;bottom:0;
  padding:var(--space-4) var(--space-3) var(--space-3);
  font-family:var(--font-display);font-style:italic;
  font-size:var(--text-sm);color:#fff;
  text-align:center;letter-spacing:.01em;
  background:linear-gradient(to top, rgba(12,6,12,.82) 0%, rgba(12,6,12,.5) 55%, rgba(12,6,12,0) 100%);
}
@media (max-width:760px){
  .sandwich-board-grid{grid-template-columns:1fr 1fr}
  .sandwich-board-grid .photo-frame:last-child{grid-column:1 / -1;aspect-ratio:16/9}
}
@media (max-width:460px){
  .sandwich-board-grid{grid-template-columns:1fr}
  .sandwich-board-grid .photo-frame,
  .sandwich-board-grid .photo-frame:last-child{aspect-ratio:4/5}
  .photo-cap{font-size:var(--text-xs)}
}

/* Full-width menu landing strip */
/* PH-08 holds the 2560x1080 (~21:9) boardroom hero — match the asset so the
   screen logo (top) and charcuterie board (bottom) are never cropped. */
.photo-frame.menu-strip{aspect-ratio:64/27;margin-top:var(--space-8)}
@media (max-width:620px){.photo-frame.menu-strip{aspect-ratio:16/9}}

/* Catering dropdown gallery (clones charcuterie feature grid) */
.catering-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-5)}
.catering-gallery .photo-frame{aspect-ratio:4/3}
@media (max-width:900px){.catering-gallery{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.catering-gallery{grid-template-columns:1fr}}

/* Corporate catering — concierge band + Event DIM */
.catering-concierge{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--space-5);margin-top:var(--space-6);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:color-mix(in oklab, var(--pink-soft) 45%, var(--color-surface))}
.concierge-lead p{margin:.5rem 0 0;color:var(--color-text)}
.concierge-lead .concierge-contact{margin-top:.6rem;font-weight:800;letter-spacing:.01em}
.concierge-points{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}
.concierge-points li{position:relative;padding-left:1.35rem;font-size:.92rem;color:var(--color-text);line-height:1.5}
.concierge-points li::before{content:"";position:absolute;left:0;top:.55em;width:.5rem;height:.5rem;border-radius:50%;background:var(--pink)}
.concierge-points strong{color:var(--pink-deep)}
@media (max-width:760px){.catering-concierge{grid-template-columns:1fr}}

.event-dim{margin-top:var(--space-6);padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-md)}
.event-dim-head{margin-bottom:var(--space-5)}
.event-dim-title{margin:.6rem 0 .4rem}
.event-dim-sub{color:var(--color-text-muted);max-width:60ch;margin:0}
.event-dim .step{margin-top:var(--space-4)}
.event-dim .step-grid textarea{width:100%;padding:.7rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--color-divider);background:var(--color-surface);color:var(--color-text);font:inherit;font-weight:500;resize:vertical;min-height:76px;transition:border-color .18s,box-shadow .18s}
.event-dim .step-grid textarea:focus{outline:none;border-color:var(--pink);box-shadow:0 0 0 3px rgba(176,62,160,.18)}
.event-dim .step-grid label.span-2{grid-column:1 / -1}
.event-dim-fineprint{font-size:.8rem;color:var(--color-text-muted);margin:.6rem 0 0;max-width:64ch}
.event-dim .submit-row{margin-top:var(--space-5);display:flex;flex-direction:column;gap:.4rem;align-items:flex-start}
.event-dim .form-status{margin-top:var(--space-4);padding:var(--space-4);border-radius:var(--radius-md);font-weight:600}
.event-dim .form-status.is-ok{background:var(--pink-soft);color:var(--pink-deep);border:1px solid var(--pink)}
.event-dim .form-status.is-err{background:color-mix(in oklab,#c0392b 12%,var(--color-surface));color:#c0392b;border:1px solid color-mix(in oklab,#c0392b 40%,transparent)}

/* --- Personal / Corporate partition chips (event DIM, first question) ------ */
.event-dim .step-sub{color:var(--color-text-muted);font-size:.86rem;font-weight:500;margin:.1rem 0 .6rem}
.audience-chips{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:.4rem}
.audience-chip{
  display:flex;flex-direction:column;gap:.25rem;text-align:left;
  padding:.85rem 1rem;border-radius:var(--radius-md);cursor:pointer;
  border:1.5px solid var(--color-border);background:var(--color-surface);
  color:var(--color-text);font:inherit;
  transition:border-color .18s,background .18s,box-shadow .18s,transform .12s;
}
.audience-chip:hover{border-color:var(--pink);transform:translateY(-1px)}
.audience-chip:focus-visible{outline:2px solid var(--pink);outline-offset:2px}
.audience-chip .audience-label{font-weight:800;font-size:1rem}
.audience-chip .audience-sub{font-size:.78rem;color:var(--color-text-muted);font-weight:500;line-height:1.35}
.audience-chip.is-active{
  border-color:var(--pink);
  background:color-mix(in oklab,var(--pink-soft) 55%,var(--color-surface));
  box-shadow:0 0 0 3px rgba(176,62,160,.14);
}
.audience-chip.is-active .audience-sub{color:var(--color-text);opacity:.85}
@media (max-width:560px){.audience-chips{grid-template-columns:1fr}}

/* Dark mode already handled via token remap in :root[data-theme="dark"] */

/* ============ ALBUM HERO STRIP (top of page, right under hero) ============ */
.album-strip{
  padding: 3rem 0;
  background:
    radial-gradient(1200px 400px at 15% 0%, rgba(176,62,160,.22), transparent 60%),
    radial-gradient(900px 500px at 85% 100%, rgba(138,44,125,.28), transparent 60%),
    linear-gradient(180deg, #1a0f17 0%, #120a10 100%);
  border-top: 1px solid rgba(176,62,160,.22);
  border-bottom: 1px solid rgba(176,62,160,.22);
}
.album-strip-grid{
  display: grid;
  grid-template-columns: minmax(200px, 320px) 1fr;
  gap: 2.25rem;
  align-items: center;
}
@media (max-width: 720px){
  .album-strip-grid{
    grid-template-columns: 1fr;
    gap: 1.5rem;
    text-align: center;
  }
  .album-strip-cover{ margin: 0 auto; max-width: 320px; }
  .album-strip-actions{ justify-content: center; }
  .album-transport{ justify-content: center; gap: .4rem; }
  .album-select{ max-width: none; }
}
.album-strip-cover{
  display: block;
  position: relative;
  width: 100%;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  border-radius: 18px;
  overflow: hidden;
  box-shadow:
    0 24px 60px -20px rgba(176,62,160,.55),
    0 0 0 1px rgba(255,255,255,.06);
  transition: transform .28s ease, box-shadow .28s ease;
}
.album-strip-cover:hover{
  transform: translateY(-3px);
  box-shadow:
    0 32px 70px -18px rgba(176,62,160,.7),
    0 0 0 1px rgba(255,255,255,.10);
}
.album-strip-cover img{
  display: block;
  width: 100%;
  height: auto;
}
.album-strip-cover:focus-visible{
  outline: 3px solid #e07bd0;
  outline-offset: 3px;
}

/* Play / stop badge sitting on the pot. Pink at rest, not a dark scrim —
   against the near-black pot a dark badge disappears, and this is now the
   only play control on the page. */
.album-cover-badge{
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 72px;
  height: 72px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: rgba(176,62,160,.86);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  box-shadow:
    0 12px 34px -8px rgba(0,0,0,.7),
    0 0 0 2px rgba(255,255,255,.34) inset;
  transition: background .2s ease, transform .2s ease;
  pointer-events: none;
}
.album-strip-cover:hover .album-cover-badge{
  background: rgba(200,76,183,.95);
  transform: translate(-50%, -50%) scale(1.06);
}
.album-cover-icon{
  grid-area: 1 / 1;
  width: 30px;
  height: 30px;
  fill: #fbf6f3;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,.45));
}
/* Paused (default): show the triangle. Playing: show the pause bars. */
.album-cover-icon-play{ margin-left: 3px; }   /* optically centre the triangle */
.album-cover-icon-pause{ display: none; }
.album-strip-cover.is-playing .album-cover-icon-play{ display: none; }
.album-strip-cover.is-playing .album-cover-icon-pause{ display: block; }
.album-strip-cover.is-playing .album-cover-badge{
  background: rgba(26,15,23,.72);
  box-shadow:
    0 12px 34px -8px rgba(0,0,0,.7),
    0 0 0 2px rgba(224,123,208,.55) inset;
}
@media (prefers-reduced-motion: reduce){
  .album-strip-cover,
  .album-cover-badge{ transition: none; }
}
/* Grid items default to min-width:auto; the <select>'s intrinsic width
   (sized to its widest option) would otherwise push the next arrow off the
   right edge on phones. */
.album-strip-body{ min-width: 0; }
.album-strip-body .eyebrow{
  /* .album-strip paints a hardcoded dark gradient in BOTH themes, but the base
     .eyebrow pill takes background:var(--pink-soft) — which is #f6e3f1 in light
     theme, the same value as the color below, so the label vanished. Pin the
     pill to the dark-theme token value so it renders identically either way.
     Same approach as .community .eyebrow, the other always-dark section. */
  background: #3a1d35;
  color: #f6e3f1;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-size: .72rem;
  opacity: .8;
}
.album-strip-body h2{
  font-family: "Playfair Display", Georgia, serif;
  font-size: clamp(1.75rem, 3vw, 2.6rem);
  line-height: 1.1;
  margin: .35rem 0 .65rem;
  color: #fbf6f3;
}
.album-strip-lede{
  color: rgba(251,246,243,.82);
  font-size: 1.02rem;
  line-height: 1.55;
  margin: 0 0 1.2rem;
  max-width: 60ch;
}
.album-strip-lede strong{ color: #f6e3f1; }
/* ---- Collapsed album bar -------------------------------------------------
   The album sits in slot two, ahead of the menu and the order form, so it is
   closed by default: a single slim row instead of a full screen of music on
   mobile. The mini toggle plays without expanding, and #ep-audio lives outside
   the collapsible panel so the music keeps going once it is closed again. */
.album-bar{
  display: flex;
  align-items: center;
  gap: .85rem;
  flex-wrap: nowrap;
}
.album-mini{
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border-radius: 999px;
  cursor: pointer;
  color: #fff;
  border: 1px solid rgba(255,255,255,.28);
  background: rgba(176,62,160,.86);
  transition: background .18s ease, transform .12s ease;
}
.album-mini:hover{ background: rgba(176,62,160,1); }
.album-mini:active{ transform: translateY(1px); }
.album-mini svg{ width: 20px; height: 20px; fill: currentColor; pointer-events: none; }
.album-mini-play{ margin-left: 2px; }
.album-mini-pause{ display: none; }
.album-mini.is-playing .album-mini-play{ display: none; }
.album-mini.is-playing .album-mini-pause{ display: block; }

.album-bar-label{
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  line-height: 1.32;
}
.album-bar-lead{
  display: block;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #f0b9e2;
}
.album-bar-now{
  display: block;
  font-size: .93rem;
  color: #fff;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.album-bar-expand{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  min-height: 44px;
  padding: .45rem .8rem;
  border-radius: 999px;
  cursor: pointer;
  font: inherit;
  font-size: .84rem;
  color: #f6e3f1;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.22);
  transition: background .18s ease;
}
.album-bar-expand:hover{ background: rgba(255,255,255,.16); }
.album-bar-expand svg{
  width: 16px;
  height: 16px;
  transition: transform .2s ease;
}
.album-bar-expand[aria-expanded="true"] svg{ transform: rotate(180deg); }

/* Panel opens beneath the bar. The [hidden] rule has to be explicit: the
   panel is .album-strip-grid, whose display:grid outranks the UA
   stylesheet's [hidden]{display:none}. */
#album-panel{ margin-top: 1.35rem; }
#album-panel[hidden]{ display: none; }

@media (max-width: 640px){
  .album-bar-expand-label{
    position: absolute;
    width: 1px; height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
  .album-bar-expand{ padding: .45rem; width: 44px; justify-content: center; }
}

/* Transport row: prev / play / pause / stop / next. Five 48px targets plus
   gaps = 288px, so it still fits a 390px phone without wrapping. */
.album-transport{
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: nowrap;
  margin-bottom: .6rem;
}
.album-strip-actions{
  display: flex;
  align-items: center;
  gap: .6rem;
  flex-wrap: nowrap;
  margin-bottom: .75rem;
}
.album-nav{
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(176,62,160,.45);
  background: rgba(176,62,160,.16);
  color: #fbf6f3;
  font-size: 1rem;
  line-height: 1;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .18s ease, border-color .18s ease, transform .12s ease;
}
.album-nav:hover{
  background: rgba(176,62,160,.34);
  border-color: rgba(176,62,160,.7);
}
.album-nav:active{ transform: translateY(1px); }
.album-nav svg{
  width: 20px;
  height: 20px;
  fill: currentColor;
  pointer-events: none;
}
/* The play triangle needs a nudge to sit optically centred in the circle. */
.album-nav-play svg{ margin-left: 2px; }
.album-nav[disabled]{
  opacity: .32;
  cursor: default;
  background: rgba(176,62,160,.08);
  border-color: rgba(176,62,160,.22);
}
.album-nav[disabled]:hover{
  background: rgba(176,62,160,.08);
  border-color: rgba(176,62,160,.22);
}
.album-nav[disabled]:active{ transform: none; }
.album-nav:focus-visible{
  outline: 3px solid #e07bd0;
  outline-offset: 2px;
}
/* font-size must stay at 16px minimum or iOS Safari zooms the page on focus. */
.album-select{
  flex: 1 1 auto;
  min-width: 0;
  max-width: 26rem;
  height: 48px;
  padding: 0 2.4rem 0 .9rem;
  border-radius: 12px;
  border: 1px solid rgba(176,62,160,.45);
  background-color: rgba(26,15,23,.92);
  color: #fbf6f3;
  font-family: inherit;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.2;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fbf6f3'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .7rem center;
  background-size: 20px 20px;
}
.album-select:hover{ border-color: rgba(176,62,160,.7); }
.album-select:focus-visible{
  outline: 3px solid #e07bd0;
  outline-offset: 2px;
}
.album-select option{
  background-color: #1a0f17;
  color: #fbf6f3;
}
.album-strip-fine{
  color: rgba(251,246,243,.55);
  font-size: .82rem;
  margin: 0;
  letter-spacing: .02em;
}

/* ============ SONG EMBED (inline mini-player in a section, e.g. Charcuterie) ============ */
.song-embed{
  margin-top: 1.75rem;
  padding: 1.15rem 1.25rem;
  background: linear-gradient(180deg, rgba(176,62,160,.10), rgba(176,62,160,.02));
  border: 1px solid rgba(176,62,160,.35);
  border-radius: 14px;
  display: grid;
  gap: .8rem;
}
.song-embed-meta{ display: flex; flex-direction: column; gap: .15rem; }
.song-embed-title{
  font-family: "Playfair Display", Georgia, serif;
  font-size: 1.4rem;
  margin: 0;
  color: #fbf6f3;
}
.song-embed-sub{
  margin: 0;
  color: rgba(251,246,243,.75);
  font-size: .92rem;
  line-height: 1.45;
}
.song-embed-audio{
  width: 100%;
  min-height: 40px;
  border-radius: 8px;
}
.song-embed-audio::-webkit-media-controls-panel{
  background: rgba(0,0,0,.35);
}
.song-embed-links{
  margin: 0;
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  font-size: .88rem;
}
.song-embed-links a{
  color: #f6e3f1;
  text-decoration: none;
  border-bottom: 1px dotted rgba(246,227,241,.5);
  transition: color .18s ease, border-color .18s ease;
}
.song-embed-links a:hover{
  color: #fff;
  border-bottom-color: #f6e3f1;
}

/* ============================================================
   HERO/ORDER CLEANUP (Talos) — hero lines, inline story quote,
   merged "Before you order" card footer, mix preview toggle
   ============================================================ */
.hero-text .hero-positioning{
  font-family:var(--font-display);
  font-size:var(--text-xl);
  line-height:1.25;
  color:var(--color-text);
  max-width:20ch;
  margin:0 0 var(--space-3);
}
.hero-text .hero-giving{
  font-size:var(--text-md);
  color:var(--color-text-muted);
  max-width:46ch;
  margin:0 0 var(--space-5);
  line-height:1.5;
}
.story-quote-inline{
  font-family:var(--font-display);
  font-style:italic;
  font-size:var(--text-lg);
  line-height:1.5;
  color:var(--pink-deep);
  margin:var(--space-4) 0 0;
  padding-left:var(--space-4);
  border-left:3px solid var(--pink);
}
.rail-note-foot{
  margin:.6rem 0 0;
  font-style:italic;
  font-size:var(--text-sm);
  color:var(--color-text-muted);
}
.mix-preview{
  margin:0 0 var(--space-4);
  border:1px solid var(--color-border);
  border-radius:var(--radius-md);
  background:var(--surface);
  overflow:hidden;
}
.mix-preview > summary{
  cursor:pointer;
  list-style:none;
  padding:.7rem var(--space-4);
  font-family:var(--font-ui);
  font-weight:700;
  font-size:var(--text-sm);
  color:var(--pink-deep);
  display:flex;
  align-items:center;
  gap:.5rem;
}
.mix-preview > summary::-webkit-details-marker{display:none}
.mix-preview > summary::before{
  content:"▸";
  font-size:.8em;
  transition:transform .15s ease;
}
.mix-preview[open] > summary::before{transform:rotate(90deg)}
.mix-preview > summary:hover{background:var(--pink-soft)}
.mix-preview #variety-breakdown{padding:0 var(--space-4) var(--space-4)}

/* ==========================================================================
   2026-08-02 · SALES-READY PASS (Talos)
   Stability + legibility repairs only. No redesign.
   1. Veggie platter: full-width, always open, no dead left column
   2. Contact & delivery: full-width commercial form block
   3. Music strip: helper line
   No hero, story, menu-architecture or ordering-flow changes.
   ========================================================================== */

/* --- 1 · Veggie platter, full-width & always open ------------------------ */
.veg-block{
  margin: var(--space-7) 0 var(--space-6);
  width: 100%;
}
.veg-block .veg-block-head{
  position: relative;
  padding: 26px 30px 20px;
}
.veg-block .veg-block-eyebrow{
  display: block;
  font: 700 11.5px/1 'Manrope', system-ui, sans-serif;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--chalk-pink);
  margin-bottom: 10px;
}
.veg-block .veg-block-title{
  margin: 0 0 10px;
  font: 600 clamp(1.5rem, 2.6vw, 2rem)/1.15 'Playfair Display', Georgia, serif;
  color: var(--chalk);
}
.veg-block .veg-block-promise{
  margin: 0 0 12px;
  max-width: 62ch;
  font: 400 clamp(1rem, 1.3vw, 1.0625rem)/1.6 'Manrope', system-ui, sans-serif;
  color: var(--chalk);          /* full-strength chalk — no low-contrast copy */
  opacity: .94;
}
.veg-block .veg-block-price{
  display: inline-block;
  margin: 0;
  padding: .5rem .9rem;
  border: 1px solid var(--chalk-line);
  border-radius: 999px;
  font: 700 clamp(.9rem, 1.15vw, .975rem)/1.4 'Manrope', system-ui, sans-serif;
  color: var(--chalk);
  background: rgba(245,239,226,.07);
  letter-spacing: .01em;
}
/* Legibility inside the chalkboard — merlin injects these at runtime, so the
   overrides below are scoped to #veg-panel to beat the injected <style>. */
#veg-panel .veg-lede{ color: var(--chalk); opacity: .9; margin: 18px 0 18px; }
#veg-panel #veggie-status{
  color: var(--chalk-mint);
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: .01em;
}
#veg-panel .veg-helper-text{ display: none; }   /* duplicate pricing line — retired */
#veg-panel .veg-cta-row{ margin-top: var(--space-4); }
@media (min-width:900px){
  .veg-block .veg-block-head{ padding: 30px 36px 22px; }
  .veg-block .veg-panel-inner{ padding: 0 36px 32px; }
  .veg-block .veg-mast{ margin: 0 -36px 4px; }
  .veg-block .veg-mast img{ max-height: 340px; }
}

/* --- 2 · Contact & delivery, full-width commercial form ------------------ */
/* No step number here, so kill the 48px rail that was left standing empty. */
.step.step-contact{
  display: block;
  grid-template-columns: none;
  margin-top: var(--space-6);
  padding-top: var(--space-5);
  border-top: 1px solid var(--color-border);
}
.step.step-contact > .step-body{ width: 100%; }
.step.step-contact .step-title{
  margin: 0 0 .35rem;
  font-size: clamp(1.35rem, 2.1vw, 1.7rem);
}
.step.step-contact .step-contact-sub{
  margin: 0 0 var(--space-4);
  color: var(--color-text-muted);
  font-size: var(--text-sm);
}
/* Full-width note/paragraph children — previously only labels honoured .full,
   which parked the delivery-radius note in the column beside ZIP. */
.buyer-grid > .full,
.buyer-grid > p.full,
.buyer-grid > .buyer-note{ grid-column: 1 / -1; }
.buyer-grid .buyer-note{
  margin: 0;
  padding: .7rem .9rem;
  border-radius: var(--radius-md);
  background: var(--pink-soft, #f6e3f1);
  border: 1px solid var(--color-border);
}
.buyer-grid .buyer-note small{ font-size: var(--text-sm); line-height: 1.5; color: var(--color-text); }
.buyer-grid label{ min-width: 0; }
.buyer-grid input,
.buyer-grid select,
.buyer-grid textarea{ min-height: 48px; font-size: 1rem; }
.buyer-grid textarea{ min-height: 92px; }
/* Real commercial widths: name/email/phone across the top, then a proper
   street / city / state / ZIP address grid. */
@media (min-width:760px){
  .buyer-grid{ grid-template-columns: repeat(6, 1fr); column-gap: var(--space-3); }
  .buyer-grid > label{ grid-column: span 2; }
  .buyer-grid > label.full{ grid-column: 1 / -1; }
  .buyer-grid > label.col-city{ grid-column: span 3; }
  .buyer-grid > label.col-state{ grid-column: span 1; }
  .buyer-grid > label.col-zip{ grid-column: span 2; }
}
.step.step-contact .submit-row{ margin-top: var(--space-5); }

/* --- 3 · Music strip helper --------------------------------------------- */
.album-bar-helper{
  margin: .85rem 0 0;
  max-width: 66ch;
  font-size: var(--text-sm);
  line-height: 1.6;
  color: rgba(255,255,255,.74);
}

/* --- 4 · No dead left columns: any .step whose rail is empty goes 1-col --- */
.step:not(:has(> .step-num)){ grid-template-columns: 1fr; }

/* --- 5 · Commercial field widths (container-aware, not viewport-guessed) --- */
/* The order panel sits beside the cart rail, so viewport media queries lie
   about how much room the form actually has. Size the fields off the panel. */
@media (min-width:1200px){
  .order-wrap{ grid-template-columns: minmax(0,1.85fr) minmax(300px,350px); }
}
.order-panel{ container-type: inline-size; container-name: orderpanel; }
@container orderpanel (min-width: 520px){
  .buyer-grid{ grid-template-columns: repeat(4, 1fr); }
  .buyer-grid > label{ grid-column: span 2; }        /* two comfortable columns */
  .buyer-grid > label.full{ grid-column: 1 / -1; }
  .buyer-grid > label.col-city{ grid-column: span 2; }
  .buyer-grid > label.col-state{ grid-column: span 1; }
  .buyer-grid > label.col-zip{ grid-column: span 1; }
}
@container orderpanel (min-width: 820px){
  .buyer-grid{ grid-template-columns: repeat(6, 1fr); }
  .buyer-grid > label{ grid-column: span 2; }        /* three across, still wide */
  .buyer-grid > label.col-city{ grid-column: span 3; }
  .buyer-grid > label.col-state{ grid-column: span 1; }
  .buyer-grid > label.col-zip{ grid-column: span 2; }
}
/* Never let a label wrap into a second cramped line above a skinny input. */
.buyer-grid label{ line-height: 1.35; }
.buyer-grid label .opt{ white-space: nowrap; }

/* --- 6 · Veggie subtotal: label and figure must not collide -------------- */
.veg-cta-row .veg-total{ gap: 6px; line-height: 1; }
.veg-cta-row .veg-total span{ font-size: 15px; }
.veg-cta-row .veg-total strong{ font-size: 28px; line-height: 1.05; }

/* Street + suite share a row once there is real room for both. */
@container orderpanel (min-width: 520px){
  .buyer-grid > label.full.col-street{ grid-column: span 3; }
  .buyer-grid > label.full.col-suite{ grid-column: span 1; }
}
@container orderpanel (min-width: 820px){
  .buyer-grid > label.full.col-street{ grid-column: span 4; }
  .buyer-grid > label.full.col-suite{ grid-column: span 2; }
}

/* Labels that wrap ("(optional)") must not knock their input out of line.
   Bottom-align every field so inputs share one baseline across the row. */
.buyer-grid > label{ justify-content: flex-end; }
.buyer-grid > label > .opt{ font-weight: 500; color: var(--color-text-muted); }

/* --- 7 · Mobile density ---------------------------------------------------
   Two side tiles per row instead of an eight-deep single-file stack, and
   State / ZIP share a line so the address block stays readable. */
@media (max-width:560px){
      .veg-block .veg-block-head{ padding: 20px 18px 16px; }
  .veg-block .veg-block-price{ font-size: .875rem; padding: .45rem .75rem; }
  .buyer-grid{ grid-template-columns: repeat(2, 1fr); }
  .buyer-grid > label{ grid-column: 1 / -1; }
  .buyer-grid > label.col-state{ grid-column: span 1; }
  .buyer-grid > label.col-zip{ grid-column: span 1; }
}
.veg-cta-row .veg-total span{ line-height: 1.3; }

/* --- 8 · Music bar micro-CTA ---------------------------------------------
   Sits directly under the now-playing line, right beside the play button.
   Subtle by design: it nudges, it does not shout. Hidden on the narrowest
   screens so the bar stays a single tight row. */
.album-bar-cta{
  display: block;
  margin-top: .18rem;
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .06em;
  color: rgba(240,185,226,.82);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
@media (max-width:560px){ .album-bar-cta{ display: none; } }


/* ===== MERLIN · Decision Intelligence Ordering (restored from deploy 6798a76c) ===== */
/* Recovered from https://6798a76c.chef-lesly.pages.dev/styles.db085ee0e4.css (deploy 6798a76c, 2026-07-26T15:08:32Z) */



/* ==========================================================================
   MERLIN · Dynasty Agent — bubble, panel, wizard, chalkboard, menu gallery
   Appended 2026-07-22. Uses locked brand tokens.
   ========================================================================== */
:root{
  --merlin-grad: linear-gradient(150deg, #b03ea0 0%, #8a2c7d 100%);
  --chalk-bg: #14100f;
  --chalk-ink: #fbf6f3;
}



/* ---------- MENU GALLERY ---------- */
.menu-merlin-cue{ margin-top:.6rem; font-size:1rem; color:var(--ink-muted); }


.menu-merlin-cue strong{ color:var(--pink); }



/* ---------- MERLIN INLINE SECTION ---------- */
.merlin-inline-section .merlin-eyebrow{ color:var(--pink); }


.merlin-inline-head{ max-width:720px; margin-bottom:1.8rem; }


.merlin-inline-head h2{ color:var(--pink-deep); }


.merlin-inline-section .order-rules{
  display:flex; flex-wrap:wrap; gap:.5rem .9rem; margin-top:1rem; list-style:none; padding:0;
}


.merlin-inline-section .order-rules span{
  font-size:.78rem; font-family:'Manrope',sans-serif; color:var(--ink-muted);
  background:var(--pink-soft); padding:.3rem .7rem; border-radius:20px;
}


#merlin-inline-mount .merlin-wizard{
  background:var(--cream); border:1px solid var(--pink-soft); border-radius:20px;
  box-shadow:0 20px 60px rgba(26,15,23,.08); padding:2rem 2.2rem; max-width:900px;
}

@media (max-width:620px){
 #merlin-inline-mount .merlin-wizard{ padding:1.4rem 1.2rem; }
}



/* ---------- FLOATING BUBBLE ---------- */
.merlin-bubble{
  position:fixed; right:24px; top:88px; z-index:1200;
  width:64px; height:64px; border-radius:50%; border:0; cursor:pointer;
  background:var(--merlin-grad); color:#fff;
  box-shadow:0 12px 34px rgba(138,44,125,.5);
  display:grid; place-items:center; transition:transform .18s ease, box-shadow .18s ease;
}


.merlin-bubble:hover{ transform:scale(1.06); box-shadow:0 16px 40px rgba(138,44,125,.6); }


.merlin-bubble:active{ transform:scale(.95); }


.merlin-bubble-icon{ position:relative; z-index:2; }


.merlin-bubble-chip{
  position:absolute; top:calc(100% + 6px); left:50%; transform:translateX(-50%);
  font-family:'Manrope',sans-serif; font-size:.7rem; font-weight:700; letter-spacing:.06em;
  color:var(--pink-deep); background:var(--cream); padding:.12rem .5rem; border-radius:10px;
  box-shadow:0 3px 10px rgba(26,15,23,.15); white-space:nowrap;
}


.merlin-bubble-pulse{
  position:absolute; inset:0; border-radius:50%; background:var(--pink); opacity:.55;
  z-index:1; animation:merlinPulse 1.8s ease-out infinite;
}


.merlin-bubble.pulse-done .merlin-bubble-pulse{ animation:none; display:none; }


@keyframes merlinPulse{ 0%{ transform:scale(1); opacity:.5; } 100%{ transform:scale(2.1); opacity:0; } }


.merlin-bubble.is-bouncing{ animation:merlinBounce .6s ease; }


@keyframes merlinBounce{ 0%,100%{ transform:scale(1); } 30%{ transform:scale(1.25) translateY(-6px); } 60%{ transform:scale(.92); } }

@media (max-width:640px){
 .merlin-bubble{ right:16px; top:72px; }
}



/* ---------- BACKDROP + PANEL ---------- */
.merlin-panel[hidden], .merlin-backdrop[hidden]{ display:none !important; }


.merlin-backdrop{
  position:fixed; inset:0; z-index:940; background:rgba(26,15,23,.42);
  backdrop-filter:blur(2px); opacity:0; transition:opacity .25s ease;
}


.merlin-backdrop.is-open{ opacity:1; }


.merlin-panel{
  position:fixed; z-index:950; right:24px; bottom:24px; width:440px; max-width:calc(100vw - 32px);
  max-height:min(84vh, 760px); background:var(--cream); border-radius:20px; overflow:hidden;
  display:flex; flex-direction:column; box-shadow:0 30px 80px rgba(26,15,23,.4);
  transform:translateY(24px) scale(.96); opacity:0; transition:transform .28s cubic-bezier(.2,.8,.2,1), opacity .22s ease;
}


.merlin-panel.is-open{ transform:translateY(0) scale(1); opacity:1; }


.merlin-panel-head{
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1rem 1.2rem; background:var(--merlin-grad); color:#fff; flex:0 0 auto;
}


.merlin-panel-id{ display:flex; align-items:center; gap:.7rem; }


.merlin-avatar{ display:grid; place-items:center; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,.18); color:#fff; }


.merlin-panel-name{ font-family:'Playfair Display',serif; font-weight:700; font-size:1.15rem; line-height:1.1; }


.merlin-panel-name small{ display:block; font-family:'Manrope',sans-serif; font-weight:500; font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; opacity:.85; }


.merlin-close{ background:rgba(255,255,255,.16); border:0; color:#fff; width:34px; height:34px; border-radius:50%; cursor:pointer; display:grid; place-items:center; transition:background .15s ease; }


.merlin-close:hover{ background:rgba(255,255,255,.3); }


.merlin-panel .merlin-wizard-mount{ overflow-y:auto; flex:1 1 auto; padding:1.3rem 1.3rem 1.6rem; -webkit-overflow-scrolling:touch; }

@media (max-width:640px){

  .merlin-panel{
    right:0; left:0; bottom:0; top:auto; width:100%; max-width:100%;
    max-height:92vh; height:auto; border-radius:22px 22px 0 0;
    transform:translateY(100%);
  }

  .merlin-panel.is-open{ transform:translateY(0); }
}



/* ---------- WIZARD (shared, both variants) ---------- */
.merlin-wizard{ font-family:'Manrope',sans-serif; }


.merlin-msg{
  display:flex; gap:.6rem; align-items:flex-start; margin-bottom:1.1rem;
}


.merlin-msg-avatar{ flex:0 0 auto; width:30px; height:30px; border-radius:50%; background:var(--merlin-grad); color:#fff; display:grid; place-items:center; }


.merlin-msg-bubble{
  background:var(--pink-soft); color:var(--ink); border-radius:4px 14px 14px 14px;
  padding:.65rem .9rem; font-size:.95rem; line-height:1.45; max-width:100%;
}


.merlin-msg-bubble strong{ color:var(--pink-deep); }


.merlin-progress{ display:flex; gap:.4rem; margin:0 0 1.1rem; }


.merlin-progress i{ flex:1; height:4px; border-radius:4px; background:var(--pink-soft); transition:background .2s; }


.merlin-progress i.done{ background:var(--pink); }


.merlin-progress i.active{ background:var(--pink-deep); }


.merlin-step-title{ font-family:'Playfair Display',serif; font-size:1.25rem; color:var(--pink-deep); margin:0 0 .8rem; }



/* Day cards */
.merlin-daycards{ display:grid; grid-template-columns:1fr 1fr; gap:.8rem; }


.merlin-daycard{
  border:2px solid var(--pink-soft); background:var(--cream); border-radius:14px; padding:1.1rem 1rem;
  cursor:pointer; text-align:left; transition:border-color .15s, transform .12s, background .15s;
}


.merlin-daycard:hover{ transform:translateY(-2px); border-color:var(--pink); }


.merlin-daycard.is-active{ border-color:var(--pink); background:var(--pink-soft); }


.merlin-daycard .dc-day{ display:block; font-family:'Playfair Display',serif; font-size:1.3rem; color:var(--pink-deep); }


.merlin-daycard .dc-date{ display:block; font-size:.82rem; color:var(--ink-muted); margin-top:.15rem; }



/* Stepper */
.merlin-stepper{ display:flex; align-items:center; justify-content:center; gap:1.2rem; margin:.4rem 0 1rem; }


.merlin-step-btn{ width:52px; height:52px; border-radius:50%; border:2px solid var(--pink); background:var(--cream); color:var(--pink-deep); font-size:1.7rem; line-height:1; cursor:pointer; transition:background .15s, transform .1s; display:grid; place-items:center; }


.merlin-step-btn:hover{ background:var(--pink-soft); }


.merlin-step-btn:active{ transform:scale(.9); }


.merlin-step-btn:disabled{ opacity:.35; cursor:not-allowed; }


.merlin-step-count{ font-family:'Playfair Display',serif; font-size:2.6rem; color:var(--pink-deep); min-width:2ch; text-align:center; }


.merlin-step-count small{ display:block; font-family:'Manrope',sans-serif; font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-muted); }


.merlin-math{
  text-align:center; background:var(--pink-soft); border-radius:12px; padding:.8rem; font-size:.95rem; color:var(--pink-deep); font-weight:600; margin-bottom:.4rem;
}


.merlin-math b{ color:var(--pink); }


.merlin-warn{ background:#fff3f7; border:1px solid var(--pink-soft); color:var(--pink-deep); border-radius:10px; padding:.7rem .8rem; font-size:.85rem; margin-top:.5rem; }


.merlin-warn a{ font-weight:700; }



/* Sandwich grid */
.merlin-sand-status{ text-align:center; font-size:.9rem; color:var(--ink-muted); margin:.2rem 0 .9rem; }


.merlin-sand-status b{ color:var(--pink-deep); }


.merlin-sand-grid{ display:grid; grid-template-columns:1fr 1fr; gap:.7rem; }

@media (max-width:400px){
 .merlin-sand-grid{ grid-template-columns:1fr; }
}


.merlin-sand-card{ border:1px solid var(--pink-soft); border-radius:12px; overflow:hidden; background:var(--cream); }


.merlin-sand-card.has-qty{ border-color:var(--pink); }


.merlin-sand-photo{ aspect-ratio:16/9; background:var(--pink-soft); overflow:hidden; }


.merlin-sand-photo img{ width:100%; height:100%; object-fit:cover; display:block; }


.merlin-sand-body{ padding:.55rem .65rem .65rem; }


.merlin-sand-name{ font-family:'Playfair Display',serif; font-size:.92rem; color:var(--ink); line-height:1.15; margin:0 0 .5rem; min-height:2.2em; }


.merlin-sand-row{ display:flex; align-items:center; justify-content:space-between; gap:.4rem; }


.merlin-sand-mini{ width:30px; height:30px; border-radius:50%; border:1.5px solid var(--pink); background:var(--cream); color:var(--pink-deep); font-size:1.2rem; line-height:1; cursor:pointer; display:grid; place-items:center; }


.merlin-sand-mini:hover{ background:var(--pink-soft); }


.merlin-sand-mini:disabled{ opacity:.3; cursor:not-allowed; }


.merlin-sand-qty{ font-weight:800; font-size:1.1rem; color:var(--pink-deep); min-width:1.4ch; text-align:center; }


.merlin-autofill{
  width:100%; margin-top:.9rem; border:1px dashed var(--pink); background:transparent; color:var(--pink-deep);
  border-radius:12px; padding:.65rem; font-family:'Manrope',sans-serif; font-weight:700; font-size:.9rem; cursor:pointer; transition:background .15s;
}


.merlin-autofill:hover{ background:var(--pink-soft); }



/* Delivery form */
.merlin-form{ display:grid; grid-template-columns:1fr 1fr; gap:.7rem; }


.merlin-form label{ display:flex; flex-direction:column; font-size:.78rem; font-weight:600; color:var(--ink-muted); gap:.25rem; }


.merlin-form label.full{ grid-column:1 / -1; }


.merlin-form input, .merlin-form textarea{
  font-family:'Manrope',sans-serif; font-size:.95rem; padding:.6rem .7rem; border:1px solid var(--pink-soft);
  border-radius:10px; background:var(--cream); color:var(--ink); width:100%;
}


.merlin-form input:focus, .merlin-form textarea:focus{ outline:none; border-color:var(--pink); box-shadow:0 0 0 3px rgba(176,62,160,.15); }


.merlin-form input.invalid{ border-color:#d64; box-shadow:0 0 0 3px rgba(214,68,68,.12); }


.merlin-form .opt{ color:var(--pink); font-weight:500; }



/* Draft summary chip (bottom of wizard) */
.merlin-draft{ margin-top:1rem; background:var(--pink-soft); border-radius:12px; padding:.7rem .9rem; font-size:.82rem; color:var(--pink-deep); }


.merlin-draft ul{ list-style:none; margin:.3rem 0 0; padding:0; }


.merlin-draft li{ display:flex; justify-content:space-between; padding:.1rem 0; }



/* Nav buttons */
.merlin-nav{ display:flex; gap:.7rem; margin-top:1.2rem; }


.merlin-btn{
  font-family:'Manrope',sans-serif; font-weight:700; font-size:.95rem; border-radius:12px; padding:.8rem 1.2rem; cursor:pointer; border:0; transition:transform .1s, opacity .15s;
}


.merlin-btn:active{ transform:scale(.97); }


.merlin-btn-primary{ background:var(--merlin-grad); color:#fff; flex:1; box-shadow:0 8px 20px rgba(23,37,84,.32); }


.merlin-btn-primary:disabled{ opacity:.45; cursor:not-allowed; box-shadow:none; }


.merlin-btn-ghost{ background:transparent; color:var(--pink-deep); border:1.5px solid var(--pink-soft); }


.merlin-btn-ghost:hover{ background:var(--pink-soft); }



/* Confirmation card */
.merlin-confirm{ text-align:left; }


.merlin-confirm .mc-check{ width:56px; height:56px; border-radius:50%; background:var(--merlin-grad); display:grid; place-items:center; color:#fff; margin:0 auto .9rem; }


.merlin-confirm h3{ font-family:'Playfair Display',serif; font-size:1.5rem; color:var(--pink-deep); text-align:center; margin:0 0 .4rem; }


.merlin-confirm .mc-lede{ text-align:center; color:var(--ink-muted); font-size:.95rem; margin:0 0 1.2rem; }


.merlin-confirm-summary{ background:var(--pink-soft); border-radius:14px; padding:1rem 1.1rem; margin-bottom:1rem; }


.merlin-confirm-summary .mc-row{ display:flex; justify-content:space-between; gap:1rem; padding:.28rem 0; font-size:.9rem; border-bottom:1px dashed rgba(138,44,125,.18); }


.merlin-confirm-summary .mc-row:last-child{ border-bottom:0; }


.merlin-confirm-summary .mc-row.mc-total{ font-weight:800; color:var(--pink-deep); font-size:1.05rem; border-top:2px solid rgba(138,44,125,.25); margin-top:.3rem; padding-top:.55rem; }


.merlin-confirm-summary .mc-label{ color:var(--ink-muted); }


.merlin-confirm-give{ background:var(--merlin-grad); color:#fff; border-radius:12px; padding:.9rem 1.1rem; font-size:.9rem; margin-bottom:1rem; }


.merlin-confirm-give b{ color:#ffe; }


.merlin-confirm-id{ text-align:center; font-size:.8rem; color:var(--ink-muted); margin-bottom:1rem; }


.merlin-confirm-id code{ font-family:ui-monospace,monospace; background:var(--pink-soft); padding:.15rem .5rem; border-radius:6px; color:var(--pink-deep); font-weight:700; }


.merlin-confirm-actions{ display:flex; gap:.7rem; }


.merlin-error-note{ background:#fff3f7; border:1px solid var(--pink-soft); border-radius:12px; padding:.8rem .9rem; font-size:.85rem; color:var(--pink-deep); margin-bottom:1rem; }


.merlin-error-note a{ font-weight:700; }



/* Toasts */
.merlin-toast-wrap{ position:fixed; right:24px; bottom:100px; z-index:960; display:flex; flex-direction:column; gap:.5rem; align-items:flex-end; pointer-events:none; }

@media (max-width:640px){
 .merlin-toast-wrap{ right:12px; left:12px; bottom:92px; align-items:stretch; }
}


.merlin-toast{
  background:var(--ink); color:var(--cream); font-family:'Manrope',sans-serif; font-size:.9rem; font-weight:600;
  padding:.7rem 1rem; border-radius:12px; box-shadow:0 12px 30px rgba(26,15,23,.35);
  display:flex; align-items:center; gap:.5rem; opacity:0; transform:translateY(10px);
  transition:opacity .25s ease, transform .25s ease; max-width:320px;
}


.merlin-toast.is-in{ opacity:1; transform:translateY(0); }


.merlin-toast .mt-dot{ width:8px; height:8px; border-radius:50%; background:var(--pink); flex:0 0 auto; }

@media (prefers-reduced-motion: reduce){

  .merlin-bubble-pulse, .merlin-bubble.is-bouncing{ animation:none; }

  .merlin-panel, .merlin-backdrop, .merlin-toast{ transition:none; }
}



/* ============================================================
   Album Share — dedicated row below the strip.
   Fully isolated from .pot-strip grid. Do not touch .pot-strip.
   ============================================================ */
/* Legacy .album-share-btn / .album-share-toast styles removed 2026-07-23.
   The share row is now .album-link-row (frictionless copyable URL). */

/* ============================================================
   Merlin CTA button — replaces "Start office order" everywhere.
   Uses same .btn.btn-primary base + adds the M glyph inline.
   ============================================================ */
.btn-merlin-cta{
  display: inline-flex;
  align-items: center;
  gap: .5rem;
}


.btn-merlin-cta .merlin-cta-icon{
  flex-shrink: 0;
  opacity: .95;
}

@media (max-width: 780px){

  /* Keep the icon visible; slightly trim the label on tighter screens */
  .btn-merlin-cta{ gap: .4rem; }
}



/* =========================================================================
   MERLIN PAGE (/merlin.html) — Culinary Decision Intelligence
   ========================================================================= */

.page-merlin main{
  background: var(--cream);
}



/* --- Section head shared --- */
.merlin-section-head{
  max-width: 780px;
  margin: 0 auto 2.5rem;
  text-align: center;
}


.merlin-section-head .eyebrow{
  display: inline-block;
  font-family: 'Manrope', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--pink-deeper);
  margin-bottom: 0.85rem;
}


.merlin-section-head h2{
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.85rem, 3.6vw, 2.85rem);
  line-height: 1.15;
  color: var(--ink);
  margin: 0 0 0.75rem;
}


.merlin-section-head .lede{
  font-family: 'Manrope', sans-serif;
  font-size: 1.05rem;
  color: rgba(26, 15, 23, 0.72);
  margin: 0;
}



/* --- HERO --- */
.merlin-hero{
  background:
    radial-gradient(1200px 500px at 20% -20%, rgba(176, 62, 160, 0.14), transparent 60%),
    linear-gradient(180deg, var(--cream) 0%, #fff 100%);
  padding: 5rem 0 4rem;
  border-bottom: 1px solid rgba(26, 15, 23, 0.06);
}


.merlin-hero-grid{
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 3.5rem;
  align-items: center;
}

@media (max-width: 900px){

  .merlin-hero-grid{ grid-template-columns: 1fr; gap: 2.5rem; }
}


.merlin-hero-copy .eyebrow{
  color: var(--pink-deeper);
  font-family: 'Manrope', sans-serif;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-size: 0.85rem;
  display: inline-block;
  margin-bottom: 1rem;
}


.merlin-hero-h1{
  font-family: 'Playfair Display', serif;
  font-weight: 800;
  font-size: clamp(2.4rem, 5.5vw, 4.2rem);
  line-height: 1.05;
  color: var(--ink);
  margin: 0 0 1.25rem;
}


.merlin-hero-h1 em{
  font-style: italic;
  color: var(--pink);
}


.merlin-hero-lede{
  font-family: 'Manrope', sans-serif;
  font-size: 1.15rem;
  line-height: 1.65;
  color: rgba(26, 15, 23, 0.78);
  margin: 0 0 1.5rem;
  max-width: 40em;
}


.merlin-hero-signature{
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 1.15rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0 0 1.75rem;
  padding-left: 1.1rem;
  border-left: 3px solid var(--pink);
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}


.merlin-sig-mark{
  color: var(--pink);
  flex: 0 0 auto;
  margin-top: 0.2rem;
}


.merlin-hero-cta-row{
  display: flex;
  gap: 0.9rem;
  flex-wrap: wrap;
}



/* Hero side card */
.merlin-hero-card{
  background: #fff;
  border-radius: 22px;
  padding: 2.25rem 1.9rem;
  box-shadow: 0 24px 60px -20px rgba(138, 44, 125, 0.28), 0 2px 8px rgba(26,15,23,0.05);
  border: 1px solid rgba(176, 62, 160, 0.15);
  position: relative;
  overflow: hidden;
}


.merlin-hero-card::before{
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(600px 200px at 100% 0%, rgba(176, 62, 160, 0.08), transparent 60%);
  pointer-events: none;
}


.merlin-hero-card-inner{ position: relative; }


.merlin-hero-card-icon{
  width: 64px; height: 64px;
  border-radius: 18px;
  background: linear-gradient(135deg, var(--pink) 0%, var(--pink-deeper) 100%);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 1.25rem;
  box-shadow: 0 12px 24px -8px rgba(176, 62, 160, 0.55);
}


.merlin-hero-card-eyebrow{
  font-family: 'Manrope', sans-serif;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pink-deeper);
  margin: 0 0 0.5rem;
}


.merlin-hero-card-body{
  font-family: 'Manrope', sans-serif;
  font-size: 1.02rem;
  line-height: 1.55;
  color: rgba(26,15,23,0.85);
  margin: 0 0 1.25rem;
}


.merlin-hero-card-body strong{ color: var(--pink-deeper); font-weight: 700; }


.merlin-hero-card-list{
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 0.55rem;
}


.merlin-hero-card-list li{
  font-family: 'Manrope', sans-serif;
  font-size: 0.98rem;
  color: rgba(26,15,23,0.8);
  padding-left: 1.6rem;
  position: relative;
}


.merlin-hero-card-list li::before{
  content: '';
  position: absolute;
  left: 0.15rem;
  top: 0.55rem;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--pink);
}



/* --- COMPARE --- */
.merlin-compare{
  padding: 5rem 0 4.5rem;
  background: #fff;
}



/* --- IOS --- */
.merlin-ios{
  padding: 5rem 0;
  background: var(--cream);
}



/* --- PROOF --- */
.merlin-proof{
  padding: 5rem 0;
  background: #fff;
}



/* --- CTA BAND --- */
.merlin-cta-band{
  padding: 4rem 0 5rem;
  background: linear-gradient(180deg, #fff 0%, var(--pink-soft) 100%);
}



/* =========================================================================
   END MERLIN PAGE
   ========================================================================= */

/* =========================================================================
   CHOICES PAGE (/choices) — The 10-second decision
   Adds page-specific styles; reuses .compare-*, .ios-*, .merlin-cta-band from Merlin block.
   ========================================================================= */

.page-choices main{ background: var(--cream); }



/* --- IOS block on Choices --- */
.choices-merlin-tool{
  padding: 5rem 0;
  background: var(--cream);
}/* ============================================================
   Checkout handoff — classic #order builder hands off to Merlin.
   Contact & delivery lives in Merlin only; this is the bridge CTA.
   ============================================================ */
.step-handoff .step-title { margin-bottom: .25rem; }
.step-handoff .step-contact-sub { margin-top: 0; }
#order-submit[data-merlin-handoff] {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  background: var(--merlin-grad, linear-gradient(150deg,#b03ea0,#8a2c7d));
  border: 0;
  color: #fff;
}
#order-submit[data-merlin-handoff]:disabled {
  background: #d8cdd6;
  color: #7d7480;
  cursor: not-allowed;
}
#order-submit[data-merlin-handoff] .merlin-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  border-radius: 50%;
  background: rgba(255,255,255,.22);
  color: #fff;
}
#order-submit[data-merlin-handoff]:disabled .merlin-mark {
  background: rgba(0,0,0,.08);
  color: #7d7480;
}
/* "Edit order" link inside Merlin's handoff summary */
.merlin-edit-cart {
  display: inline-block;
  margin-top: .5rem;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  font-size: .82rem;
  font-weight: 700;
  color: #8a2c7d;
  text-decoration: underline;
  text-underline-offset: 2px;
  cursor: pointer;
}
.merlin-edit-cart:hover { opacity: .75; }
/* Inline day picker shown inside Merlin's handoff checkout when the buyer
   never chose a delivery day in the classic builder. */
.merlin-daycards-inline { margin-bottom: .85rem; }


/* ==========================================================================
   MERLIN v3 · Launch build — lane picker, 4-screen flow, address gate,
   nutrition tiers, invoice payment.
   Appended 2026-08-03.
   Palette rule (locked with Don): royal blue + gold live on MERLIN SURFACES
   ONLY (bubble, chat panel, wizard hero). The site keeps plum/pink.
   ========================================================================== */
:root{
  /* Merlin surface palette — overrides the earlier plum gradient. */
  --merlin-blue:        #1e3a8a;
  --merlin-blue-deep:   #172554;
  --merlin-blue-soft:   #eef2ff;
  --merlin-blue-line:   #c7d2fe;
  --merlin-gold:        #c8a24a;
  --merlin-gold-soft:   #fdf6e3;
  --merlin-gold-line:   #e8d49a;
  --merlin-grad: linear-gradient(150deg, #1e3a8a 0%, #172554 100%);
}

/* --- Wizard hero art (first chat message + About Merlin only) --- */
.merlin-hero-art{
  display:block; width:100%; max-width:190px; margin:0 auto .7rem;
  border-radius:14px;
}

/* --- Merlin tagline line (panel header / confirmation footer) --- */
.merlin-tagline-line{
  margin:.85rem 0 0; padding-top:.7rem;
  border-top:1px solid var(--merlin-gold-line);
  font-family:'Manrope',sans-serif; font-weight:700;
  font-size:.7rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--merlin-blue); text-align:center;
}

/* --- Microcopy under a question --- */
.merlin-micro{
  margin:.5rem 0 .9rem; font-size:.8rem; line-height:1.5;
  color:#5b5560;
}

/* --- STEP 0 · Lane picker --- */
.merlin-lanes{
  display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
  gap:.6rem; margin:.2rem 0 .3rem;
}
.merlin-lane{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:.45rem; min-height:92px; padding:.85rem .6rem;
  background:#fff; border:1.5px solid var(--merlin-blue-line);
  border-radius:14px; cursor:pointer; text-align:center;
  font-family:'Manrope',sans-serif;
  transition:border-color .15s ease, background .15s ease, transform .15s ease;
}
.merlin-lane:hover{ border-color:var(--merlin-blue); transform:translateY(-1px); }
.merlin-lane.is-active{
  border-color:var(--merlin-gold); background:var(--merlin-gold-soft);
}
.merlin-lane .ml-icon{ font-size:1.5rem; line-height:1; }
.merlin-lane .ml-label{
  font-size:.82rem; font-weight:700; line-height:1.25;
  color:var(--merlin-blue-deep);
}
@media (max-width:420px){
  .merlin-lanes{ grid-template-columns:1fr; }
  .merlin-lane{ flex-direction:row; justify-content:flex-start; min-height:0; gap:.7rem; }
}

/* --- Chip groups (headcount, style, sides, beverages, board, event fields) --- */
.merlin-chips{
  display:flex; flex-wrap:wrap; gap:.45rem; margin:.15rem 0 1rem;
}
.merlin-chip{
  display:inline-flex; flex-direction:column; align-items:flex-start; gap:.1rem;
  padding:.5rem .8rem; background:#fff;
  border:1.5px solid var(--merlin-blue-line); border-radius:999px;
  font-family:'Manrope',sans-serif; font-size:.82rem; font-weight:600;
  color:var(--merlin-blue-deep); cursor:pointer; line-height:1.3;
  transition:border-color .15s ease, background .15s ease, color .15s ease;
}
.merlin-chip:hover{ border-color:var(--merlin-blue); }
.merlin-chip.is-active{
  background:var(--merlin-blue); border-color:var(--merlin-blue); color:#fff;
}
.merlin-chip small{
  display:block; font-size:.66rem; font-weight:500; opacity:.75;
  letter-spacing:.01em; text-transform:none;
}

/* --- NUTRITION TIER note (Merlin's professor view) --- */
.merlin-tier{
  display:block; margin:.9rem 0 0; padding:.8rem .95rem;
  border-radius:12px; border:1px solid transparent;
  font-size:.84rem; line-height:1.55;
}
.merlin-tier .mt-badge{
  display:block; margin-bottom:.3rem;
  font-family:'Manrope',sans-serif; font-weight:800;
  font-size:.66rem; letter-spacing:.13em; text-transform:uppercase;
}
.merlin-tier-solid{ background:#f4f4f6; border-color:#dcdce2; color:#3d3a42; }
.merlin-tier-solid .mt-badge{ color:#6b6674; }
.merlin-tier-smart{ background:var(--merlin-blue-soft); border-color:var(--merlin-blue-line); color:#26325c; }
.merlin-tier-smart .mt-badge{ color:var(--merlin-blue); }
.merlin-tier-elite{ background:var(--merlin-gold-soft); border-color:var(--merlin-gold-line); color:#5a4712; }
.merlin-tier-elite .mt-badge{ color:#8a6a14; }

/* --- Burger-vs-box comparison (shown once per order) --- */
.merlin-vs{
  margin:.7rem 0 0; padding:.75rem .9rem;
  background:#fff; border:1px dashed var(--merlin-gold);
  border-radius:12px; font-size:.8rem; line-height:1.55; color:#4a4550;
}

/* --- ADDRESS GATE --- */
.merlin-zone-note{
  margin:.4rem 0 1rem; padding:.65rem .8rem;
  background:var(--merlin-blue-soft); border-radius:10px;
  font-size:.78rem; line-height:1.5; color:#26325c;
}
.merlin-zone-idle,
.merlin-zone-check{
  margin:.2rem 0 .9rem; font-size:.78rem; line-height:1.5; color:#6b6674;
}
.merlin-zone-check{ color:var(--merlin-blue); font-weight:600; }
.merlin-zone-ok{
  margin:.2rem 0 .9rem; padding:.6rem .8rem;
  background:#eef7f0; border:1px solid #bfe0c8; border-radius:10px;
  font-size:.8rem; font-weight:600; color:#1f5132;
}
.merlin-zone-near,
.merlin-zone-out{
  margin:.2rem 0 .9rem; padding:.85rem .95rem;
  border-radius:12px; border:1px solid var(--merlin-gold-line);
  background:var(--merlin-gold-soft);
}
.merlin-zone-out{ border-color:var(--merlin-blue-line); background:var(--merlin-blue-soft); }
.merlin-zone-near .mz-head,
.merlin-zone-out .mz-head{
  margin:0 0 .35rem; font-family:'Playfair Display',serif;
  font-size:1rem; font-weight:700; color:var(--merlin-blue-deep);
}
.merlin-zone-near .mz-body,
.merlin-zone-out .mz-body{
  margin:0; font-size:.82rem; line-height:1.55; color:#4a4550;
}
.merlin-zone-near .mz-miles,
.merlin-zone-out .mz-miles{
  display:block; margin-top:.4rem; font-size:.72rem;
  letter-spacing:.06em; text-transform:uppercase; color:#7a7482;
}
.merlin-zone-near .mz-cta,
.merlin-zone-out .mz-cta{ margin-top:.75rem; width:100%; }

/* --- CONFIRMATION additions --- */
.merlin-confirm .mc-row.mc-sub,
.merlin-confirm .mc-row.mc-total{
  display:flex; justify-content:space-between; gap:1rem;
  font-size:.86rem; padding:.25rem 0;
}
.merlin-confirm .mc-row.mc-total{
  margin-top:.35rem; padding-top:.5rem;
  border-top:1px solid #e6e2ea;
  font-weight:800; font-size:.95rem; color:var(--merlin-blue-deep);
}
.merlin-confirm .mc-floor{
  margin:.55rem 0 0; font-size:.74rem; line-height:1.5; color:#7a7482;
}
.merlin-confirm .mc-day{
  font-weight:700; color:var(--merlin-blue-deep);
}

/* --- Invoice / pay CTA --- */
.merlin-btn.merlin-pay{
  background:linear-gradient(150deg,#1e3a8a 0%,#172554 100%);
  box-shadow:0 8px 20px rgba(23,37,84,.32);
}

/* --- Panel header tagline: one line, never a ragged wrap --- */
.merlin-panel-name small#merlin-tagline{
  display:block; max-width:100%;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}

/* --- Merlin panel form accents follow the Merlin palette, not the site pink.
       Scoped to .merlin-form so the site's own forms are untouched. --- */
.merlin-panel .merlin-form label{ color:#3a3540; }
.merlin-panel .merlin-form .opt{ color:#8a8494; }
.merlin-panel .merlin-form input,
.merlin-panel .merlin-form textarea{
  border-color:var(--merlin-blue-line);
}
.merlin-panel .merlin-form input:focus,
.merlin-panel .merlin-form textarea:focus{
  border-color:var(--merlin-blue);
  box-shadow:0 0 0 3px rgba(30,58,138,.12);
  outline:none;
}
.merlin-panel .merlin-step-title{ color:var(--merlin-blue-deep); }
.merlin-panel .merlin-draft strong{ color:var(--merlin-blue-deep); }
.merlin-panel .merlin-warn{
  background:var(--merlin-gold-soft); border:1px solid var(--merlin-gold-line); color:#5a4712;
  border-radius:10px; padding:.6rem .8rem; font-size:.8rem; line-height:1.5;
}

/* --- Merlin conversation surfaces follow the Merlin palette --- */
.merlin-panel .merlin-msg-bubble{
  background:var(--merlin-blue-soft); color:#26325c;
}
.merlin-panel .merlin-msg-bubble strong{ color:var(--merlin-blue); }
.merlin-panel .merlin-progress i{ background:var(--merlin-blue-line); }
.merlin-panel .merlin-progress i.done{ background:var(--merlin-blue); }
.merlin-panel .merlin-progress i.active{ background:var(--merlin-gold); }
.merlin-panel .merlin-confirm h3{ color:var(--merlin-blue-deep); }
.merlin-panel .merlin-confirm-id code{ color:var(--merlin-blue-deep); }
.merlin-panel .merlin-daycard.is-active{
  border-color:var(--merlin-gold); background:var(--merlin-gold-soft);
}

/* --- Header tagline must clip inside the panel, not run under the close
       button. Flex children need min-width:0 before text-overflow works. --- */
.merlin-panel .merlin-panel-head{ gap:.6rem; }
.merlin-panel .merlin-panel-id{ min-width:0; flex:1 1 auto; }
.merlin-panel .merlin-panel-name{ min-width:0; display:block; overflow:hidden; }
.merlin-panel .merlin-confirm-id code{ background:var(--merlin-blue-soft); }

/* --- Confirmation / review surfaces in Merlin's palette --- */
.merlin-panel .merlin-confirm-summary{
  background:var(--merlin-blue-soft); border:1px solid var(--merlin-blue-line);
}
.merlin-panel .merlin-btn-ghost{
  color:var(--merlin-blue); border-color:var(--merlin-blue-line);
}
.merlin-panel .merlin-btn-ghost:hover{ border-color:var(--merlin-blue); }

/* The pay CTA is a link, not a button, so it needs the block sizing that
   .merlin-btn's flex parent would otherwise give it. */
.merlin-panel a.merlin-btn.merlin-pay{
  display:block; width:100%; box-sizing:border-box;
  text-align:center; text-decoration:none;
  margin:.25rem 0 .5rem;
}
.merlin-panel a.merlin-btn.merlin-pay + .merlin-micro{ margin-top:0; }

/* The launcher bubble must not float over the open panel header (mobile). */
.merlin-panel.is-open ~ .merlin-bubble,
body:has(.merlin-panel.is-open) .merlin-bubble{
  opacity:0; pointer-events:none; visibility:hidden;
}
.merlin-panel .mc-total, .merlin-panel .mc-total strong,
.merlin-panel .merlin-confirm-summary .mc-total{ color:var(--merlin-blue-deep); }
.merlin-panel .merlin-confirm-summary .mc-total{ border-top-color:var(--merlin-blue-line); }

/* ============================================================
   MERLIN MARK — the real brand badge replaces the drawn "M".
   The artwork is already a finished circle with its own dark
   navy/teal field, so every host circle drops its background and
   the image goes full-bleed. No pink anywhere near Merlin.
   ============================================================ */
.merlin-bubble{
  background:transparent; overflow:visible;
  box-shadow:0 12px 34px rgba(23,37,84,.45);
}
.merlin-bubble:hover{ box-shadow:0 16px 40px rgba(23,37,84,.55); }
img.merlin-bubble-icon{
  position:relative; z-index:2;
  width:100%; height:100%; border-radius:50%; display:block;
  object-fit:cover;
  box-shadow:0 0 0 1.5px rgba(200,162,74,.55);
}
.merlin-bubble-pulse{ background:var(--merlin-blue); }
.merlin-bubble-chip{ color:var(--merlin-blue-deep); }

.merlin-panel .merlin-avatar{
  background:transparent; overflow:hidden; padding:0;
}
.merlin-panel .merlin-avatar img{
  width:100%; height:100%; border-radius:50%; display:block;
  object-fit:cover;
  box-shadow:0 0 0 1px rgba(200,162,74,.5);
}

.merlin-panel .merlin-msg-avatar{
  background:transparent; overflow:hidden; padding:0;
}
.merlin-panel .merlin-msg-avatar img{
  width:100%; height:100%; border-radius:50%; display:block;
  object-fit:cover;
}

/* First-message lockup sits above the greeting, centred, never huge. */
.merlin-panel .merlin-hero-art{
  display:block; width:100%; max-width:210px; height:auto;
  margin:0 auto .7rem;
}
/* Pulse reads as a soft blue halo behind the badge, not a grey smudge. */
.merlin-bubble-pulse{ background:#3b5bdb; opacity:.30; }
@keyframes merlinPulse{ 0%{ transform:scale(1); opacity:.30; } 100%{ transform:scale(2.1); opacity:0; } }
/* Keep the greeting above the fold — the lockup is a grace note, not a poster. */
.merlin-panel .merlin-hero-art{ max-width:150px; margin-bottom:.55rem; }
/* Tighter, bluer halo — a faint wide wash just read as grey over cream. */
.merlin-bubble-pulse{ background:#4263eb; opacity:.34; }
@keyframes merlinPulse{ 0%{ transform:scale(1); opacity:.34; } 100%{ transform:scale(1.65); opacity:0; } }

/* ============================================================
   MERLIN CTA — the pink "Order Intelligence" button retired.
   The button is now a Merlin surface: his mark, his royal blue
   and gold, his tagline. The site keeps plum/pink everywhere else.
   ============================================================ */
.btn-merlin-cta{
  display:inline-flex; align-items:center; gap:.6rem;
  background:linear-gradient(150deg, var(--merlin-blue) 0%, var(--merlin-blue-deep) 100%);
  color:#fff; border:1px solid var(--merlin-gold-line);
  box-shadow:0 6px 18px rgba(23,37,84,.24);
  padding:.62rem 1.05rem; min-height:46px; border-radius:999px;
  transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
}
.btn-merlin-cta:hover,
.btn-merlin-cta:focus-visible{
  background:linear-gradient(150deg, var(--merlin-blue) 0%, var(--merlin-blue-deep) 100%);
  color:#fff; border-color:var(--merlin-gold);
  transform:translateY(-1px); box-shadow:0 10px 24px rgba(23,37,84,.30);
}
.btn-merlin-cta:focus-visible{ outline:2px solid var(--merlin-gold); outline-offset:2px; }
.btn-merlin-cta .merlin-cta-mark{
  flex:0 0 auto; width:26px; height:26px; border-radius:50%; display:block;
  box-shadow:0 0 0 1px rgba(200,162,74,.55);
}
.btn-merlin-cta .merlin-cta-label{ white-space:nowrap; font-weight:600; letter-spacing:.01em; }
.btn-merlin-cta .merlin-cta-label strong{ font-weight:800; }

/* Hero placement carries the tagline under the name. */
.btn-merlin-cta--hero{ padding:.72rem 1.35rem .72rem .8rem; gap:.75rem; min-height:64px; text-align:left; }
.btn-merlin-cta--hero .merlin-cta-mark{ width:40px; height:40px; }
.merlin-cta-stack{ display:flex; flex-direction:column; align-items:flex-start; gap:.1rem; min-width:0; }
.btn-merlin-cta--hero .merlin-cta-label{ font-size:1.02rem; line-height:1.15; }
.merlin-cta-tag{
  font-size:.66rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--merlin-gold); font-weight:700; white-space:nowrap;
}
.drawer .btn-merlin-cta{ width:100%; justify-content:center; }

@media (max-width:520px){
  .btn-merlin-cta--hero{ width:100%; justify-content:flex-start; }
  .merlin-cta-tag{ font-size:.6rem; letter-spacing:.1em; white-space:normal; }
}
/* The header has the least room — the mark alone says Merlin there. */
@media (max-width:900px){
  header .nav-actions .btn-merlin-cta .merlin-cta-label{ display:none; }
  header .nav-actions .btn-merlin-cta{ padding:.5rem; }
}

/* Tap targets flagged by the live crash test: beverage chips and the
   panel close button sat at 34–35px on a 390px phone. */
.merlin-chips .merlin-chip{ min-height:44px; }
.merlin-close{ width:44px; height:44px; }
/* The launcher floated over the open mobile drawer and covered "Story".
   Same rule the panel already uses: one Merlin entry point at a time. */
#drawer.is-open ~ #merlin-bubble,
body:has(#drawer.is-open) #merlin-bubble{
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .18s ease, visibility .18s ease;
}

/* =========================================================
   MERLIN — legibility lock + 30-day delivery calendar
   Added 2026-08-03 after Don's read-through:
   the panel now carries its own light palette so dark mode
   can never bleed grey-on-grey text into the flow.
   ========================================================= */

.merlin-panel,
#merlin-inline-mount{
  --cream:#fbf6f3;
  --surface:#ffffff;
  --surface-2:#f7f1f5;
  --ink:#1a0f17;
  --ink-muted:#4a3f47;
  --pink-soft:#f6e3f1;
  --pink-deep:#8a2c7d;
  --border:#e6d8e2;
  --divider:#e6d8e2;
  color:var(--ink);
}

/* Muted copy inside Merlin is a real reading colour, not a whisper. */
.merlin-panel .merlin-micro,
#merlin-inline-mount .merlin-micro{ color:#4a3f47; }

.merlin-panel .merlin-confirm-summary .mc-label,
#merlin-inline-mount .merlin-confirm-summary .mc-label{ color:#3d3239; }

.merlin-panel .merlin-confirm-summary,
#merlin-inline-mount .merlin-confirm-summary{
  background:var(--merlin-blue-soft);
  border:1px solid var(--merlin-blue-line);
}
.merlin-panel .merlin-confirm-summary .mc-row,
#merlin-inline-mount .merlin-confirm-summary .mc-row{
  border-bottom-color:rgba(30,58,138,.16);
}

/* Sub-line under a step heading — the explanation Don was missing. */
.merlin-step-sub{
  margin:-.5rem 0 .8rem;
  font-size:.85rem; line-height:1.5; color:#4a3f47;
}
.mst-opt{
  font-family:'Manrope',sans-serif; font-weight:700;
  font-size:.6rem; letter-spacing:.09em; text-transform:uppercase;
  color:var(--merlin-gold); background:var(--merlin-gold-soft);
  border:1px solid var(--merlin-gold-line);
  border-radius:999px; padding:.16rem .45rem; margin-left:.45rem;
  vertical-align:.15em;
}

/* --- 30-day rolling delivery calendar --- */
.merlin-cal{ display:flex; flex-direction:column; gap:.75rem; margin-bottom:.4rem; }

.merlin-cal-week{ display:flex; flex-direction:column; gap:.4rem; }

.mcw-label{
  font-family:'Manrope',sans-serif; font-weight:800;
  font-size:.63rem; letter-spacing:.11em; text-transform:uppercase;
  color:var(--merlin-blue);
}

.mcw-dates{ display:grid; grid-template-columns:repeat(auto-fill,minmax(84px,1fr)); gap:.5rem; }

.merlin-datecard{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  min-height:58px; padding:.5rem .3rem; cursor:pointer;
  background:#fff; border:1.5px solid var(--merlin-blue-line); border-radius:12px;
  transition:transform .16s ease, border-color .16s ease, background .16s ease;
}
.merlin-datecard:hover{ transform:translateY(-2px); border-color:var(--merlin-blue); }
.merlin-datecard:focus-visible{ outline:2px solid var(--merlin-blue); outline-offset:2px; }

.merlin-datecard .dc-day{
  font-family:'Manrope',sans-serif; font-weight:800;
  font-size:.64rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--merlin-blue);
}
.merlin-datecard .dc-date{
  font-family:'Playfair Display',serif; font-size:1.02rem;
  color:var(--ink); margin-top:.1rem; line-height:1.15;
}

.merlin-datecard.is-active{
  background:linear-gradient(150deg, var(--merlin-blue) 0%, var(--merlin-blue-deep) 100%);
  border-color:var(--merlin-blue-deep);
}
.merlin-datecard.is-active .dc-day{ color:var(--merlin-gold); }
.merlin-datecard.is-active .dc-date{ color:#fff; }

@media (max-width:480px){
  .mcw-dates{ grid-template-columns:repeat(auto-fill,minmax(76px,1fr)); gap:.4rem; }
  .merlin-datecard{ min-height:56px; }
  .merlin-datecard .dc-date{ font-size:.95rem; }
}

/* =========================================================
   ORDER · Merlin front door + backstage engine
   Don, 2026-08-03: "building your office lunch order and Merlin
   are competing now — stick with Merlin." The classic step-form
   is still the pricing authority, so it stays in the DOM and
   simply moves offscreen. Merlin becomes the only visible door.
   ========================================================= */

.is-backstage{
  position:absolute !important;
  width:1px; height:1px;
  margin:-1px; padding:0; border:0;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%);
  white-space:nowrap; pointer-events:none;
}

.order-merlin{ padding-block:clamp(2.5rem, 6vw, 4.5rem); }

.order-merlin-card{
  max-width:640px; margin-inline:auto; text-align:center;
  padding:clamp(1.8rem, 5vw, 2.8rem) clamp(1.2rem, 4vw, 2.4rem);
  border-radius:22px;
  background:linear-gradient(165deg, #ffffff 0%, var(--merlin-blue-soft) 100%);
  border:1px solid var(--merlin-blue-line);
  box-shadow:0 20px 60px rgba(23,37,84,.10);
}

.order-merlin-mark{
  width:72px; height:72px; display:block; margin:0 auto .9rem;
}

.order-merlin-eyebrow{
  display:block; font-family:'Manrope',sans-serif; font-weight:800;
  font-size:.66rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--merlin-gold); margin-bottom:.5rem;
}

.order-merlin h2{
  font-family:'Playfair Display',serif;
  font-size:clamp(1.9rem, 5.5vw, 2.7rem); line-height:1.1;
  color:var(--merlin-blue-deep); margin:0 0 .6rem;
}

.order-merlin-lede{
  max-width:44ch; margin:0 auto 1.5rem;
  font-size:1rem; line-height:1.6; color:#3d3239;
}

.order-merlin .btn-merlin-cta--hero{ margin:0 auto 1.6rem; }

.order-merlin-facts{
  list-style:none; margin:0 0 1.1rem; padding:0;
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr));
  gap:.55rem .9rem; text-align:left;
}
.order-merlin-facts li{
  font-size:.87rem; line-height:1.45; color:#3d3239;
  padding-left:.85rem; position:relative;
}
.order-merlin-facts li::before{
  content:''; position:absolute; left:0; top:.55em;
  width:5px; height:5px; border-radius:50%; background:var(--merlin-gold);
}
.order-merlin-facts strong{ color:var(--merlin-blue-deep); }

.order-merlin-give{
  margin:0; padding-top:1rem;
  border-top:1px solid var(--merlin-blue-line);
  font-size:.82rem; line-height:1.55; color:#4a3f47;
}
.order-merlin-give a{ color:var(--merlin-blue); text-decoration:underline; }

@media (max-width:560px){
  .order-merlin-facts{ grid-template-columns:1fr; }
  .order-merlin-mark{ width:60px; height:60px; }
}

/* Hero CTA inside the Merlin front door: stack the label over the tagline so
   the tagline can never wrap around the label on a phone. */
.order-merlin .btn-merlin-cta--hero .merlin-cta-copy{
  display:flex; flex-direction:column; align-items:flex-start; gap:.12rem;
}
.order-merlin .btn-merlin-cta--hero .merlin-cta-label{ line-height:1.2; }
.order-merlin .btn-merlin-cta--hero .merlin-cta-tag{
  display:block; white-space:nowrap; font-size:.62rem; letter-spacing:.1em;
}
@media (max-width:400px){
  .order-merlin .btn-merlin-cta--hero .merlin-cta-tag{ font-size:.56rem; letter-spacing:.07em; }
}

/* =========================================================
   HERO PLAYER
   Don, 2026-08-03: "eliminate chef lesly's picture and bring
   the pot and player up in its place. No open or closed player
   button, it's right there now."
   The album cover takes the hero's right column and the transport
   sits directly under it. Nothing to expand, nothing to collapse.
   Colours ride the theme tokens so the card reads on the light
   hero AND under [data-theme="dark"] without going grey-on-grey.
   ========================================================= */

.hero-player{
  display:flex; flex-direction:column; gap:.9rem;
  padding:1rem;
  border-radius:20px;
  background:var(--cream);
  border:1px solid rgba(176,62,160,.20);
  box-shadow:0 22px 55px rgba(26,15,23,.14);
}

.hero-player-cover{
  display:block; position:relative; width:100%;
  padding:0; border:0; background:none; cursor:pointer;
  border-radius:14px; overflow:hidden;
  aspect-ratio:1 / 1;
}
.hero-player-cover img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 420ms ease;
}
.hero-player-cover:hover img{ transform:scale(1.02); }
.hero-player-cover:focus-visible{ outline:2px solid var(--pink); outline-offset:3px; }

.hero-player-body{ display:flex; flex-direction:column; gap:.6rem; }

.hero-player-eyebrow{
  font-family:'Manrope',sans-serif; font-weight:800;
  font-size:.6rem; letter-spacing:.18em; text-transform:uppercase;
  color:var(--pink-deeper);
}
.hero-player-title{
  margin:0; font-family:'Playfair Display',serif;
  font-size:1.02rem; line-height:1.3; color:var(--ink);
}

.hero-player-transport{
  display:flex; align-items:center; gap:.45rem; flex-wrap:nowrap;
}
.hero-player-transport .album-nav{ width:38px; height:38px; }
.hero-player-transport .album-nav-play{ width:46px; height:46px; }

.hero-player-select{ width:100%; }

.hero-player-fine{
  margin:0; font-size:.72rem; line-height:1.4; color:#4a3f47;
}

[data-theme="dark"] .hero-player{
  background:rgba(255,255,255,.05);
  border-color:rgba(255,255,255,.14);
  box-shadow:0 22px 60px rgba(0,0,0,.35);
}
[data-theme="dark"] .hero-player-title{ color:#fff; }
[data-theme="dark"] .hero-player-fine{ color:rgba(255,255,255,.62); }
[data-theme="dark"] .hero-player-eyebrow{ color:var(--pink); }

@media (max-width:900px){
  .hero-player{ max-width:400px; margin-inline:auto; }
}
@media (max-width:480px){
  .hero-player{ padding:.85rem; gap:.8rem; }
  .hero-player-transport .album-nav{ width:36px; height:36px; }
  .hero-player-transport .album-nav-play{ width:42px; height:42px; }
}

/* .hero{padding:… 0 …} zeroed the .shell gutters, so hero copy ran flush to
   the phone edge. Restore the horizontal gutter without touching the vertical
   rhythm. Pre-existing bug, surfaced while reworking the hero column. */
.hero{ padding-inline: var(--space-5); }

/* ---------------------------------------------------------
   Hero player · landscape on desktop
   Don, 2026-08-03: "stretch out the Chef Lesly Black Eyed Peas
   playbox a little more horizontal than like a vertical card."
   Cover left, transport right, both vertically centred against
   each other so the card reads like a real player instead of a
   tall poster. Below 980px it falls back to the stacked card.
   --------------------------------------------------------- */
@media (min-width:980px){
  /* Give the player column the extra room the landscape layout needs. */
  .hero-grid{ grid-template-columns:.92fr 1.08fr; }

  .hero-player{
    flex-direction:row;
    align-items:center;
    gap:1.15rem;
    padding:1.15rem;
  }
  .hero-player-cover{
    flex:0 0 clamp(190px, 20vw, 250px);
    width:clamp(190px, 20vw, 250px);
    align-self:center;
  }
  .hero-player-body{
    flex:1 1 auto; min-width:0;
    gap:.65rem;
  }
  .hero-player-title{ font-size:1.12rem; }
  .hero-player-transport{ gap:.5rem; }
}

/* Between 980 and 1120 the five transport buttons plus the select get tight,
   so shave the chrome rather than let anything wrap or clip. */
@media (min-width:980px) and (max-width:1120px){
  .hero-player{ gap:.9rem; padding:1rem; }
  .hero-player-cover{ flex-basis:170px; width:170px; }
  .hero-player-title{ font-size:1rem; }
  .hero-player-transport .album-nav{ width:34px; height:34px; }
  .hero-player-transport .album-nav-play{ width:40px; height:40px; }
}

/* Final CTA sits directly above the footer — give it a top rule and a bit
   more air so it reads as the close, not another mid-page block. */
#order-merlin{
  border-top:1px solid rgba(26,15,23,.08);
  padding-block:clamp(3rem, 7vw, 5rem);
}
[data-theme="dark"] #order-merlin{ border-top-color:rgba(255,255,255,.10); }

/* =========================================================
   SONG FEATURE — reusable template
   Don, 2026-08-03: "a clear pic and a song track under —
   that is a template as every sandwich will have a song."
   One photo, one line, one track, one Merlin CTA. Ordering
   lives in Merlin, so there are no prices in here by design.
   Clone <section class="song-feature"> and swap the photo,
   title, track number and audio src.
   ========================================================= */

.song-feature{ padding-block:clamp(2.5rem, 6vw, 4.5rem); }

.song-feature .shell{
  display:grid; gap:clamp(1.5rem, 4vw, 3rem);
  align-items:center;
}
@media (min-width:900px){
  .song-feature .shell{ grid-template-columns:1.05fr .95fr; }
}

.song-feature-photo{
  margin:0; border-radius:20px; overflow:hidden;
  box-shadow:0 24px 60px rgba(26,15,23,.18);
}
.song-feature-photo img{
  display:block; width:100%; height:100%;
  aspect-ratio:4 / 3; object-fit:cover;
}

.song-feature-body{ display:flex; flex-direction:column; align-items:flex-start; gap:.85rem; }

.song-feature-body h2{
  margin:0; font-family:'Playfair Display',serif;
  font-size:clamp(1.75rem, 4.5vw, 2.5rem); line-height:1.1; color:var(--ink);
}
.song-feature-lede{
  margin:0; max-width:46ch; font-size:1rem; line-height:1.6; color:#3d3239;
}

.song-track{
  width:100%; margin-top:.35rem;
  padding:1rem 1.1rem; border-radius:16px;
  background:var(--pink-soft);
  border:1px solid rgba(176,62,160,.22);
}
.song-track-eyebrow{
  display:block; font-family:'Manrope',sans-serif; font-weight:800;
  font-size:.6rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--pink-deeper); margin-bottom:.3rem;
}
.song-track-title{
  margin:0 0 .2rem; font-family:'Playfair Display',serif;
  font-size:1.25rem; line-height:1.2; color:var(--ink);
}
.song-track-sub{
  margin:0 0 .75rem; font-size:.85rem; line-height:1.5; color:#4a3f47;
}
.song-track-audio{ display:block; width:100%; height:38px; }
.song-track-links{
  margin:.7rem 0 0; display:flex; flex-wrap:wrap; gap:.4rem 1.1rem;
  font-size:.8rem;
}
.song-track-links a{ color:var(--pink-deeper); text-decoration:underline; }

[data-theme="dark"] .song-feature-body h2{ color:var(--ink); }
[data-theme="dark"] .song-feature-lede{ color:var(--ink-muted); }
[data-theme="dark"] .song-track{
  background:rgba(176,62,160,.12);
  border-color:rgba(176,62,160,.32);
}
[data-theme="dark"] .song-track-title{ color:var(--ink); }
[data-theme="dark"] .song-track-sub{ color:var(--ink-muted); }
[data-theme="dark"] .song-track-eyebrow,
[data-theme="dark"] .song-track-links a{ color:var(--pink); }

@media (max-width:560px){
  .song-track{ padding:.9rem; }
  .song-feature-photo img{ aspect-ratio:3 / 2; }
}

/* Gallery variant of the song-feature template — three stacked photos on the
   left instead of one hero shot. Same body column, same track card. */
.song-feature-gallery{
  display:grid; gap:.75rem;
  grid-template-columns:repeat(3, 1fr);
}
.song-feature-gallery .photo-frame{ margin:0; }
.song-feature-gallery img{
  display:block; width:100%; aspect-ratio:3 / 4; object-fit:cover;
  border-radius:14px;
}
@media (min-width:900px){
  .song-feature--gallery .shell{ grid-template-columns:1.1fr .9fr; }
  .song-feature-gallery{ grid-template-columns:1fr 1fr; }
  .song-feature-gallery .photo-frame:first-child{ grid-column:1 / -1; }
  .song-feature-gallery .photo-frame:first-child img{ aspect-ratio:16 / 9; }
}
@media (max-width:560px){
  .song-feature-gallery{ grid-template-columns:1fr 1fr; }
  .song-feature-gallery .photo-frame:first-child{ grid-column:1 / -1; }
  .song-feature-gallery .photo-frame:first-child img{ aspect-ratio:16 / 10; }
}

.song-feature-fine{
  margin:.35rem 0 0; font-size:.8rem; line-height:1.55; color:#4a3f47;
}
.song-feature-fine a{ color:var(--pink-deeper); text-decoration:underline; }
[data-theme="dark"] .song-feature-fine{ color:var(--ink-muted); }
[data-theme="dark"] .song-feature-fine a{ color:var(--pink); }

/* =========================================================
   MERLIN — ADD TO ORDER (handoff carts)
   Don, 2026-08-03: "ability to ADD to order — i triggered the
   veggie platter but no other options after i load in cart."
   ========================================================= */

.merlin-addon-open{
  display:flex; align-items:center; gap:.7rem; width:100%;
  margin:.9rem 0 .2rem; padding:.7rem .85rem;
  border:1px dashed rgba(30,58,138,.38); border-radius:14px;
  background:rgba(30,58,138,.05); color:#12224d;
  text-align:left; cursor:pointer;
  font-family:'Manrope',sans-serif;
  transition:background .15s ease, border-color .15s ease;
}
.merlin-addon-open:hover,
.merlin-addon-open:focus-visible{
  background:rgba(30,58,138,.10); border-color:rgba(30,58,138,.6);
}
.merlin-addon-open .mao-plus{
  flex:0 0 auto; width:28px; height:28px; border-radius:50%;
  display:grid; place-items:center;
  background:#1e3a8a; color:#fff; font-size:1.05rem; font-weight:700; line-height:1;
}
.merlin-addon-open .mao-copy{ display:flex; flex-direction:column; gap:.1rem; }
.merlin-addon-open strong{ font-size:.9rem; font-weight:700; color:#12224d; }
.merlin-addon-open small{ font-size:.75rem; color:#42527f; }

.merlin-cartlist{
  list-style:none; margin:.2rem 0 .6rem; padding:0;
  border:1px solid rgba(18,34,77,.12); border-radius:12px; overflow:hidden;
}
.merlin-cartlist li{
  display:flex; justify-content:space-between; align-items:baseline; gap:.75rem;
  padding:.5rem .7rem; font-size:.85rem; color:#12224d;
  background:rgba(18,34,77,.03);
}
.merlin-cartlist li + li{ border-top:1px solid rgba(18,34,77,.1); }
.merlin-cartlist small{ color:#5a6890; font-size:.75rem; }
.merlin-cartlist strong{ font-weight:700; white-space:nowrap; }

.merlin-addon-sub{
  margin:0 0 .5rem; font-size:.78rem; font-weight:700;
  letter-spacing:.02em; color:#42527f;
}

.merlin-stepper{
  display:flex; align-items:center; gap:.6rem; margin:.15rem 0 .35rem;
}
.merlin-step-btn{
  width:38px; height:38px; border-radius:10px; cursor:pointer;
  border:1px solid rgba(18,34,77,.22); background:#fff; color:#12224d;
  font-size:1.15rem; line-height:1; font-weight:700;
}
.merlin-step-btn:disabled{ opacity:.35; cursor:not-allowed; }
.merlin-step-btn:not(:disabled):hover{ border-color:#1e3a8a; background:rgba(30,58,138,.07); }
.merlin-stepper-val{ font-size:.95rem; font-weight:700; color:#12224d; }
.merlin-stepper-val small{ font-weight:500; font-size:.8rem; color:#5a6890; }

/* ---------------------------------------------------------
   Hero player · scaled up
   Don, 2026-08-03: "a little larger — twice the size."
   The landscape card was 575x289 with a 250px cover. This
   roughly doubles its footprint: the cover goes to ~440px and
   the player takes the wider hero column, with type and
   transport scaled to match so nothing looks stranded next to
   a much bigger sleeve. Still Tue/Thu-agnostic, still one
   audio source, nothing auto-plays.
   --------------------------------------------------------- */
@media (min-width:980px){
  /* Player column now leads the hero instead of trailing it. */
  .hero-grid{ grid-template-columns:.72fr 1.28fr; gap:var(--space-6); }

  .hero-player{
    gap:1.6rem;
    padding:1.5rem;
    border-radius:26px;
  }
  .hero-player-cover{
    flex:0 0 clamp(300px, 30vw, 440px);
    width:clamp(300px, 30vw, 440px);
    border-radius:18px;
  }
  .hero-player-body{ gap:.95rem; }
  .hero-player-eyebrow{ font-size:.72rem; letter-spacing:.2em; }
  .hero-player-title{ font-size:1.6rem; }
  .hero-player-transport{ gap:.7rem; }
  .hero-player-transport .album-nav{ width:52px; height:52px; }
  .hero-player-transport .album-nav-play{ width:64px; height:64px; }
  .hero-player-select{ font-size:1rem; padding-block:.7rem; }
  .hero-player-fine{ font-size:.85rem; }
}

/* Shrink band, rescaled for the bigger card. Below ~1200px the 440px sleeve
   plus five larger transport buttons stops fitting, so step both down rather
   than let the row wrap. */
@media (min-width:980px) and (max-width:1200px){
  .hero-player{ gap:1.1rem; padding:1.2rem; }
  .hero-player-cover{ flex-basis:clamp(240px, 26vw, 320px); width:clamp(240px, 26vw, 320px); }
  .hero-player-title{ font-size:1.3rem; }
  .hero-player-transport{ gap:.5rem; }
  .hero-player-transport .album-nav{ width:44px; height:44px; }
  .hero-player-transport .album-nav-play{ width:54px; height:54px; }
}

/* Tablet and phone keep the stacked card, but it was capped at 400px — that
   now reads small against the desktop treatment. Let it breathe. */
@media (max-width:979px){
  .hero-player{ max-width:520px; margin-inline:auto; padding:1.2rem; gap:1.1rem; }
  .hero-player-title{ font-size:1.2rem; }
  .hero-player-transport .album-nav{ width:46px; height:46px; }
  .hero-player-transport .album-nav-play{ width:56px; height:56px; }
}
@media (max-width:480px){
  .hero-player{ max-width:none; padding:1rem; gap:.9rem; }
  .hero-player-title{ font-size:1.08rem; }
  .hero-player-transport{ gap:.4rem; }
  .hero-player-transport .album-nav{ width:40px; height:40px; }
  .hero-player-transport .album-nav-play{ width:48px; height:48px; }
}

/* Hero CTA now lives under the playbox, not above the fold copy.
   Don, 2026-08-03: "the order with merlin blue button on top should be
   under playbox." Full width of the player column so it reads as the
   player's own call to action. */
.hero-media{ display:flex; flex-direction:column; gap:1rem; }
.btn-merlin-cta--underplayer{
  width:100%;
  justify-content:center;
}
@media (max-width:979px){
  .btn-merlin-cta--underplayer{ max-width:520px; margin-inline:auto; }
}
@media (max-width:480px){
  .btn-merlin-cta--underplayer{ max-width:none; }
}

/* =========================================================
   TAFB — the partner gets its name in full voice
   Don, 2026-08-03: "bold and bigger please — Tarrant Area
   Food Bank." Applied wherever the name appears in body copy.
   Sized in em so it scales up relative to whatever paragraph
   it sits in rather than fighting a fixed size.
   NOTE: Chef Lesly FUNDS the meals, TAFB FEEDS the city —
   emphasis on the name never flips that.
   ========================================================= */
.tafb{
  font-weight:800;
  font-size:1.14em;
  letter-spacing:-.005em;
  color:inherit;
  white-space:nowrap;
}
@media (max-width:420px){
  /* Long name, narrow screen — let it wrap rather than push a scrollbar. */
  .tafb{ white-space:normal; font-size:1.08em; }
}

/* Nav / drawer / footer "Order" are now buttons that open Merlin instead of
   anchors that scroll. Don, 2026-08-03: "order button on nav bar needs to
   trigger merlin." Styled to be indistinguishable from their sibling links. */
.nav-order,
.drawer-order,
.footer-order{
  font:inherit; color:inherit; background:none; border:0; padding:0;
  cursor:pointer; text-align:inherit;
}
.nav-links .nav-order:hover,
.nav-links .nav-order:focus-visible,
.drawer-order:hover,
.drawer-order:focus-visible,
.footer-order:hover,
.footer-order:focus-visible{ color:var(--pink); }
.drawer-order{ display:block; width:100%; }
