/* Tequila Town · "Surreal nostalgia, broadcast live"
   Day (sun-bleached Jalisco collage) → through the TV → night (the venue in Miami). */

@font-face { font-family: 'TT'; src: url('../assets/fonts/tequilatown.ttf') format('truetype'); font-display: swap; }
@font-face { font-family: 'Qut'; src: url('../assets/fonts/qutntorn.ttf') format('truetype'); font-display: swap; }

:root {
  --night: #0d0a08;
  --night-2: #17110c;
  --cream: #f3e6c8;
  --cream-2: rgba(243, 230, 200, .74);
  --cream-3: rgba(243, 230, 200, .4);
  --paper: #e9dcbf;
  --ink: #24170e;
  --ink-2: rgba(36, 23, 14, .74);
  --gold: #ffce64;
  --amber: #d19c00;
  --sunset: #e66823;
  --clay: #ae3d00;
  --agave: #456b4d;
  --agave-l: #c7dfb8;
  --rose: #bf7a84;
  --tequila-green: #005d34;
  --forest: #0f251a;

  --f-tt: 'TT', 'Arial Narrow', sans-serif;
  --f-qut: 'Qut', 'TT', Impact, sans-serif;
  --f-serif: 'Newsreader', Georgia, serif;

  --s1: 8px; --s2: 16px; --s3: 24px; --s4: 32px; --s5: 48px; --s6: 64px; --s7: 96px; --s8: 128px; --s9: 192px;
  --gutter: clamp(16px, 4vw, 64px);
  --header-h: 76px;
  --deckle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M0.00 0.25 L1.43 0.94 L2.86 0.47 L4.29 0.41 L5.71 0.80 L7.14 0.65 L8.57 0.50 L10.00 0.81 L11.43 0.82 L12.86 0.66 L14.29 0.76 L15.71 0.73 L17.14 0.86 L18.57 0.43 L20.00 0.53 L21.43 0.78 L22.86 0.77 L24.29 0.29 L25.71 0.76 L27.14 0.60 L28.57 0.94 L30.00 0.86 L31.43 0.34 L32.86 0.63 L34.29 0.94 L35.71 0.77 L37.14 0.73 L38.57 0.68 L40.00 0.93 L41.43 0.93 L42.86 0.53 L44.29 0.50 L45.71 0.88 L47.14 0.50 L48.57 0.36 L50.00 0.47 L51.43 0.57 L52.86 0.47 L54.29 0.95 L55.71 0.67 L57.14 0.80 L58.57 0.91 L60.00 0.29 L61.43 0.46 L62.86 0.67 L64.29 0.63 L65.71 0.57 L67.14 0.39 L68.57 0.93 L70.00 0.29 L71.43 0.52 L72.86 0.51 L74.29 0.75 L75.71 0.94 L77.14 0.64 L78.57 0.37 L80.00 0.55 L81.43 0.46 L82.86 0.52 L84.29 0.57 L85.71 0.50 L87.14 0.65 L88.57 0.71 L90.00 0.42 L91.43 0.93 L92.86 0.59 L94.29 0.90 L95.71 0.73 L97.14 0.73 L98.57 0.64 L100.00 0.63 L99.23 0.00 L99.05 1.79 L99.45 3.57 L99.22 5.36 L99.56 7.14 L99.31 8.93 L99.49 10.71 L99.50 12.50 L99.46 14.29 L99.15 16.07 L99.09 17.86 L99.67 19.64 L99.14 21.43 L99.69 23.21 L99.44 25.00 L99.63 26.79 L99.69 28.57 L99.00 30.36 L99.58 32.14 L99.28 33.93 L99.64 35.71 L99.41 37.50 L99.31 39.29 L99.65 41.07 L99.06 42.86 L99.09 44.64 L99.08 46.43 L99.09 48.21 L99.07 50.00 L99.18 51.79 L99.54 53.57 L99.74 55.36 L99.56 57.14 L99.69 58.93 L99.75 60.71 L99.29 62.50 L99.58 64.29 L99.19 66.07 L99.38 67.86 L99.23 69.64 L99.57 71.43 L99.09 73.21 L99.57 75.00 L99.47 76.79 L99.08 78.57 L99.66 80.36 L99.38 82.14 L99.75 83.93 L99.07 85.71 L99.27 87.50 L99.06 89.29 L99.73 91.07 L99.07 92.86 L99.61 94.64 L99.02 96.43 L99.33 98.21 L99.24 100.00 L100.00 99.55 L98.57 99.58 L97.14 99.59 L95.71 99.33 L94.29 99.71 L92.86 99.17 L91.43 99.22 L90.00 99.21 L88.57 99.38 L87.14 99.73 L85.71 99.67 L84.29 99.06 L82.86 99.65 L81.43 99.23 L80.00 99.08 L78.57 99.72 L77.14 99.09 L75.71 99.10 L74.29 99.01 L72.86 99.03 L71.43 99.18 L70.00 99.44 L68.57 99.56 L67.14 99.20 L65.71 99.09 L64.29 99.45 L62.86 99.57 L61.43 99.45 L60.00 99.08 L58.57 99.33 L57.14 99.49 L55.71 99.28 L54.29 99.20 L52.86 99.50 L51.43 99.21 L50.00 99.43 L48.57 99.60 L47.14 99.52 L45.71 99.01 L44.29 99.00 L42.86 99.28 L41.43 99.10 L40.00 99.06 L38.57 99.60 L37.14 99.27 L35.71 99.65 L34.29 99.38 L32.86 99.33 L31.43 99.17 L30.00 99.04 L28.57 99.39 L27.14 99.61 L25.71 99.41 L24.29 99.63 L22.86 99.25 L21.43 99.36 L20.00 99.33 L18.57 99.37 L17.14 99.18 L15.71 99.48 L14.29 99.19 L12.86 99.73 L11.43 99.53 L10.00 99.34 L8.57 99.60 L7.14 99.21 L5.71 99.53 L4.29 99.57 L2.86 99.26 L1.43 99.43 L0.00 99.69 L0.83 100.00 L0.87 98.21 L0.94 96.43 L0.93 94.64 L0.76 92.86 L0.97 91.07 L0.27 89.29 L0.82 87.50 L0.70 85.71 L0.79 83.93 L0.92 82.14 L0.28 80.36 L0.35 78.57 L0.31 76.79 L0.33 75.00 L0.31 73.21 L0.26 71.43 L0.70 69.64 L0.96 67.86 L0.39 66.07 L0.35 64.29 L0.40 62.50 L0.76 60.71 L0.43 58.93 L0.59 57.14 L1.00 55.36 L0.57 53.57 L0.76 51.79 L0.83 50.00 L0.55 48.21 L0.56 46.43 L0.30 44.64 L0.42 42.86 L0.86 41.07 L0.98 39.29 L0.36 37.50 L0.94 35.71 L0.63 33.93 L0.34 32.14 L0.41 30.36 L0.70 28.57 L0.38 26.79 L0.31 25.00 L0.45 23.21 L0.73 21.43 L0.67 19.64 L0.61 17.86 L1.00 16.07 L0.31 14.29 L0.56 12.50 L0.49 10.71 L0.25 8.93 L0.25 7.14 L0.56 5.36 L0.32 3.57 L0.43 1.79 L0.94 0.00 Z' fill='%23000'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --ease-in-out: cubic-bezier(.65, 0, .35, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; overflow: clip; }
body {
  margin: 0;
  background: var(--night);
  color: var(--cream);
  font-family: var(--f-serif);
  font-size: 18px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
body.is-gated { overflow: hidden; overflow: clip; }
img, video, canvas { display: block; max-width: 100%; }
a { color: inherit; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
figure { margin: 0; }
h1, h2, h3, p { margin: 0; }
:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; border-radius: 2px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; overflow: clip; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; left: var(--s2); top: -60px; z-index: 200; background: var(--gold); color: var(--ink); padding: 10px 16px; font-family: var(--f-tt); letter-spacing: .06em; }
.skip:focus { top: var(--s2); }

/* film grain over everything */
body::after {
  content: ''; position: fixed; inset: 0; z-index: 90; pointer-events: none; opacity: .09; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .5 0 0 0 0 .5 0 0 0 0 .5 0 0 0 1.4 -.2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

.wrap { width: 100%; max-width: 1560px; margin: 0 auto; padding: 0 var(--gutter); }
.eyebrow, .label { font-family: var(--f-tt); font-size: 14px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.display { font-family: var(--f-tt); font-weight: 400; font-size: clamp(40px, 5.2vw, 92px); line-height: .95; letter-spacing: .01em; text-transform: uppercase; }
.lede { font-size: clamp(19px, 1.5vw, 23px); line-height: 1.5; color: var(--cream-2); max-width: 40ch; }

.logo-mark {
  display: inline-block; aspect-ratio: 5320 / 591; width: 172px; background: currentColor;
  -webkit-mask: url('../assets/img/logo-h.svg') center / contain no-repeat;
          mask: url('../assets/img/logo-h.svg') center / contain no-repeat;
}

/* ───────────────── Header ───────────────── */
.site-header {
  position: fixed; inset: 0 0 auto; z-index: 60; height: var(--header-h);
  display: flex; align-items: center; gap: var(--s4); padding: 0 var(--gutter);
  color: var(--cream); transition: color .4s var(--ease-out), transform .5s var(--ease-out);
}
.site-header::before {
  content: ''; position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity .4s;
  background: linear-gradient(to bottom, rgba(13, 10, 8, .55), rgba(13, 10, 8, 0));
}
.site-header.is-scrolled::before { opacity: 1; }
.site-header[data-tone='dark'] { color: var(--ink); }
.site-header[data-tone='dark']::before { opacity: 0; }
.brand { display: inline-flex; filter: drop-shadow(0 1px 8px rgba(0, 0, 0, .25)); }
.site-header[data-tone='dark'] .brand { filter: none; }
.nav { display: flex; gap: var(--s4); margin-left: auto; }
.nav a, .header-partners, .header-ticket {
  font-family: var(--f-tt); font-size: 15px; letter-spacing: .1em; text-transform: uppercase; text-decoration: none;
}
.nav a, .header-partners { position: relative; padding: 6px 0; text-shadow: 0 1px 10px rgba(0, 0, 0, .25); }
.nav a::after, .header-partners::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform .35s var(--ease-out); }
.nav a:hover::after, .nav a:focus-visible::after, .header-partners:hover::after, .header-partners:focus-visible::after { transform: scaleX(1); transform-origin: left; }
.header-ticket {
  padding: 11px 18px 10px; background: var(--gold); color: var(--ink); border-radius: 2px;
  transition: background .25s, transform .25s var(--ease-out);
}
.header-ticket:hover { background: var(--cream); transform: translateY(-1px); }
.mobile-menu { display: none; }

/* ───────────────── Age gate ───────────────── */
.gate {
  position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; padding: var(--s3);
  background: radial-gradient(120% 90% at 50% 30%, #2a1d12 0%, var(--night) 70%);
  overflow-y: auto;
}
.gate[hidden] { display: none; }
.gate__card {
  position: relative; width: min(100%, 720px); padding: clamp(32px, 6vw, 64px) clamp(20px, 5vw, 56px) clamp(28px, 4vw, 40px);
  color: var(--ink); text-align: center;
  background: var(--paper) url('../assets/img/paper.webp') center / cover;
  box-shadow: 0 40px 80px -20px rgba(0, 0, 0, .7), 0 2px 0 rgba(255, 255, 255, .3) inset;
  -webkit-mask: var(--deckle); mask: var(--deckle);
  --deckle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M0.00 0.25 L1.43 0.94 L2.86 0.47 L4.29 0.41 L5.71 0.80 L7.14 0.65 L8.57 0.50 L10.00 0.81 L11.43 0.82 L12.86 0.66 L14.29 0.76 L15.71 0.73 L17.14 0.86 L18.57 0.43 L20.00 0.53 L21.43 0.78 L22.86 0.77 L24.29 0.29 L25.71 0.76 L27.14 0.60 L28.57 0.94 L30.00 0.86 L31.43 0.34 L32.86 0.63 L34.29 0.94 L35.71 0.77 L37.14 0.73 L38.57 0.68 L40.00 0.93 L41.43 0.93 L42.86 0.53 L44.29 0.50 L45.71 0.88 L47.14 0.50 L48.57 0.36 L50.00 0.47 L51.43 0.57 L52.86 0.47 L54.29 0.95 L55.71 0.67 L57.14 0.80 L58.57 0.91 L60.00 0.29 L61.43 0.46 L62.86 0.67 L64.29 0.63 L65.71 0.57 L67.14 0.39 L68.57 0.93 L70.00 0.29 L71.43 0.52 L72.86 0.51 L74.29 0.75 L75.71 0.94 L77.14 0.64 L78.57 0.37 L80.00 0.55 L81.43 0.46 L82.86 0.52 L84.29 0.57 L85.71 0.50 L87.14 0.65 L88.57 0.71 L90.00 0.42 L91.43 0.93 L92.86 0.59 L94.29 0.90 L95.71 0.73 L97.14 0.73 L98.57 0.64 L100.00 0.63 L99.23 0.00 L99.05 1.79 L99.45 3.57 L99.22 5.36 L99.56 7.14 L99.31 8.93 L99.49 10.71 L99.50 12.50 L99.46 14.29 L99.15 16.07 L99.09 17.86 L99.67 19.64 L99.14 21.43 L99.69 23.21 L99.44 25.00 L99.63 26.79 L99.69 28.57 L99.00 30.36 L99.58 32.14 L99.28 33.93 L99.64 35.71 L99.41 37.50 L99.31 39.29 L99.65 41.07 L99.06 42.86 L99.09 44.64 L99.08 46.43 L99.09 48.21 L99.07 50.00 L99.18 51.79 L99.54 53.57 L99.74 55.36 L99.56 57.14 L99.69 58.93 L99.75 60.71 L99.29 62.50 L99.58 64.29 L99.19 66.07 L99.38 67.86 L99.23 69.64 L99.57 71.43 L99.09 73.21 L99.57 75.00 L99.47 76.79 L99.08 78.57 L99.66 80.36 L99.38 82.14 L99.75 83.93 L99.07 85.71 L99.27 87.50 L99.06 89.29 L99.73 91.07 L99.07 92.86 L99.61 94.64 L99.02 96.43 L99.33 98.21 L99.24 100.00 L100.00 99.55 L98.57 99.58 L97.14 99.59 L95.71 99.33 L94.29 99.71 L92.86 99.17 L91.43 99.22 L90.00 99.21 L88.57 99.38 L87.14 99.73 L85.71 99.67 L84.29 99.06 L82.86 99.65 L81.43 99.23 L80.00 99.08 L78.57 99.72 L77.14 99.09 L75.71 99.10 L74.29 99.01 L72.86 99.03 L71.43 99.18 L70.00 99.44 L68.57 99.56 L67.14 99.20 L65.71 99.09 L64.29 99.45 L62.86 99.57 L61.43 99.45 L60.00 99.08 L58.57 99.33 L57.14 99.49 L55.71 99.28 L54.29 99.20 L52.86 99.50 L51.43 99.21 L50.00 99.43 L48.57 99.60 L47.14 99.52 L45.71 99.01 L44.29 99.00 L42.86 99.28 L41.43 99.10 L40.00 99.06 L38.57 99.60 L37.14 99.27 L35.71 99.65 L34.29 99.38 L32.86 99.33 L31.43 99.17 L30.00 99.04 L28.57 99.39 L27.14 99.61 L25.71 99.41 L24.29 99.63 L22.86 99.25 L21.43 99.36 L20.00 99.33 L18.57 99.37 L17.14 99.18 L15.71 99.48 L14.29 99.19 L12.86 99.73 L11.43 99.53 L10.00 99.34 L8.57 99.60 L7.14 99.21 L5.71 99.53 L4.29 99.57 L2.86 99.26 L1.43 99.43 L0.00 99.69 L0.83 100.00 L0.87 98.21 L0.94 96.43 L0.93 94.64 L0.76 92.86 L0.97 91.07 L0.27 89.29 L0.82 87.50 L0.70 85.71 L0.79 83.93 L0.92 82.14 L0.28 80.36 L0.35 78.57 L0.31 76.79 L0.33 75.00 L0.31 73.21 L0.26 71.43 L0.70 69.64 L0.96 67.86 L0.39 66.07 L0.35 64.29 L0.40 62.50 L0.76 60.71 L0.43 58.93 L0.59 57.14 L1.00 55.36 L0.57 53.57 L0.76 51.79 L0.83 50.00 L0.55 48.21 L0.56 46.43 L0.30 44.64 L0.42 42.86 L0.86 41.07 L0.98 39.29 L0.36 37.50 L0.94 35.71 L0.63 33.93 L0.34 32.14 L0.41 30.36 L0.70 28.57 L0.38 26.79 L0.31 25.00 L0.45 23.21 L0.73 21.43 L0.67 19.64 L0.61 17.86 L1.00 16.07 L0.31 14.29 L0.56 12.50 L0.49 10.71 L0.25 8.93 L0.25 7.14 L0.56 5.36 L0.32 3.57 L0.43 1.79 L0.94 0.00 Z' fill='%23000'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
}
.gate__kicker { font-family: var(--f-serif); font-style: italic; font-size: 20px; color: var(--ink-2); }
.logo-mark--gate { width: min(100%, 520px); margin: 10px auto 12px; color: var(--ink); display: block; }
.gate__sub { font-family: var(--f-tt); letter-spacing: .16em; text-transform: uppercase; font-size: 14px; color: var(--clay); }
.gate__rule { height: 1px; margin: var(--s4) auto var(--s3); width: 64%; background: repeating-linear-gradient(90deg, var(--ink-2) 0 6px, transparent 6px 11px); }
.gate__title { font-family: var(--f-tt); font-weight: 400; font-size: clamp(18px, 2vw, 22px); letter-spacing: .08em; text-transform: uppercase; }
.gate__readout { font-family: var(--f-qut); font-size: clamp(72px, 12vw, 128px); line-height: 1; margin: 6px 0 2px; color: var(--clay); font-variant-numeric: tabular-nums; }
.gate__hint { font-size: 15px; font-style: italic; color: var(--ink-2); margin-top: var(--s2); min-height: 1.5em; }
.gate__hint.is-warn { color: var(--clay); font-style: normal; }
.gate__enter {
  margin-top: var(--s3); padding: 16px 30px 15px; min-width: 260px; background: var(--ink); color: var(--cream);
  font-family: var(--f-tt); font-size: 17px; letter-spacing: .12em; text-transform: uppercase; border-radius: 2px;
  transition: background .25s, opacity .25s, transform .25s var(--ease-out);
}
.gate__enter:not(:disabled):hover { background: var(--clay); transform: translateY(-2px); }
.gate__enter:disabled { opacity: .3; cursor: not-allowed; }
.gate__legal { margin-top: var(--s3); font-size: 13px; color: var(--ink-2); }

/* Tuning band (age gate + mobile channel tuner) */
.tuner { position: relative; height: 76px; overflow: hidden; overflow: clip; touch-action: pan-y; cursor: grab; user-select: none; -webkit-user-select: none; }
.tuner:active { cursor: grabbing; }
.tuner::before, .tuner::after { content: ''; position: absolute; top: 0; bottom: 0; width: 18%; z-index: 2; pointer-events: none; }
.tuner__band { position: absolute; left: 50%; top: 0; height: 100%; will-change: transform; }
.tuner__tick { position: absolute; bottom: 22px; width: 1px; height: 12px; background: currentColor; opacity: .45; }
.tuner__tick.is-mid { height: 20px; opacity: .65; }
.tuner__tick.is-major { height: 30px; opacity: 1; }
.tuner__label { position: absolute; bottom: 0; transform: translateX(-50%); font-family: var(--f-tt); font-size: 13px; letter-spacing: .06em; opacity: .8; white-space: nowrap; }
.tuner__needle { position: absolute; left: 50%; top: 4px; bottom: 18px; width: 2px; margin-left: -1px; background: var(--sunset); z-index: 3; box-shadow: 0 0 10px rgba(230, 104, 35, .7); }
.tuner__needle::before { content: ''; position: absolute; top: -4px; left: -5px; border: 6px solid transparent; border-top: 8px solid var(--sunset); }
.tuner--age { color: var(--ink); margin: 0 auto; max-width: 560px;
  -webkit-mask: linear-gradient(90deg, transparent, #000 20%, #000 80%, transparent); mask: linear-gradient(90deg, transparent, #000 20%, #000 80%, transparent); }

/* ───────────────── 1 · Broadcast ───────────────── */
.broadcast { position: relative; height: 100svh; }
.broadcast__stage { position: relative; height: 100svh; overflow: hidden; overflow: clip; background: #2d6fa8; }
.day { position: absolute; inset: 0; }
.day__sky { width: 100%; height: 100%; object-fit: cover; object-position: 50% 62%; transform: scale(1.08); will-change: transform; }
.day::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(16, 40, 70, .38), rgba(16, 40, 70, 0) 30%, rgba(13, 10, 8, 0) 70%, rgba(13, 10, 8, .35)); }

.broadcast__copy { position: absolute; left: var(--gutter); top: calc(var(--header-h) + 36px); z-index: 4; max-width: 340px; }
.broadcast__title {
  font-family: var(--f-tt); font-weight: 400; font-size: clamp(20px, 1.9vw, 30px); line-height: 1.05; letter-spacing: .06em; text-transform: uppercase;
  text-shadow: 0 2px 18px rgba(10, 30, 60, .45);
}
.broadcast__title em { font-style: normal; color: var(--gold); }
.broadcast__place { margin-top: 10px; font-family: var(--f-serif); font-style: italic; font-size: 17px; color: var(--cream); text-shadow: 0 1px 12px rgba(10, 30, 60, .5); }

.tv {
  --tv-w: min(74vw, 116svh, 1180px);
  position: absolute; z-index: 3; width: var(--tv-w); height: calc(var(--tv-w) * .5625);
  left: calc(50% - var(--tv-w) * .5); top: calc(57% - var(--tv-w) * .28125);
  transform-origin: 39.2% 45.8%; will-change: transform;
}
.tv__body { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 2; pointer-events: none; user-select: none; filter: drop-shadow(0 30px 40px rgba(20, 12, 4, .45)); }
.tv__screen { position: absolute; left: 10.3%; top: 9%; width: 57.8%; height: 73.6%; z-index: 1; overflow: hidden; overflow: clip; background: #0b0806; border-radius: 4%; }
.tv__canvas, .tv__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tv__video { opacity: 0; }
.tv__video.is-fallback { opacity: 1; }
.tv__screen:has(.tv__video.is-fallback)::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: repeating-linear-gradient(to bottom, rgba(0, 0, 0, .18) 0 1px, transparent 1px 3px), radial-gradient(ellipse at center, transparent 55%, rgba(0, 0, 0, .55));
}
.tv__osd { position: absolute; inset: 9% 9% 10%; z-index: 2; pointer-events: none; color: #fff7e0; font-family: var(--f-tt); text-shadow: 0 0 6px rgba(255, 220, 150, .7), 0 0 1px #fff; }
.osd__ch { position: absolute; left: 0; top: 0; font-size: clamp(14px, 1.6vw, 26px); letter-spacing: .08em; }
.osd__live { position: absolute; right: 0; top: 2px; display: flex; align-items: center; gap: 8px; font-size: clamp(10px, .9vw, 14px); letter-spacing: .16em; text-transform: uppercase; }
.osd__live i { width: 8px; height: 8px; border-radius: 50%; background: #ff5a36; box-shadow: 0 0 8px #ff5a36; animation: blink 1.6s steps(2, start) infinite; }
@keyframes blink { to { visibility: hidden; } }
.osd__room { position: absolute; left: 0; bottom: 0; font-family: var(--f-tt); font-size: clamp(24px, 3.6vw, 62px); line-height: .95; text-transform: uppercase; max-width: 90%; }
.tv__osd { transition: opacity .4s; }

.knob { position: absolute; z-index: 4; border-radius: 50%; cursor: grab; touch-action: none; outline-offset: 4px; }
.knob:active { cursor: grabbing; }
.knob img { width: 100%; height: 100%; pointer-events: none; transition: transform .45s var(--ease-out); filter: drop-shadow(0 3px 3px rgba(60, 30, 0, .35)); }
.knob.is-dragging img { transition: none; }
.knob__tick { position: absolute; left: 50%; top: 50%; width: 3px; height: 50%; margin-left: -1.5px; transform-origin: 50% 0; pointer-events: none; transition: transform .45s var(--ease-out); }
.knob__tick::before { content: ''; position: absolute; left: 0; right: 0; top: 52%; height: 34%; border-radius: 2px; background: var(--clay); box-shadow: 0 0 0 1px rgba(255, 240, 210, .6); }
.knob.is-dragging .knob__tick { transition: none; }
.knob--year { left: 76.77%; top: 18.15%; width: 6.875%; height: 12.22%; }
.knob--theme { left: 77.19%; top: 37.22%; width: 6.04%; height: 10.74%; }
.knob::after { content: ''; position: absolute; inset: -14%; border-radius: 50%; border: 2px solid var(--gold); opacity: 0; transform: scale(.9); transition: opacity .3s, transform .3s var(--ease-out); pointer-events: none; }
.knob:hover::after { opacity: .9; transform: scale(1); }
.tv__marks button { position: absolute; z-index: 3; width: 4.2%; height: 3.6%; translate: -50% -50%; border-radius: 4px; }
.tv__marks button:hover, .tv__marks button.is-on { background: rgba(230, 104, 35, .16); box-shadow: inset 0 -2px 0 var(--sunset); }
.tv__marks button.is-theme { width: 5.6%; }

.stamp {
  position: absolute; left: 84%; top: -9%; z-index: 5; width: clamp(84px, 9.5%, 132px); aspect-ratio: 1;
  display: grid; place-content: center; text-align: center; text-decoration: none; color: var(--cream);
  background: var(--sunset); border-radius: 50%; transform: rotate(-14deg);
  box-shadow: 0 0 0 4px var(--sunset), 0 0 0 6px var(--cream), 0 0 0 9px var(--sunset), 0 14px 24px -8px rgba(60, 20, 0, .5);
  transition: transform .4s var(--ease-out);
}
.stamp span { font-family: var(--f-tt); font-size: clamp(11px, 1vw, 15px); letter-spacing: .1em; text-transform: uppercase; }
.stamp b { font-family: var(--f-qut); font-weight: 400; font-size: clamp(26px, 2.6vw, 40px); line-height: .9; }
.stamp:hover { transform: rotate(-6deg) scale(1.05); }

.tv__hint { position: absolute; left: 95%; top: 14%; z-index: 5; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; color: var(--cream); pointer-events: none; }
.tv__hint span { font-family: var(--f-serif); font-style: italic; font-size: clamp(17px, 1.4vw, 22px); line-height: 1.2; white-space: nowrap; text-shadow: 0 1px 12px rgba(10, 30, 60, .7); padding-left: 18px; }
.tv__hint svg { width: clamp(64px, 6vw, 96px); fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; filter: drop-shadow(0 1px 6px rgba(10, 30, 60, .6)); transform: scale(-1, 1); margin-left: -34px; }


.fg { position: absolute; inset: 0; z-index: 4; pointer-events: none; }
.fg img { position: absolute; will-change: transform; }
.fg__row { left: -8%; right: -8%; width: 116%; bottom: -8%; height: 30%; object-fit: cover; object-position: 50% 0; filter: drop-shadow(0 -10px 18px rgba(0, 0, 0, .2)); }
.fg__flor { left: -6%; bottom: -8%; height: 50%; width: auto; }
.fg__cactus { right: -3%; bottom: -6%; height: 34%; width: auto; }
.fg__agave { right: 18%; bottom: -9%; height: 26%; width: auto; }

.scroll-cue { position: absolute; left: 50%; bottom: 22px; z-index: 6; translate: -50% 0; display: flex; flex-direction: column; align-items: center; gap: 10px; font-family: var(--f-tt); font-size: 13px; letter-spacing: .18em; text-transform: uppercase; color: var(--cream); text-shadow: 0 1px 10px rgba(0, 0, 0, .5); }
.scroll-cue i { width: 1px; height: 38px; background: linear-gradient(var(--cream), transparent); transform-origin: top; animation: cue 2.2s var(--ease-in-out) infinite; }
@keyframes cue { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); transform-origin: top; } 51% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }

.tuner--channels { display: none; }

.inside { position: absolute; inset: 0; z-index: 7; opacity: 0; visibility: hidden; pointer-events: none; }
.inside__reel { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.inside__shade { position: absolute; inset: 0; background: linear-gradient(to top, rgba(13, 10, 8, .9), rgba(13, 10, 8, .15) 55%, rgba(13, 10, 8, .35)); }
.inside__line { position: absolute; left: var(--gutter); right: var(--gutter); bottom: 14vh; font-family: var(--f-tt); text-transform: uppercase; line-height: .9; }
.inside__line--a { font-size: clamp(64px, 13vw, 240px); }
.inside__line--b { font-size: clamp(30px, 4.6vw, 84px); max-width: 16ch; opacity: 0; }

/* ───────────────── 2 · Manifesto ───────────────── */
.manifesto { position: relative; padding: var(--s9) 0 var(--s8); background: var(--night); }
.manifesto__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--s4); align-items: center; }
.manifesto__text { grid-column: 1 / span 7; }
.manifesto__lines { margin-top: var(--s3); font-family: var(--f-tt); font-weight: 400; font-size: clamp(46px, 5.8vw, 104px); line-height: .96; text-transform: uppercase; }
.manifesto__lines .w { display: inline-block; opacity: .14; transition: opacity .2s; }
.manifesto__body { margin-top: var(--s5); max-width: 46ch; font-size: clamp(19px, 1.45vw, 22px); color: var(--cream-2); }
.facts { display: grid; grid-template-columns: repeat(4, auto); gap: var(--s4) var(--s5); margin: var(--s6) 0 0; padding-top: var(--s4); border-top: 1px solid rgba(243, 230, 200, .18); justify-content: start; }
.facts div { display: flex; flex-direction: column; gap: 4px; }
.facts dt { font-family: var(--f-qut); font-size: clamp(36px, 3.4vw, 56px); line-height: 1; color: var(--gold); }
.facts dd { margin: 0; font-family: var(--f-tt); font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--cream-2); max-width: 14ch; }
.manifesto__photo { grid-column: 9 / span 4; }
.print { padding: 12px 12px 0; background: #efe4cb; color: var(--ink); transform: rotate(2.2deg); box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .8); }
.print img { aspect-ratio: 2 / 3; width: 100%; object-fit: cover; }
.print figcaption { padding: 12px 2px 14px; font-family: var(--f-tt); font-size: 13px; letter-spacing: .12em; text-transform: uppercase; }

/* ───────────────── 3 · Passport journey ───────────────── */
.passport { position: relative; background: var(--night); padding-top: var(--s7); }
.passport__intro { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--s3) var(--s4); align-items: end; padding-bottom: var(--s7); }
.passport__intro .eyebrow { grid-column: 1 / -1; }
.passport__intro .display { grid-column: 1 / span 8; }
.passport__intro .lede { grid-column: 9 / span 4; justify-self: end; }
.passport__pin { position: relative; height: 100svh; overflow: hidden; overflow: clip; }
.rooms { list-style: none; margin: 0; padding: 0 var(--gutter); display: flex; height: 100%; gap: 4vw; width: max-content; will-change: transform; }
.room { position: relative; flex: 0 0 auto; width: 86vw; height: 100%; padding: calc(var(--header-h) + 12px) 0 120px; display: grid; grid-template-columns: 62% 1fr; gap: clamp(24px, 3.4vw, 64px); align-items: center; }
.room__media { position: relative; height: 100%; overflow: hidden; overflow: clip; background: var(--night-2); }
.room__media img { position: absolute; inset: 0 -8%; width: 116%; height: 100%; object-fit: cover; will-change: transform; }
.room__media::after { content: ''; position: absolute; inset: 0; box-shadow: inset 0 0 0 1px rgba(243, 230, 200, .08); pointer-events: none; }
.room__text { position: relative; padding-right: var(--s3); }
.room__no { display: block; font-family: var(--f-qut); font-size: clamp(72px, 9vw, 168px); line-height: .8; color: transparent; -webkit-text-stroke: 1.5px var(--cream-3); }
.room__name { margin-top: var(--s3); font-family: var(--f-tt); font-weight: 400; font-size: clamp(44px, 4.8vw, 92px); line-height: .92; text-transform: uppercase; }
.room__tag { margin-top: var(--s2); font-family: var(--f-tt); font-size: 15px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.room__copy { margin-top: var(--s3); max-width: 34ch; font-size: clamp(18px, 1.3vw, 21px); color: var(--cream-2); }
.room__stamp {
  position: absolute; right: 6%; top: -6%; width: 108px; aspect-ratio: 1; display: grid; place-items: center; text-align: center; padding: 14px;
  font-family: var(--f-tt); font-size: 17px; line-height: 1; letter-spacing: .08em; text-transform: uppercase; color: var(--sunset);
  border: 3px solid currentColor; border-radius: 50%; transform: rotate(-16deg) scale(1.4); opacity: 0;
  box-shadow: inset 0 0 0 4px var(--night), inset 0 0 0 5.5px currentColor;
  transition: transform .5s cubic-bezier(.3, 1.6, .5, 1), opacity .25s;
}
.room__stamp--welcome { color: var(--agave-l); }
.room__stamp--addon { color: var(--gold); }
.room.is-active .room__stamp, .room.is-stamped .room__stamp { opacity: .95; transform: rotate(-16deg) scale(1); }

.hud { position: absolute; left: var(--gutter); right: var(--gutter); bottom: 34px; z-index: 3; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: var(--s2) var(--s4); }
.hud__label, .hud__count { font-family: var(--f-tt); font-size: 14px; letter-spacing: .16em; text-transform: uppercase; color: var(--cream-2); }
.hud__count b { font-weight: 400; color: var(--cream); }
.hud__stamps { list-style: none; margin: 0; padding: 0; display: flex; justify-content: space-between; }
.hud__stamps li { position: relative; width: 14px; height: 14px; border-radius: 50%; border: 1.5px solid var(--cream-3); transition: background .3s, border-color .3s, transform .4s cubic-bezier(.3, 1.6, .5, 1); }
.hud__stamps li.is-sip::after { content: ''; position: absolute; inset: 3px; border-radius: 50%; background: var(--cream-3); }
.hud__stamps li.is-done { background: var(--gold); border-color: var(--gold); }
.hud__stamps li.is-done.is-sip::after { background: var(--clay); }
.hud__stamps li.is-now { transform: scale(1.5); border-color: var(--sunset); }
.hud__track { grid-column: 1 / -1; height: 1px; background: rgba(243, 230, 200, .16); position: relative; }
.hud__fill { position: absolute; left: 0; top: 0; height: 100%; width: 100%; background: var(--gold); transform-origin: left; transform: scaleX(0); }

/* ───────────────── 4 · Pillars ───────────────── */
.pillars { position: relative; color: var(--ink); background: var(--paper) url('../assets/img/paper.webp') center / 1200px auto; }
.pillars::before, .pillars::after {
  content: ''; position: absolute; left: 0; right: 0; height: 40px; z-index: 2; background: inherit;
  -webkit-mask: var(--tear) 0 0 / 600px 100% repeat-x; mask: var(--tear) 0 0 / 600px 100% repeat-x;
  --tear: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 40' preserveAspectRatio='none'%3E%3Cpath d='M0 40 L0 22 L14 26 L27 15 L41 24 L52 12 L68 21 L79 9 L95 19 L108 14 L121 25 L137 11 L150 20 L166 8 L178 18 L193 13 L207 27 L219 16 L236 22 L249 7 L262 19 L277 12 L291 24 L305 10 L318 21 L333 15 L347 26 L360 9 L374 18 L389 13 L402 23 L418 8 L431 20 L444 14 L459 25 L472 11 L488 19 L501 7 L515 22 L528 13 L543 24 L557 10 L571 20 L586 15 L600 22 L600 40 Z' fill='%23000'/%3E%3C/svg%3E");
}
.pillars::before { top: -39px; }
.pillars::after { bottom: -39px; transform: scaleY(-1); }
.pillars__pin { position: relative; height: 100svh; display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--s4); align-items: center; padding: var(--header-h) var(--gutter) var(--s5); overflow: hidden; overflow: clip; }
.pillars__text { grid-column: 1 / span 7; position: relative; z-index: 2; }
.pillars { --p1: #ae3d00; --p2: #8a5358; --p3: #456b4d; --p4: #9b4d1b; --p5: #a3505e; --p6: #005d34; }
.pillars__lead { font-family: var(--f-tt); font-size: clamp(22px, 2.4vw, 40px); letter-spacing: .04em; text-transform: uppercase; }
.pillars__words { position: relative; height: 1em; font-size: clamp(64px, 10.5vw, 196px); margin-top: .1em; }
.pillars__word { position: absolute; left: 0; top: 0; font-family: var(--f-qut); font-weight: 400; font-size: 1em; line-height: .9; text-transform: uppercase; color: var(--c); white-space: nowrap;
  clip-path: inset(0 0 100% 0); transform: translateY(18%); transition: clip-path .7s var(--ease-out), transform .7s var(--ease-out); }
.pillars__word.is-active { clip-path: inset(-10% 0 -20% 0); transform: none; }
.pillars__word.is-leaving { clip-path: inset(0 0 0 100%); transform: none; transition-duration: .45s; }
.pillars__copies { position: relative; min-height: 6.6em; margin-top: var(--s4); max-width: 36ch; filter: drop-shadow(0 12px 18px rgba(36, 23, 14, .22)); }
.pillars__copy {
  position: absolute; left: 0; top: 0; padding: 16px 24px 18px;
  font-size: clamp(19px, 1.45vw, 24px); font-weight: 500; line-height: 1.4; color: var(--ink);
  background: #f7eed8; border-left: 4px solid var(--sun, var(--p1));
  -webkit-mask: var(--deckle); mask: var(--deckle);
  opacity: 0; transform: rotate(-.8deg) translateY(12px); transition: opacity .5s, transform .6s var(--ease-out), border-color .7s;
}
.pillars__copy.is-active { opacity: 1; transform: rotate(-.8deg); transition-delay: .12s; }
.pillars__index { list-style: none; padding: 0; margin: var(--s5) 0 0; display: flex; flex-wrap: wrap; gap: 6px var(--s3); }
.pillars__index button { position: relative; font-family: var(--f-tt); font-size: 14px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2); padding: 8px 0; min-height: 44px; }
.pillars__index button::before { content: counter(p, decimal-leading-zero) ' '; counter-increment: p; opacity: .5; }
.pillars__index { counter-reset: p; }
.pillars__index button.is-active { color: var(--ink); }
.pillars__index button.is-active::after { content: ''; position: absolute; left: 0; right: 0; bottom: 6px; height: 2px; background: var(--ink); }
.pillars__art { grid-column: 8 / span 5; position: relative; display: grid; place-items: center; height: min(80svh, 760px); }
.pillars__disc {
  position: relative; width: min(100%, 66svh, 620px); aspect-ratio: 1; border-radius: 50%;
  overflow: hidden; overflow: clip; isolation: isolate;
  background-color: var(--sun, var(--p1));
  background-image: radial-gradient(circle at 50% 38%, rgba(255, 240, 210, .16), transparent 62%);
  box-shadow: 0 34px 60px -32px rgba(36, 23, 14, .55);
  transition: background-color .7s var(--ease-out);
}
.pillars__disc::after { content: ''; position: absolute; inset: 14px; z-index: 2; border-radius: 50%; border: 1.5px solid rgba(255, 244, 220, .5); pointer-events: none; }
.pillars__figure {
  position: absolute; left: 50%; bottom: var(--b, -12%); height: var(--h, 116%); width: auto; max-width: none;
  translate: calc(-50% + var(--x, 0%)) 0; opacity: 0; clip-path: inset(100% 0 0 0);
  filter: drop-shadow(0 14px 22px rgba(36, 23, 14, .3));
  transition: clip-path .8s var(--ease-out), opacity .2s;
}
.pillars__figure.is-active { opacity: 1; clip-path: inset(0 0 0 0); }

/* ───────────────── 5 · After dark ───────────────── */
.after-dark { position: relative; background: var(--night); padding: var(--s9) 0 var(--s8); overflow: hidden; overflow: clip; }
.after-dark__head { position: relative; display: flex; flex-direction: column; }
.mega { font-family: var(--f-qut); font-weight: 400; font-size: clamp(96px, 19vw, 360px); line-height: .8; text-transform: uppercase; display: flex; flex-direction: column; }
.mega span:last-child { align-self: flex-end; color: var(--gold); }
.credit { margin-top: var(--s3); font-family: var(--f-tt); font-size: 14px; letter-spacing: .14em; text-transform: uppercase; color: var(--cream-2); }
.collage { position: relative; display: grid; grid-template-columns: repeat(12, 1fr); grid-auto-rows: 8vw; gap: 1.6vw; padding: var(--s7) var(--gutter) 0; max-width: 1700px; margin: 0 auto; }
.ph { position: relative; overflow: hidden; overflow: clip; background: var(--night-2); will-change: transform; }
.ph img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease-out), filter .6s; filter: saturate(.92); }
.ph:hover img { transform: scale(1.045); filter: saturate(1.1); }
.ph--a { grid-column: 1 / span 3; grid-row: 1 / span 5; }
.ph--b { grid-column: 5 / span 5; grid-row: 2 / span 3; }
.ph--c { grid-column: 10 / span 3; grid-row: 1 / span 5; }
.ph--d { grid-column: 4 / span 4; grid-row: 6 / span 3; }
.ph--e { grid-column: 1 / span 3; grid-row: 7 / span 5; }
.ph--f { grid-column: 8 / span 5; grid-row: 7 / span 3; }
.ph--g { grid-column: 9 / span 3; grid-row: 11 / span 5; }
.ph--h { grid-column: 4 / span 5; grid-row: 11 / span 3; }
.collage__quote { grid-column: 2 / span 7; grid-row: 15 / span 2; margin: 0; align-self: center; }
.collage__quote p { font-family: var(--f-qut); font-size: clamp(48px, 7vw, 132px); line-height: .9; text-transform: uppercase; color: var(--sunset); }

/* ───────────────── 6 · Private events ───────────────── */
.book { position: relative; padding: var(--s9) 0 var(--s8); background: radial-gradient(100% 80% at 80% 0%, #1d4430 0%, var(--forest) 60%); overflow: hidden; overflow: clip; }
.book__grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--s4); }
.book__head { grid-column: 1 / span 6; align-self: center; }
.book__photo { grid-column: 8 / span 5; margin-top: var(--s4); transform: rotate(-1.6deg); }
.book__photo img { aspect-ratio: 4 / 5; object-position: 50% 50%; }
.book__head .display { margin-top: var(--s3); }
.book__head .lede { margin-top: var(--s4); }
.chips { list-style: none; padding: 0; margin: var(--s5) 0 0; display: flex; flex-wrap: wrap; gap: 10px; max-width: 760px; }
.chips li { padding: 10px 16px 9px; border: 1px solid rgba(243, 230, 200, .3); border-radius: 999px; font-family: var(--f-tt); font-size: 14px; letter-spacing: .1em; text-transform: uppercase; color: var(--cream-2); }
.book__cta { margin-top: var(--s5); display: flex; align-items: center; gap: var(--s4); flex-wrap: wrap; }
.btn { display: inline-flex; align-items: center; min-height: 52px; padding: 0 28px; font-family: var(--f-tt); font-size: 16px; letter-spacing: .12em; text-transform: uppercase; text-decoration: none; border-radius: 2px; transition: transform .3s var(--ease-out), background .3s; }
.btn--gold { background: var(--gold); color: var(--ink); }
.btn--gold:hover { background: var(--cream); transform: translateY(-2px); }
.link { font-style: italic; font-size: 19px; text-decoration-thickness: 1px; text-underline-offset: 5px; }
.arcade { display: flex; gap: 1.4vw; padding: var(--s8) var(--gutter) 0; justify-content: center; }
.arch { flex: 0 1 15vw; max-width: 270px; transform: translateY(calc(var(--lift, 0) * 1px)); transition: transform .6s var(--ease-out); }
.arch img { width: 100%; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 999px 999px 4px 4px; box-shadow: 0 0 0 6px rgba(243, 230, 200, .08); }
.arch:nth-child(1), .arch:nth-child(6) { --lift: 60; }
.arch:nth-child(2), .arch:nth-child(5) { --lift: 20; }
.arch:hover { transform: translateY(calc(var(--lift, 0) * 1px - 18px)); }

/* ───────────────── 7 · Visit + ticket ───────────────── */
.visit { position: relative; padding: var(--s9) 0; overflow: hidden; overflow: clip; }
.visit__bg { position: absolute; inset: 0; }
.visit__bg img { width: 100%; height: 120%; object-fit: cover; object-position: 50% 40%; will-change: transform; }
.visit__bg::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(13, 10, 8, .92) 0%, rgba(13, 10, 8, .7) 45%, rgba(13, 10, 8, .3) 100%), linear-gradient(to bottom, var(--forest), transparent 22%, transparent 78%, var(--night)); }
.visit__grid { position: relative; display: grid; grid-template-columns: repeat(12, 1fr); gap: var(--s5) var(--s4); align-items: center; }
.visit__copy { grid-column: 1 / span 6; }
.visit__copy .display { margin-top: var(--s3); }
.visit__info { margin-top: var(--s6); display: grid; grid-template-columns: 1fr 1fr; gap: var(--s4); font-style: normal; font-size: 19px; line-height: 1.6; }
.visit__info address { font-style: normal; }
.visit__info .label { display: block; margin-bottom: 8px; }
.visit__info a { text-decoration: none; border-bottom: 1px solid rgba(243, 230, 200, .3); transition: border-color .25s; }
.visit__info a:hover { border-color: var(--gold); }

.ticket { grid-column: 8 / span 5; position: relative; display: flex; color: var(--ink); filter: drop-shadow(0 30px 40px rgba(0, 0, 0, .6)); transform: rotate(-3deg); }
.ticket__main, .ticket__stub { background: #f1e3c2 url('../assets/img/paper.webp') center / 900px auto; }
.ticket__main {
  flex: 1; display: flex; flex-direction: column; gap: 10px; padding: 32px 28px 28px 32px;
  -webkit-mask: radial-gradient(circle at 100% 0, transparent 14px, #000 15px) top / 100% 51% no-repeat, radial-gradient(circle at 100% 100%, transparent 14px, #000 15px) bottom / 100% 51% no-repeat;
          mask: radial-gradient(circle at 100% 0, transparent 14px, #000 15px) top / 100% 51% no-repeat, radial-gradient(circle at 100% 100%, transparent 14px, #000 15px) bottom / 100% 51% no-repeat;
}
.ticket__kicker { font-family: var(--f-tt); font-size: 14px; letter-spacing: .18em; text-transform: uppercase; color: var(--clay); }
.ticket__title .logo-mark { width: 100%; color: var(--ink); }
.ticket__meta { font-style: italic; font-size: 18px; }
.ticket__fine { font-family: var(--f-tt); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-2); }
.ticket__serial { margin-top: 8px; font-family: var(--f-tt); font-size: 13px; letter-spacing: .2em; color: var(--clay); }
.ticket__stub {
  position: relative; flex: 0 0 132px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 20px 10px;
  text-decoration: none; border-left: 2px dashed rgba(36, 23, 14, .4); touch-action: none; user-select: none; transform-origin: 0 100%;
  -webkit-mask: radial-gradient(circle at 0 0, transparent 14px, #000 15px) top / 100% 51% no-repeat, radial-gradient(circle at 0 100%, transparent 14px, #000 15px) bottom / 100% 51% no-repeat;
          mask: radial-gradient(circle at 0 0, transparent 14px, #000 15px) top / 100% 51% no-repeat, radial-gradient(circle at 0 100%, transparent 14px, #000 15px) bottom / 100% 51% no-repeat;
  transition: transform .5s var(--ease-out), background-color .3s;
}
.ticket__stub-text { writing-mode: vertical-rl; transform: rotate(180deg); font-family: var(--f-qut); font-size: 34px; line-height: 1; text-transform: uppercase; color: var(--clay); }
.ticket__stub-hint { font-family: var(--f-tt); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-2); white-space: nowrap; }
.ticket__stub:hover { transform: rotate(4deg) translateX(4px); }
.ticket.is-torn .ticket__stub { transform: translate(60px, 120px) rotate(28deg); opacity: 0; transition: transform .8s var(--ease-out), opacity .8s .2s; }

/* ───────────────── Footer ───────────────── */
.footer { position: relative; background: var(--night); padding: var(--s8) 0 var(--s5); }
.footer__logo { position: relative; width: calc(100% - 2 * var(--gutter)); max-width: 1700px; margin: 0 auto; aspect-ratio: 5320 / 591; background: var(--sunset);
  -webkit-mask: url('../assets/img/logo-h.svg') center / contain no-repeat; mask: url('../assets/img/logo-h.svg') center / contain no-repeat; }
.footer__logo video { width: 100%; height: 100%; object-fit: cover; mix-blend-mode: screen; opacity: .95; }
.footer__grid { margin-top: var(--s7); display: grid; grid-template-columns: 1fr auto 1fr; gap: var(--s4); align-items: end; padding-top: var(--s4); border-top: 1px solid rgba(243, 230, 200, .14); }
.footer__tag { font-family: var(--f-qut); font-size: clamp(28px, 2.6vw, 44px); line-height: 1; color: var(--gold); }
.footer__links { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--s2) var(--s4); font-family: var(--f-tt); font-size: 14px; letter-spacing: .12em; text-transform: uppercase; }
.footer__links li { white-space: nowrap; }
.footer__links a { text-decoration: none; padding: 10px 0; }
.footer__links a:hover { color: var(--gold); }
.footer__fine { font-size: 14px; color: var(--cream-2); text-align: right; line-height: 1.6; }

/* Floating ticket */
.float-ticket {
  position: fixed; right: var(--gutter); bottom: 24px; z-index: 55; display: flex; align-items: center; height: 54px; padding: 0 26px 0 30px;
  background: var(--sunset); color: var(--cream); text-decoration: none; font-family: var(--f-tt); font-size: 16px; letter-spacing: .14em; text-transform: uppercase;
  -webkit-mask: radial-gradient(circle at 0 50%, transparent 9px, #000 10px); mask: radial-gradient(circle at 0 50%, transparent 9px, #000 10px);
  box-shadow: 0 16px 30px -12px rgba(0, 0, 0, .6);
  transform: translateY(140%); transition: transform .6s var(--ease-out), background .25s;
}
.float-ticket::after { content: ''; position: absolute; left: 18px; top: 8px; bottom: 8px; border-left: 2px dashed rgba(243, 230, 200, .55); }
.float-ticket span { margin-left: 10px; }
.float-ticket.is-visible { transform: none; }
.float-ticket:hover { background: var(--clay); }

/* ───────────────── Responsive ───────────────── */
@media (max-width: 1100px) {
  .nav, .header-partners, .header-ticket { display: none; }
  .mobile-menu { display: block; margin-left: auto; font-family: var(--f-tt); text-transform: uppercase; letter-spacing: .1em; }
  .mobile-menu summary { cursor: pointer; list-style: none; font-size: 15px; padding: 12px 0 12px 12px; }
  .mobile-menu summary::-webkit-details-marker { display: none; }
  .mobile-menu summary span { font-size: 20px; margin-right: 5px; }
  .mobile-menu nav { position: absolute; top: var(--header-h); right: var(--gutter); min-width: 210px; display: grid; padding: 8px 20px; background: var(--night); color: var(--cream); box-shadow: 0 12px 30px rgba(0, 0, 0, .35); }
  .mobile-menu nav a { padding: 12px 0; font-size: 16px; text-decoration: none; border-bottom: 1px solid rgba(243, 230, 200, .2); }
  .mobile-menu nav a:last-child { border: 0; }
  .manifesto__text { grid-column: 1 / -1; }
  .manifesto__photo { grid-column: 3 / span 8; margin-top: var(--s6); }
  .facts { grid-template-columns: repeat(2, auto); }
  .passport__intro .display, .passport__intro .lede { grid-column: 1 / -1; justify-self: start; }
  .ticket { grid-column: 1 / -1; max-width: 560px; }
  .visit__copy { grid-column: 1 / -1; }
}

@media (max-width: 900px) {
  :root { --header-h: 64px; }
  .site-header .logo-mark { width: 140px; }
  .header-ticket { display: none; }
  .broadcast__stage { --tv-gap: 16px; --tv-w: min(calc((100vw - 2 * var(--tv-gap)) / .8698), calc(60svh / .5625)); }
  .tv { --tv-w: inherit; left: calc(50% - var(--tv-w) * .501); top: calc(47% - var(--tv-w) * .28125); }
  .knob--year, .knob--theme, .tv__marks, .tv__hint { display: none; }
  .stamp { left: 72%; top: -32%; width: 84px; }
  .broadcast__copy { top: calc(var(--header-h) + 14px); max-width: 260px; }
  .broadcast__place { font-size: 15px; }
  .tuner--channels {
    display: block; position: absolute; left: 0; right: 0; top: calc(47% + var(--tv-w) * .28125 + 14px); z-index: 6; color: var(--cream); height: 84px;
    background: linear-gradient(to bottom, rgba(13, 10, 8, 0), rgba(13, 10, 8, .55) 30%, rgba(13, 10, 8, .55) 70%, rgba(13, 10, 8, 0));
  }
  .tuner--channels .tuner__label { font-size: 15px; bottom: 6px; }
  .tuner--channels .tuner__tick { bottom: 30px; }
  .tuner--channels .tuner__needle { bottom: 28px; }
  .fg__row { height: 24%; }
  .fg__flor { height: 40%; }
  .fg__cactus { height: 26%; }
  .fg__agave { display: none; }
  .scroll-cue { bottom: 18px; }

  .manifesto { padding: var(--s8) 0 var(--s7); }

  .passport__pin { height: auto; overflow: visible; }
  .rooms { flex-direction: column; width: auto; gap: var(--s7); padding-bottom: var(--s7); }
  .room { width: 100%; height: auto; padding: 0; grid-template-columns: 1fr; gap: var(--s3); }
  .room__media { height: auto; aspect-ratio: 4 / 5; }
  .room__media img { inset: 0; width: 100%; }
  .room__no { font-size: 64px; margin-top: var(--s2); }
  .room__stamp { top: auto; bottom: 100%; right: 4%; width: 92px; font-size: 15px; transform: rotate(-16deg) scale(1); opacity: .95; }
  .hud { display: none; }

  .pillars__pin { grid-template-columns: 1fr; align-content: start; padding-top: calc(var(--header-h) + 12px); padding-bottom: 0; gap: 0; }
  .pillars__text { grid-column: 1; }
  .pillars__art { grid-column: 1; height: auto; margin-top: var(--s4); }
  .pillars__disc { width: min(78vw, 40svh); }
  .pillars__words { font-size: clamp(52px, 15vw, 96px); }
  .pillars__copies { min-height: 8.4em; }
  .pillars__index { display: none; }

  .collage { grid-template-columns: repeat(6, 1fr); grid-auto-rows: 16vw; gap: 3vw; }
  .ph--a { grid-column: 1 / span 3; grid-row: 1 / span 5; }
  .ph--b { grid-column: 4 / span 3; grid-row: 2 / span 3; }
  .ph--c { grid-column: 4 / span 3; grid-row: 5 / span 5; }
  .ph--d { grid-column: 1 / span 3; grid-row: 6 / span 3; }
  .ph--e { grid-column: 1 / span 3; grid-row: 9 / span 5; }
  .ph--f { grid-column: 4 / span 3; grid-row: 10 / span 3; }
  .ph--g { grid-column: 4 / span 3; grid-row: 13 / span 4; }
  .ph--h { grid-column: 1 / span 3; grid-row: 14 / span 3; }
  .collage__quote { grid-column: 1 / -1; grid-row: 17 / span 2; }

  .book__head { grid-column: 1 / -1; }
  .book__photo { grid-column: 2 / span 10; margin-top: var(--s6); }
  .arcade { justify-content: flex-start; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: var(--s3); scrollbar-width: none; }
  .arcade::-webkit-scrollbar { display: none; }
  .arch { flex: 0 0 56vw; scroll-snap-align: center; --lift: 0 !important; }

  .visit { padding: var(--s8) 0; }
  .visit__info { grid-template-columns: 1fr; }
  .ticket { transform: rotate(-2deg); }
  .ticket__main { padding: 24px 18px 22px 22px; }
  .ticket__stub { flex-basis: 96px; }
  .ticket__stub-text { font-size: 28px; }

  .footer__grid { grid-template-columns: 1fr; text-align: left; }
  .footer__fine { text-align: left; }
  .float-ticket { right: 16px; bottom: 16px; height: 50px; }
}

@media (max-width: 520px) {
  .site-header { gap: 12px; }
  .site-header .logo-mark { width: 110px; }
  .facts { grid-template-columns: 1fr 1fr; gap: var(--s3); }
  .stamp { left: 56%; top: -34%; }
  .scroll-cue { white-space: nowrap; font-size: 11px; }
  .gate__enter { min-width: 0; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .manifesto__lines .w { opacity: 1; }
  .day__sky { transform: none; }
}
