/* ============================================================
   MADAM KHANH — The Bánh Mì Queen · madamkhanh.vn
   Inspired by the warmth of Breads Bakery, the heritage of
   Grand Central, the clarity of COBS and the play of Toad.
   ============================================================ */

/* ---------- Fonts (self-hosted, Vietnamese + Latin) ---------- */
@font-face{
  font-family:'Fraunces';
  src:url('../fonts/fraunces-vietnamese-full-normal.woff2') format('woff2-variations');
  font-weight:100 900;font-style:normal;font-display:swap;
  unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
@font-face{
  font-family:'Fraunces';
  src:url('../fonts/fraunces-latin-full-normal.woff2') format('woff2-variations');
  font-weight:100 900;font-style:normal;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Fraunces';
  src:url('../fonts/fraunces-vietnamese-full-italic.woff2') format('woff2-variations');
  font-weight:100 900;font-style:italic;font-display:swap;
  unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}
@font-face{
  font-family:'Fraunces';
  src:url('../fonts/fraunces-latin-full-italic.woff2') format('woff2-variations');
  font-weight:100 900;font-style:italic;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* Be Vietnam Pro 400/500/600/700 */
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-vietnamese-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-latin-400-normal.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-vietnamese-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-latin-500-normal.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-vietnamese-600-normal.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-latin-600-normal.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-vietnamese-700-normal.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}
@font-face{font-family:'Be Vietnam Pro';src:url('../fonts/be-vietnam-pro-latin-700-normal.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

/* ---------- Tokens ---------- */
:root{
  --cream:#FBF4E3;
  --cream-2:#F6EBD1;
  --paper:#FFFDF6;
  --ink:#2B2116;
  --ink-soft:#6B5B45;
  --gold:#E9A31B;
  --gold-deep:#B97A08;
  --gold-soft:#F6D98C;
  --red:#D8402C;
  --red-deep:#A92C1B;
  --blue:#33619E;
  --green:#5E7C46;
  --radius:22px;
  --shadow-soft:0 24px 48px -24px rgba(43,33,22,.28);
  --shadow-lift:0 14px 30px -14px rgba(43,33,22,.32);
  --font-display:'Fraunces', Georgia, 'Times New Roman', serif;
  --font-body:'Be Vietnam Pro', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --header-h:76px;
  --ease-out:cubic-bezier(.22,.61,.2,1);
  --ease-spring:cubic-bezier(.34,1.45,.5,1);
}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--font-body);
  background:var(--cream);
  color:var(--ink);
  line-height:1.65;
  font-size:16.5px;
  overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}
button{font-family:inherit;background:none;border:0;cursor:pointer;color:inherit}
::selection{background:var(--gold);color:var(--ink)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:6px}
section{scroll-margin-top:calc(var(--header-h) + 14px)}

/* film grain */
body::after{
  content:"";position:fixed;inset:0;z-index:2147483000;pointer-events:none;opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.container{width:min(1180px,92vw);margin-inline:auto}

/* type helpers */
.display{font-family:var(--font-display);font-optical-sizing:auto;font-variation-settings:'SOFT' 42,'WONK' 0;letter-spacing:-.015em}
h1.display,h2.display{font-weight:640;line-height:1.24;text-wrap:balance}
h3.display{line-height:1.24}
h1 em,h2 em,.fancy{font-style:italic;font-weight:560;font-variation-settings:'SOFT' 70,'WONK' 1;color:var(--gold-deep)}
.eyebrow{
  display:inline-flex;align-items:center;gap:.55rem;
  font-size:.76rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--red);
}
.eyebrow::before{content:"";width:26px;height:2px;background:currentColor;border-radius:2px}
.lead{font-size:clamp(1.02rem,1.55vw,1.2rem);color:var(--ink-soft);max-width:56ch}

/* ---------- Buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:.55rem;
  font-weight:600;font-size:.95rem;line-height:1;
  padding:1.02rem 1.5rem;border-radius:999px;border:2px solid var(--ink);
  transition:transform .3s var(--ease-spring),box-shadow .3s ease,background-color .25s ease,color .25s ease;
  will-change:transform;
}
.btn .arr{transition:transform .3s var(--ease-spring)}
.btn:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift)}
.btn:hover .arr{transform:translateX(4px)}
.btn:active{transform:translateY(-1px) scale(.98)}
.btn-gold{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.btn-gold:hover{background:#f2b437}
.btn-ink{background:var(--ink);border-color:var(--ink);color:var(--cream)}
.btn-ghost{background:transparent;color:var(--ink)}
.btn-red{background:var(--red);border-color:var(--red);color:#fff}
.btn-red:hover{background:#e44e39}
.btn-cream{background:var(--cream);border-color:var(--cream);color:var(--ink)}
.btn-sm{padding:.72rem 1.15rem;font-size:.86rem}

/* ---------- Topbar ---------- */
.topbar{
  background:var(--ink);color:var(--cream);
  font-size:.8rem;font-weight:500;letter-spacing:.04em;
  text-align:center;padding:.5rem 1rem;position:relative;z-index:60;
}
.topbar .star{color:var(--gold)}

/* ---------- Header ---------- */
.site-header{
  position:sticky;top:0;z-index:50;
  transition:background-color .35s ease,box-shadow .35s ease,backdrop-filter .35s ease;
}
.site-header.scrolled{
  background:rgba(251,244,227,.88);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  box-shadow:0 1px 0 rgba(43,33,22,.09),0 12px 32px -22px rgba(43,33,22,.35);
}
.header-inner{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  height:var(--header-h);
}
.brand{display:flex;align-items:center;gap:.7rem;min-width:0}
.brand-badge{
  width:52px;height:52px;flex:0 0 auto;border-radius:50%;
  background:#fff;border:2px solid var(--ink);
  display:grid;place-items:center;overflow:hidden;
  transition:transform .4s var(--ease-spring);
}
.brand:hover .brand-badge{transform:rotate(-8deg) scale(1.06)}
.brand-badge img{width:78%;height:auto}
.brand-text{font-family:var(--font-display);font-weight:640;font-size:1.18rem;line-height:1.16;letter-spacing:-.01em;white-space:nowrap}
.brand-text small{
  display:block;font-family:var(--font-body);font-weight:700;font-size:.6rem;
  letter-spacing:.22em;text-transform:uppercase;color:var(--red);margin-top:.28rem;
}
.main-nav{display:flex;gap:1.9rem}
.main-nav a{
  position:relative;font-weight:600;font-size:.94rem;padding:.4rem 0;color:var(--ink);
}
.main-nav a::after{
  content:"";position:absolute;left:0;bottom:0;height:2.5px;width:100%;border-radius:3px;
  background:var(--gold);transform:scaleX(0);transform-origin:right;
  transition:transform .35s var(--ease-out);
}
.main-nav a:hover::after,.main-nav a.active::after{transform:scaleX(1);transform-origin:left}
.header-actions{display:flex;align-items:center;gap:.8rem}
.lang-toggle{
  display:inline-flex;align-items:center;gap:.3rem;
  font-weight:700;font-size:.8rem;letter-spacing:.06em;
  padding:.55rem .8rem;border-radius:999px;border:2px solid rgba(43,33,22,.25);
  transition:border-color .25s ease,transform .25s var(--ease-spring);
}
.lang-toggle:hover{border-color:var(--ink);transform:translateY(-2px)}
.lang-toggle span{opacity:.4;transition:opacity .25s ease,color .25s ease}
.lang-toggle span.on{opacity:1;color:var(--red)}
.nav-burger{display:none;width:46px;height:46px;border-radius:50%;border:2px solid var(--ink);position:relative;z-index:80}
.nav-burger span{
  position:absolute;left:12px;right:12px;height:2.5px;border-radius:2px;background:var(--ink);
  transition:transform .35s var(--ease-out),opacity .25s ease,top .35s var(--ease-out);
}
.nav-burger span:nth-child(1){top:15px}
.nav-burger span:nth-child(2){top:21px}
.nav-burger span:nth-child(3){top:27px}
.nav-burger[aria-expanded="true"] span:nth-child(1){top:21px;transform:rotate(45deg)}
.nav-burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-burger[aria-expanded="true"] span:nth-child(3){top:21px;transform:rotate(-45deg)}

/* header above the open mobile menu */
body.menu-open .site-header{z-index:80;background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
body.menu-open .nav-burger{border-color:var(--cream)}
body.menu-open .nav-burger span{background:var(--cream)}
body.menu-open .brand-text{color:var(--cream)}
body.menu-open .brand-text small{color:var(--gold)}
body.menu-open .brand-badge{border-color:var(--gold)}
body.menu-open .lang-toggle{color:var(--cream);border-color:rgba(251,244,227,.45)}
body.menu-open .lang-toggle span.on{color:var(--gold)}
body.menu-open .topbar{visibility:hidden}

/* mobile menu */
.mobile-menu{
  position:fixed;inset:0;z-index:70;background:var(--ink);color:var(--cream);
  display:flex;flex-direction:column;justify-content:center;padding:6rem 8vw 3rem;
  clip-path:circle(0% at calc(100% - 60px) 60px);visibility:hidden;
  transition:clip-path .65s var(--ease-out),visibility 0s linear .65s;
}
.mobile-menu.open{clip-path:circle(150% at calc(100% - 60px) 60px);visibility:visible;transition:clip-path .65s var(--ease-out)}
.mobile-menu a.mm-link{
  font-family:var(--font-display);font-weight:600;font-size:clamp(2rem,9vw,3rem);line-height:1.2;
  padding:.45rem 0;display:inline-flex;align-items:baseline;gap:1rem;color:var(--cream);
  opacity:0;transform:translateY(26px);transition:opacity .5s ease,transform .5s var(--ease-out);
}
.mobile-menu a.mm-link i{font-style:normal;font-family:var(--font-body);font-size:.8rem;font-weight:700;color:var(--gold)}
.mobile-menu.open a.mm-link{opacity:1;transform:none}
.mobile-menu.open a.mm-link:nth-child(1){transition-delay:.12s}
.mobile-menu.open a.mm-link:nth-child(2){transition-delay:.19s}
.mobile-menu.open a.mm-link:nth-child(3){transition-delay:.26s}
.mobile-menu.open a.mm-link:nth-child(4){transition-delay:.33s}
.mm-foot{margin-top:2.5rem;color:rgba(251,244,227,.65);font-size:.9rem;opacity:0;transition:opacity .5s ease .4s}
.mobile-menu.open .mm-foot{opacity:1}

/* ---------- Hero ---------- */
.hero{position:relative;padding:clamp(3rem,7vh,5.5rem) 0 clamp(4rem,9vh,7rem);overflow:hidden}
.hero-grid{
  display:grid;grid-template-columns:1.06fr .94fr;gap:clamp(2rem,5vw,4.5rem);align-items:center;
  position:relative;z-index:2;
}
.hero h1{font-size:clamp(2.7rem,5.9vw,4.7rem);margin:1.1rem 0 1.3rem}
.hero .line{display:block;overflow:hidden;padding-bottom:.18em;margin-bottom:-.18em}
body.hero-done .hero .line{overflow:visible}
.hero .rise{display:block;transform:translateY(112%)}
body.loaded .hero .rise{animation:rise .9s var(--ease-out) forwards}
body.loaded .hero .line:nth-child(2) .rise{animation-delay:.1s}
@keyframes rise{to{transform:translateY(0)}}
.hero .eyebrow,.hero .lead,.hero-cta{opacity:0;transform:translateY(18px)}
body.loaded .hero .eyebrow{animation:fadeUp .8s var(--ease-out) .05s forwards}
body.loaded .hero .lead{animation:fadeUp .8s var(--ease-out) .28s forwards}
body.loaded .hero .hero-cta{animation:fadeUp .8s var(--ease-out) .4s forwards}
@keyframes fadeUp{to{opacity:1;transform:none}}
.hero-cta{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:1.4rem;margin-bottom:2.1rem}

.hero-visual{position:relative}
.hero-arch{
  position:relative;border-radius:46% 46% 26px 26px / 34% 34% 26px 26px;
  overflow:hidden;border:3px solid var(--ink);box-shadow:var(--shadow-soft);
  aspect-ratio:.86;background:var(--cream-2);
  transform:scale(.93);opacity:0;
}
body.loaded .hero-arch{animation:archIn 1.1s var(--ease-out) .15s forwards}
@keyframes archIn{to{transform:scale(1);opacity:1}}
.hero-arch img{width:100%;height:100%;object-fit:cover;transform:scale(1.02)}
.hero-badge{
  position:absolute;left:-56px;bottom:-30px;width:158px;height:158px;z-index:3;
  filter:drop-shadow(0 12px 24px rgba(43,33,22,.25));
  opacity:0;transform:scale(.6);
}
body.loaded .hero-badge{animation:popIn .8s var(--ease-spring) .75s forwards}
@keyframes popIn{to{opacity:1;transform:scale(1)}}
.hero-badge .spin{animation:spin 22s linear infinite;transform-origin:50% 50%}
@keyframes spin{to{transform:rotate(360deg)}}
.hero-chip{
  position:absolute;z-index:3;display:inline-flex;align-items:center;gap:.55rem;
  background:var(--paper);border:2px solid var(--ink);border-radius:999px;
  padding:.6rem 1.05rem;font-size:.83rem;font-weight:700;box-shadow:var(--shadow-lift);
  opacity:0;transform:translateY(14px) scale(.9);
}
body.loaded .hero-chip{animation:popIn .7s var(--ease-spring) forwards}
body.loaded .chip-1{animation-delay:.95s}
body.loaded .chip-2{animation-delay:1.12s}
.chip-1{top:7%;right:-14px;rotate:2.5deg}
.chip-2{bottom:16%;right:-6%;rotate:-2deg}
.hero-chip .dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.chip-1 .dot{background:var(--red)}
.chip-2 .dot{background:var(--green)}
.floaty{animation:floaty 5.5s ease-in-out infinite}
@keyframes floaty{0%,100%{translate:0 0}50%{translate:0 -9px}}

/* doodles */
.doodle{position:absolute;z-index:0;pointer-events:none;opacity:.9}
.doodle svg{width:100%;height:100%}
.dd-baguette{width:112px;top:12%;left:-30px;rotate:-14deg}
.dd-chili{width:54px;top:64%;left:40%;rotate:10deg}
.dd-spark1{width:34px;top:3%;left:64%}
.dd-spark2{width:26px;bottom:12%;left:4%}
.dd-herb{width:58px;top:26%;right:3%;rotate:14deg}
.drift{animation:drift 7s ease-in-out infinite}
.drift.d2{animation-delay:-2.4s;animation-duration:8.5s}
.drift.d3{animation-delay:-4s;animation-duration:6.2s}
@keyframes drift{0%,100%{translate:0 0;rotate:0deg}50%{translate:0 -12px;rotate:3deg}}

/* ---------- Marquee ---------- */
.marquee{
  background:var(--ink);color:var(--cream);overflow:hidden;
  padding:.95rem 0;border-block:3px solid var(--ink);position:relative;z-index:2;
}
.marquee-track{
  display:inline-flex;align-items:center;white-space:nowrap;
  animation:mq var(--mq-dur,30s) linear infinite;will-change:transform;
}
.marquee:hover .marquee-track{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.marquee-seg{display:inline-flex;align-items:center;flex:0 0 auto}
.marquee-seg span{
  font-family:var(--font-display);font-weight:560;font-size:1.06rem;letter-spacing:.05em;
  text-transform:uppercase;padding:0 1.4rem;
}
.marquee-seg .mq-star{color:var(--gold);font-size:1rem}
.marquee-seg em{font-variation-settings:'SOFT' 70,'WONK' 1;color:var(--gold)}

/* ---------- Section shells ---------- */
.section{padding:clamp(4.2rem,9vh,7rem) 0}
.section-head{max-width:640px;margin-bottom:clamp(2.4rem,5vh,3.6rem)}
.section-head.center{margin-inline:auto;text-align:center}
.section-head.center .eyebrow{justify-content:center}
.section-head.center .eyebrow::before{display:none}
.section-head h1{font-size:clamp(2rem,4.1vw,3.15rem);margin-top:.9rem}
.section-head .sub{margin-top:1rem;color:var(--ink-soft)}

/* ---------- Story ---------- */
.story{position:relative}
.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2.4rem,5.5vw,5rem);align-items:center}
.story-visual{position:relative;padding-bottom:3rem}
.story-arch{
  border-radius:46% 46% 24px 24px / 36% 36% 24px 24px;overflow:hidden;
  border:3px solid var(--ink);box-shadow:var(--shadow-soft);aspect-ratio:.92;
}
.story-arch img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease-out)}
.story-visual:hover .story-arch img{transform:scale(1.05)}
.polaroid{
  position:absolute;right:-4%;bottom:0;width:46%;
  background:#fff;border:2.5px solid var(--ink);border-radius:14px;
  padding:.55rem .55rem 2.2rem;box-shadow:var(--shadow-lift);rotate:5deg;
  transition:rotate .45s var(--ease-spring),transform .45s var(--ease-spring);
}
.polaroid:hover{rotate:2deg;transform:translateY(-6px)}
.polaroid img{border-radius:8px;aspect-ratio:1.15;object-fit:cover}
.polaroid figcaption{
  position:absolute;left:0;right:0;bottom:.5rem;text-align:center;
  font-family:var(--font-display);font-style:italic;font-size:.86rem;color:var(--ink-soft);
}
.polaroid::before{ /* tape */
  content:"";position:absolute;top:-12px;left:50%;translate:-50% 0;rotate:-4deg;
  width:86px;height:24px;background:rgba(233,163,27,.55);border-radius:3px;
}
.story-copy h1{font-size:clamp(2rem,4.1vw,3.05rem);margin:.9rem 0 1.3rem}
.story-copy p{color:var(--ink-soft);margin-bottom:1.05rem;max-width:54ch}
.story-copy p b{color:var(--ink)}
.story-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:1.9rem 0 1.6rem;max-width:520px}
.stat-card{
  background:var(--paper);border:2px solid var(--ink);border-radius:18px;
  padding:1rem .9rem;text-align:center;
  transition:transform .35s var(--ease-spring),box-shadow .35s ease;
}
.stat-card:hover{transform:translateY(-5px) rotate(-1deg);box-shadow:var(--shadow-lift)}
.stat-card b{
  display:block;font-family:var(--font-display);font-weight:640;font-size:1.75rem;line-height:1;
  color:var(--red);
}
.stat-card span{font-size:.78rem;font-weight:600;color:var(--ink-soft);display:block;margin-top:.45rem;line-height:1.35}
.signature{
  font-family:var(--font-display);font-style:italic;font-variation-settings:'SOFT' 80,'WONK' 1;
  font-size:1.25rem;color:var(--gold-deep);
}

/* ---------- Menu ---------- */
.menu{background:var(--cream-2);position:relative}
.menu-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(2.4rem,5vw,4.6rem);align-items:start}
.menu-visual{position:sticky;top:calc(var(--header-h) + 26px)}
.menu-arch{
  border-radius:46% 46% 24px 24px / 34% 34% 24px 24px;overflow:hidden;
  border:3px solid var(--ink);box-shadow:var(--shadow-soft);aspect-ratio:.98;
}
.menu-arch img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease-out)}
.menu-visual:hover .menu-arch img{transform:scale(1.05)}
.menu-plate{
  position:absolute;left:-7%;bottom:-8%;width:41%;aspect-ratio:1;border-radius:50%;
  overflow:hidden;border:3px solid var(--ink);box-shadow:var(--shadow-lift);rotate:-4deg;
}
.menu-plate img{width:100%;height:100%;object-fit:cover}
.menu-visual .dd-spark3{position:absolute;top:-18px;right:6%;width:38px;rotate:12deg}

.feature-card{
  position:relative;background:var(--gold);border:3px solid var(--ink);border-radius:var(--radius);
  padding:1.6rem 1.7rem 1.5rem;box-shadow:var(--shadow-soft);overflow:hidden;
  transition:transform .4s var(--ease-spring),box-shadow .4s ease;
}
.feature-card:hover{transform:translateY(-6px) rotate(-.5deg)}
.feature-card::after{
  content:"";position:absolute;right:-52px;bottom:-52px;width:150px;height:150px;border-radius:50%;
  background:rgba(255,255,255,.28);
}
.feature-tag{
  display:inline-flex;align-items:center;gap:.45rem;background:var(--ink);color:var(--gold);
  font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  border-radius:999px;padding:.42rem .9rem;margin-bottom:.9rem;
}
.feature-tag svg{width:14px;height:14px}
.feature-top{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}
.feature-card h2,.feature-card h3{flex:1;font-family:var(--font-display);font-weight:640;font-size:clamp(1.5rem,2.6vw,2rem);line-height:1.24}
.feature-card .price{font-family:var(--font-display);font-weight:640;font-size:1.5rem;white-space:nowrap}
.feature-card p{margin-top:.65rem;font-size:.95rem;color:rgba(43,33,22,.82);max-width:46ch;position:relative;z-index:1}

.menu-list{margin-top:1.6rem}
.menu-item{
  display:flex;align-items:baseline;gap:.65rem;padding:1.05rem .4rem;
  border-radius:14px;
  transition:background-color .3s ease,transform .3s var(--ease-out),padding .3s var(--ease-out);
}
.menu-item:hover{background:var(--paper);transform:translateX(6px);padding-inline:1rem}
.menu-item + .menu-item{border-top:1.5px solid rgba(43,33,22,.12)}
.mi-name{font-family:var(--font-display);font-weight:600;font-size:1.22rem;line-height:1.3}
.mi-name small{
  display:block;font-family:var(--font-body);font-weight:500;font-size:.82rem;
  color:var(--ink-soft);margin-top:.3rem;letter-spacing:0;
}
.mi-dots{flex:1;border-bottom:2px dotted rgba(43,33,22,.3);translate:0 -6px;min-width:24px}
.mi-price{font-family:var(--font-display);font-weight:640;font-size:1.18rem;color:var(--red);white-space:nowrap}
.mi-flag{font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--green);border-radius:999px;padding:.22rem .6rem;translate:0 -2px}
.menu-note{margin-top:1.4rem;font-size:.84rem;color:var(--ink-soft);display:flex;gap:.5rem;align-items:flex-start}
.menu-note svg{flex:0 0 auto;width:16px;height:16px;translate:0 3px;color:var(--gold-deep)}
.addons{margin-top:1.5rem;display:flex;flex-wrap:wrap;gap:.6rem}
.addon{
  background:var(--paper);border:2px solid var(--ink);border-radius:999px;
  padding:.55rem 1.05rem;font-size:.85rem;font-weight:600;
  transition:transform .3s var(--ease-spring),background-color .25s ease;
}
.addon:hover{transform:translateY(-3px) rotate(-1deg);background:#fff}
.addon b{color:var(--red)}

/* ---------- Gallery ---------- */
.gallery{overflow:hidden;padding-bottom:0}
.g-rows{display:grid;gap:1.3rem;margin-top:.6rem;padding-bottom:clamp(4.2rem,9vh,7rem)}
.g-row{overflow:hidden;--gap:1.3rem}
.g-track{display:flex;gap:var(--gap);width:max-content;animation:mq var(--dur,60s) linear infinite;will-change:transform}
.g-row.rev .g-track{animation-direction:reverse}
.g-row:hover .g-track{animation-play-state:paused}
.g-card{
  position:relative;flex:0 0 auto;width:min(340px,72vw);aspect-ratio:4/3;
  border-radius:18px;overflow:hidden;border:2.5px solid var(--ink);
  box-shadow:0 14px 26px -16px rgba(43,33,22,.35);
  transition:transform .45s var(--ease-spring);
}
.g-card:nth-child(odd){rotate:1.1deg}
.g-card:nth-child(even){rotate:-1.1deg}
.g-card:hover{transform:scale(1.035) rotate(0deg);z-index:2}
.g-card img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-out)}
.g-card:hover img{transform:scale(1.07)}
.g-card figcaption{
  position:absolute;left:.7rem;bottom:.7rem;right:.7rem;
  background:rgba(251,244,227,.95);border:2px solid var(--ink);border-radius:12px;
  font-size:.78rem;font-weight:700;padding:.45rem .7rem;
  opacity:0;translate:0 8px;transition:opacity .35s ease,translate .35s var(--ease-out);
}
.g-card:hover figcaption{opacity:1;translate:0 0}
.g-card.tall{aspect-ratio:3.4/3}

/* ---------- Quote band ---------- */
.quote-band{background:var(--red);color:var(--cream);position:relative;overflow:hidden}
.quote-band .container{position:relative;z-index:1;text-align:center;max-width:880px}
.quote-mark{font-family:var(--font-display);font-size:5rem;line-height:.4;display:block;color:var(--gold);font-weight:640;margin-bottom:1.6rem}
.quote-band blockquote p{
  font-family:var(--font-display);font-weight:560;font-style:italic;
  font-variation-settings:'SOFT' 70,'WONK' 1;
  font-size:clamp(1.5rem,3.3vw,2.5rem);line-height:1.3;text-wrap:balance;
}
.quote-band cite{
  display:block;margin-top:1.6rem;font-style:normal;font-family:var(--font-body);
  font-size:.86rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(251,244,227,.8);
}
.quote-band .qb-doodle{position:absolute;opacity:.16;color:var(--cream)}
.qb-d1{width:150px;left:-30px;top:14%;rotate:-16deg}
.qb-d2{width:110px;right:-6px;bottom:8%;rotate:18deg}

/* ---------- Visit ---------- */
.visit-card{
  position:relative;background:var(--ink);color:var(--cream);
  border-radius:34px;overflow:hidden;box-shadow:var(--shadow-soft);
  display:grid;grid-template-columns:1.05fr .95fr;
}
.visit-card::before{
  content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;
  background-image:radial-gradient(rgba(251,244,227,.14) 1.4px,transparent 1.4px);
  background-size:26px 26px;
}
.visit-copy{position:relative;padding:clamp(2.2rem,4.5vw,3.8rem)}
.visit-copy .eyebrow{color:var(--gold)}
.visit-copy h1{font-size:clamp(2rem,4vw,3rem);margin:.9rem 0 1.4rem;color:var(--cream)}
.visit-copy h1 em{color:var(--gold)}
.visit-rows{display:grid;gap: 1.05rem;margin-bottom:1.9rem}
.v-row{display:flex;gap:.9rem;align-items:flex-start}
.v-ico{
  width:42px;height:42px;flex:0 0 auto;border-radius:50%;
  background:rgba(251,244,227,.1);border:1.5px solid rgba(251,244,227,.3);
  display:grid;place-items:center;color:var(--gold);
}
.v-ico svg{width:19px;height:19px}
.v-row b{display:block;font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:rgba(251,244,227,.65);margin-bottom:.18rem}
.v-row p{font-size:1.02rem;font-weight:500}
.v-row p small{display:block;font-size:.82rem;color:rgba(251,244,227,.6);margin-top:.15rem}
.visit-ctas{display:flex;flex-wrap:wrap;gap:.85rem}
.visit-photo{position:relative;min-height:380px}
.visit-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.visit-photo::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to right,rgba(43,33,22,.45),transparent 40%);
}
.visit-cap{
  position:absolute;z-index:2;left:1.4rem;bottom:1.4rem;right:1.4rem;
  background:var(--cream);color:var(--ink);border:2.5px solid var(--ink);
  border-radius:14px;padding:.8rem 1.05rem;font-size:.86rem;font-weight:700;
  box-shadow:var(--shadow-lift);rotate:-1deg;
}
.visit-cap .fancy{font-size:1rem}
.visit-map{margin-top:clamp(1.4rem,3vw,2.2rem)}
.visit-map-frame{
  position:relative;border:3px solid var(--ink);border-radius:28px;overflow:hidden;
  box-shadow:var(--shadow-lift);background:rgba(43,33,22,.06);
}
.visit-map-frame iframe{display:block;width:100%;height:clamp(280px,42vw,420px);border:0;filter:saturate(.92)}
.visit-map-bar{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.9rem;
  margin-top:1rem;
}
.visit-map-bar p{font-size:.95rem;font-weight:600}
.visit-map-bar p b{font-weight:800}

/* ---------- Footer ---------- */
.site-footer{background:var(--ink);color:var(--cream);position:relative;margin-top:clamp(4rem,9vh,7rem)}
.footer-wave{display:block;width:100%;height:46px;color:var(--cream);translate:0 -1px}
.footer-inner{padding:clamp(2.6rem,6vh,4.6rem) 0 2rem}
.footer-big{
  font-family:var(--font-display);font-weight:640;letter-spacing:-.015em;
  font-size:clamp(2.3rem,6vw,4.4rem);line-height:1.22;max-width:14ch;
  margin-bottom:2.6rem;
}
.footer-big em{font-style:italic;font-variation-settings:'SOFT' 70,'WONK' 1;color:var(--gold)}
.footer-grid{
  display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:2.2rem;
  padding-top:2.2rem;border-top:1.5px solid rgba(251,244,227,.16);
}
.f-brand{display:flex;align-items:flex-start;gap:.9rem}
.f-badge{width:58px;height:58px;border-radius:50%;background:#fff;display:grid;place-items:center;flex:0 0 auto;border:2px solid var(--gold)}
.f-badge img{width:76%}
.f-brand p{font-size:.9rem;color:rgba(251,244,227,.72);max-width:30ch;margin-top:.5rem}
.f-brand .brand-text{color:var(--cream)}
.f-brand .brand-text small{color:var(--gold)}
.f-col h2,.f-col h3,.f-col h4{
  font-family:var(--font-body);
  font-size:.72rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold);margin-bottom:1.05rem;
}
.f-col ul{display:grid;gap:.55rem}
.f-col a,.f-col li{font-size:.93rem;color:rgba(251,244,227,.82)}
.f-col a{position:relative;transition:color .25s ease;display:inline-block}
.f-col a:hover{color:var(--gold)}
.footer-bottom{
  display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;align-items:center;
  margin-top:2.8rem;padding-top:1.4rem;border-top:1.5px solid rgba(251,244,227,.16);
  font-size:.8rem;color:rgba(251,244,227,.55);
}
.footer-bottom .crown{color:var(--gold)}

/* ---------- Waves ---------- */
.wave{display:block;width:100%;height:44px;position:relative;z-index:2}

/* ---------- To top ---------- */
.to-top{
  position:fixed;right:1.4rem;bottom:1.4rem;z-index:60;
  width:52px;height:52px;border-radius:50%;
  background:var(--gold);border:2.5px solid var(--ink);color:var(--ink);
  display:grid;place-items:center;box-shadow:var(--shadow-lift);
  opacity:0;pointer-events:none;translate:0 14px;
  transition:opacity .35s ease,translate .35s var(--ease-out),transform .3s var(--ease-spring);
}
.to-top.show{opacity:1;pointer-events:auto;translate:0 0}
.to-top:hover{transform:translateY(-4px)}
.to-top svg{width:20px;height:20px}

/* ---------- Reveal on scroll ---------- */
.rv{opacity:0;transform:translateY(28px);transition:opacity .8s ease,transform .8s var(--ease-out);transition-delay:var(--d,0s);will-change:opacity,transform}
.rv.in{opacity:1;transform:none}
.rv-l{opacity:0;transform:translateX(-30px);transition:opacity .8s ease,transform .8s var(--ease-out);transition-delay:var(--d,0s)}
.rv-l.in{opacity:1;transform:none}
.rv-r{opacity:0;transform:translateX(30px);transition:opacity .8s ease,transform .8s var(--ease-out);transition-delay:var(--d,0s)}
.rv-r.in{opacity:1;transform:none}
.rv-pop{opacity:0;transform:scale(.88);transition:opacity .7s ease,transform .7s var(--ease-spring);transition-delay:var(--d,0s)}
.rv-pop.in{opacity:1;transform:none}

/* image fade-in when loaded */
img[data-fade]{opacity:0;transition:opacity .7s ease}
img[data-fade].ld{opacity:1}

/* ---------- Loading skeleton (shimmer) for image blocks ---------- */
@keyframes mk-shimmer{
  0%{background-position:120% 0}
  100%{background-position:-40% 0}
}
.g-card:has(img[data-fade]:not(.ld)),
.menu-arch:has(img[data-fade]:not(.ld)),
.menu-plate:has(img[data-fade]:not(.ld)),
.story-arch:has(img[data-fade]:not(.ld)),
.polaroid:has(img[data-fade]:not(.ld)),
.visit-photo:has(img[data-fade]:not(.ld)),
.mk-skeleton{
  background-color:rgba(43,33,22,.13);
  background-image:linear-gradient(
    100deg,
    rgba(43,33,22,0) 20%,
    rgba(255,255,255,.7) 45%,
    rgba(43,33,22,0) 70%
  );
  background-size:220% 100%;
  background-repeat:no-repeat;
  animation:mk-shimmer 1.5s linear infinite;
}
@media (prefers-reduced-motion:reduce){
  .g-card:has(img[data-fade]:not(.ld)),
  .menu-arch:has(img[data-fade]:not(.ld)),
  .menu-plate:has(img[data-fade]:not(.ld)),
  .story-arch:has(img[data-fade]:not(.ld)),
  .polaroid:has(img[data-fade]:not(.ld)),
  .visit-photo:has(img[data-fade]:not(.ld)),
  .mk-skeleton{animation:none}
}


/* ---------- Responsive ---------- */
@media (max-width:1060px){
  .hero-grid{gap:2.4rem}
  .hero-badge{left:-18px}
  .footer-grid{grid-template-columns:1.4fr 1fr 1fr}
}
@media (max-width:900px){
  .dd-baguette,.dd-herb,.dd-spark1,.dd-chili{display:none}
  .main-nav{display:none}
  .nav-burger{display:block}
  .header-actions .btn{display:none}
  .hero-grid{grid-template-columns:1fr;gap:3rem}
  .hero-visual{max-width:520px;margin-inline:auto;width:100%}
  .story-grid{grid-template-columns:1fr}
  .story-visual{max-width:520px;margin-inline:auto}
  .menu-grid{grid-template-columns:1fr}
  .menu-visual{position:relative;top:0;max-width:520px;margin-inline:auto}
  .visit-card{grid-template-columns:1fr}
  .visit-photo{min-height:300px;order:-1}
  .visit-photo::after{background:linear-gradient(to top,rgba(43,33,22,.5),transparent 45%)}
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  body{font-size:15.5px}
  :root{--header-h:68px}
  .topbar .hide-sm{display:none}
  .brand-text{font-size:1.05rem}
  .brand-badge{width:46px;height:46px}
  .hero{padding-top:2.2rem}
  .hero-badge{width:124px;height:124px;left:-10px;bottom:-22px}
  .chip-1{right:-4px}
  .chip-2{right:0}
  .dd-baguette{width:84px}
  .story-stats{grid-template-columns:repeat(3,1fr);gap:.7rem}
  .stat-card b{font-size:1.4rem}
  .feature-top{flex-direction:column;gap:.35rem}
  .feature-card .price{font-size:1.3rem}
  .g-card{width:min(280px,78vw)}
  .footer-grid{grid-template-columns:1fr}
  .to-top{right:1rem;bottom:1rem;width:48px;height:48px}
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .marquee-track,.g-track,.hero-badge .spin,.drift,.floaty{animation:none !important}
  .hero .rise{transform:none}
  .hero .eyebrow,.hero .lead,.hero-cta,.hero-arch,.hero-badge,.hero-chip{opacity:1;transform:none}
  .rv,.rv-l,.rv-r,.rv-pop{opacity:1;transform:none}
  img[data-fade]{opacity:1}
}

/* ---------- Contact form (Visit section) ---------- */
.visit-contact{margin-top:1.6rem;display:grid;grid-template-columns:.95fr 1.05fr;gap:1.6rem;align-items:start;
  background:var(--cream);border:2px solid var(--ink);border-radius:24px;padding:1.7rem 1.5rem;box-shadow:6px 6px 0 var(--ink)}
@media(max-width:820px){.visit-contact{grid-template-columns:1fr;padding:1.3rem 1.1rem}}
.visit-contact h3{font-size:clamp(1.4rem,2.6vw,1.9rem);line-height:1.24;margin:.5rem 0 .6rem}
.vc-copy p{color:var(--ink-soft);font-size:.95rem}
.vc-form{display:grid;gap:.8rem}
.vc-field{display:block}
.vc-field>span{display:block;font-size:.85rem;font-weight:600;margin-bottom:.3rem}
.vc-field input,.vc-field textarea{width:100%;font:inherit;color:inherit;background:var(--cream-2,#fff);
  border:2px solid var(--ink);border-radius:14px;padding:.7rem .9rem}
.vc-field textarea{resize:vertical}
.vc-submit{justify-content:center}
.vc-msg{font-size:.88rem;font-weight:600;min-height:1.2em}
.vc-msg.err{color:var(--red)}

/* ---------- a11y: screen-reader-only text ---------- */
.sr-only{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;
}

/* ---------- a11y: VI/EN toggle ---------- */
.lang-toggle{
  min-height:44px;min-width:44px;justify-content:center;cursor:pointer;
}
.lang-sep{opacity:.35}
.lang-toggle:focus-visible{
  outline:3px solid var(--gold);
  outline-offset:3px;
  border-color:var(--ink);
  transform:translateY(-2px);
}
body.menu-open .lang-toggle:focus-visible{outline-color:var(--gold);border-color:var(--cream)}
/* keep the active language legible for low-vision users */
.lang-toggle span{opacity:.55}
.lang-toggle span.on{opacity:1;text-decoration:underline;text-underline-offset:3px}
@media (prefers-reduced-motion:reduce){
  .lang-toggle,.lang-toggle:hover,.lang-toggle:focus-visible{transition:none;transform:none}
}

/* ===== Page transition (multi-page, no jank) ===== */
.page-anim{
  animation: pageIn .42s cubic-bezier(.22,.68,.28,1) both;
  will-change: opacity, transform;
}
@keyframes pageIn{
  from{ opacity:0; transform: translate3d(0,14px,0) }
  to{ opacity:1; transform: none }
}
.page-anim > *{ contain: paint }
@media (prefers-reduced-motion: reduce){
  .page-anim{ animation:none }
}

/* ---- Full drink board (menu page) ---- */
.menu-drinks{
  margin-top:3.2rem;display:grid;gap:2rem;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
}
.menu-drinks .drink-col h2{
  font-family:var(--font-display);font-size:1.5rem;line-height:1.24;
  padding-bottom:.5rem;border-bottom:2.5px solid var(--ink);
}
.menu-drinks .menu-list{margin-top:.6rem}
.menu-drinks .menu-item{padding-block:.55rem}
.menu-drinks .mi-name{font-size:1.06rem}
.menu-drinks .mi-name small{display:inline;margin-left:.35rem;font-family:var(--font-body);text-transform:none;letter-spacing:0}

/* ---------- FAQ (Visit section) ---------- */
.visit-faq{margin-top:1.6rem;background:var(--cream);border:2px solid var(--ink);border-radius:24px;
  padding:1.7rem 1.5rem;box-shadow:6px 6px 0 var(--ink)}
@media(max-width:820px){.visit-faq{padding:1.3rem 1.1rem}}
.visit-faq h2{font-family:var(--font-display);font-size:clamp(1.4rem,2.6vw,1.9rem);line-height:1.24;margin:.5rem 0 1rem}
.faq-list{display:grid;gap:.7rem}
.faq-item{border:2px solid var(--ink);border-radius:16px;background:var(--cream-2,#fff);overflow:hidden}
.faq-item summary{cursor:pointer;list-style:none;padding:.85rem 1rem;font-weight:700;font-size:.98rem;
  display:flex;align-items:center;justify-content:space-between;gap:.8rem}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";font-family:var(--font-display);font-size:1.25rem;line-height:1;flex:0 0 auto}
.faq-item[open] summary::after{content:"–"}
.faq-item summary:focus-visible{outline:3px solid var(--gold,#C8912F);outline-offset:-3px}
.faq-a{padding:0 1rem 1rem;color:var(--ink-soft);font-size:.94rem;line-height:1.6}
.faq-a a{text-decoration:underline;font-weight:600;color:inherit}
