/* =========================================================================
   Tranzistor — Cafe · Snack · Bar
   60's-diner / kitsch brand. Ported from the design handoff (reference/*.html).
   One stylesheet: tokens first, then sections top-to-bottom.
   ========================================================================= */

:root{
  --teal-ink:#17444F;   /* text, borders, hard shadows (the only "black" in the UI) */
  --cream:#FBF6EA;      /* page background, light text on dark */
  --mint:#A8D5D8;       /* hero, footer, panel 1, card 1 */
  --pink:#F4A9C7;       /* house-rule, menu header, panel 3 */
  --yellow:#F0EE86;     /* panel 2, card 2, ΖΕΡΒΟΧΩΡΙ */
  --lilac:#C9B6E4;      /* panel 5, card 3 */
  --red:#C42B2B;        /* CTAs, marquee, accents, needle */
  --black:#121212;      /* checkerboard squares only */
  --checker:26px;
  --hero:var(--mint);
  --nav-h:63px;         /* sticky nav height — the dial scene pins below it */
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
body{
  margin:0;
  background:var(--cream);
  color:var(--black);
  font-family:'Fira Sans', system-ui, sans-serif;
  overflow-x:clip; /* NOT hidden — position:sticky in the dial scene depends on this */
}
img{ display:block; max-width:100%; }
a{ color:var(--red); text-decoration:none; }
a:hover{ color:var(--teal-ink); }

/* ---- shared bits --------------------------------------------------------- */

.checker{
  background-image:conic-gradient(var(--black) 0deg 90deg, var(--cream) 90deg 180deg, var(--black) 180deg 270deg, var(--cream) 270deg 360deg);
  background-size:var(--checker) var(--checker);
}

/* signature headline: cream fill + teal outline + hard offset shadow.
   --fill and --shadow are set per instance (some sections rotate the shadow).
   Shadow + stroke are in em so they scale WITH the font — a hard offset on the
   big desktop sizes, automatically light on small phone sizes (fixed px looked
   like a doubled/muddy blob once the headline dropped to ~38px on mobile). */
.headline{
  margin:0;
  font-weight:900;
  font-style:italic;
  line-height:.9;
  letter-spacing:-.03em;
  color:var(--fill, var(--cream));
  -webkit-text-stroke:.035em var(--teal-ink);
  text-shadow:.085em .085em 0 var(--shadow, var(--teal-ink));
}

/* pill buttons — 3px border, hard offset shadow, no blur */
.btn{
  display:inline-block;
  border:3px solid var(--teal-ink);
  border-radius:999px;
  padding:16px 30px;
  font-weight:900;
  font-style:italic;
  font-size:18px;
  box-shadow:6px 6px 0 var(--teal-ink);
  transition:transform .08s linear, box-shadow .08s linear;
}
.btn:hover{ transform:translate(3px,3px); box-shadow:3px 3px 0 var(--teal-ink); }
.btn--red{ background:var(--red); color:var(--cream); }
.btn--cream{ background:var(--cream); color:var(--teal-ink); font-weight:700; font-style:normal; }
.btn--teal{ background:var(--teal-ink); color:var(--cream); box-shadow:6px 6px 0 var(--red); }
.btn--teal:hover{ box-shadow:3px 3px 0 var(--red); }
.btn--pink{ background:var(--pink); color:var(--teal-ink); }

.label{
  font-family:'Space Mono', monospace;
  text-transform:uppercase;
}

/* CMS image frame: aspect-locked, object-fit cover */
.frame-img{ width:100%; height:100%; object-fit:cover; }

/* ---- 1.1 Nav ------------------------------------------------------------- */

.nav{
  position:sticky; top:0; z-index:60;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:10px 5vw;
  background:var(--cream);
  border-bottom:3px solid var(--teal-ink);
}
.nav__logo{ display:flex; align-items:center; gap:10px; color:var(--teal-ink); }
.nav__logo .mascot{ height:36px; width:auto; }
.nav__logo .wordmark{ height:19px; width:auto; }
.nav__links{
  display:flex; align-items:center; gap:clamp(12px,2.2vw,30px);
  font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.14em; text-transform:uppercase;
}
.nav__links a{ color:var(--teal-ink); }
/* nav phone pill — cream text like the other red buttons. The selector is
   nav-scoped so it out-weighs `.nav__links a { color: teal-ink }`. */
.nav__links a.btn-phone{
  display:inline-block; background:var(--red); color:var(--cream);
  padding:9px 16px; border-radius:999px; border:2px solid var(--teal-ink);
}
.nav__links a.btn-phone:hover{ color:var(--cream); filter:brightness(1.05); }

/* language switch (ΕΛ / EN) */
.langswitch{ display:inline-flex; align-items:center; gap:6px; font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.14em; }
.langswitch__link{ color:var(--teal-ink); opacity:.55; }
.langswitch__link[aria-current="true"]{ opacity:1; font-weight:700; text-decoration:underline; text-underline-offset:4px; }
.langswitch__link:hover{ opacity:1; color:var(--red); }
.langswitch__sep{ color:var(--teal-ink); opacity:.35; }

/* skip link (a11y) — hidden until focused */
.skip-link{ position:absolute; left:-9999px; top:0; z-index:100; background:var(--teal-ink); color:var(--cream); padding:10px 16px; font-family:'Space Mono', monospace; font-size:13px; }
.skip-link:focus{ left:8px; top:8px; }

/* flat headline (no stroke/shadow) — menu teaser + instagram titles */
.headline--flat{ color:var(--teal-ink); -webkit-text-stroke:0; text-shadow:none; }

/* hamburger toggle — hidden on desktop, shown ≤900px when JS is on */
.nav-toggle{
  display:none; order:3; margin-left:auto;
  background:var(--cream); border:3px solid var(--teal-ink); border-radius:12px;
  padding:9px 10px; cursor:pointer; box-shadow:3px 3px 0 var(--teal-ink);
  transition:transform .08s linear, box-shadow .08s linear;
}
.nav-toggle:active{ transform:translate(3px,3px); box-shadow:0 0 0 var(--teal-ink); }
.nav-toggle__box{ display:block; width:24px; height:16px; position:relative; }
.nav-toggle__line{
  position:absolute; left:0; width:100%; height:3px; background:var(--teal-ink); border-radius:2px;
  transition:top .2s ease, transform .2s ease, opacity .2s ease;
}
.nav-toggle__line:nth-child(1){ top:0; }
.nav-toggle__line:nth-child(2){ top:6.5px; }
.nav-toggle__line:nth-child(3){ top:13px; }
.nav-toggle[aria-expanded="true"] .nav-toggle__line:nth-child(1){ top:6.5px; transform:rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__line:nth-child(2){ opacity:0; }
.nav-toggle[aria-expanded="true"] .nav-toggle__line:nth-child(3){ top:6.5px; transform:rotate(-45deg); }

/* ---- 1.2 Hero ------------------------------------------------------------ */

.hero{
  position:relative;
  min-height:calc(100svh - 60px);
  background:var(--hero);
  overflow:hidden;
  display:flex; align-items:center;
}
.hero__inner{ position:relative; z-index:2; padding:6vh 5vw 22vh; max-width:min(820px,56vw); }
.hero__kicker{
  font-family:'Space Mono', monospace; font-size:13px; letter-spacing:.28em;
  text-transform:uppercase; color:var(--teal-ink); margin-bottom:18px;
}
.hero__wordmark{ margin:16px 0 0; }
.hero__wordmark img{ width:min(94%,780px); height:auto; }
.hero__subtitle{ margin-top:14px; font-family:'Fira Sans', sans-serif; font-weight:700; font-size:clamp(22px,3.6vw,38px); line-height:1; letter-spacing:.04em; text-transform:uppercase; color:#6370ba; }
.hero__tagline{
  margin:26px 0 0; font-size:clamp(19px,2.2vw,27px); line-height:1.32;
  font-weight:500; color:var(--teal-ink); max-width:19em; text-wrap:pretty;
}
.hero__tagline em{ font-style:italic; opacity:.75; }
.hero__cta{ display:flex; flex-wrap:wrap; gap:14px; margin-top:34px; }
.hero__mascot{
  position:absolute; right:1vw; bottom:34px; height:min(62vh,600px); width:auto; z-index:1;
  filter:drop-shadow(0 26px 22px rgba(23,68,79,.28));
  animation:bob 3.6s ease-in-out infinite;
  pointer-events:none;
}
.hero__checker{
  position:absolute; left:0; right:0; bottom:0; height:56px; z-index:3;
  border-top:3px solid var(--teal-ink);
}
@keyframes bob{
  0%,100%{ transform:translateY(0) rotate(-1deg); }
  50%{ transform:translateY(-14px) rotate(1deg); }
}

/* ---- 1.3 Marquee --------------------------------------------------------- */

.marquee{
  background:var(--red);
  border-top:3px solid var(--teal-ink); border-bottom:3px solid var(--teal-ink);
  overflow:hidden; padding:14px 0;
}
.marquee__track{
  display:flex; width:max-content; animation:slide 26s linear infinite;
  font-family:'Space Mono', monospace; font-size:15px; letter-spacing:.24em;
  color:var(--cream); text-transform:uppercase;
}
.marquee__track span{ padding-right:28px; }
@keyframes slide{ from{ transform:translateX(0); } to{ transform:translateX(-50%); } }

/* ---- 1.4 Dial scene (the centrepiece) ------------------------------------ */

.dial{ position:relative; background:var(--cream); } /* height set inline from panel count */
/* Pin the stage BELOW the sticky nav so the "Tune in" label + frequency readout
   stay visible during the scene instead of hiding behind the nav. */
.dial__stage{ position:sticky; top:var(--nav-h); height:calc(100svh - var(--nav-h)); overflow:hidden; }
.dial__head{
  position:absolute; top:0; left:0; right:0; z-index:5;
  padding:22px 5vw 18px; background:var(--cream); border-bottom:3px solid var(--teal-ink);
}
.dial__head-row{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:12px; }
.dial__label{ font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.28em; text-transform:uppercase; color:var(--teal-ink); }
.dial__readout{ display:flex; align-items:baseline; gap:8px; color:var(--red); }
.dial__freq{ font-family:'Space Mono', monospace; font-weight:700; font-size:clamp(22px,3vw,34px); letter-spacing:-.02em; }
.dial__fm{ font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.2em; color:var(--teal-ink); }
.dial__dot{ width:9px; height:9px; border-radius:50%; background:var(--red); animation:blink 1.4s steps(1,end) infinite; margin-left:6px; }
@keyframes blink{ 0%,100%{ opacity:1; } 50%{ opacity:.25; } }
.dial__ruler{ position:relative; height:26px; border-bottom:3px solid var(--teal-ink); }
.dial__ticks{ position:absolute; inset:0; background-image:repeating-linear-gradient(to right, var(--teal-ink) 0 2px, transparent 2px 28px); opacity:.45; }
.dial__needle{ position:absolute; top:-6px; left:4%; width:4px; height:34px; background:var(--red); border:1px solid var(--teal-ink); transform:translateX(-50%); transition:left .08s linear; }

.dial__track{ display:flex; height:calc(100svh - var(--nav-h)); will-change:transform; } /* width set inline (100vw * n) */

.panel{
  width:100vw; height:calc(100svh - var(--nav-h));
  display:grid; grid-template-columns:1.05fr .95fr; gap:5vw; align-items:center;
  padding:140px 6vw 60px;
}
.panel__freq{ font-family:'Space Mono', monospace; font-size:13px; letter-spacing:.26em; color:var(--teal-ink); opacity:.7; }
.panel__title{ margin:10px 0 0; font-size:clamp(44px,7vw,104px); }
.panel__title--long{ font-size:clamp(38px,6vw,90px); }
.panel__en{ margin-top:16px; font-weight:700; font-size:clamp(18px,2vw,24px); color:var(--teal-ink); }
.panel__body{ margin:14px 0 0; font-size:clamp(16px,1.5vw,20px); line-height:1.45; color:var(--teal-ink); max-width:22em; text-wrap:pretty; }
.frame{
  position:relative; width:100%; aspect-ratio:4/5; max-height:62vh; min-width:0; justify-self:center;
  border:6px solid var(--teal-ink); background:#fff; box-shadow:18px 18px 0 var(--teal-ink);
}

/* ---- 1.5 House rule ------------------------------------------------------ */

.section{ padding:clamp(70px,10vh,130px) 5vw; border-top:3px solid var(--teal-ink); }
.wrap{ max-width:1200px; margin:0 auto; }
.two-col{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,70px); align-items:center; }

.house{ background:var(--pink); }
.eyebrow{ font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.28em; text-transform:uppercase; color:var(--teal-ink); }
.house .headline{ margin:16px 0 0; font-size:clamp(38px,5.5vw,82px); }
.house p{ margin:24px 0 0; font-size:clamp(17px,1.7vw,22px); line-height:1.45; color:var(--teal-ink); max-width:24em; text-wrap:pretty; }
.tags{ display:flex; gap:10px; flex-wrap:wrap; margin-top:26px; font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.16em; text-transform:uppercase; color:var(--teal-ink); }
.tags span{ border:2px solid var(--teal-ink); border-radius:999px; padding:8px 14px; background:var(--cream); }
.house__photos{ position:relative; display:grid; grid-template-columns:1fr 1fr; gap:18px; }
.house__photos .frame-a{ position:relative; aspect-ratio:3/4; min-width:0; border:6px solid var(--teal-ink); background:#fff; box-shadow:14px 14px 0 var(--teal-ink); transform:rotate(-3deg); }
.house__photos .frame-b{ position:relative; aspect-ratio:3/4; min-width:0; border:6px solid var(--teal-ink); background:#fff; box-shadow:14px 14px 0 var(--teal-ink); transform:rotate(3deg); margin-top:40px; }

/* ---- 1.6 Menu teaser ----------------------------------------------------- */

.menu-teaser{ background:var(--cream); }
.section__head{ display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:20px; margin-bottom:46px; }
.menu-teaser .headline{ font-size:clamp(38px,5.5vw,80px); color:var(--teal-ink); -webkit-text-stroke:0; text-shadow:none; }
.menu-teaser .headline .dot{ color:var(--red); }
.cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2.5vw,34px); }
.card{ border:3px solid var(--teal-ink); box-shadow:10px 10px 0 var(--teal-ink); padding:30px 26px; min-width:0; }
.card--1{ background:var(--mint); }
.card--2{ background:var(--yellow); }
.card--3{ background:var(--lilac); }
.card__num{ font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.24em; text-transform:uppercase; color:var(--teal-ink); opacity:.75; }
.card h3{ margin:10px 0 18px; font-weight:900; font-style:italic; font-size:28px; color:var(--teal-ink); }
.card ul{ margin:0; padding:0; list-style:none; display:grid; gap:10px; font-size:17px; color:var(--teal-ink); }

/* ---- 1.7 Find us --------------------------------------------------------- */

.find{ background:var(--teal-ink); color:var(--cream); }
.find .eyebrow{ color:var(--mint); }
.find .headline{ margin:16px 0 0; font-size:clamp(40px,6vw,92px); color:var(--yellow); -webkit-text-stroke:0; text-shadow:none; line-height:.88; }
.find p{ margin:20px 0 0; font-size:clamp(17px,1.7vw,22px); line-height:1.45; max-width:23em; text-wrap:pretty; }
.find__rows{ display:grid; gap:18px; margin-top:34px; max-width:420px; }
.find__phone{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  background:var(--red); color:var(--cream); border:3px solid var(--cream); border-radius:999px;
  padding:16px 26px; font-weight:900; font-style:italic; font-size:clamp(20px,2.4vw,28px);
}
.find__phone:hover{ color:var(--cream); filter:brightness(1.05); }
.find__phone .label{ font-size:11px; letter-spacing:.2em; opacity:.85; }
.find__hour{ display:flex; justify-content:space-between; gap:16px; font-family:'Space Mono', monospace; font-size:13px; letter-spacing:.1em; border-bottom:2px dotted rgba(251,246,234,.4); padding-bottom:12px; }
.find__photo{ position:relative; aspect-ratio:4/3; min-width:0; border:6px solid var(--cream); background:#fff; box-shadow:16px 16px 0 var(--red); }
.find__checker{ height:34px; margin-top:16px; border:3px solid var(--cream); }

/* ---- 1.8 Instagram ------------------------------------------------------- */

.instagram{ background:var(--cream); padding:clamp(70px,10vh,130px) 5vw; }
.instagram .headline{ font-size:clamp(34px,4.6vw,68px); }
.ig-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(12px,1.6vw,22px); }
.ig-cell{ position:relative; aspect-ratio:1/1; min-width:0; border:3px solid var(--teal-ink); background:#fff; }

/* ---- 1.9 Footer ---------------------------------------------------------- */

.site-footer{ background:var(--mint); border-top:3px solid var(--teal-ink); }
.site-footer__checker{ height:44px; border-bottom:3px solid var(--teal-ink); }
.site-footer__inner{ max-width:1200px; margin:0 auto; padding:46px 5vw 40px; display:grid; grid-template-columns:auto 1fr auto; gap:30px; align-items:center; }
.site-footer__inner .lockup{ height:200px; width:auto; }
.site-footer__blurb .label{ font-size:12px; letter-spacing:.24em; color:var(--teal-ink); }
.site-footer__blurb p{ margin:12px 0 0; font-size:19px; line-height:1.4; color:var(--teal-ink); max-width:20em; text-wrap:pretty; }
.site-footer__links{ display:grid; gap:8px; justify-items:end; font-family:'Space Mono', monospace; font-size:13px; color:var(--teal-ink); }
.site-footer__links a{ color:var(--teal-ink); }

/* "Launched by Major Tom" credit — subtle, both footers */
.credit{ font-family:'Space Mono', monospace; font-size:11px; letter-spacing:.14em; text-transform:uppercase; }
.credit a{ color:inherit; text-decoration:underline; text-underline-offset:3px; }
.credit a:hover{ color:var(--red); }
.site-footer__credit{ text-align:center; padding:4px 5vw 26px; color:var(--teal-ink); opacity:.7; }

/* =========================================================================
   Menu page
   ========================================================================= */

.menu-head{ position:relative; background:var(--pink); border-bottom:3px solid var(--teal-ink); padding:clamp(44px,7vh,80px) 5vw clamp(60px,9vh,96px); overflow:hidden; color:var(--teal-ink); }
.menu-head__inner{ max-width:1100px; margin:0 auto; position:relative; z-index:2; }
.menu-head .label{ font-size:12px; letter-spacing:.28em; }
/* Shadow in em so it scales with the font at every viewport width (≈9/10px at
   the 150px desktop size, and proportionally light on phones) — no breakpoint
   guessing. Stroke is trimmed to 3px on mobile below. */
.menu-head .headline{ margin:14px 0 0; font-size:clamp(44px,10vw,150px); line-height:.86; -webkit-text-stroke:4px var(--teal-ink); text-shadow:.06em .066em 0 var(--teal-ink); }
.menu-head p{ margin:20px 0 0; font-size:clamp(17px,1.7vw,21px); max-width:26em; text-wrap:pretty; }
.menu-head__checker{ position:absolute; left:0; right:0; bottom:0; height:40px; border-top:3px solid var(--teal-ink); }

/* Long menu → CSS columns so the ~15 sections pack tightly; each section is kept
   whole with break-inside:avoid. Collapses to one column on phones (below). */
.menu-main{ max-width:1100px; margin:0 auto; padding:clamp(46px,7vh,84px) 5vw clamp(60px,9vh,110px); column-count:2; column-gap:clamp(34px,5vw,72px); color:var(--teal-ink); }
.menu-sec{ break-inside:avoid; margin:0 0 clamp(32px,4.5vh,54px); }
.menu-sec__head{ display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.menu-sec__emoji{ font-size:23px; line-height:1; flex:none; }
.menu-sec__head h2{ margin:0; font-weight:900; font-style:italic; font-size:clamp(23px,2.7vw,33px); letter-spacing:-.02em; }
.menu-sec__head .rule{ flex:1; height:3px; background:var(--teal-ink); }
.menu-list{ display:flex; flex-direction:column; gap:13px; font-size:17px; }
.menu-item{ min-width:0; }
.menu-item__row{ display:flex; align-items:baseline; gap:8px; }
.menu-item__name{ font-weight:500; }
.menu-item .leader{ flex:1; border-bottom:2px dotted rgba(23,68,79,.4); transform:translateY(-5px); }
.menu-item__qual{ font-family:'Space Mono', monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; opacity:.6; white-space:nowrap; }
.menu-item .price{ font-family:'Space Mono', monospace; font-weight:700; white-space:nowrap; }
.menu-item .price .alt{ font-weight:400; opacity:.55; }
.menu-item__desc{ margin:3px 0 0; font-size:13.5px; line-height:1.4; opacity:.72; max-width:40em; text-wrap:pretty; }
.menu-photo{ break-inside:avoid; }
.menu-photo__frame{ position:relative; aspect-ratio:16/11; min-width:0; border:6px solid var(--teal-ink); background:#fff; box-shadow:14px 14px 0 var(--pink); overflow:hidden; }
.menu-photo__frame img{ width:100%; height:100%; object-fit:cover; display:block; }

.menu-call{ background:var(--mint); border-top:3px solid var(--teal-ink); padding:clamp(40px,6vh,70px) 5vw; }
.menu-call__inner{ max-width:1100px; margin:0 auto; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:24px; color:var(--teal-ink); }
.menu-call__title{ font-weight:900; font-style:italic; font-size:clamp(22px,2.6vw,34px); letter-spacing:-.02em; }
.menu-call__sub{ font-family:'Space Mono', monospace; font-size:13px; letter-spacing:.16em; text-transform:uppercase; margin-top:8px; opacity:.75; }
.menu-foot{ background:var(--cream); }
.menu-foot__checker{ height:44px; border-top:3px solid var(--teal-ink); border-bottom:3px solid var(--teal-ink); }
.menu-foot__inner{ max-width:1100px; margin:0 auto; padding:34px 5vw 10px; display:flex; align-items:center; justify-content:space-between; gap:20px; font-family:'Space Mono', monospace; font-size:12px; letter-spacing:.16em; text-transform:uppercase; }
.menu-foot__inner a{ color:var(--teal-ink); }
.menu-foot__credit{ text-align:center; padding:0 5vw 28px; color:var(--teal-ink); opacity:.7; }

/* =========================================================================
   Reveal-on-scroll
   ========================================================================= */

[data-reveal]{ opacity:0; transform:translateY(26px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.3,1); }
[data-reveal].is-in{ opacity:1; transform:none; }

/* =========================================================================
   Responsive — breakpoints at 1180 / 900 / 700 / 560
   ========================================================================= */

@media (max-width:1180px){
  .hero__inner{ padding:5vh 6vw 34vh; max-width:none; }
  .hero__mascot{ height:min(30vh,330px); right:0; bottom:34px; }
}
@media (max-width:900px){
  /* No-JS fallback: keep the wrapped row (still usable without the toggle). */
  .nav{ flex-wrap:wrap; gap:10px; padding:10px 5vw 12px; }
  .nav__links{ flex-wrap:wrap; gap:10px; }

  /* JS on: collapse the links into a drop-down panel behind the hamburger. */
  html.js .nav{ flex-wrap:nowrap; position:sticky; }
  html.js .nav-toggle{ display:inline-flex; align-items:center; justify-content:center; }
  html.js .nav__links{
    position:absolute; top:100%; left:0; right:0; z-index:59;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--cream); border-bottom:3px solid var(--teal-ink);
    padding:6px 5vw 20px;
    display:none;
  }
  html.js .nav__links.is-open{ display:flex; }
  /* plain links become full-width rows with dotted separators —
     the phone pill keeps its own button styling (excluded here). */
  html.js .nav__links > a:not(.btn-phone){
    padding:14px 2px; font-size:15px; width:100%;
    border-bottom:2px dotted rgba(23,68,79,.28);
  }
  html.js .nav__links a.btn-phone{ align-self:flex-start; margin-top:16px; }
  html.js .nav__links .langswitch{ margin-top:16px; font-size:14px; }

  .hero__inner{ padding:4vh 6vw 40vh; }
  .hero__mascot{ height:min(36vh,360px); right:-3vw; bottom:32px; }
  .two-col, .cards, .site-footer__inner{ grid-template-columns:1fr; }
  .menu-main{ column-count:1; }
  .ig-grid{ grid-template-columns:1fr 1fr; }
  .site-footer__inner{ text-align:left; }
  .site-footer__links{ justify-items:start; }
  .site-footer__inner .lockup{ height:150px; }
  /* Big menu title: thinner stroke on phones/tablets so the cream fill and the
     (em-scaled) hard shadow don't crowd each other. */
  .menu-head .headline{ -webkit-text-stroke-width:3px; }
  /* Dial panels: on phones the CONTRASTING hard shadow (red/mint/purple) sits so
     close to the teal outline that the two colours read as one muddy border. Unify
     the shadow to teal — same treatment as the CLUB SANDWICH panel, which reads
     cleanly. Desktop keeps the rotating shadow colours (there the big offset
     separates them clearly). */
  .panel__title{ text-shadow:.085em .085em 0 var(--teal-ink); }
}
@media (max-width:560px){
  .ig-grid{ grid-template-columns:1fr; }
  .hero__inner{ padding:3vh 6vw 36vh; }
  .hero__mascot{ height:min(32vh,290px); right:-4vw; }
}
@media (max-width:600px){
  /* Pill buttons (esp. the long @handle) get outsized on small phones —
     trim type + padding a touch. Shadows stay per-variant. */
  .btn{ font-size:15px; padding:13px 22px; }
}

/* ---- Dial: stacked fallback (small screens) ------------------------------
   Below 700px the horizontal radio-dial is hard to use with mobile browser
   chrome, so it degrades to a readable vertical stack. The JS checks the
   stage's computed position — when it is not `sticky` it stops driving the
   track, so this media query alone switches modes. */
@media (max-width:700px){
  .dial{ height:auto !important; }
  .dial__stage{ position:static; height:auto; overflow:visible; }
  .dial__head{ display:none; }
  .dial__track{ flex-direction:column; width:auto !important; height:auto; transform:none !important; }
  .panel{ width:100%; height:auto; grid-template-columns:1fr; gap:20px; padding:60px 7vw; align-content:start; border-top:3px solid var(--teal-ink); }
  .frame{ aspect-ratio:5/4; max-height:46vh; margin:0 auto; }
}

/* =========================================================================
   Reduced motion — disable bob, marquee, reveal; make the dial a plain stack
   ========================================================================= */

@media (prefers-reduced-motion:reduce){
  *{ scroll-behavior:auto; }
  .hero__mascot{ animation:none; }
  .marquee__track{ animation:none; }
  .dial__dot{ animation:none; }
  [data-reveal]{ opacity:1 !important; transform:none !important; transition:none; }
  .btn{ transition:none; }

  .dial{ height:auto !important; }
  .dial__stage{ position:static; height:auto; overflow:visible; }
  .dial__head{ display:none; }
  .dial__track{ flex-direction:column; width:auto !important; height:auto; transform:none !important; }
  .panel{ width:100%; height:auto; grid-template-columns:1fr; gap:20px; padding:60px 7vw; align-content:start; border-top:3px solid var(--teal-ink); }
  .frame{ aspect-ratio:5/4; max-height:46vh; margin:0 auto; }
}
