@font-face { font-family:'EngraversGothicBT'; src:url('/chinchin/fonts/EngraversGothicBT_Heavy_Regular.otf') format('opentype'); font-weight:900; font-display:swap; }
@font-face { font-family:'EngraversGothic'; src:url('/chinchin/fonts/Engravers%27%20Gothic%20Regular.otf') format('opentype'); font-weight:400; font-display:swap; }
@font-face { font-family:'Gotham'; src:url('/chinchin/fonts/Gotham_Bold.otf') format('opentype'); font-weight:700; font-display:swap; }
@font-face { font-family:'TimesNewRoman'; src:url('/chinchin/fonts/Times_New_Roman.ttf') format('truetype'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'TimesNewRoman'; src:url('/chinchin/fonts/Times_New_Roman_Italic.ttf') format('truetype'); font-weight:400; font-style:italic; font-display:swap; }

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  /* Brand palette — navy primary, red accent, gold secondary */
  --bg-deep:   #14182E;          /* deeper than primary */
  --bg:        #1C2340;          /* PRIMARY surface — chosen brand navy */
  --bg-warm:   #232B4A;          /* lifted */
  --bg-card:   #1F2640;          /* card surface */
  --cream:     #F4ECDC;
  --cream-bg:  #1F1A14;
  --burgundy:  #3A1517;
  --ink:       #F4ECDC;
  --ink-soft:  rgba(244, 236, 220, 0.74);
  --ink-mute:  rgba(244, 236, 220, 0.46);
  --ink-line:  rgba(244, 236, 220, 0.12);
  --ink-line-strong: rgba(244, 236, 220, 0.22);
  --blue:        #1F1953;        /* brand navy — primary structural color */
  --blue-deep:   #131038;        /* deeper brand navy */
  --blue-bright: #2A4DAB;        /* brand bright blue (from brand stripe) */
  --blue-glow:   rgba(31, 25, 83, 0.5);
  --red:         #981F23;        /* brand red — primary accent */
  --red-glow:    rgba(152, 31, 35, 0.45);
  --champagne:   #D4B07A;
  --gold:        #CD912A;        /* brand mustard/gold — secondary accent */
  --display: 'EngraversGothicBT', 'Big Shoulders Display', 'Helvetica Neue', sans-serif;
  --display-sub: 'EngraversGothic', 'EngraversGothicBT', 'Big Shoulders Display', sans-serif;
  --serif:  'TimesNewRoman', 'Times New Roman', Georgia, serif;
  --sans:   'Gotham', 'Montserrat', 'Helvetica Neue', sans-serif;
  --ease-out:  cubic-bezier(0.22, 1, 0.36, 1);
  --ease-soft: cubic-bezier(0.4, 0, 0.2, 1);
  --spring:    cubic-bezier(0.34, 1.4, 0.6, 1);
  --container: 1320px;
  --pad-x: 56px;
}

html { scroll-behavior: auto; }
body { background: var(--bg); color: var(--ink); font-family: var(--sans); font-weight: 400; overflow-x: hidden; -webkit-font-smoothing: antialiased; line-height: 1.55; }
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }
::selection { background: var(--blue); color: var(--ink); }

.skip-link { position:absolute; top:-100px; left:16px; background:var(--ink); color:var(--bg-deep); padding:10px 18px; font-size:11px; font-weight:600; letter-spacing:0.16em; text-transform:uppercase; text-decoration:none; z-index:10000; }
.skip-link:focus { top:16px; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }

.grain { position:fixed; inset:0; z-index:9999; pointer-events:none; opacity:0.04; mix-blend-mode:overlay; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.92' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }

/* ── NAV ─────────────────────────────────────── */
nav.site-nav { position:fixed; top:0; left:0; right:0; z-index:200; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; padding:22px var(--pad-x); background:transparent; transition:background 0.6s var(--ease-out), backdrop-filter 0.6s, padding 0.6s, border-color 0.6s; }
nav.site-nav.scrolled { background:rgba(11, 15, 34, 0.82); backdrop-filter:blur(18px) saturate(150%); -webkit-backdrop-filter:blur(18px) saturate(150%); border-bottom:1px solid var(--ink-line); padding:14px var(--pad-x); }
.nav-logo-wrap { display:flex; }
.nav-logo { height:26px; object-fit:contain; opacity:0.95; display:block; }
.nav-links { display:flex; gap:34px; list-style:none; justify-self:center; align-items:center; }
.nav-links > li { position:relative; }
.nav-links a { font-family:var(--sans); font-weight:500; font-size:11.5px; letter-spacing:0.2em; text-transform:uppercase; color:var(--ink); text-decoration:none; opacity:0.78; transition:opacity 0.3s var(--ease-out), color 0.3s; display:inline-flex; align-items:center; gap:6px; padding:6px 0; }
.nav-links a:hover, .nav-links a.active { opacity:1; color:var(--red); }
.nav-links .has-dropdown::after { content:'▾'; font-size:10px; opacity:0.6; }
/* Dropdown — bridged with invisible padding so hover doesn't break */
.nav-links li.has-bridge { padding-bottom: 14px; }
.nav-dropdown {
  position:absolute;
  top:100%;
  left:50%;
  transform:translateX(-50%) translateY(8px);
  margin-top: 0;
  background:rgba(28, 35, 64, 0.94);
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  border:1px solid var(--ink-line);
  padding:18px 20px;
  min-width:210px;
  list-style:none;
  display:flex; flex-direction:column; gap:10px;
  opacity:0; pointer-events:none;
  transition:opacity 0.28s var(--ease-out), transform 0.28s var(--ease-out);
}
/* Invisible hover-bridge so cursor doesn't lose the parent during the gap */
.nav-links li:has(.nav-dropdown)::after {
  content:'';
  position:absolute;
  top:100%; left:0; right:0;
  height:14px;
  pointer-events:auto;
}
.nav-links li:hover .nav-dropdown, .nav-links li:focus-within .nav-dropdown { opacity:1; pointer-events:auto; transform:translateX(-50%) translateY(0); }
.nav-dropdown a { font-size:11px; letter-spacing:0.18em; padding:4px 0; }
.nav-cta { justify-self:end; font-family:var(--sans); font-weight:600; font-size:11px; letter-spacing:0.2em; text-transform:uppercase; color:var(--bg-deep); background:var(--ink); padding:12px 22px; text-decoration:none; transition:transform 0.3s var(--spring), box-shadow 0.3s, background 0.3s; box-shadow:0 4px 16px rgba(0,0,0,0.3); }
.nav-cta:hover { transform:translateY(-2px); box-shadow:0 8px 24px var(--red-glow); background:var(--cream); }
.nav-toggle { display:none; }

/* ── BUTTONS ─────────────────────────────────── */
.btn { font-family:var(--sans); font-weight:600; font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase; text-decoration:none; padding:16px 30px; display:inline-flex; align-items:center; gap:10px; cursor:pointer; border:none; transition:opacity 0.3s, background 0.3s, color 0.3s, transform 0.3s var(--spring), box-shadow 0.3s, border-color 0.3s; }
.btn:hover { transform:translateY(-2px); }
.btn:active { transform:scale(0.97); }
.btn-cream { background:var(--ink); color:var(--bg-deep); box-shadow:0 6px 22px rgba(0,0,0,0.4); }
.btn-cream:hover { box-shadow:0 12px 32px var(--red-glow); background:var(--cream); }
.btn-blue { background:var(--blue); color:var(--ink); box-shadow:0 8px 28px var(--blue-glow); border:1px solid rgba(244,236,220,0.08); }
.btn-blue:hover { background:var(--blue-deep); box-shadow:0 14px 36px var(--blue-glow); }
.btn-gold { background:var(--gold); color:var(--bg-deep); box-shadow:0 6px 22px rgba(205,145,42,0.32); }
.btn-gold:hover { box-shadow:0 12px 32px rgba(205,145,42,0.5); }

.btn-red { background:var(--red); color:var(--ink); box-shadow:0 8px 28px var(--red-glow); }
.btn-red:hover { background:#B0252A; box-shadow:0 14px 36px var(--red-glow); }
.btn-whatsapp { background:#25D366; color:#0E0B25; box-shadow:0 8px 28px rgba(37,211,102,0.3); font-weight:700; }
.btn-whatsapp:hover { background:#22BD5C; box-shadow:0 14px 36px rgba(37,211,102,0.4); }
.btn-burgundy { background:var(--burgundy); color:var(--ink); border:1px solid rgba(244,236,220,0.18); }
.btn-burgundy:hover { background:var(--red); }
.btn-outline { background:transparent; color:var(--ink); border:1px solid var(--ink-line-strong); }
.btn-outline:hover { border-color:var(--red); color:var(--red); transform:translateY(-2px); }
.btn-arrow::after { content:'→'; font-size:14px; transition:transform 0.4s var(--ease-out); }
.btn-arrow:hover::after { transform:translateX(5px); }

/* ── REVEAL ──────────────────────────────────── */
.reveal, .reveal.visible { opacity:1; transform:none; filter:none; transition:none; }
.d1{transition-delay:.08s}.d2{transition-delay:.16s}.d3{transition-delay:.24s}.d4{transition-delay:.32s}.d5{transition-delay:.4s}

/* ── HERO ─────────────────────────────────────── */
.hero { position:relative; min-height:100dvh; height:100vh; overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 var(--pad-x); }
.hero-bg-img { position:absolute; inset:0; background-size:cover; background-position:center; filter:brightness(0.5) saturate(1.05); z-index:0; }
.hero-video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:1; }
.hero-wash { position:absolute; inset:0; pointer-events:none; z-index:2; background: radial-gradient(ellipse at center, transparent 25%, rgba(11, 15, 34, 0.65) 100%), linear-gradient(180deg, rgba(11, 15, 34, 0.55) 0%, transparent 25%, transparent 70%, rgba(11, 15, 34, 0.92) 100%), linear-gradient(135deg, rgba(42, 77, 171, 0.18) 0%, transparent 50%); }
.hero-content { position:relative; z-index:5; display:flex; flex-direction:column; align-items:center; max-width:920px; opacity:1; filter:none; transform:none; animation:none; }
@keyframes heroIn { to { opacity:1; filter:blur(0); transform:translateY(0); } }
.hero-eyebrow { font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.32em; text-transform:uppercase; color:var(--ink); opacity:0.85; margin-bottom:34px; text-shadow:0 2px 16px rgba(11,15,34,0.6); }
.hero-mark { display:flex; flex-direction:column; align-items:center; }
.hero-wordmark { width:clamp(180px, 18vw, 260px); height:auto; object-fit:contain; filter:drop-shadow(0 6px 28px rgba(11,15,34,0.7)); }
.hero-tag { font-family:var(--serif); font-style:italic; font-weight:400; font-size:clamp(20px, 1.8vw, 30px); color:var(--ink); opacity:0.92; margin-top:32px; letter-spacing:0.01em; text-shadow:0 2px 14px rgba(11,15,34,0.6); max-width:540px; }
.hero-actions { margin-top:46px; display:flex; gap:14px; flex-wrap:wrap; justify-content:center; }
.hero-bottom { position:absolute; bottom:30px; left:0; right:0; z-index:6; display:flex; justify-content:space-between; padding:0 var(--pad-x); pointer-events:none; }
.hero-stamp, .hero-scroll { font-family:var(--sans); font-size:10px; font-weight:500; letter-spacing:0.3em; text-transform:uppercase; color:var(--ink-soft); }
.hero-scroll { display:flex; align-items:center; gap:12px; }
.hero-scroll-line { width:36px; height:1px; background:var(--ink-mute); position:relative; overflow:hidden; }
.hero-scroll-line::after { content:''; position:absolute; top:0; left:-100%; width:100%; height:100%; background:var(--blue); animation:scrollSlide 3s ease-in-out infinite; }
@keyframes scrollSlide { 0% { left:-100%; } 100% { left:100%; } }
.hero-audio { position:absolute; bottom:32px; left:50%; transform:translateX(-50%); z-index:6; width:44px; height:44px; border-radius:50%; background:rgba(11,15,34,0.55); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); border:1px solid var(--ink-line-strong); color:var(--ink); cursor:pointer; display:flex; align-items:center; justify-content:center; font-size:13px; transition:background 0.3s, transform 0.3s var(--spring); }
.hero-audio:hover { background:rgba(74,120,240,0.35); transform:translateX(-50%) scale(1.08); }


/* Brand-correct hero tagline */
.hero-tagline-brand {
  font-family:var(--display); font-weight:900;
  font-size:clamp(16px, 1.7vw, 24px);
  letter-spacing:0.18em; text-transform:uppercase;
  color:var(--ink); opacity:0.92;
  margin-top:24px; line-height:1;
  text-shadow:0 2px 14px rgba(11,15,34,0.6);
}
.hero-tagline-brand span {
  margin: 0 0.6em;
  opacity: 0.5;
}

/* Page hero (subpages) */
.page-hero { position:relative; min-height:60vh; padding:160px var(--pad-x) 90px; display:flex; flex-direction:column; justify-content:flex-end; overflow:hidden; }
.page-hero-bg { position:absolute; inset:0; background-size:cover; background-position:center; filter:brightness(0.45) saturate(1.05); }
.page-hero-wash { position:absolute; inset:0; background:linear-gradient(180deg, rgba(11,15,34,0.55) 0%, transparent 30%, transparent 60%, var(--bg) 100%); }
.page-hero-inner { position:relative; z-index:2; max-width:var(--container); margin:0 auto; width:100%; }
.page-hero-eyebrow { font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.3em; text-transform:uppercase; color:var(--red); margin-bottom:18px; display:inline-flex; align-items:center; gap:14px; }
.page-hero-eyebrow::before { content:''; width:32px; height:1px; background:currentColor; opacity:0.7; }
.page-hero-title { font-family:var(--display); font-weight:900; font-size:clamp(46px, 6vw, 88px); letter-spacing:0.04em; line-height:1; color:var(--ink); text-transform:uppercase; max-width:16ch; }
.page-hero-sub { margin-top:22px; font-family:var(--sans); font-weight:400; font-size:16px; line-height:1.7; color:var(--ink-soft); max-width:55ch; }

/* ── SECTIONS ─────────────────────────────────── */
section { position:relative; }
.section-eyebrow { font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.3em; text-transform:uppercase; color:var(--ink-mute); margin-bottom:30px; display:inline-flex; align-items:center; gap:14px; }
.section-eyebrow::before { content:''; width:32px; height:1px; background:var(--red); opacity:0.85; }
.section-title { font-family:var(--display); font-weight:900; font-size:clamp(44px, 5vw, 76px); letter-spacing:0.05em; line-height:1; color:var(--ink); text-transform:uppercase; }
.section-title em { display:block; font-family:var(--serif); font-style:italic; font-weight:400; font-size:0.42em; color:var(--red); margin-top:14px; letter-spacing:0; text-transform:none; }
.section-title-sm { font-family:var(--display); font-weight:900; font-size:clamp(26px, 2.6vw, 38px); letter-spacing:0.05em; line-height:1.05; color:var(--ink); text-transform:uppercase; }

.intro { background:var(--bg-deep); padding:80px var(--pad-x); text-align:center; border-bottom:1px solid var(--ink-line); }
.intro-line { font-family:var(--serif); font-style:italic; font-weight:400; font-size:clamp(22px, 2.2vw, 34px); line-height:1.4; color:var(--ink); opacity:0.92; max-width:850px; margin:0 auto; }
.intro-line span { color:var(--gold); font-style:italic; }

.split { background:var(--bg); padding:0; }
.split-grid {
  max-width:none; margin:0;
  display:grid; grid-template-columns:1fr 1fr; gap:0;
  align-items:stretch;
  min-height:720px;
}
.split.reverse .split-img-wrap { order:2; }
.split-img-wrap {
  position:relative;
  overflow:hidden;
  display:flex;
  align-self:stretch;
}
.split-img {
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; object-position:center center;
  display:block; filter:brightness(0.88) saturate(1.05);
}
.split-text {
  padding:120px var(--pad-x);
  max-width:680px; margin:0 auto;
  align-self:center;
}
.split-img-accent { display:none; }

/* Cross-fade slideshow inside .split-img-wrap */
.slideshow { position:absolute; inset:0; background:#000; }
.slideshow-img {
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover; object-position:center center;
  display:block; filter:brightness(0.88) saturate(1.05);
  opacity:0;
  animation: slideshowFade 25s infinite;
  will-change: opacity;
}
.slideshow-img:nth-child(1) { animation-delay: 0s; opacity:1; }
.slideshow-img:nth-child(2) { animation-delay: 5s; }
.slideshow-img:nth-child(3) { animation-delay: 10s; }
.slideshow-img:nth-child(4) { animation-delay: 15s; }
.slideshow-img:nth-child(5) { animation-delay: 20s; }
@keyframes slideshowFade {
  0%   { opacity: 0; }
  4%   { opacity: 1; }
  20%  { opacity: 1; }
  24%  { opacity: 0; }
  100% { opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .slideshow-img { animation: none; opacity: 0; }
  .slideshow-img:nth-child(1) { opacity: 1; }
}
.split-text { display:flex; flex-direction:column; gap:30px; }
.split-body { font-family:var(--sans); font-weight:400; font-size:16.5px; line-height:1.78; color:var(--ink-soft); }
.split-body strong { color:var(--ink); font-weight:500; }
.split-stats { display:flex; gap:0; padding-top:24px; border-top:1px solid var(--ink-line); }
.stat { display:flex; flex-direction:column; gap:6px; flex:1; padding-right:24px; }
.stat:not(:last-child) { border-right:1px solid var(--ink-line); margin-right:24px; }
.stat-val { font-family:var(--display); font-weight:900; font-size:42px; color:var(--ink); line-height:1; letter-spacing:0.04em; text-transform:uppercase; }
.stat-lbl { font-family:var(--sans); font-weight:500; font-size:10.5px; letter-spacing:0.18em; text-transform:uppercase; color:var(--red); }

.cards { background:var(--bg-deep); padding:140px var(--pad-x); border-top:1px solid var(--ink-line); border-bottom:1px solid var(--ink-line); }
.cards-hdr { max-width:var(--container); margin:0 auto 60px; display:flex; align-items:flex-end; justify-content:space-between; gap:40px; }
.cards-grid { max-width:var(--container); margin:0 auto; display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; }
.card { text-decoration:none; color:inherit; display:flex; flex-direction:column; gap:0; background:var(--bg-card); border:1px solid var(--ink-line); transition:transform 0.6s var(--ease-out), border-color 0.4s, box-shadow 0.5s; }
.card:hover { transform:translateY(-6px); border-color:var(--blue); box-shadow:0 14px 40px rgba(0,0,0,0.45); }
.card-img-wrap { position:relative; overflow:hidden; aspect-ratio:4/3; }
.card-img { position:absolute; inset:0; width:100%; height:100%; background-size:cover; background-position:center; filter:brightness(0.85) saturate(1.05); transition:transform 1s var(--ease-out), filter 0.6s; }
.card:hover .card-img { transform:scale(1.04); filter:brightness(0.95) saturate(1.1); }
.card-eyebrow { position:absolute; top:18px; left:18px; z-index:2; font-family:var(--sans); font-weight:500; font-size:10px; letter-spacing:0.24em; text-transform:uppercase; color:var(--ink); opacity:0.9; text-shadow:0 2px 10px rgba(0,0,0,0.5); }
.card-body { padding:26px 28px 30px; display:flex; flex-direction:column; gap:14px; }
.card-name { font-family:var(--display); font-weight:900; font-size:26px; color:var(--ink); line-height:1.05; letter-spacing:0.05em; text-transform:uppercase; }
.card-desc { font-family:var(--sans); font-weight:400; font-size:13.5px; line-height:1.65; color:var(--ink-soft); max-width:38ch; }
.card-link { font-family:var(--sans); font-weight:600; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--red); display:inline-flex; align-items:center; gap:8px; margin-top:6px; }
.card-link::after { content:'→'; transition:transform 0.3s var(--ease-out); }
.card:hover .card-link::after { transform:translateX(5px); }

/* ── PROGRAMME / TICKETS BLOCK (smaller heading) ─ */
.programme-block { background:var(--bg); padding:120px var(--pad-x); }
.programme-block.compact { padding:80px var(--pad-x); }
.programme-inner { max-width:var(--container); margin:0 auto; }
.programme-hdr { display:flex; align-items:flex-end; justify-content:space-between; border-bottom:1px solid var(--ink-line); padding-bottom:24px; margin-bottom:40px; gap:30px; }
.programme-hdr-sm h2 { font-family:var(--display); font-weight:900; font-size:clamp(24px, 2.2vw, 32px); letter-spacing:0.05em; text-transform:uppercase; line-height:1.05; color:var(--ink); }
.programme-meta { font-family:var(--sans); font-size:12px; color:var(--ink-mute); letter-spacing:0.22em; text-transform:uppercase; }
.ticket-shop-wrap { padding:30px; background:rgba(244,236,220,0.025); border:1px solid var(--ink-line); }
.ticket-shop-hdr { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; padding-bottom:16px; border-bottom:1px solid var(--ink-line); gap:16px; }
.ticket-shop-ttl { font-family:var(--display); font-weight:900; font-size:20px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink); }
.ticket-shop-sub { font-family:var(--sans); font-size:10.5px; font-weight:500; letter-spacing:0.18em; text-transform:uppercase; color:var(--blue); }
#celebratix-ticket-widget { min-height:200px; color:var(--ink); }
#celebratix-ticket-widget[data-widget-failed="true"] { display:none; }
#celebratix-ticket-widget:empty::before {
  content:'Loading tickets…';
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:200px;
  font-family:var(--sans);
  font-size:12px;
  letter-spacing:0.18em;
  text-transform:uppercase;
  color:var(--ink-mute);
}
.ticket-widget-fallback {
  min-height:200px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:18px;
  text-align:center;
}
.ticket-widget-fallback p {
  margin:0;
  font-family:var(--sans);
  font-size:12px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:var(--ink-mute);
}

.pg-list { border-top:1px solid var(--ink-line); }
.pg-row { display:grid; grid-template-columns:auto 1fr auto auto; align-items:center; padding:24px 0; border-bottom:1px solid var(--ink-line); gap:30px; transition:padding 0.4s var(--ease-out), background 0.3s; }
.pg-row:hover { padding-left:8px; padding-right:8px; }
.pg-date { font-family:var(--sans); font-weight:500; font-size:13px; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink-mute); min-width:130px; font-variant-numeric:tabular-nums; }
.pg-name { font-family:var(--display); font-weight:900; font-size:22px; letter-spacing:0.05em; text-transform:uppercase; color:var(--ink); line-height:1.05; }
.pg-name small { display:block; margin-top:6px; font-family:var(--sans); font-style:normal; font-weight:400; font-size:12px; letter-spacing:0.16em; text-transform:uppercase; color:var(--ink-mute); }
.pg-price { font-family:var(--sans); font-weight:500; font-size:13px; letter-spacing:0.16em; color:var(--gold); font-variant-numeric:tabular-nums; min-width:90px; text-align:right; }
.pg-cta { font-family:var(--sans); font-weight:600; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink); text-decoration:none; padding-bottom:4px; border-bottom:1px solid var(--gold); transition:color 0.3s, border-color 0.3s; }
.pg-cta:hover { color:var(--gold); }

.gallery { padding:120px var(--pad-x); background:var(--bg-deep); border-top:1px solid var(--ink-line); border-bottom:1px solid var(--ink-line); }
.gallery-grid { max-width:1600px; margin:60px auto 0; display:grid; grid-template-columns:repeat(4, 1fr); gap:6px; }
/* Cross-fade slideshow slots */
.gallery-slot {
  position:relative; aspect-ratio:3/4; overflow:hidden; background:var(--bg-card);
}
.gallery-slot img {
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; display:block;
  filter:brightness(0.92) saturate(1.05);
  opacity:1;
  transition:opacity 1.4s ease, transform 8s ease, filter 0.6s;
}
.gallery-slot img.fade-out { opacity:0; }
.gallery-slot img.zooming { transform:scale(1.05); }
/* keep static fallback for non-JS */
.gallery-item { aspect-ratio:3/4; overflow:hidden; background:var(--bg-card); }
.gallery-item img { width:100%; height:100%; object-fit:cover; display:block; filter:brightness(0.92) saturate(1.05); transition:transform 1.2s var(--ease-out), filter 0.6s; }
.gallery-item:hover img { transform:scale(1.05); filter:brightness(1) saturate(1.1); }

.info-section { background:var(--bg); padding:140px var(--pad-x); }
.info-inner { max-width:var(--container); margin:0 auto; }
.info-hdr { display:flex; align-items:flex-end; justify-content:space-between; border-bottom:1px solid var(--ink-line); padding-bottom:28px; margin-bottom:60px; gap:36px; }
.info-grid { display:grid; grid-template-columns:repeat(12, 1fr); gap:0; }
.info-item { padding:36px 32px; border-right:1px solid var(--ink-line); border-bottom:1px solid var(--ink-line); transition:background 0.3s var(--ease-out); display:flex; flex-direction:column; gap:14px; min-height:200px; }
.info-item:hover { background:rgba(152,31,35,0.05); }
.info-loc { grid-column:span 8; min-height:240px; background:linear-gradient(135deg, rgba(152,31,35,0.12) 0%, transparent 50%); }
.info-contact { grid-column:span 4; }
.info-when { grid-column:span 4; }
.info-rules { grid-column:span 4; }
.info-press { grid-column:span 4; border-right:none; }
.info-when, .info-rules, .info-press { border-bottom:none; }
.info-ttl { font-family:var(--display); font-weight:900; font-size:22px; letter-spacing:0.05em; text-transform:uppercase; color:var(--ink); }
.info-body { font-family:var(--sans); font-weight:400; font-size:14px; line-height:1.7; color:var(--ink-soft); flex:1; }
.info-cta { font-family:var(--sans); font-weight:600; font-size:11px; letter-spacing:0.2em; text-transform:uppercase; color:var(--red); text-decoration:none; align-self:flex-start; transition:color 0.3s; display:inline-flex; align-items:center; gap:8px; }
.info-cta::after { content:'→'; transition:transform 0.3s var(--ease-out); }
.info-cta:hover { color:var(--ink); }
.info-cta:hover::after { transform:translateX(4px); }

.final { position:relative; overflow:hidden; padding:160px var(--pad-x); text-align:center; }
.final-bg { position:absolute; inset:0; background-size:cover; background-position:center; filter:brightness(0.32) saturate(1.15); }
.final-bg-fallback { position:absolute; inset:0; background:linear-gradient(135deg, var(--burgundy) 0%, var(--bg-deep) 50%, var(--blue-deep) 100%); }
.final-wash { position:absolute; inset:0; background: radial-gradient(ellipse at center, transparent 20%, rgba(11,15,34,0.7) 100%), linear-gradient(180deg, rgba(11,15,34,0.4) 0%, transparent 30%, transparent 70%, rgba(11,15,34,0.92) 100%); }
.final-inner { position:relative; z-index:2; max-width:820px; margin:0 auto; }
.final-title { font-family:var(--display); font-weight:900; font-size:clamp(46px, 5.4vw, 84px); letter-spacing:0.04em; line-height:1; color:var(--ink); text-transform:uppercase; }
.final-title span { color:var(--gold); }
.final-sub { font-family:var(--sans); font-weight:400; font-size:16px; line-height:1.7; color:var(--ink-soft); margin-top:28px; max-width:48ch; margin-left:auto; margin-right:auto; }
.final-actions { margin-top:54px; display:flex; gap:18px; justify-content:center; flex-wrap:wrap; }

footer.site-footer { background:var(--bg-deep); border-top:1px solid var(--ink-line); padding:84px var(--pad-x) 50px; }
.footer-inner { max-width:var(--container); margin:0 auto; display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:70px; }
.footer-mark { display:flex; flex-direction:column; gap:18px; }
.footer-logo { height:42px; object-fit:contain; }
.footer-tagline { font-family:var(--sans); font-weight:400; font-size:13.5px; line-height:1.7; color:var(--ink-soft); max-width:280px; }
.footer-col-title { font-family:var(--sans); font-weight:600; font-size:10.5px; letter-spacing:0.26em; text-transform:uppercase; color:var(--red); margin-bottom:22px; }
.footer-links { list-style:none; display:flex; flex-direction:column; gap:13px; }
.footer-links a { font-family:var(--sans); font-weight:400; font-size:14px; color:var(--ink-soft); text-decoration:none; transition:color 0.3s; }
.footer-links a:hover { color:var(--ink); }
.footer-bottom { margin-top:80px; border-top:1px solid var(--ink-line); padding-top:30px; max-width:var(--container); margin-left:auto; margin-right:auto; display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; }
.footer-copy, .footer-legal a, .footer-socials a { font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink-mute); text-decoration:none; transition:color 0.3s; }
.footer-legal a:hover, .footer-socials a:hover { color:var(--ink); }
.footer-legal, .footer-socials { display:flex; gap:30px; }

/* ── PRIVATE HIRE ─────────────────────────────── */
.venues { background:var(--bg); padding:140px var(--pad-x); border-top:1px solid var(--ink-line); }
.venues-inner { max-width:var(--container); margin:0 auto; }
.venues-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:40px; margin-top:60px; }
.venue-card { display:flex; flex-direction:column; gap:0; border:1px solid var(--ink-line); background:var(--bg-card); transition:border-color 0.3s, transform 0.5s var(--ease-out); }
.venue-card:hover { border-color:var(--blue); transform:translateY(-4px); }
.venue-img-wrap { aspect-ratio:16/10; overflow:hidden; }
.venue-img-wrap img { width:100%; height:100%; object-fit:cover; }
.venue-body { padding:28px 32px 32px; display:flex; flex-direction:column; gap:14px; }
.venue-head { display:flex; justify-content:space-between; align-items:baseline; gap:16px; }
.venue-name { font-family:var(--display); font-weight:900; font-size:26px; letter-spacing:0.05em; text-transform:uppercase; color:var(--ink); line-height:1.05; }
.venue-area { font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold); }
.venue-stats { display:grid; grid-template-columns:repeat(3, 1fr); gap:14px; padding-top:14px; border-top:1px solid var(--ink-line); }
.venue-stat-l { font-family:var(--sans); font-weight:500; font-size:9.5px; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-mute); }
.venue-stat-v { font-family:var(--display); font-weight:900; font-size:22px; letter-spacing:0.04em; text-transform:uppercase; color:var(--ink); line-height:1; margin-top:4px; font-variant-numeric:tabular-nums; }

.packages { background:var(--bg-warm); padding:140px var(--pad-x); }
.packages-inner { max-width:var(--container); margin:0 auto; text-align:center; }
.packages-grid { display:grid; grid-template-columns:repeat(3, 1fr); gap:24px; margin-top:60px; }
.package { border:1px solid var(--ink-line); background:var(--bg-card); padding:42px 32px 36px; display:flex; flex-direction:column; gap:18px; align-items:center; text-align:center; transition:border-color 0.3s, transform 0.5s var(--ease-out); }
.package:hover { border-color:var(--gold); transform:translateY(-4px); }
.package-name { font-family:var(--display); font-weight:900; font-size:26px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink); }
.package-price { font-family:var(--display); font-weight:900; font-size:52px; color:var(--gold); line-height:1; display:flex; align-items:baseline; gap:6px; font-variant-numeric:tabular-nums; letter-spacing:0.02em; }
.package-price small { font-family:var(--sans); font-style:normal; font-size:11px; font-weight:500; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-mute); }
.package-divider { width:38px; height:1px; background:var(--ink-line-strong); }
.package-desc { font-family:var(--sans); font-weight:400; font-size:13.5px; line-height:1.65; color:var(--ink-soft); max-width:30ch; }

.extras { background:var(--bg); padding:120px var(--pad-x); text-align:center; }
.extras-grid { max-width:var(--container); margin:50px auto 0; display:grid; grid-template-columns:repeat(5, 1fr); gap:18px; }
.extra-card { padding:30px 22px; border:1px solid var(--ink-line); background:var(--bg-card); display:flex; flex-direction:column; gap:14px; align-items:center; text-align:center; transition:border-color 0.3s; }
.extra-card:hover { border-color:var(--blue); }
.extra-icon { font-size:24px; color:var(--gold); }
.extra-name { font-family:var(--display); font-weight:900; font-size:17px; letter-spacing:0.06em; text-transform:uppercase; color:var(--ink); }
.extra-desc { font-family:var(--sans); font-weight:400; font-size:12.5px; line-height:1.55; color:var(--ink-soft); }

.proposal { background:var(--bg-warm); padding:140px var(--pad-x); }
.proposal-inner { max-width:980px; margin:0 auto; }
.proposal-form { margin-top:60px; display:grid; gap:24px; }
.proposal-row { display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.proposal-row-3 { display:grid; grid-template-columns:1fr 1fr 1fr; gap:24px; }
.field { display:flex; flex-direction:column; gap:8px; }
.field label { font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink-mute); }
.field input, .field select, .field textarea { font-family:var(--sans); font-weight:400; font-size:14px; background:rgba(11,15,34,0.6); border:1px solid var(--ink-line); color:var(--ink); padding:14px 16px; transition:border-color 0.3s, background 0.3s; }
.field input:focus, .field select:focus, .field textarea:focus { outline:none; border-color:var(--blue); background:rgba(11,15,34,0.8); }
.field input[type="date"], .field input[type="time"] { color-scheme: dark; cursor: pointer; }
.field input[type="date"]::-webkit-calendar-picker-indicator,
.field input[type="time"]::-webkit-calendar-picker-indicator {
  filter: invert(1) brightness(2.2) contrast(1.1);
  opacity: 1;
  cursor: pointer;
}
.field textarea { min-height:120px; resize:vertical; }
.checkbox-row { display:flex; gap:24px; flex-wrap:wrap; font-family:var(--sans); font-size:13px; color:var(--ink-soft); }
.checkbox-row label { display:inline-flex; align-items:center; gap:10px; cursor:pointer; font-weight:400; letter-spacing:normal; text-transform:none; }
.checkbox-row input { accent-color:var(--blue); }
.proposal-submit { display:flex; justify-content:center; padding-top:14px; }

.terms { background:var(--bg-deep); padding:100px var(--pad-x); }
.terms-inner { max-width:920px; margin:0 auto; }
.terms-list { margin-top:50px; display:grid; gap:0; border-top:1px solid var(--ink-line); }
.terms-row { display:grid; grid-template-columns:200px 1fr; padding:26px 0; border-bottom:1px solid var(--ink-line); gap:30px; align-items:start; }
.terms-l { font-family:var(--sans); font-weight:600; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold); }
.terms-v { font-family:var(--sans); font-weight:400; font-size:14.5px; line-height:1.7; color:var(--ink-soft); }

/* ── VIP TABLE FLOOR PLAN ─────────────────────── */
.floor-section { background:var(--bg); padding:140px var(--pad-x); border-top:1px solid var(--ink-line); }
.floor-section + .floor-section { border-top:1px solid var(--ink-line); }
.floor-inner { max-width:var(--container); margin:0 auto; }
.floor-hdr { display:flex; align-items:flex-end; justify-content:space-between; gap:30px; margin-bottom:60px; flex-wrap:wrap; }
.floor-grid { display:grid; grid-template-columns:1.05fr 0.95fr; gap:80px; align-items:start; }
.floor-svg { width:100%; aspect-ratio:1/1.15; background:rgba(244,236,220,0.025); border:1px solid var(--ink-line); padding:24px; position:relative; }
.floor-svg svg { width:100%; height:100%; display:block; }
.floor-svg .table-shape { fill:transparent; stroke:var(--ink); stroke-width:1.5; cursor:pointer; transition:fill 0.3s, stroke 0.3s, transform 0.3s; transform-box:fill-box; transform-origin:center; }
.floor-svg .table-shape:hover, .floor-svg .table-shape.active { fill:var(--red); stroke:var(--red); transform:scale(1.06); }
.floor-svg .table-num { fill:var(--ink); font-family:var(--sans); font-weight:600; font-size:14px; pointer-events:none; text-anchor:middle; dominant-baseline:middle; font-variant-numeric:tabular-nums; }
.floor-svg .room-label { fill:var(--ink-mute); font-family:var(--sans); font-weight:500; font-size:11px; letter-spacing:0.22em; text-transform:uppercase; text-anchor:middle; }
.floor-svg .room-rect { fill:transparent; stroke:var(--ink-line-strong); stroke-width:1; }
/* Dark VIP floor plan styling (matches site palette) */
.floor-svg-dark { background:var(--bg-deep); border:1px solid var(--ink-line); padding:30px; aspect-ratio:7/9; }
.floor-svg-dark .room-rect { stroke:var(--ink-line-strong); stroke-width:1.2; fill:transparent; }
.floor-svg-dark .floor-vip-label { fill:var(--ink-soft); font-family:var(--sans); font-weight:600; font-size:13px; letter-spacing:0.32em; text-transform:uppercase; }
.floor-svg-dark .banquette { fill:rgba(244,236,220,0.025); stroke:var(--ink-line); stroke-width:1; }
.floor-svg-dark .banquette-edge { stroke:var(--ink-line); stroke-width:1; stroke-dasharray:3 4; }
.floor-svg-dark .table-shape { stroke:var(--ink-line-strong); stroke-width:1.4; fill:transparent; rx:3; }
.floor-svg-dark .table-shape:hover { fill:rgba(152,31,35,0.35); stroke:var(--red); transform:scale(1.04); }
.floor-svg-dark .table-shape.active { fill:var(--red); stroke:var(--red); transform:none; }
.floor-svg-dark .table-shape.active + .table-num,
.floor-svg-dark .table-shape:hover + .table-num { fill:var(--ink); }
.floor-svg-dark .table-num { fill:var(--ink-mute); font-size:13px; font-weight:600; transition:fill 0.3s; }
.floor-svg-dark .dance-floor { fill:transparent; stroke:var(--ink-line); stroke-width:1; stroke-dasharray:4 5; }
.floor-svg-dark .disco-ball circle { fill:transparent; stroke:var(--gold); stroke-width:1; }
.floor-svg-dark .disco-ball line { stroke:var(--gold); stroke-width:0.8; opacity:0.7; }
.floor-svg-dark .cherry circle { fill:rgba(205,145,42,0.45); stroke:var(--gold); stroke-width:0.8; }
.floor-svg-dark .cherry-stem { stroke:var(--red); stroke-width:1.4; }
.floor-svg-dark .stairs line { stroke:var(--ink-line); stroke-width:1; }
.floor-text { display:flex; flex-direction:column; gap:30px; }
.floor-options { display:grid; grid-template-columns:repeat(2, 1fr); gap:14px; }
.floor-option { padding:18px 20px; border:1px solid var(--ink-line); background:var(--bg-card); display:flex; justify-content:space-between; align-items:baseline; gap:12px; cursor:pointer; transition:border-color 0.3s, background 0.3s; }
.floor-option:hover, .floor-option.active { border-color:var(--red); background:rgba(152,31,35,0.05); }
.floor-option-l { font-family:var(--sans); font-weight:600; font-size:11.5px; letter-spacing:0.18em; text-transform:uppercase; color:var(--ink); }
.floor-option-v { font-family:var(--display); font-weight:900; font-size:17px; letter-spacing:0.06em; text-transform:uppercase; color:var(--red); }
.floor-includes { display:flex; flex-direction:column; gap:10px; padding:24px 0; border-top:1px solid var(--ink-line); border-bottom:1px solid var(--ink-line); list-style:none; }
.floor-includes li { font-family:var(--sans); font-weight:400; font-size:14px; color:var(--ink-soft); padding-left:22px; position:relative; }
.floor-includes li::before { content:''; position:absolute; left:0; top:9px; width:12px; height:1px; background:var(--red); }
.floor-policy { font-family:var(--sans); font-weight:400; font-size:13px; color:var(--ink-mute); line-height:1.7; }

/* ── MENU ─────────────────────────────────────── */
.menu-block { background:rgba(244,236,220,0.04); border:1px solid rgba(244,236,220,0.14); padding:36px 40px; }
.menu-ttl { font-family:var(--display); font-weight:900; font-size:24px; letter-spacing:0.05em; text-transform:uppercase; color:var(--ink); margin-bottom:8px; }
.menu-sub { font-family:var(--sans); font-weight:400; font-size:12px; color:var(--ink-mute); margin-bottom:24px; letter-spacing:0.04em; }
.menu-course { padding:18px 0; border-top:1px solid var(--ink-line); }
.menu-course:first-of-type { border-top:none; padding-top:0; }
.menu-course-l { font-family:var(--sans); font-weight:600; font-size:10.5px; letter-spacing:0.22em; text-transform:uppercase; color:var(--gold); margin-bottom:8px; }
.menu-course-name { font-family:var(--display); font-weight:900; font-size:19px; letter-spacing:0.05em; text-transform:uppercase; color:var(--ink); margin-bottom:6px; }
.menu-course-desc { font-family:var(--sans); font-weight:400; font-size:13.5px; line-height:1.6; color:var(--ink-soft); }

/* ── RESPONSIVE ──────────────────────────────── */
@media (max-width:980px) {
  :root { --pad-x:24px; }
  nav.site-nav { grid-template-columns:auto auto; padding:18px var(--pad-x); }
  nav.site-nav.scrolled { padding:14px var(--pad-x); }
  .nav-links { display:none; }
  .nav-toggle { display:flex; align-items:center; justify-content:center; width:40px; height:40px; background:transparent; border:none; color:var(--ink); cursor:pointer; font-size:18px; justify-self:end; }
  .nav-cta { display:none; }
  .hero-bottom { padding:0 var(--pad-x); }
  .hero-stamp, .hero-scroll-line { display:none; }
  .split, .programme-block, .info-section, .gallery, .cards, .venues, .packages, .extras, .proposal, .terms, .floor-section { padding:90px var(--pad-x); }
  .split { padding: 0; }
  .split-grid, .split.reverse .split-grid {
    grid-template-columns:1fr;
    gap:0;
    min-height:0;
  }
  .split.reverse .split-img-wrap { order:-1; }
  .split-img-wrap { min-height:60vh; }
  .split-text { padding: 70px var(--pad-x); max-width:none; }
  .cards-grid { grid-template-columns:1fr; gap:24px; }
  .cards-hdr, .programme-hdr, .info-hdr, .floor-hdr { flex-direction:column; align-items:flex-start; gap:18px; }
  .gallery-grid { grid-template-columns:repeat(2, 1fr); gap:4px; }
  .pg-row { grid-template-columns:auto 1fr; gap:14px 24px; }
  .pg-price, .pg-cta { grid-column:2; justify-self:start; }
  .info-grid { grid-template-columns:1fr; }
  .info-loc, .info-contact, .info-when, .info-rules, .info-press { grid-column:span 1; border-right:none !important; border-bottom:1px solid var(--ink-line) !important; }
  .info-press { border-bottom:none !important; }
  .footer-inner { grid-template-columns:1fr; gap:40px; }
  .footer-bottom { flex-direction:column; align-items:flex-start; }
  .final { padding:100px var(--pad-x); }
  .venues-grid { grid-template-columns:1fr; }
  .packages-grid { grid-template-columns:1fr; }
  .extras-grid { grid-template-columns:repeat(2, 1fr); gap:14px; }
  .proposal-row, .proposal-row-3 { grid-template-columns:1fr; gap:18px; }
  .floor-grid { grid-template-columns:1fr; gap:48px; }
  .floor-options { grid-template-columns:1fr; }
  .terms-row { grid-template-columns:1fr; gap:8px; }
  .page-hero { padding:130px var(--pad-x) 60px; min-height:50vh; }
}



/* ── PAGE TRANSITIONS ───────────────────────── */
/* Keep the document visible even if JavaScript/widgets load late. */
body { opacity: 1; transition: none; }
body.page-ready, body.page-leaving { opacity: 1; }
@media (prefers-reduced-motion: reduce) { body { opacity: 1 !important; transition: none !important; } }

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


/* Constrain Celebratix widget so it doesn't take over the page */
#celebratix-ticket-widget { max-height: 560px; overflow-y: auto; padding-right: 6px; }
#celebratix-ticket-widget::-webkit-scrollbar { width: 6px; }
#celebratix-ticket-widget::-webkit-scrollbar-track { background: rgba(244,236,220,0.04); }
#celebratix-ticket-widget::-webkit-scrollbar-thumb { background: var(--red); }

/* Tebi reservation widget — subtle button styling */
[data-widget-token] + a, .tebi-reserve {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--sans); font-weight: 600; font-size: 11.5px;
  letter-spacing: 0.18em; text-transform: uppercase;
  background: var(--red); color: var(--ink);
  padding: 16px 30px; text-decoration: none;
  box-shadow: 0 8px 28px var(--red-glow);
  transition: transform 0.3s var(--spring), box-shadow 0.3s, background 0.3s;
}
.tebi-reserve:hover { transform: translateY(-2px); background: #B0252A; box-shadow: 0 14px 36px var(--red-glow); }

/* Testimonial cards */
.testimonials { background: var(--bg-warm); padding: 140px var(--pad-x); }
.testimonials-inner { max-width: var(--container); margin: 0 auto; }
.testimonials-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px;
  margin-top: 60px;
}
.testimonial {
  padding: 36px 32px;
  background: var(--bg-card);
  border: 1px solid var(--ink-line);
  display: flex; flex-direction: column; gap: 18px;
  transition: border-color 0.3s, transform 0.5s var(--ease-out);
}
.testimonial:hover { border-color: var(--red); transform: translateY(-4px); }
.testimonial-quote {
  font-family: var(--serif); font-style: italic; font-weight: 400;
  font-size: 18px; line-height: 1.55; color: var(--ink);
}
.testimonial-mark {
  font-family: var(--display); font-weight: 900; font-size: 36px;
  color: var(--red); line-height: 0.5; opacity: 0.8;
}
.testimonial-attr {
  display: flex; flex-direction: column; gap: 4px;
  padding-top: 16px; border-top: 1px solid var(--ink-line);
  margin-top: auto;
}
.testimonial-name {
  font-family: var(--display); font-weight: 900; font-size: 14px;
  letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink);
}
.testimonial-role {
  font-family: var(--sans); font-weight: 400; font-size: 12px;
  color: var(--ink-mute);
}
@media (max-width: 980px) {
  .testimonials { padding: 90px var(--pad-x); }
  .testimonials-grid { grid-template-columns: 1fr; gap: 18px; }
}




/* ── ANCHOR SCROLL OFFSET ───────────────────────
   Sticky nav is ~70-90px tall; offset anchors so headings aren't hidden underneath.
*/
section[id], div[id], a[id] { scroll-margin-top: 90px; }
@media (max-width: 980px) { section[id], div[id], a[id] { scroll-margin-top: 70px; } }

/* ── iPhone-specific improvements ────────────── */
@media (max-width: 480px) {
  :root { --pad-x: 18px; }
  .hero-eyebrow { font-size: 9.5px; letter-spacing: 0.24em; margin-bottom: 26px; }
  .hero-wordmark { width: 35.2vw; max-width: 136px; }
  .hero-tagline-brand { font-size: 13px; letter-spacing: 0.18em; margin-top: 18px; }
  .hero-actions { gap: 10px; margin-top: 30px; flex-direction: column; width: 100%; max-width: 280px; }
  .hero-actions .btn { width: 100%; justify-content: center; padding: 16px 22px; }
  .hero-bottom { display: none; }
  .hero-audio { width: 38px; height: 38px; bottom: 22px; }
  .page-hero { padding: 110px var(--pad-x) 50px; min-height: 44vh; }
  .page-hero-title { font-size: clamp(36px, 9vw, 60px); }
  .page-hero-sub { font-size: 14px; }
  .split { padding: 0; }
  .split-grid { min-height: 0; grid-template-columns: 1fr; gap:0; }
  .split-img-wrap { min-height: 70vh; max-height: 600px; }
  .split-text { padding: 56px var(--pad-x); max-width: none; text-align: center; align-items: center; }
  .split-text .section-eyebrow,
  .split-text .section-title-sm,
  .split-text .section-title { align-self: center; text-align: center; }
  .split-text > div[style*="display:flex"] { justify-content: center; }
  .split-stats { gap: 0; justify-content: center; padding-top: 18px; }
  .split-stats .stat { padding-right: 14px; }
  .split-stats .stat:not(:last-child) { padding-right: 14px; margin-right: 14px; }
  .programme-block, .info-section, .gallery, .cards, .venues, .packages, .extras, .proposal, .terms, .floor-section, .testimonials { padding: 70px var(--pad-x); }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); gap: 4px; margin-top: 30px; }
  .section-title { font-size: clamp(34px, 8vw, 52px); }
  .section-title-sm { font-size: clamp(22px, 5.5vw, 30px); }
  .final { padding: 80px var(--pad-x); }
  .final-actions .btn { width: 100%; justify-content: center; max-width: 320px; }
  .nav-cta { padding: 9px 16px; font-size: 10px; letter-spacing: 0.16em; }
  .programme-meta { font-size: 10.5px; }
  .info-grid { gap: 0; }
  .info-item { padding: 28px 22px; min-height: 0; }
  .terms-row { padding: 18px 0; }
  .terms-l { font-size: 10px; letter-spacing: 0.18em; }
  .terms-v { font-size: 13px; }
  .floor-grid { gap: 30px; }
  .floor-svg { padding: 14px; }
  .package-price { font-size: 38px; }
}

/* Touch-friendly tap targets */
@media (hover: none) {
  .card:hover { transform: none; }
  .card:hover .card-img { transform: none; }
  .gallery-slot img.zooming { transform: none; }
  .nav-cta, .btn { min-height: 44px; }
}


/* ── COOKIE CONSENT BANNER ──────────────────── */
#cookie-banner {
  position: fixed;
  bottom: 24px; left: 24px; right: 24px;
  max-width: 560px;
  margin-left: auto; margin-right: auto;
  z-index: 9999;
  background: rgba(28, 35, 64, 0.96);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border: 1px solid var(--ink-line-strong);
  padding: 22px 26px;
  opacity: 0; transform: translateY(20px);
  transition: opacity 0.45s var(--ease-out), transform 0.45s var(--ease-out);
  box-shadow: 0 14px 40px rgba(0,0,0,0.45);
}
#cookie-banner.cookie-show { opacity: 1; transform: translateY(0); }
.cookie-inner { display: flex; flex-direction: column; gap: 16px; }
.cookie-text {
  font-family: var(--sans); font-weight: 400; font-size: 13px; line-height: 1.55;
  color: var(--ink-soft); margin: 0;
}
.cookie-text a { color: var(--red); border-bottom: 1px solid var(--red); text-decoration: none; }
.cookie-text a:hover { color: var(--ink); border-color: var(--ink); }
.cookie-actions { display: flex; gap: 10px; justify-content: flex-end; }
.btn-cookie {
  font-family: var(--sans); font-weight: 600; font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  padding: 10px 18px; border: none; cursor: pointer;
  transition: background 0.3s, color 0.3s, transform 0.2s var(--spring), box-shadow 0.3s;
}
.btn-cookie:active { transform: scale(0.96); }
.btn-cookie-decline {
  background: transparent; color: var(--ink-soft);
  border: 1px solid var(--ink-line-strong);
}
.btn-cookie-decline:hover { color: var(--ink); border-color: var(--ink); }
.btn-cookie-accept {
  background: var(--ink); color: var(--bg-deep);
  box-shadow: 0 4px 14px rgba(0,0,0,0.3);
}
.btn-cookie-accept:hover { background: var(--cream); box-shadow: 0 8px 24px var(--red-glow); }
@media (max-width: 480px) {
  #cookie-banner { left: 12px; right: 12px; bottom: 12px; padding: 18px 18px; }
  .cookie-text { font-size: 12.5px; }
  .btn-cookie { padding: 9px 14px; font-size: 10px; }
}

/* ── LEGAL PAGES (privacy/terms/cookies) ────── */
.legal-page { padding: 160px var(--pad-x) 100px; background: var(--bg); min-height: 60vh; }
.legal-inner { max-width: 760px; margin: 0 auto; }
.legal-page h1 {
  font-family: var(--display); font-weight: 900;
  font-size: clamp(40px, 5vw, 64px);
  letter-spacing: 0.04em; text-transform: uppercase; color: var(--ink);
  line-height: 1; margin-bottom: 14px;
}
.legal-page h2 {
  font-family: var(--display); font-weight: 900;
  font-size: 18px; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--ink);
  margin: 50px 0 14px; line-height: 1.2;
}
.legal-page h3 {
  font-family: var(--sans); font-weight: 600; font-size: 13px;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--red); margin: 28px 0 10px;
}
.legal-page p, .legal-page li {
  font-family: var(--serif); font-weight: 400; font-size: 16px;
  line-height: 1.78; color: var(--ink-soft); margin: 0 0 14px; max-width: 65ch;
}
.legal-page ul { padding-left: 22px; margin: 6px 0 18px; }
.legal-page li { margin: 0 0 8px; }
.legal-page a { color: var(--red); border-bottom: 1px solid var(--red); text-decoration: none; }
.legal-page a:hover { color: var(--ink); border-color: var(--ink); }
.legal-page .last-updated {
  font-family: var(--sans); font-weight: 500; font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--ink-mute); margin: 28px 0 50px;
}
.legal-page strong { color: var(--ink); font-weight: 500; }


/* ── MOBILE CENTERING IMPROVEMENTS ──────────── */
@media (max-width: 980px) {
  /* Page hero — center text on mobile */
  .page-hero { text-align: center; align-items: center; }
  .page-hero-inner { display: flex; flex-direction: column; align-items: center; }
  .page-hero-eyebrow { justify-content: center; }
  .page-hero-eyebrow::before { display: none; }
  .page-hero-title { max-width: none; text-align: center; }
  .page-hero-sub { text-align: center; max-width: 56ch; }
  .page-hero > div[style*="margin-top"] { display: flex; justify-content: center; }

  /* Section eyebrows centered on mobile */
  .section-eyebrow {
    justify-content: center;
    align-self: center;
  }

  /* Stats blocks centered */
  .split-stats, .private-stats, .ph-stats { justify-content: center; }

  /* Intro line stays centered (already text-align:center via parent) */
  .intro { padding: 60px var(--pad-x); }

  /* Cards header centered */
  .cards-hdr { text-align: center; align-items: center; }
  .cards-hdr > div { display: flex; flex-direction: column; align-items: center; }

  /* Programme header */
  .programme-hdr { align-items: flex-start; }

  /* Floor plan grid — center the right column */
  .floor-grid > .floor-text { text-align: center; align-items: center; }
  .floor-grid > .floor-text .section-eyebrow { justify-content: center; }
  .floor-options { grid-template-columns: 1fr; max-width: 360px; margin: 0 auto; }
  .floor-includes { max-width: 420px; margin: 0 auto; }

  /* Final CTA already centered, but ensure mobile width */
  .final-actions .btn { min-width: 220px; justify-content: center; }
}

@media (max-width: 480px) {
  /* Aggressive mobile centering for iPhone */
  .hero-content { padding: 0 var(--pad-x); }
  .hero-eyebrow, .hero-tagline-brand { text-align: center; }
  .section-eyebrow { font-size: 10px; letter-spacing: 0.24em; }
  .section-eyebrow::before { display: none; }
  .pg-row { text-align: left; }
  .footer-mark { align-items: center; text-align: center; }
  .footer-mark .footer-tagline { margin-left: auto; margin-right: auto; }
  footer.site-footer .footer-inner > div { text-align: center; align-items: center; }
  footer.site-footer .footer-col-title { text-align: center; }
  footer.site-footer .footer-links { align-items: center; }
}


/* Hide the hero music-icon toggle (per request) */
.hero-audio { display: none !important; }



/* ── MOBILE SIMPLIFICATION (less busy on phone) ── */
@media (max-width: 480px) {
  /* Smaller, single-line page-hero eyebrow */
  .page-hero { padding: 100px 18px 48px; min-height: 50vh; }
  .page-hero-eyebrow {
    font-size: 9.5px; letter-spacing: 0.22em; margin-bottom: 14px;
    opacity: 0.72;
  }
  .page-hero-title { font-size: clamp(34px, 8vw, 52px); line-height: 1.02; }
  .page-hero-sub { font-size: 14.5px; line-height: 1.6; max-width: none; margin-top: 16px; }
  .page-hero-inner > div[style*="margin-top"] { margin-top: 22px !important; }

  /* Section headers more compact */
  .section-eyebrow { margin-bottom: 18px; font-size: 10px; }
  .section-title-sm { font-size: clamp(24px, 6vw, 32px); }

  /* Split sections: simpler, no blue gap */
  .split-img-wrap { min-height: 55vh; max-height: 520px; }
  .split-text { padding: 48px 18px; gap: 22px; }
  .split-body { font-size: 14.5px; line-height: 1.65; }

  /* Cards: simpler, less padded */
  .cards-grid { gap: 16px; }
  .card-body { padding: 22px 22px 26px; }
  .card-name { font-size: 22px; }
  .card-desc { font-size: 13px; }

  /* Programme list */
  .pg-row { padding: 18px 0; gap: 8px 16px; }
  .pg-name { font-size: 18px; }
  .pg-name small { font-size: 11px; }

  /* Compact info grid */
  .info-item { padding: 24px 18px; min-height: 0; gap: 10px; }
  .info-ttl { font-size: 18px; }
  .info-body { font-size: 13.5px; }

  /* Compact terms */
  .terms { padding: 60px 18px; }
  .terms-row { padding: 16px 0; gap: 4px; }
  .terms-l { font-size: 9.5px; letter-spacing: 0.16em; }
  .terms-v { font-size: 13px; line-height: 1.6; }

  /* Floor plan SVG: full-width, taller for clarity */
  .floor-svg { padding: 12px; aspect-ratio: 1/1.4; }

  /* Final CTA */
  .final { padding: 70px 18px; }
  .final-title { font-size: clamp(36px, 8vw, 56px); }
  .final-sub { font-size: 14px; margin-top: 18px; }
  .final-actions { gap: 10px; margin-top: 32px; }
  .final-actions .btn { width: 100%; max-width: 320px; padding: 14px 22px; }

  /* Footer compact */
  footer.site-footer { padding: 60px 18px 32px; }
  .footer-inner { gap: 36px; }
  .footer-tagline { font-size: 13px; }
  .footer-links a { font-size: 13.5px; }
  .footer-bottom { padding: 18px; gap: 12px; }

  /* Compact intro line */
  .intro { padding: 50px 18px; }
  .intro-line { font-size: 17px; }

  /* Hide the big edge labels in hero — only relevant on wide screens */
  .hero-edge { display: none; }

  /* Hide page-hero-eyebrow on smaller pages where the title says enough */
  .page-hero-title + .page-hero-sub { margin-top: 14px; }

  /* Buttons full-width-ish on mobile */
  .btn { padding: 14px 22px; font-size: 11px; }
}

/* Prevent any horizontal overflow site-wide on small screens */
html, body { max-width: 100%; }
@media (max-width: 980px) {
  body, main { overflow-x: hidden; }
}

/* ── MOBILE NAV (rewritten — robust on iOS) ──── */
@media (max-width: 980px) {
  /* Make nav grid use auto + flex-end so logo left, toggle right */
  nav.site-nav {
    grid-template-columns: 1fr auto !important;
    padding: 16px 18px !important;
  }
  nav.site-nav.scrolled { padding: 12px 18px !important; }
  nav.site-nav .nav-logo-wrap { z-index: 220; position: relative; }
  nav.site-nav .nav-logo { height: 28px; }

  /* Toggle button — big tap target, always on top */
  nav.site-nav .nav-toggle {
    display: flex !important;
    width: 48px; height: 48px;
    background: transparent;
    border: none;
    color: var(--ink);
    font-family: var(--sans);
    font-size: 26px; font-weight: 300; line-height: 1;
    align-items: center; justify-content: center;
    cursor: pointer;
    z-index: 230;
    position: relative;
    padding: 0;
    -webkit-tap-highlight-color: transparent;
  }

  /* Hide desktop CTA on mobile (a duplicate is injected inside the menu) */
  nav.site-nav > .nav-cta { display: none !important; }

  /* MENU OVERLAY — full screen, slides in from right */
  nav.site-nav .nav-links {
    display: flex !important;
    position: fixed;
    inset: 0;
    width: 100%; height: 100dvh;
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    margin: 0;
    padding: 92px 22px 32px;
    list-style: none;
    background: rgba(11, 15, 34, 0.985);
    backdrop-filter: blur(28px) saturate(140%);
    -webkit-backdrop-filter: blur(28px) saturate(140%);
    transform: translateX(100%);
    transition: transform 0.4s var(--ease-out);
    z-index: 210;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    visibility: hidden;
  }
  nav.site-nav.mobile-open .nav-links {
    transform: translateX(0);
    visibility: visible;
  }

  /* Each nav item */
  nav.site-nav .nav-links > li {
    width: 100%;
    list-style: none;
    border-bottom: 1px solid rgba(244,236,220,0.10);
    padding: 0;
    position: relative;
  }
  nav.site-nav .nav-links > li > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 22px 4px;
    font-family: var(--display);
    font-weight: 900;
    font-size: 24px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ink);
    opacity: 1;
    text-decoration: none;
    transition: color 0.25s, padding-left 0.25s;
  }
  nav.site-nav .nav-links > li > a::after { display: none; }
  nav.site-nav .nav-links > li > a.has-dropdown::after {
    content: '+';
    display: inline-flex !important;
    width: 24px; height: 24px;
    align-items: center; justify-content: center;
    font-family: var(--sans);
    font-size: 28px; font-weight: 200;
    color: var(--ink-mute);
    transition: transform 0.3s var(--ease-out), color 0.25s;
  }
  nav.site-nav .nav-links > li.expanded > a.has-dropdown::after {
    transform: rotate(45deg);
    color: var(--red);
  }
  nav.site-nav .nav-links > li > a:hover,
  nav.site-nav .nav-links > li > a:active { color: var(--red); }

  /* Submenu (Tickets / VIP) */
  nav.site-nav .nav-dropdown {
    position: static;
    transform: none;
    background: transparent;
    border: none;
    padding: 0;
    margin: 0;
    min-width: 0;
    max-height: 0;
    overflow: hidden;
    opacity: 1;
    pointer-events: auto;
    transition: max-height 0.35s var(--ease-out);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    list-style: none;
  }
  /* Neutralise the desktop :hover rule on touch (sticky hover would
     translate the submenu -50% on X and push the links off-screen). */
  nav.site-nav .nav-links > li:hover .nav-dropdown,
  nav.site-nav .nav-links > li:focus-within .nav-dropdown,
  nav.site-nav .nav-links > li.expanded .nav-dropdown {
    transform: none !important;
    left: auto;
    opacity: 1;
  }
  nav.site-nav .nav-links > li.expanded .nav-dropdown {
    max-height: 240px;
    padding: 0 0 16px 16px;
  }
  nav.site-nav .nav-dropdown li { border: none; padding: 0; }
  nav.site-nav .nav-dropdown a {
    font-family: var(--sans);
    font-weight: 500;
    font-size: 14px;
    letter-spacing: 0.16em;
    color: var(--ink-soft);
    text-transform: uppercase;
    padding: 10px 0;
    display: inline-block;
    text-decoration: none;
  }
  nav.site-nav .nav-dropdown a:hover { color: var(--red); }

  /* Injected mobile CTA at end of menu */
  nav.site-nav .nav-mobile-cta { border-bottom: none; padding-top: 30px; }
  nav.site-nav .nav-mobile-cta a {
    display: block !important;
    background: var(--red);
    color: var(--ink) !important;
    text-align: center;
    padding: 18px;
    font-family: var(--sans);
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    text-decoration: none;
    border-radius: 0;
  }

  /* Lock body scroll behind open menu */
  body.menu-open { overflow: hidden; touch-action: none; }
}


/* ── MENU MODAL (Dinner Show menu opens on click) ── */
.menu-modal {
  position: fixed; inset: 0;
  z-index: 9000;
  opacity: 0;
  transition: opacity 0.35s var(--ease-out);
  pointer-events: none;
}
.menu-modal.menu-modal-show { opacity: 1; pointer-events: auto; }
.menu-modal-overlay {
  position: absolute; inset: 0;
  background: rgba(11, 15, 34, 0.85);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
}
.menu-modal-content {
  position: relative;
  width: min(960px, calc(100vw - 32px));
  max-height: calc(100dvh - 64px);
  margin: 32px auto;
  background: var(--bg-warm);
  border: 1px solid var(--ink-line-strong);
  overflow: hidden;
  display: flex; flex-direction: column;
  transform: translateY(20px) scale(0.98);
  transition: transform 0.4s var(--ease-out);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55);
}
.menu-modal.menu-modal-show .menu-modal-content { transform: translateY(0) scale(1); }
.menu-modal-close {
  position: absolute; top: 14px; right: 16px;
  z-index: 2;
  width: 44px; height: 44px;
  background: transparent; border: none;
  color: var(--ink); font-size: 30px; line-height: 1;
  cursor: pointer; padding: 0;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--sans); font-weight: 200;
  transition: color 0.25s, transform 0.25s var(--spring);
}
.menu-modal-close:hover { color: var(--red); transform: scale(1.1); }
.menu-modal-inner {
  overflow-y: auto;
  padding: 60px 50px 50px;
  -webkit-overflow-scrolling: touch;
}
.menu-modal-head { margin-bottom: 36px; }
.menu-modal-inner > div[style*="display:grid"] {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 24px !important;
}
@media (max-width: 720px) {
  .menu-modal-content { width: calc(100vw - 16px); margin: 8px auto; max-height: calc(100dvh - 16px); }
  .menu-modal-inner { padding: 50px 24px 36px; }
  .menu-modal-inner > div[style*="display:grid"] { grid-template-columns: 1fr !important; gap: 14px !important; }
  .menu-modal-head { margin-bottom: 22px; }
}

/* ── COOKIE BANNER — new layout (Accept primary, Adjust secondary) ── */
#cookie-banner .cookie-actions {
  display: flex; gap: 16px; justify-content: flex-end; align-items: center;
}
.cookie-link {
  background: transparent; border: none; cursor: pointer;
  color: var(--ink-soft);
  font-family: var(--sans); font-weight: 500; font-size: 12px;
  letter-spacing: 0.08em; text-transform: none;
  padding: 8px 0;
  border-bottom: 1px solid var(--ink-line-strong);
  transition: color 0.25s, border-color 0.25s;
}
.cookie-link:hover { color: var(--ink); border-color: var(--ink); }
.cookie-link-tiny { font-size: 11px; opacity: 0.7; padding: 6px 0; border-bottom: 1px dashed var(--ink-line); }
.cookie-link-tiny:hover { opacity: 1; }

#cookie-banner .cookie-prefs { display: none; }
#cookie-banner.cookie-expanded { max-width: 640px; }
#cookie-banner.cookie-expanded .cookie-prefs { display: block; }
#cookie-banner.cookie-expanded .cookie-inner[data-view="default"] { display: none; }
.cookie-prefs-list {
  list-style: none; padding: 0; margin: 14px 0 18px;
  display: flex; flex-direction: column; gap: 12px;
  border-top: 1px solid var(--ink-line);
  padding-top: 14px;
}
.cookie-pref {
  display: flex; align-items: center; justify-content: space-between;
  gap: 14px;
  padding: 6px 0;
}
.cookie-pref-label {
  font-family: var(--sans); font-size: 12.5px; line-height: 1.5; color: var(--ink-soft);
  flex: 1;
}
.cookie-pref-label strong { color: var(--ink); font-weight: 600; font-size: 13px; }
.cookie-pref-label small { font-size: 11.5px; color: var(--ink-mute); display: block; margin-top: 2px; }
.cookie-pref-label em { font-style: normal; color: var(--ink-mute); font-size: 11px; margin-left: 4px; }
.cookie-pref-toggle.disabled {
  font-family: var(--sans); font-size: 11px; font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--gold); padding: 6px 12px; border: 1px solid var(--gold); opacity: 0.6;
  cursor: not-allowed;
}
/* Toggle switch */
.cookie-toggle {
  position: relative; display: inline-block;
  width: 44px; height: 24px; cursor: pointer;
  flex-shrink: 0;
}
.cookie-toggle input { opacity: 0; width: 0; height: 0; }
.cookie-toggle span {
  position: absolute; inset: 0;
  background: rgba(244,236,220,0.18);
  transition: 0.25s;
  border-radius: 12px;
}
.cookie-toggle span::before {
  content: '';
  position: absolute; height: 18px; width: 18px;
  left: 3px; top: 3px;
  background: var(--ink);
  transition: 0.25s var(--spring);
  border-radius: 50%;
}
.cookie-toggle input:checked + span { background: var(--red); }
.cookie-toggle input:checked + span::before { transform: translateX(20px); }

/* ─────────────────────────────────────────────────────────────
   MOBILE POLISH PASS — readability, tap targets, spacing, perf
   Authoritative mobile rules. Loaded last so they win cleanly.
   ───────────────────────────────────────────────────────────── */

/* Safe-area for notch / Dynamic Island */
@supports (padding: max(0px)) {
  nav.site-nav { padding-top: max(16px, env(safe-area-inset-top)) !important; }
  nav.site-nav.mobile-open .nav-links {
    padding-top: calc(92px + env(safe-area-inset-top));
    padding-bottom: max(32px, env(safe-area-inset-bottom));
  }
  .hero-bottom { padding-bottom: max(24px, env(safe-area-inset-bottom)); }
}

/* Prevent iOS auto-zoom on form inputs (needs ≥16px) */
@media (max-width: 980px) {
  .field input, .field select, .field textarea,
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="number"], input[type="date"], textarea, select {
    font-size: 16px !important;
    padding: 14px 14px;
    min-height: 48px;
  }
  .field textarea { min-height: 120px; }
  .field label { font-size: 12px; letter-spacing: 0.16em; }
}

/* Tap-target floor: every interactive control hits ≥44px */
@media (max-width: 980px) {
  .btn { min-height: 48px; padding: 14px 22px; font-size: 12px; }
  .nav-cta { min-height: 44px; }
  a, button { -webkit-tap-highlight-color: rgba(152,31,35,0.18); }
}

/* Body type floors — nothing under 14px */
@media (max-width: 980px) {
  body { font-size: 15px; line-height: 1.62; }
  .split-body, .card-desc, .pg-desc, .package-desc,
  .ph-body, .private-body, .info-item p, .terms-v {
    font-size: 15px !important; line-height: 1.65 !important;
  }
  .legal-page p, .legal-page li { font-size: 15.5px !important; line-height: 1.72 !important; }
}

/* Hero — tighter on phone, full-width stacked CTAs already exist */
@media (max-width: 480px) {
  .hero { min-height: 100svh; }
  .hero-content { padding-top: 0; padding-bottom: 0; }
  .hero-actions { margin-top: 24px; max-width: 320px; gap: 12px; }
  .hero-actions .btn { min-height: 52px; font-size: 12.5px; }
  .hero-tagline-brand { font-size: 12px; margin-top: 14px; }
}

/* Split images — cap height so copy stays in view */
@media (max-width: 980px) {
  .split-img-wrap { min-height: 0 !important; max-height: 56vh; aspect-ratio: 4 / 5; }
  .split-img-wrap img.split-img { width: 100%; height: 100%; object-fit: cover; }
  .split-text { padding: 56px var(--pad-x) !important; }
}
@media (max-width: 480px) {
  .split-img-wrap { aspect-ratio: 4 / 5; max-height: 480px; }
  .split-text { padding: 48px var(--pad-x) !important; }
}

/* Phone: split image full-bleed edge-to-edge */
@media (max-width: 480px) {
  .split { padding-left: 0 !important; padding-right: 0 !important; }
  .split-grid { margin-left: 0 !important; margin-right: 0 !important; }
  .split-img-wrap { margin-left: 0 !important; margin-right: 0 !important; width: 100%; max-width: none; }
}

/* Standardize section padding scale on phone */
@media (max-width: 480px) {
  .programme-block, .info-section, .gallery, .cards,
  .venues, .packages, .extras, .proposal, .terms,
  .floor-section, .testimonials, .final {
    padding: 64px var(--pad-x) !important;
  }
  .intro { padding: 48px var(--pad-x) !important; }
}

/* Programme rows — clean stacked card */
@media (max-width: 480px) {
  .pg-row {
    grid-template-columns: 1fr !important;
    gap: 6px !important;
    padding: 18px 0 !important;
  }
  .pg-price { justify-self: start !important; grid-column: 1 !important; font-size: 15px; }
  .pg-cta { justify-self: start !important; grid-column: 1 !important; margin-top: 8px; }
  .pg-title { font-size: 17px; }
}

/* Floor SVG: prevent overflow */
@media (max-width: 980px) {
  .floor-svg { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .floor-svg svg { max-width: 100%; height: auto; }
}

/* Gallery: 1-col on very small screens */
@media (max-width: 360px) {
  .gallery-grid { grid-template-columns: 1fr !important; gap: 6px !important; }
}

/* Cards grid: more breathing room, larger tap area */
@media (max-width: 480px) {
  .cards-grid { gap: 18px !important; }
  .card { padding: 0; }
  .card-name { font-size: 22px; }
  .card-link { padding: 12px 0; font-size: 12px; }
}

/* Footer: tighter columns */
@media (max-width: 480px) {
  .footer-inner { gap: 32px !important; padding-bottom: 24px; }
  .footer-bottom { gap: 16px; padding-top: 24px; font-size: 11px; }
}

/* Section titles — readable but punchy */
@media (max-width: 480px) {
  .section-title { font-size: clamp(36px, 9vw, 56px) !important; line-height: 1; }
  .section-title-sm { font-size: clamp(24px, 6vw, 32px) !important; line-height: 1.1; }
  .page-hero-title { font-size: clamp(40px, 10vw, 64px) !important; line-height: 1; }
}

/* Sticky bottom CTA bar (used on /tickets and /dinner-show) */
.mobile-sticky-cta {
  display: none;
}
@media (max-width: 720px) {
  body.has-sticky-cta { padding-bottom: 76px; }
  .mobile-sticky-cta {
    display: flex;
    position: fixed;
    left: 0; right: 0;
    bottom: 0;
    z-index: 180;
    padding: 12px 16px max(12px, env(safe-area-inset-bottom));
    background: rgba(11, 15, 34, 0.94);
    backdrop-filter: blur(14px) saturate(140%);
    -webkit-backdrop-filter: blur(14px) saturate(140%);
    border-top: 1px solid var(--ink-line);
    gap: 10px;
  }
  .mobile-sticky-cta .btn {
    flex: 1;
    justify-content: center;
    min-height: 52px;
    font-size: 12.5px;
  }
}

/* Image rendering — never overflow on phone */
@media (max-width: 980px) {
  img, video { max-width: 100%; height: auto; }
  .hero-video { height: 100% !important; width: 100% !important; }
  pre, code, table { max-width: 100%; overflow-x: auto; }
}

/* Reduce motion on slow connections / saver mode */
@media (prefers-reduced-data: reduce) {
  .hero-video { display: none !important; }
  .hero-bg-img { opacity: 1 !important; }
}

/* Page fade-to-black transition (used for widget pages that need full reload) */
#page-fade-overlay {
  position: fixed;
  inset: 0;
  background: #000;
  opacity: 0;
  pointer-events: none;
  z-index: 99999;
  transition: opacity 380ms ease;
}
#page-fade-overlay.is-active {
  opacity: 1;
  pointer-events: auto;
}
@media (prefers-reduced-motion: reduce) {
  #page-fade-overlay { transition: opacity 120ms linear; }
}

/* Brand logos grid (private hire) */
.client-logos-block {
  margin-top: 60px;
  text-align: center;
}
.client-logos-heading {
  font-family: var(--sans);
  font-size: 12.5px;
  color: var(--ink-mute);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  margin-bottom: 28px;
}
.brand-marquee {
  position: relative;
  overflow: hidden;
  width: 100%;
  max-width: 880px;
  margin: 0 auto;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}
.brand-track {
  display: grid;
  grid-template-columns: repeat(7, minmax(120px, 1fr));
  column-gap: clamp(22px, 3.2vw, 58px);
  row-gap: 34px;
  align-items: center;
  justify-items: center;
  width: 100%;
}
.brand-track--marquee {
  display: flex;
  flex-wrap: nowrap;
  width: max-content;
  column-gap: 56px;
  row-gap: 0;
  justify-items: unset;
  animation: brandScroll 60s linear infinite;
  will-change: transform;
}
.brand-marquee:hover .brand-track--marquee { animation-play-state: paused; }
.brand-track--marquee .brand-logo {
  width: auto;
  flex: 0 0 auto;
  min-width: 120px;
  padding: 0 4px;
}
.brand-logo {
  width: 100%;
  height: 54px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  color: color-mix(in oklab, var(--ink-soft, #cbd1dc) 82%, transparent);
}
.brand-logo img {
  max-height: 44px;
  max-width: 140px;
  width: auto;
  height: auto;
  object-fit: contain;
  opacity: 0.78;
  transition: opacity 220ms ease;
}
.brand-logo:hover img { opacity: 1; }
.brand-logo svg {
  display: block;
  fill: currentColor;
  stroke: currentColor;
  opacity: 0.78;
  transition: opacity 220ms ease;
}
.brand-logo:hover svg { opacity: 1; }
.brand-logo span {
  font-family: var(--display, sans-serif);
  font-size: 14.5px;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: currentColor;
  opacity: 0.78;
  white-space: nowrap;
}
.brand-logo:hover span { opacity: 1; }
.brand-logo--wide span { font-size: 13.5px; }
.brand-logo--long span { font-size: 12.5px; }
.brand-spotify svg { width: 48px; height: 48px; stroke-width: 4.2; }
.brand-spotify path { fill: none; stroke-linecap: round; }
.brand-netflix span { font-size: 54px; font-weight: 800; letter-spacing: -0.05em; transform: scaleX(0.62); }
.brand-accenture span { font-family: var(--sans); font-size: 72px; font-weight: 800; line-height: 0.6; letter-spacing: -0.08em; transform: scaleX(1.25); }
.brand-uniqlo span { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; background: currentColor; color: var(--bg, #141821); font-size: 16px; font-weight: 900; line-height: 0.92; letter-spacing: 0.08em; opacity: 0.86; }
.brand-nike svg { width: 76px; height: 34px; }
.brand-bunq span { font-family: var(--sans); font-size: 21px; font-weight: 500; letter-spacing: 0.02em; text-transform: lowercase; }
.brand-redbull svg { width: 72px; height: 34px; }
@keyframes brandScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .brand-track,
  .brand-track--marquee { animation: none; }
}
@media (max-width: 980px) {
  .brand-track { grid-template-columns: repeat(4, minmax(110px, 1fr)); }
  .brand-marquee { max-width: 680px; }
  .brand-track--marquee { column-gap: 42px; }
}
@media (max-width: 640px) {
  .brand-track {
    grid-template-columns: repeat(2, minmax(120px, 1fr));
    column-gap: 18px;
    row-gap: 26px;
  }
  .brand-marquee { max-width: 100%; }
  .brand-track--marquee { column-gap: 30px; }
  .brand-track--marquee .brand-logo { min-width: 100px; }
  .brand-logo { height: 48px; }
  .brand-logo span { font-size: 12.5px; }
  .brand-logo--wide span,
  .brand-logo--long span { font-size: 11.5px; }
  .brand-netflix span { font-size: 48px; }
  .brand-accenture span { font-size: 62px; }
  .brand-spotify svg,
  .brand-uniqlo span { width: 42px; height: 42px; }
}

/* Private hire — hero CTAs */
.page-hero-ctas{display:flex;gap:14px;flex-wrap:wrap;margin-top:28px;justify-content:center}
.page-hero-ctas .btn{min-width:180px;justify-content:center}

/* Private hire — sticky CTA bar */
.ph-sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:60;transform:translateY(110%);transition:transform 320ms cubic-bezier(.2,.8,.2,1);background:color-mix(in oklab, #0b0b10 88%, transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid rgba(255,255,255,.08)}
.ph-sticky-cta.is-visible{transform:translateY(0)}
.ph-sticky-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 22px}
.ph-sticky-text{display:flex;flex-direction:column;line-height:1.2;color:#f5efe3;font-family:var(--sans);font-size:14px;min-width:0}
.ph-sticky-text strong{font-weight:600;letter-spacing:.01em}
.ph-sticky-text span{color:rgba(245,239,227,.7);font-size:12.5px;margin-top:2px}
.ph-sticky-actions{display:flex;gap:10px;flex-shrink:0}
.btn.btn-sm{padding:10px 16px;font-size:13px}
@media (max-width:640px){
  .ph-sticky-text span{display:none}
  .ph-sticky-inner{padding:10px 14px;gap:10px}
  .ph-sticky-actions .btn{min-width:0}
}
@media (prefers-reduced-motion: reduce){
  .ph-sticky-cta{transition:none}
}
/* Reserve space at the bottom of the page so the sticky CTA bar
   never covers the footer content on the private-hire page. */
body:has(.ph-sticky-cta) .site-footer{padding-bottom:110px}
@media (max-width:640px){
  body:has(.ph-sticky-cta) .site-footer{padding-bottom:130px}
}
