/* ---------- Themes (fixed by SHOP.theme in config.js) ---------- */
:root,
[data-theme="classic"] {
  --bg: #0e0d0c;
  --bg-alt: #151311;
  --surface: #1c1917;
  --surface-2: #26221f;
  --line: #322d28;
  --text: #f3ede4;
  --muted: #a39b8f;
  --accent: #c9a25e;
  --accent-ink: #1a1408;
  --accent-soft: rgba(201, 162, 94, 0.14);
  /* main action buttons (WhatsApp): fresh green, chosen 7 Nov 2026 */
  --btn-bg: linear-gradient(135deg, #3be07f, #16b355);
  --btn-ink: #04240f;
  --btn-glow: 0 8px 26px rgba(22, 179, 85, 0.38);
  --ok: #6fbf8a;
  --warn: #e0b04f;
  --bad: #e06a5a;
  --info: #7aa7e0;
  --pole-a: #b3261e;
  --pole-b: #f3ede4;
  --pole-c: #1d3f8f;
  --shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
  color-scheme: dark;
}
[data-theme="modern"] {
  --bg: #f5f4f0;
  --bg-alt: #ebe9e3;
  --surface: #ffffff;
  --surface-2: #f2f1ec;
  --line: #dddad2;
  --text: #121212;
  --muted: #66635c;
  --accent: #ff5a1f;
  --accent-ink: #ffffff;
  --accent-soft: rgba(255, 90, 31, 0.1);
  --ok: #1f9d55;
  --warn: #c98a00;
  --bad: #d23c2a;
  --info: #2f6fd6;
  --shadow: 0 20px 60px rgba(20, 20, 20, 0.12);
  color-scheme: light;
}
[data-theme="vintage"] {
  --bg: #f1e8d8;
  --bg-alt: #e8dcc6;
  --surface: #fbf6ec;
  --surface-2: #f3eadb;
  --line: #d9c9ac;
  --text: #2a1d14;
  --muted: #76614d;
  --accent: #a8231b;
  --accent-ink: #fbf6ec;
  --accent-soft: rgba(168, 35, 27, 0.1);
  --ok: #2e7d4f;
  --warn: #b07d14;
  --bad: #a8231b;
  --info: #1d3f8f;
  --shadow: 0 20px 60px rgba(60, 40, 20, 0.16);
  color-scheme: light;
}

/* ---------- Base ---------- */
.noscript { position: relative; z-index: 55; margin: 0; padding: 20px; background: var(--surface); }
body:has(.noscript) .nav { position: relative; background: var(--bg); }
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 16px/1.55 Inter, system-ui, -apple-system, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, video, canvas { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; }
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.wrap { width: min(1160px, 100% - 32px); margin-inline: auto; }
.section { padding: clamp(72px, 10vw, 128px) 0; }
.section-alt { background: var(--bg-alt); }
.kicker { margin: 0 0 10px; color: var(--accent); font-weight: 700; font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; }
.h2 {
  margin: 0 0 clamp(28px, 4vw, 48px);
  font: 800 clamp(40px, 6vw, 72px)/0.95 "Big Shoulders Display", Impact, sans-serif;
  letter-spacing: 0.005em; text-transform: uppercase; text-wrap: balance;
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 46px; padding: 0 22px; border-radius: 999px; border: 1px solid transparent;
  font-weight: 650; font-size: 15px; text-decoration: none; cursor: pointer; white-space: nowrap;
  transition: transform 0.15s ease, background 0.2s, border-color 0.2s, opacity 0.2s;
}
.btn:active { transform: scale(0.97); }
/* main action buttons: own colour (--btn-*), so they can differ from the gold accent used for details */
.btn-accent { background: var(--btn-bg, var(--accent)); color: var(--btn-ink, var(--accent-ink)); box-shadow: var(--btn-glow, none); }
.btn-accent:hover { filter: brightness(1.08); transform: translateY(-1px); }
.btn-ghost { background: transparent; border-color: var(--line); }
.btn-ghost:hover { border-color: var(--text); }
.btn-sm { min-height: 38px; padding: 0 16px; font-size: 14px; }
.btn-lg { min-height: 56px; padding: 0 30px; font-size: 16px; }
.row-btns { display: flex; flex-wrap: wrap; gap: 10px; }

/* ---------- Navigation ---------- */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 50;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 14px max(16px, calc((100% - 1160px) / 2));
  color: #fff; transition: background 0.3s, top 0.3s, color 0.3s, box-shadow 0.3s;
}
.nav.solid { background: color-mix(in srgb, var(--bg) 88%, transparent); color: var(--text); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); box-shadow: 0 1px 0 var(--line); }
.brand { display: flex; align-items: center; gap: 10px; white-space: nowrap; text-decoration: none; font: 900 22px/1 "Big Shoulders Display", sans-serif; letter-spacing: 0.06em; }
.brand-pole {
  width: 10px; height: 26px; border-radius: 5px;
  background: repeating-linear-gradient(-45deg, var(--pole-a, #b3261e) 0 5px, #fff 5px 10px, var(--pole-c, #1d3f8f) 10px 15px, #fff 15px 20px);
  background-size: 100% 28px; animation: pole 1.6s linear infinite;
}
@keyframes pole { to { background-position: 0 28px; } }
.nav-links { display: flex; gap: 26px; font-size: 14.5px; font-weight: 550; }
.nav-links a { text-decoration: none; opacity: 0.85; }
.nav-links a:hover { opacity: 1; }
.nav-right { display: flex; align-items: center; gap: 10px; }
.lang { background: none; border: 1px solid color-mix(in srgb, currentColor 35%, transparent); border-radius: 999px; padding: 6px 11px; font-size: 12.5px; font-weight: 700; cursor: pointer; }
@media (max-width: 820px) { .nav-links { display: none; } }
.nav-wa { min-height: 44px; }
.wa-short, .directions-short { display: none; }
.btn svg, .svc-ask svg { flex: none; }
@media (max-width: 480px) {
  .brand { font-size: 19px; }
  .nav { gap: 8px; }
  .nav-right { gap: 6px; }
  .nav-wa { padding-inline: 10px; }
  .nav-wa .wa-label, .directions-label { display: none; }
  .wa-short, .directions-short { display: inline; }
}

/* ---------- Hero ---------- */
.hero { position: relative; height: 320vh; background: #050505; }
.hero-sticky { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; color: #fff; }
.hero-media { position: absolute; inset: -3%; will-change: transform; transition: transform 0.6s cubic-bezier(.2,.7,.2,1); }
.hero-media video, .hero-media canvas, .hero-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero-frame { position: absolute; inset: 0; overflow: hidden; }
.hero-bg { display: none; filter: blur(26px) brightness(0.42) saturate(1.15); transform: scale(1.2); }
@media (min-aspect-ratio: 1/1) {
  /* portrait shop video on a landscape screen (no wide clip set): tall frame on the right, blurred copy behind */
  .hero-media.has-video.tall .hero-bg { display: block; }
  .hero-media.has-video.tall .hero-frame {
    inset: auto; top: 50%; right: calc(max(16px, (100% - 1160px) / 2) + 56px); transform: translateY(-50%);
    height: min(78vh, 780px); aspect-ratio: 9 / 16; border-radius: 26px;
    box-shadow: 0 30px 90px rgba(0,0,0,0.65), 0 0 0 1px rgba(255,255,255,0.1);
  }
}
@media (min-aspect-ratio: 1/1) and (max-width: 1100px) { .hero-media.has-video.tall .hero-frame { height: min(64vh, 640px); } }
/* still hero on landscape screens: split layout. Copy on a dark panel on the left, the real shop photo
   edge to edge on the right half (no blurred copy, no card), cropped around the sign and door. */
@media (min-aspect-ratio: 1/1) and (min-width: 721px) {
  .hero.is-still .hero-sticky {
    background: radial-gradient(900px 700px at 18% 40%, #1d1813 0%, #0e0d0c 70%);
    display: flex; flex-direction: column; justify-content: center; gap: 40px;
    padding: 96px 0 48px max(16px, calc((100% - 1160px) / 2));
  }
  .hero.is-still .hero-copy, .hero.is-still .hero-cta { position: relative; inset: auto; transform: none; flex: none; }
  .hero.is-still .hero-media { inset: 0; transform: none !important; }
  .hero.is-still .hero-media.has-video.tall .hero-bg { display: none; }
  .hero.is-still .hero-media.has-video.tall .hero-frame {
    inset: 0 0 0 auto; width: 50%; height: 100%; transform: none; aspect-ratio: auto;
    border-radius: 0; box-shadow: none;
  }
  .hero.is-still .hero-media.tall .hero-frame img { object-position: 50% 34%; }
  /* wide desktop photo (posterDesktop is landscape): full bleed, darkened on the left for the copy */
  .hero.is-still .hero-shade {
    background:
      linear-gradient(90deg, rgba(14,13,12,0.92) 0%, rgba(14,13,12,0.72) 30%, rgba(14,13,12,0.2) 50%, rgba(14,13,12,0) 62%),
      linear-gradient(0deg, rgba(14,13,12,0.55) 0%, rgba(14,13,12,0) 30%),
      linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0) 16%);
  }
  /* portrait photo on a landscape screen: solid panel on the left, photo on the right half */
  .hero.is-still:has(.hero-media.tall) .hero-shade {
    background:
      linear-gradient(90deg, #0e0d0c 0%, #0e0d0c 50%, rgba(14,13,12,0.55) 53%, rgba(14,13,12,0) 62%),
      linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0) 16%);
  }
  .hero.is-still .hero-spot { display: none; }
  .hero.is-still .hero-copy, .hero.is-still .hero-cta { max-width: calc(50vw - max(16px, (100vw - 1160px) / 2) - 48px); }
  .hero.is-still .chapter h1 { font-size: clamp(56px, 6.6vw, 112px); }
  .hero.is-still .hero-scroll { display: none; }
}
.hero-shade {
  position: absolute; inset: 0; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(0,0,0,0.78) 0%, rgba(0,0,0,0.35) 45%, rgba(0,0,0,0) 70%),
    linear-gradient(0deg, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0) 35%),
    linear-gradient(180deg, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0) 22%);
}
.hero-spot { position: absolute; inset: 0; pointer-events: none; mix-blend-mode: soft-light; background: radial-gradient(600px circle at var(--mx, 70%) var(--my, 40%), rgba(255,240,210,0.35), transparent 60%); }
.hero-copy { position: absolute; left: max(16px, calc((100% - 1160px) / 2)); right: 16px; top: 50%; transform: translateY(-56%); max-width: 640px; }
.chapter { position: absolute; inset: auto 0 auto 0; top: 0; transform: translateY(-50%); opacity: 0; pointer-events: none; }
.chapter .kicker { color: var(--accent); }
.chapter h1, .chapter h2 {
  margin: 0; white-space: pre-line;
  font: 900 clamp(56px, 10vw, 128px)/0.86 "Big Shoulders Display", Impact, sans-serif; text-transform: uppercase; letter-spacing: 0.005em;
}
.chapter p:last-child { margin: 18px 0 0; font-size: clamp(16px, 1.6vw, 19px); color: rgba(255,255,255,0.82); max-width: 40ch; }
.chapter .line { display: block; overflow: hidden; }
.chapter .line > span { display: block; }
.hero-cta { position: absolute; left: max(16px, calc((100% - 1160px) / 2)); bottom: max(36px, 7vh); display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.hero-progress { position: absolute; right: max(16px, calc((100% - 1160px) / 2)); top: 50%; transform: translateY(-50%); width: 3px; height: 140px; background: rgba(255,255,255,0.18); border-radius: 3px; overflow: hidden; }
.hero-progress i { position: absolute; left: 0; right: 0; top: 0; height: 100%; background: var(--accent); transform-origin: top; transform: scaleY(0); }
.hero-scroll { position: absolute; right: max(16px, calc((100% - 1160px) / 2)); bottom: max(36px, 7vh); display: flex; align-items: center; gap: 10px; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: rgba(255,255,255,0.7); transition: opacity 0.4s; }
.hero-scroll i { width: 1px; height: 36px; background: linear-gradient(rgba(255,255,255,0.8), transparent); animation: drip 1.8s ease-in-out infinite; transform-origin: top; }
@keyframes drip { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); } 100% { transform: scaleY(1); opacity: 0; } }
/* still hero (no video): one screen, slow zoom on the photo, copy rises in once */
.hero.is-still { height: auto; }
.hero.is-still .hero-sticky { position: relative; min-height: 600px; }
.hero.is-still .hero-poster { animation: kenburns 22s ease-in-out infinite alternate; transform-origin: 50% 38%; }
@keyframes kenburns { from { transform: scale(1); } to { transform: scale(1.09) translate3d(0, -1.5%, 0); } }
.hero.is-still .chapter { position: static; opacity: 1; transform: none; pointer-events: auto; }
.hero.is-still .chapter > p:not(.kicker) { margin: 18px 0 0; font-size: clamp(16px, 1.6vw, 19px); color: rgba(255,255,255,0.82); max-width: 40ch; }
.hero.is-still .chapter .line > span { animation: rise 0.9s cubic-bezier(.2,.7,.2,1) both; }
.hero.is-still .chapter .line:nth-child(2) > span { animation-delay: 0.08s; }
.hero.is-still .chapter > p, .hero.is-still .hero-points { animation: fadeup 0.9s 0.25s cubic-bezier(.2,.7,.2,1) both; }
.hero.is-still .chapter > .kicker { animation-delay: 0s; }
@keyframes rise { from { transform: translateY(105%); } to { transform: none; } }
@keyframes fadeup { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.hero.is-still .hero-progress { display: none; }
.hero-points { list-style: none; margin: 26px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 14px 28px; }
.hero-points li { display: flex; flex-direction: column; gap: 3px; padding-left: 14px; border-left: 2px solid var(--accent); }
.hero-points b { font-size: 11.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(255,255,255,0.62); }
.hero-points span { font: 800 22px/1 "Big Shoulders Display", Impact, sans-serif; text-transform: uppercase; letter-spacing: 0.01em; }
@media (prefers-reduced-motion: reduce) {
  .hero.is-still .hero-poster, .hero.is-still .chapter .line > span, .hero.is-still .chapter > p, .hero.is-still .hero-points { animation: none; }
}
@media (max-width: 720px), (max-aspect-ratio: 1/1) {
  .hero.is-still .hero-sticky {
    display: flex; flex-direction: column; justify-content: flex-end; gap: 24px;
    height: auto; min-height: max(600px, 100vh); min-height: max(600px, 100svh);
    padding: 96px 16px max(36px, 7vh);
  }
  .hero.is-still .hero-copy, .hero.is-still .hero-cta { position: relative; inset: auto; flex: none; transform: none; }
  .hero.is-still .chapter p:last-of-type { font-size: 15.5px; }
  .hero-points { margin-top: 18px; gap: 12px 20px; }
  .hero-points span { font-size: 19px; }
}
/* short phones (iPhone SE, small Androids): keep the shop sign clear */
@media (max-width: 720px) and (max-height: 720px) {
  .hero.is-still .chapter > p:not(.kicker) { display: none; }
  .hero.is-still .chapter h1 { font-size: 50px; }
}
@media (max-width: 400px) { .hero-points { gap: 10px 14px; } .hero-points li { padding-left: 10px; } .hero-points span { font-size: 17px; } }
@media (max-width: 720px), (max-aspect-ratio: 1/1) {
  .hero-copy { top: 61%; }
  .hero-cta { gap: 10px; right: 16px; }
  .hero-cta .btn-lg { min-height: 50px; padding: 0 16px; font-size: 14px; }
  .hero-progress { display: none; }
  .hero-scroll { display: none; }
  .hero-shade { background: linear-gradient(0deg, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.6) 45%, rgba(0,0,0,0.05) 70%, rgba(0,0,0,0.45) 100%); }
}

/* ---------- Services ---------- */
#services .h2 { margin-bottom: 16px; }
.services-intro { max-width: 65ch; margin: 0 0 clamp(28px, 4vw, 48px); color: var(--muted); }
.services { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 18px; overflow: hidden; }
.svc { position: relative; display: grid; grid-template-columns: 1fr auto; gap: 6px 20px; padding: 26px; background: var(--bg); text-align: left; transition: background 0.2s; }
.section-alt .svc { background: var(--bg-alt); }
.svc:hover { background: var(--surface); }
.svc h3 { margin: 0; font: 800 26px/1.05 "Big Shoulders Display", sans-serif; text-transform: uppercase; letter-spacing: 0.01em; }
.svc .price { font: 800 26px/1.05 "Big Shoulders Display", sans-serif; color: var(--accent); }
.svc p { grid-column: 1 / -1; margin: 0; color: var(--muted); font-size: 14.5px; }
.svc .meta { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-top: 12px; font-size: 13px; color: var(--muted); }
.svc-ask { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border-radius: 999px; font-size: 13px; font-weight: 650; text-decoration: none; cursor: pointer; border: 1px solid var(--line); background: transparent; color: var(--text); }
.svc-ask:hover { border-color: #25d366; color: #25d366; }
/* touch screens: comfortable tap targets (~44px) for the small pill buttons */
@media (any-pointer: coarse) {
  .svc-ask { min-height: 44px; padding: 0 18px; font-size: 14px; }
  .lang { min-height: 44px; min-width: 44px; }
  .btn-sm { min-height: 44px; }
  .brand, .footer a, .nav-links a { min-height: 44px; min-width: 44px; display: inline-flex; align-items: center; }
}
.svc h3 .pill { vertical-align: middle; margin-left: 6px; font-family: Inter, system-ui, sans-serif; text-transform: none; letter-spacing: 0.02em; }
.pill { display: inline-block; padding: 3px 9px; border-radius: 999px; font-size: 11.5px; font-weight: 700; background: var(--accent-soft); color: var(--accent); letter-spacing: 0.02em; }

/* ---------- Team + talk to the barber ---------- */
.team-wrap { display: grid; gap: 22px; }
.team-wrap.team-one { grid-template-columns: minmax(0, 380px) minmax(0, 1fr); gap: clamp(24px, 5vw, 64px); align-items: center; }
@media (max-width: 760px) { .team-wrap.team-one { grid-template-columns: 1fr; } }
.talk { padding: clamp(24px, 4vw, 40px); border-radius: 18px; background: var(--surface); border: 1px solid var(--line); }
.team-one .talk { background: transparent; border: 0; padding: 0; }
.talk h3 { margin: 0 0 12px; font: 800 clamp(34px, 4.5vw, 54px)/0.98 "Big Shoulders Display", sans-serif; text-transform: uppercase; text-wrap: balance; }
.talk > p:not(.kicker) { color: var(--muted); font-size: 17px; max-width: 48ch; margin: 0 0 22px; }
.btn-wa { background: #25d366; color: #06301a; }
.btn-wa:hover { filter: brightness(1.06); }
.btn-glass { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.35); color: #fff; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); text-decoration: none; }
.btn-glass:hover { background: rgba(255,255,255,0.18); }
.wa-fab { position: fixed; z-index: 40; right: 20px; bottom: max(20px, env(safe-area-inset-bottom)); width: 58px; height: 58px; border-radius: 50%; display: grid; place-items: center; background: #25d366; color: #06301a; box-shadow: 0 10px 30px rgba(0,0,0,0.3); visibility: hidden; opacity: 0; transform: translateY(20px) scale(0.9); pointer-events: none; transition: opacity 0.3s, transform 0.3s, visibility 0.3s; }
.wa-fab.show { visibility: visible; opacity: 1; transform: none; pointer-events: auto; }
@media (max-width: 820px) { .wa-fab { right: 16px; bottom: max(16px, env(safe-area-inset-bottom)); width: 50px; height: 50px; } }
.team { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 18px; }
.barber { padding: 22px; border-radius: 18px; background: var(--surface); border: 1px solid var(--line); }
.avatar {
  --c: var(--accent);
  position: relative; aspect-ratio: 4 / 3.4; border-radius: 12px; margin-bottom: 18px; overflow: hidden;
  display: grid; place-items: center; font: 900 88px/1 "Big Shoulders Display", sans-serif; color: rgba(255,255,255,0.92);
  background: radial-gradient(120% 90% at 30% 20%, color-mix(in srgb, var(--c) 85%, #fff) 0%, var(--c) 45%, color-mix(in srgb, var(--c) 45%, #000) 100%);
}
.avatar::after { content: ""; position: absolute; inset: 0; background: repeating-linear-gradient(115deg, rgba(255,255,255,0.05) 0 2px, transparent 2px 9px); }
.barber h3 { margin: 0; font: 800 28px/1 "Big Shoulders Display", sans-serif; text-transform: uppercase; }
.barber .role { margin: 4px 0 16px; color: var(--muted); font-size: 14px; }
.barber .days { display: flex; gap: 4px; margin-bottom: 18px; }
.barber .days span { flex: 1; text-align: center; padding: 5px 0; border-radius: 6px; font-size: 11px; font-weight: 650; background: var(--surface-2); color: var(--muted); }
.barber .days span.on { background: var(--accent-soft); color: var(--accent); }
.barber .btn { width: 100%; }
/* phones: the letter tile is a placeholder (no barber photo yet), so keep it a compact avatar beside the name */
@media (max-width: 760px) {
  .team-one .barber { display: grid; grid-template-columns: 76px 1fr; column-gap: 16px; align-items: center; }
  .team-one .barber .avatar { width: 76px; height: 76px; aspect-ratio: auto; margin: 0; border-radius: 18px; font-size: 36px; grid-row: span 2; }
  .team-one .barber .role { margin: 4px 0 0; }
  .team-one .barber .days, .team-one .barber .btn { grid-column: 1 / -1; }
  .team-one .barber .days { margin: 18px 0 16px; }
}

/* ---------- Reviews ---------- */
.reviews { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 18px; }
.review { margin: 0; padding: 26px; border-radius: 18px; background: var(--surface); border: 1px solid var(--line); }
.review .stars { color: var(--accent); letter-spacing: 3px; font-size: 15px; }
.review blockquote { margin: 12px 0 18px; font-size: 17px; line-height: 1.5; }
.review figcaption { color: var(--muted); font-size: 14px; font-weight: 600; }
.review.no-text .stars { font-size: 22px; letter-spacing: 4px; }
.review.no-text figcaption { margin-top: 10px; color: var(--text); font-size: 16px; }
.greview { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 10px; padding: 28px; border-radius: 18px; background: var(--surface); border: 1px solid var(--line); max-width: 640px; }
.greview-src { margin: 0; font-size: 12px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--accent); }
.greview h3 { margin: 0; font: 800 28px/1.05 "Big Shoulders Display", Impact, sans-serif; text-transform: uppercase; }
.greview p { margin: 0; color: var(--muted); line-height: 1.5; }
.greview .row-btns { margin-top: 8px; }

/* ---------- FAQ ---------- */
.faq { border: 1px solid var(--line); border-radius: 18px; overflow: hidden; }
.faq-item + .faq-item { border-top: 1px solid var(--line); }
.faq-item summary { min-height: 44px; padding: 20px 24px; cursor: pointer; font-weight: 600; overflow-wrap: anywhere; }
.faq-item summary::marker { color: var(--accent); }
.faq-item[open] { background: var(--surface); }
.faq-item > p { margin: 0; padding: 0 24px 20px; color: var(--muted); overflow-wrap: anywhere; }
.faq-item a { display: inline-flex; align-items: center; min-height: 44px; color: var(--accent); text-underline-offset: 3px; }

/* ---------- Visit: address + map ---------- */
.visit { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 64px); align-items: stretch; }
.visit-info { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.addr { display: flex; gap: 16px; align-items: flex-start; padding: 22px 24px; border-radius: 20px; background: var(--surface); border: 1px solid var(--line); }
.addr-pin { flex: none; display: grid; place-items: center; width: 52px; height: 52px; border-radius: 16px; background: var(--accent); color: var(--accent-ink); }
.addr address { font-style: normal; display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.addr-street { font: 800 clamp(32px, 4.2vw, 48px)/0.95 "Big Shoulders Display", Impact, sans-serif; text-transform: uppercase; letter-spacing: 0.01em; overflow-wrap: anywhere; }
.addr-area { color: var(--muted); font-size: 16px; }
.open-badge { margin: -6px 0 0; display: inline-flex; align-items: center; gap: 9px; font-size: 14.5px; font-weight: 650; color: var(--muted); }
.open-badge:empty { display: none; }
.open-badge::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--muted); }
.open-badge.is-open { color: var(--ok); }
.open-badge.is-open::before { background: var(--ok); box-shadow: 0 0 0 0 color-mix(in srgb, var(--ok) 60%, transparent); animation: pulse 2s infinite; }
@keyframes pulse { 70% { box-shadow: 0 0 0 8px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }
.visit-map { position: relative; min-height: 460px; border-radius: 24px; overflow: hidden; border: 1px solid var(--line); background: var(--surface-2); }
.visit-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* dark theme: invert the map to match, hue-rotate keeps the pin and roads in their usual colours */
[data-theme="classic"] .visit-map iframe { filter: invert(0.9) hue-rotate(180deg) saturate(0.6) brightness(0.95) contrast(0.95); }
[data-theme="vintage"] .visit-map iframe { filter: sepia(0.25) saturate(0.85); }
@media (max-width: 860px) {
  /* phone order: address, open badge, buttons, map, hours */
  .visit { display: flex; flex-direction: column; gap: 20px; }
  .visit-info { display: contents; }
  .visit .addr { order: 1; } .visit .open-badge { order: 2; margin: 0; } .visit .row-btns { order: 3; }
  .visit-map { order: 4; min-height: 320px; } .visit .hours { order: 5; }
  .addr { padding: 18px; }
  .addr-pin { width: 44px; height: 44px; border-radius: 14px; }
}
@media (max-width: 480px) { #visit .row-btns .btn { flex: 1 1 100%; } }

.hours { width: 100%; border-collapse: collapse; font-size: 16px; }
.hours td { padding: 14px 4px; border-bottom: 1px solid var(--line); }
.hours td:last-child { text-align: right; font-variant-numeric: tabular-nums; }
.hours tr.today td { color: var(--accent); font-weight: 700; }
.hours tr.closed td:last-child { color: var(--muted); }

.footer { padding: 34px 0 100px; border-top: 1px solid var(--line); color: var(--muted); font-size: 14px; }
.footer-in { display: flex; gap: 22px; flex-wrap: wrap; justify-content: space-between; }
.footer a { text-decoration: none; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}
