/* Self-hosted fonts (OFL, Google Fonts repository files). No request leaves this site. */
@font-face { font-family: "Saira"; src: url("assets/fonts/Saira-Italic-VF.ttf") format("truetype"); font-style: italic; font-weight: 100 900; font-stretch: 75% 125%; font-display: swap; }
@font-face { font-family: "Be Vietnam Pro"; src: url("assets/fonts/BeVietnamPro-Regular.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: "Be Vietnam Pro"; src: url("assets/fonts/BeVietnamPro-Medium.ttf") format("truetype"); font-style: normal; font-weight: 500; font-display: swap; }
@font-face { font-family: "Be Vietnam Pro"; src: url("assets/fonts/BeVietnamPro-SemiBold.ttf") format("truetype"); font-style: normal; font-weight: 600; font-display: swap; }

/* VR Zone Play demo.
   Display: Saira expanded italic, matched to the PLAY wordmark. Body: Be Vietnam Pro.
   Brand device: the two-bar play mark from the logo. Its blue bar is the loading bar (loader, hero timer),
   its slant sets every angled edge (video strips, wipes, photo edges) and the mark is every arrow on the site. */

:root {
  --ink: #070b10;
  --ink-2: #0d141c;
  --ink-3: #162029;
  --line: rgba(244, 248, 250, 0.14);
  --paper: #f4f8fa;
  --mute: #a9b7c2;
  --sky: #54c0e3;
  --sky-deep: #0e6a8c;
  --display: "Saira", "Arial Narrow", sans-serif;
  --body: "Be Vietnam Pro", "Segoe UI", sans-serif;
  --gutter: clamp(16px, 4vw, 64px);
  --ease: cubic-bezier(0.2, 0.8, 0.2, 1);
  --ease-wipe: cubic-bezier(0.7, 0, 0.2, 1);
  --hold: 6500ms;
  --hero-h: clamp(700px, 100svh, 1080px);
  --over: 96px;
  --shift: calc((var(--hero-h) / 2 - 150px) * -0.1763);
}

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--ink);
  color: var(--paper);
  font-family: var(--body);
  font-size: 17px;
  line-height: 1.55;
  overflow-x: hidden;
}

img, video, svg { display: block; max-width: 100%; }
a { color: inherit; }
h1, h2, h3, p, dl, dd, dt, ul { margin: 0; padding: 0; }

.display {
  font-family: var(--display);
  font-stretch: 125%;
  font-style: italic;
  font-weight: 800;
  text-transform: uppercase;
  line-height: 0.96;
  letter-spacing: 0;
}

.skip {
  position: absolute; left: 16px; top: -64px; z-index: 120;
  background: var(--sky); color: var(--ink); padding: 12px 16px; font-weight: 600;
}
.skip:focus { top: 16px; }

:focus-visible { outline: 3px solid var(--sky); outline-offset: 3px; }

/* The mark */
.mark { overflow: visible; }
.mark path { stroke-width: 40; }
.mark__top { stroke: var(--paper); }
.mark__low, .mark__fill { stroke: var(--sky); }
.mark__track { stroke: #256a82; }
.mark__fill { stroke-dasharray: 100; stroke-dashoffset: 100; }

/* Buttons take the rounded bar ends of the mark */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 56px; padding: 0 32px;
  border-radius: 28px; border: 0;
  background: var(--sky); color: var(--ink);
  font-family: var(--display); font-stretch: 112%; font-style: italic; font-weight: 700;
  font-size: 17px; text-decoration: none; cursor: pointer;
  transition: background-color 160ms ease, transform 200ms var(--ease);
}
.btn:hover { background: var(--paper); transform: translateX(6px); }
.btn--small { min-height: 48px; padding: 0 24px; border-radius: 24px; font-size: 16px; }

.link {
  display: inline-flex; align-items: center; min-height: 48px;
  font-weight: 600; color: var(--paper);
  text-decoration: underline; text-decoration-color: var(--sky);
  text-decoration-thickness: 2px; text-underline-offset: 6px;
}
.link:hover { color: var(--sky); }

/* Loader: the mark draws, its blue bar fills as the clips load */
.loader { display: none; }
.js .loader {
  position: fixed; inset: 0; z-index: 100;
  display: grid; place-items: center;
  background: var(--ink);
}
.loader__inner { display: flex; align-items: flex-end; gap: 24px; }
.loader .mark { width: 176px; }
.loader .mark__top { stroke-dasharray: 100; stroke-dashoffset: 100; animation: draw 600ms 120ms ease-out forwards; }
.loader__count { min-width: 2.6ch; font-size: 56px; color: var(--paper); font-variant-numeric: tabular-nums; }
.loader.is-done { animation: loader-out 900ms var(--ease-wipe) forwards; }
.sweep {
  position: fixed; inset: 0; z-index: 101; pointer-events: none;
  background: var(--sky);
  animation: sweep 900ms var(--ease-wipe) forwards;
}
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes loader-out {
  from { clip-path: polygon(0 0, 150% 0, 150% 100%, -25% 100%); }
  to { clip-path: polygon(150% 0, 150% 0, 150% 100%, 125% 100%); }
}
@keyframes sweep {
  from { clip-path: polygon(-8% 0, 0 0, -25% 100%, -33% 100%); }
  to { clip-path: polygon(142% 0, 150% 0, 125% 100%, 117% 100%); }
}

/* Header */
.head {
  position: absolute; inset: 0 0 auto 0; z-index: 20;
  display: flex; align-items: center; gap: 32px;
  padding: 24px var(--gutter);
}
.head__logo { display: inline-flex; align-items: center; min-height: 48px; }
.head__logo img { width: 184px; height: auto; }
.head__nav { display: flex; gap: 32px; margin-left: auto; }
.head__nav a {
  display: inline-flex; align-items: center; min-height: 48px;
  font-size: 16px; font-weight: 500; text-decoration: none;
}
.head__nav a:hover { color: var(--sky); }
.head__phone { display: inline-flex; align-items: center; min-height: 48px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.head__phone:hover { color: var(--sky); }
.head__menu { display: none; }
.drawer { display: none; }

/* Hero */
.hero {
  position: relative; overflow: hidden;
  height: var(--hero-h);
  background: var(--ink);
}
.hero::after {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 176px; z-index: 2; pointer-events: none;
  background: linear-gradient(180deg, rgba(7, 11, 16, 0.86), rgba(7, 11, 16, 0));
}
.hero__panel {
  position: absolute; z-index: 3;
  left: var(--gutter); bottom: 64px;
  width: min(480px, calc(44vw - var(--gutter) - 112px));
}
.hero__mark { width: clamp(120px, 17vw, 280px); }
.hero.is-cycling .hero__mark .mark__fill { animation: draw var(--hold) linear forwards; }
.hero.is-paused .hero__mark .mark__fill,
.hero.is-paused .strip__bar span { animation-play-state: paused; }

.hero__now {
  position: relative; overflow: hidden;
  margin-top: 32px; height: 1.95em;
  font-size: clamp(40px, 5.2vw, 92px);
}
.now {
  position: absolute; left: 0; top: 0; display: block; padding-right: 0.15em;
  transition: transform 700ms var(--ease);
}
.now.is-enter { transform: translateY(105%); }
.now.is-leave { transform: translateY(-105%); }

.hero__title { margin-top: 24px; max-width: 24ch; font-size: clamp(18px, 1.5vw, 22px); font-weight: 600; line-height: 1.35; }
.hero__actions { margin-top: 32px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; }

.js .hero__panel > * {
  opacity: 0; transform: translateY(28px);
  transition: opacity 700ms ease, transform 800ms var(--ease);
}
.js.is-ready .hero__panel > * { opacity: 1; transform: none; }
.js.is-ready .hero__panel > :nth-child(1) { transition-delay: 350ms; }
.js.is-ready .hero__panel > :nth-child(2) { transition-delay: 450ms; }
.js.is-ready .hero__panel > :nth-child(3) { transition-delay: 550ms; }
.js.is-ready .hero__panel > :nth-child(4) { transition-delay: 650ms; }

/* Video strips, cut at the angle of the mark */
.strips {
  position: absolute; z-index: 1;
  top: 0; bottom: 0; left: 44%; right: -6%;
  display: flex; gap: 6px;
  transform: skewX(-10deg);
}
.strip {
  position: relative; flex: 1 1 0; min-width: 0; overflow: hidden;
  background: var(--ink-3);
  transition: flex-grow 800ms var(--ease), transform 1000ms var(--ease);
}
.strip.is-active { flex-grow: 3.6; }
.js .strip { transform: translateY(101%); }
.js.is-ready .strip { transform: none; }
.js.is-ready .strip:nth-child(2) { transition-delay: 80ms; }
.js.is-ready .strip:nth-child(3) { transition-delay: 160ms; }
.js.is-ready .strip:nth-child(4) { transition-delay: 240ms; }
.js.is-ready .strip:nth-child(5) { transition-delay: 320ms; }
.js.is-settled .strip { transition-delay: 0ms; }

.strip__in {
  position: absolute; top: 0; bottom: 0;
  left: calc(var(--over) * -1); right: calc(var(--over) * -1);
  transform: skewX(10deg);
}
.strip video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0.4;
  transition: opacity 700ms ease;
}
.strip.is-active video { opacity: 1; }
.strip__in::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(0deg, rgba(7, 11, 16, 0.92) 0%, rgba(7, 11, 16, 0.5) 30%, rgba(7, 11, 16, 0) 58%);
}
.strip__ui { position: absolute; z-index: 1; top: 0; bottom: 0; left: var(--over); right: var(--over); }

.strip__tab {
  position: absolute; inset: 0; padding: 0;
  background: none; border: 0; color: var(--paper); cursor: pointer;
}
.strip__tab span {
  position: absolute; left: 50%; bottom: 48px;
  writing-mode: vertical-rl; white-space: nowrap;
  transform: translateX(calc(-50% + var(--shift))) rotate(180deg);
  font-family: var(--display); font-stretch: 125%; font-style: italic; font-weight: 700;
  font-size: 20px; text-transform: uppercase;
  transition: opacity 300ms ease;
}
.strip.is-active .strip__tab { pointer-events: none; }
.strip.is-active .strip__tab span { opacity: 0; }

.strip__body {
  position: absolute; left: 32px; bottom: 48px;
  width: clamp(240px, 22vw, 340px);
  transform: translateX(var(--shift));
  opacity: 0; visibility: hidden;
  transition: opacity 300ms ease, visibility 0s linear 300ms;
}
.strip.is-active .strip__body { opacity: 1; visibility: visible; transition: opacity 500ms ease 350ms, visibility 0s; }
.strip__name { font-size: clamp(28px, 2.6vw, 44px); }
.strip__body p { margin-top: 16px; font-size: 16px; line-height: 1.5; }
.strip__body .link { margin-top: 8px; }
.strip__bar {
  display: block; margin-top: 16px; height: 8px; border-radius: 4px; overflow: hidden;
  background: rgba(244, 248, 250, 0.24);
}
.strip__bar span {
  display: block; height: 100%; border-radius: 4px; background: var(--sky);
  transform: scaleX(0); transform-origin: left center;
}
.hero.is-cycling .strip.is-active .strip__bar span { animation: bar var(--hold) linear forwards; }
@keyframes bar { to { transform: scaleX(1); } }

/* The big label beside the mark names the open strip, so the strip keeps its heading for screen readers only */
.strip__name { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.strip__body p { margin-top: 0; font-size: 17px; }

/* Session facts */
.facts { position: relative; background: var(--ink-2); border-bottom: 1px solid var(--line); }
.facts::before {
  content: ""; position: absolute; left: 0; top: 0; z-index: 1; width: 100%; height: 6px;
  background: var(--sky); transform: scaleX(0); transform-origin: left center;
  transition: transform 1400ms var(--ease-wipe);
}
.facts.is-in::before { transform: scaleX(1); }
.facts__grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  max-width: 1440px; margin: 0 auto; padding: 0 var(--gutter);
}
.facts__item { padding: 56px 32px 48px 0; }
.facts__item + .facts__item { padding-left: 32px; border-left: 1px solid var(--line); }
.facts__value { font-size: clamp(22px, 2.1vw, 30px); font-stretch: 100%; line-height: 1.05; }
.facts__label { margin-top: 12px; color: var(--mute); font-size: 16px; }

/* Scroll reveals */
.js .reveal {
  opacity: 0; transform: translateY(36px);
  transition: opacity 700ms ease var(--d, 0ms), transform 900ms var(--ease) var(--d, 0ms);
}
.js .reveal.is-in { opacity: 1; transform: none; }

/* Experiences rail */
.xp { padding: 112px 0 120px; }
.xp__head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 32px;
  max-width: 1440px; margin: 0 auto 48px; padding: 0 var(--gutter);
}
.xp__title { font-size: clamp(32px, 4vw, 64px); max-width: 16ch; }
.xp__intro { margin-top: 24px; max-width: 58ch; color: var(--mute); }
.xp__ctrl { display: flex; gap: 16px; flex: none; }
.xp__btn { width: 72px; height: 56px; padding: 0; background: none; border: 0; cursor: pointer; }
.xp__btn .mark { width: 100%; height: 100%; transition: transform 240ms var(--ease); }
.xp__btn--prev .mark { transform: scaleX(-1); }
.xp__btn--prev:hover .mark { transform: scaleX(-1) translateX(8px); }
.xp__btn--next:hover .mark { transform: translateX(8px); }

.xp__rail {
  display: flex; gap: 24px; overflow-x: auto; scroll-snap-type: x mandatory;
  padding: 0 var(--gutter) 24px; scroll-padding-left: var(--gutter);
  scrollbar-width: none;
}
.xp__rail::-webkit-scrollbar { display: none; }
.card {
  flex: none; width: min(80vw, 520px); scroll-snap-align: start;
  display: flex; flex-direction: column; background: var(--ink-2);
}
.card__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--ink-3); }
.card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--ease); }
.card:hover .card__media img { transform: scale(1.05); }
.card__media--type {
  display: flex; flex-direction: column; justify-content: space-between; padding: 32px;
  background: var(--sky); color: var(--ink);
}
.card__media--type .mark { width: 120px; }
.card__media--type .mark__top { stroke: var(--ink); }
.card__media--type .mark__low { stroke: var(--paper); }
.card__media--type .display { font-size: clamp(56px, 7vw, 96px); }
.card__body { display: flex; flex-direction: column; flex: 1; padding: 32px; }
.card__name { font-size: 28px; }
.card__text { margin-top: 16px; }
.card__fact { margin-top: 16px; color: var(--mute); font-size: 16px; }
.card__body .link { margin-top: auto; padding-top: 16px; align-self: flex-start; }

/* Parties */
.party { background: var(--ink-2); padding: 120px 0; overflow: hidden; }
.party__grid {
  display: grid; grid-template-columns: 0.9fr 1.1fr; align-items: center; gap: 64px;
  max-width: 1440px; margin: 0 auto; padding: 0 var(--gutter);
}
.party__media { position: relative; padding: 0 72px 0 88px; }
.party__media::before {
  content: ""; position: absolute; left: 24px; bottom: -40px; width: 46%; height: 62%;
  background: var(--sky); transform: skewX(-10deg);
}
.party__frame {
  position: relative; aspect-ratio: 3 / 4; max-height: 620px; margin: 0 auto;
  overflow: hidden; transform: skewX(-10deg); background: var(--ink-3);
}
.party__frame video {
  position: absolute; top: 0; bottom: 0; left: -22%; width: 144%; height: 100%;
  max-width: none; object-fit: cover; transform: skewX(10deg);
}
.party__title { font-size: clamp(32px, 4vw, 64px); }
.party__text { margin-top: 24px; max-width: 56ch; }
.party__facts { margin-top: 40px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; max-width: 640px; }
.party__facts dt {
  font-family: var(--display); font-stretch: 100%; font-style: italic; font-weight: 800;
  font-size: clamp(28px, 2.8vw, 40px); line-height: 1; color: var(--sky);
}
.party__facts dd { margin-top: 8px; color: var(--mute); font-size: 16px; }
.party__actions { margin-top: 40px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; }

/* Find us */
.find { display: grid; grid-template-columns: 1.1fr 1fr; background: var(--paper); color: var(--ink); }
.find__photo { position: relative; min-height: 600px; clip-path: polygon(0 0, 100% 0, 84% 100%, 0 100%); }
.find__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 60%; }
.find__copy { padding: 96px var(--gutter) 96px 32px; align-self: center; }
.find__title { font-size: clamp(32px, 4vw, 64px); }
.find__cols { margin-top: 40px; display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.find h3 { font-family: var(--body); font-size: 16px; font-weight: 600; color: #4a5a66; }
.find p { margin-top: 8px; font-size: 20px; line-height: 1.4; }
.find p a {
  display: inline-flex; align-items: center; min-height: 48px;
  text-decoration: underline; text-decoration-color: var(--sky-deep);
  text-decoration-thickness: 2px; text-underline-offset: 5px;
}
.find .btn { margin-top: 40px; background: var(--ink); color: var(--paper); }
.find .btn:hover { background: var(--sky-deep); }

.foot {
  display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap;
  padding: 40px var(--gutter); color: var(--mute); font-size: 15px;
}
.foot img { width: 144px; height: auto; }

/* Pointer badge over the strips: the round mark from their profile picture */
.cursor {
  position: fixed; left: 0; top: 0; z-index: 60; pointer-events: none;
  width: 88px; height: 88px; margin: 20px 0 0 20px;
  display: grid; place-items: center;
  border-radius: 50%; background: var(--ink); border: 3px solid var(--sky);
  transform: translate3d(-200px, -200px, 0) scale(0);
}
.cursor .mark { width: 44px; margin-left: 6px; }
@media (hover: none), (pointer: coarse) { .cursor { display: none; } }

@media (max-width: 960px) {
  :root { --shift: 0px; --over: 0px; }

  .head__nav, .head__phone, .head .btn { display: none; }
  .head { padding: 16px var(--gutter); }
  .head__logo img { width: 144px; }
  .head__menu {
    display: inline-flex; align-items: center; justify-content: center;
    margin-left: auto; min-width: 88px; min-height: 48px; padding: 0 20px;
    border-radius: 24px; border: 2px solid var(--paper); background: none; color: var(--paper);
    font-family: var(--body); font-size: 16px; font-weight: 600; cursor: pointer;
  }
  .drawer.is-open {
    display: flex; flex-direction: column; gap: 8px;
    position: fixed; inset: 0; z-index: 40; padding: 88px var(--gutter) 32px;
    background: var(--ink); overflow-y: auto;
  }
  .drawer a {
    display: flex; align-items: center; min-height: 56px;
    font-family: var(--display); font-stretch: 125%; font-style: italic; font-weight: 700;
    font-size: 24px; text-transform: uppercase; text-decoration: none;
    border-bottom: 1px solid var(--line);
  }
  .drawer .btn { margin-top: 24px; border-bottom: 0; font-size: 17px; text-transform: none; color: var(--ink); }
  .drawer__close {
    position: absolute; top: 16px; right: var(--gutter);
    min-width: 88px; min-height: 48px; border-radius: 24px;
    border: 2px solid var(--paper); background: none; color: var(--paper);
    font-family: var(--body); font-size: 16px; font-weight: 600; cursor: pointer;
  }

  .hero { height: auto; padding-top: 96px; }
  .hero::after { display: none; }
  .hero__panel { position: static; width: auto; padding: 0 var(--gutter) 24px; }
  .hero__mark { width: 64px; }
  .hero__now { margin-top: 16px; font-size: 40px; }
  .hero__title { margin-top: 12px; font-size: 17px; }
  .hero__actions { margin-top: 20px; gap: 8px 20px; }
  .hero__actions .btn { padding: 0 24px; }

  .strips { position: static; flex-direction: column; gap: 4px; transform: none; }
  .strip {
    flex: none; height: 64px;
    clip-path: polygon(0 0, 100% 0, calc(100% - 28px) 100%, 0 100%);
    transition: height 700ms var(--ease), transform 900ms var(--ease);
  }
  .strip.is-active { height: 360px; flex-grow: 0; }
  .js .strip { transform: translateX(-101%); }
  .strip__in { transform: none; }
  .strip video { object-position: 50% 28%; }
  .strip__tab span {
    left: 16px; bottom: auto; top: 50%;
    writing-mode: horizontal-tb; transform: translateY(-50%);
    font-size: 18px;
  }
  .strip__body { left: 16px; right: 44px; bottom: 24px; width: auto; }

  .facts__grid { grid-template-columns: 1fr 1fr; }
  .facts__item { padding: 32px 16px 32px 0; }
  .facts__item + .facts__item { padding-left: 16px; }
  .facts__item:nth-child(3) { padding-left: 0; border-left: 0; }
  .facts__item:nth-child(n + 3) { border-top: 1px solid var(--line); }

  .xp { padding: 64px 0 72px; }
  .xp__head { margin-bottom: 32px; }
  .xp__ctrl { display: none; }
  .xp__rail { gap: 16px; }
  .card__body { padding: 24px; }

  .party { padding: 72px 0; }
  .party__grid { grid-template-columns: 1fr; gap: 72px; }
  .party__media { padding: 0 48px 0 56px; }
  .party__frame { max-height: 420px; }
  .party__facts { grid-template-columns: 1fr; gap: 16px; }
  .party__facts div { display: flex; align-items: baseline; gap: 16px; }
  .party__facts dt { min-width: 3.4em; }
  .party__facts dd { margin-top: 0; }

  .find { grid-template-columns: 1fr; }
  .find__photo { min-height: 280px; clip-path: polygon(0 0, 100% 0, 100% 86%, 0 100%); }
  .find__copy { padding: 48px var(--gutter) 64px; }
  .find__cols { grid-template-columns: 1fr; gap: 24px; margin-top: 32px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .loader, .cursor { display: none; }
  .js .reveal, .js .strip, .js .hero__panel > * { opacity: 1; transform: none; transition: none; }
  .strip, .strip video, .now, .btn, .card__media img, .xp__btn .mark { transition: none; }
  .hero.is-cycling .hero__mark .mark__fill, .hero.is-cycling .strip.is-active .strip__bar span { animation: none; }
  .hero__mark .mark__fill { stroke-dashoffset: 0; }
  .strip.is-active .strip__bar span { transform: scaleX(1); }
  .facts::before { transition: none; transform: scaleX(1); }
}


/* =====================================================================
   Inner pages. Same parts as the home page: the mark and its timer bar,
   the 10 degree slant, the cycling label, rails, facts, reveals.
   ===================================================================== */

.is-seen .loader { display: none !important; }
.head__nav a[aria-current="page"] { color: var(--sky); }
.head__nav { gap: 28px; }
.head__nav a { white-space: nowrap; }
@media (max-width: 1280px) { .head__phone { display: none; } .head__nav { gap: 22px; } }
.drawer a[aria-current="page"] { color: var(--sky); }

/* Slider hero: full-width slides that wipe in on the slant of the mark */
.hero--slides { --hero-h: clamp(580px, 84svh, 840px); }
.slides { position: absolute; inset: 0; z-index: 1; --sl: calc(var(--hero-h) * 0.1763); }
.slide {
  position: absolute; inset: 0; overflow: hidden; z-index: 0;
  clip-path: polygon(-10% 0, -10% 0, calc(-10% - var(--sl)) 100%, calc(-10% - var(--sl)) 100%);
}
.slide.is-prev, .slide.is-active {
  clip-path: polygon(-10% 0, calc(110% + var(--sl)) 0, 110% 100%, calc(-10% - var(--sl)) 100%);
}
.slide.is-prev { z-index: 1; }
.slide.is-active { z-index: 2; transition: clip-path 1000ms var(--ease-wipe); }
.slide.is-enter { z-index: 2; clip-path: polygon(-10% 0, -10% 0, calc(-10% - var(--sl)) 100%, calc(-10% - var(--sl)) 100%); transition: none; }
.hero--rtl .slide, .hero--rtl .slide.is-enter { clip-path: polygon(110% 0, 110% 0, calc(110% - var(--sl)) 100%, calc(110% - var(--sl)) 100%); }
.hero--rtl .slide.is-prev, .hero--rtl .slide.is-active { clip-path: polygon(calc(110% + var(--sl)) 0, -10% 0, calc(-10% - var(--sl)) 100%, calc(110% - var(--sl)) 100%); }
.slide__in { position: absolute; inset: 0; }
.slide video, .slide img {
  position: absolute; inset: 0; width: 100%; height: 100%; max-width: none;
  object-fit: cover; object-position: var(--pos, 50% 30%);
}
.slide.is-active img { animation: drift 9s ease-out forwards; }
@keyframes drift { from { transform: scale(1.08); } to { transform: scale(1); } }
.slides::after {
  content: ""; position: absolute; inset: 0; z-index: 5; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(7, 11, 16, 0.9) 0%, rgba(7, 11, 16, 0.6) 34%, rgba(7, 11, 16, 0) 62%),
    linear-gradient(0deg, rgba(7, 11, 16, 0.75), rgba(7, 11, 16, 0) 42%);
}
.hero--rtl .slides::after {
  background:
    linear-gradient(270deg, rgba(7, 11, 16, 0.9) 0%, rgba(7, 11, 16, 0.6) 34%, rgba(7, 11, 16, 0) 62%),
    linear-gradient(0deg, rgba(7, 11, 16, 0.75), rgba(7, 11, 16, 0) 42%);
}
.hero--slides .hero__panel { width: min(680px, calc(100% - 2 * var(--gutter))); }
.hero--window .hero__panel { width: calc(48vw - var(--gutter) - 56px); }
.hero--window .hero__h1 { font-size: clamp(40px, 4.6vw, 76px); }
.hero--rtl .hero__panel { left: auto; right: var(--gutter); text-align: right; }
.hero--rtl .hero__actions { justify-content: flex-end; }
.hero--rtl .hero__mark { margin-left: auto; transform: scaleX(-1); }
.hero__h1 { margin-top: 12px; font-size: clamp(44px, 6.2vw, 108px); }
.hero__lede { margin-top: 20px; max-width: 46ch; font-size: 18px; line-height: 1.5; }
.hero--rtl .hero__lede { margin-left: auto; }
.hero--slides .hero__actions { margin-top: 28px; }

/* A pause control on every moving hero */
.hero__pause {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; min-width: 96px; padding: 0 20px; border-radius: 24px;
  background: rgba(7, 11, 16, 0.5); border: 2px solid rgba(244, 248, 250, 0.7); color: var(--paper);
  font-family: var(--body); font-size: 16px; font-weight: 600; cursor: pointer;
}
.hero__pause:hover { border-color: var(--sky); color: var(--sky); }

/* Window hero: the slides sit in a slanted window, the panel stays on ink */
.hero--window { --hero-h: clamp(640px, 80svh, 780px); height: var(--hero-h); background: var(--ink-2); }
.hero--window .slides { left: 48%; right: -6%; transform: skewX(-10deg); --sl: 0px; overflow: hidden; }
.hero--window .slides::after { transform: skewX(10deg); background: linear-gradient(0deg, rgba(7, 11, 16, 0.55), rgba(7, 11, 16, 0) 40%); left: -10%; right: -10%; }
.hero--window .slide__in { left: -96px; right: -96px; transform: skewX(10deg); }
.hero--window .slide, .hero--window .slide.is-enter { clip-path: inset(0 100% 0 0); }
.hero--window .slide.is-prev, .hero--window .slide.is-active { clip-path: inset(0 0 0 0); }
.hero--window .hero__panel { bottom: 96px; }
.hero--window .hero__mark { width: clamp(96px, 11vw, 180px); }
.hero--left .slides { left: -6%; right: 48%; }
.hero--left .hero__panel { left: auto; right: var(--gutter); width: min(560px, calc(46vw - var(--gutter) - 36px)); }
.hero--left::before {
  content: ""; position: absolute; z-index: 2; left: 38%; bottom: -40px; width: 14%; height: 56%;
  background: var(--sky); transform: skewX(-10deg); opacity: 0.9;
}
.hero--type .slides { left: 58%; }
.hero--type .hero__panel { width: calc(58vw - var(--gutter) - 56px); }
.hero--type .hero__h1 { font-size: clamp(64px, 9.6vw, 176px); color: var(--sky); line-height: 0.9; margin-top: 8px; }

/* Race hero: the timer runs the full width of the screen */
.hero__rail { position: absolute; z-index: 7; left: 0; right: 0; bottom: 0; height: 8px; background: rgba(244, 248, 250, 0.22); }
.hero__rail span { display: block; height: 100%; background: var(--sky); transform: scaleX(0); transform-origin: left center; }
.hero.is-cycling .hero__rail span { animation: bar var(--hold) linear forwards; }
.hero.is-paused .hero__rail span { animation-play-state: paused; }
.hero--race .hero__panel { bottom: 72px; }

/* Short hero (strips for session lengths) and the flipped hub hero */
.hero--short { --hero-h: clamp(560px, 74svh, 700px); }
.hero--flip .strips { left: -6%; right: 44%; }
.hero--flip .hero__panel { left: auto; right: var(--gutter); width: min(480px, calc(44vw - var(--gutter) - 112px)); }
.hero--short .hero__now, .hero--flip .hero__now { font-size: clamp(36px, 4.4vw, 76px); }
.hero--short .hero__h1, .hero--flip .hero__h1 { font-size: clamp(28px, 3vw, 48px); }
.hero--short .strip__body p { font-size: 16px; }
.strip__price { display: block; font-family: var(--display); font-stretch: 100%; font-style: italic; font-weight: 800; font-size: 34px; color: var(--sky); line-height: 1; margin-bottom: 12px; }

/* Page sections */
.wrap { max-width: 1440px; margin: 0 auto; padding: 0 var(--gutter); }
.sec { padding: 112px 0; }
.sec--alt { background: var(--ink-2); }
.h2 { font-size: clamp(30px, 3.6vw, 56px); }
.split { display: grid; grid-template-columns: 5fr 7fr; gap: 64px; align-items: start; }
.prose p { max-width: 62ch; }
.prose p + p { margin-top: 20px; }
.prose p.lead { font-size: 20px; line-height: 1.5; }
.mute { color: var(--mute); }
.btnrow { margin-top: 40px; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; }

/* Experience rows (hub) */
.xrow { display: grid; grid-template-columns: 1fr 1fr; min-height: 520px; background: var(--ink-2); }
.xrow--b { background: var(--ink); }
.xrow__media { position: relative; overflow: hidden; background: var(--ink-3); clip-path: polygon(0 0, 100% 0, 88% 100%, 0 100%); }
.xrow__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.xrow__media--type { background: var(--sky); color: var(--ink); display: flex; flex-direction: column; justify-content: space-between; padding: 48px; }
.xrow__media--type .mark { width: 140px; }
.xrow__media--type .mark__top { stroke: var(--ink); }
.xrow__media--type .mark__low { stroke: var(--paper); }
.xrow__media--type .display { font-size: clamp(64px, 9vw, 150px); }
.xrow__copy { padding: 72px var(--gutter) 72px 48px; align-self: center; max-width: 640px; }
.xrow__name { font-size: clamp(30px, 3.6vw, 56px); }
.xrow__copy p { margin-top: 20px; }
.xrow__copy .xrow__fact { color: var(--mute); }
.xrow__copy .link { margin-top: 12px; }
.xrow--flip .xrow__media { order: 2; clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%); }
.xrow--flip .xrow__copy { order: 1; padding: 72px 48px 72px var(--gutter); justify-self: end; }

/* Game samples and lists (text only, no publisher art) */
.gsamples { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--line); }
.gsample { padding: 40px 40px 40px 0; border-bottom: 1px solid var(--line); }
.gsample + .gsample { padding-left: 40px; border-left: 1px solid var(--line); }
.gsample__name { font-size: clamp(24px, 2.4vw, 36px); color: var(--sky); }
.gsample__line { margin-top: 12px; font-weight: 600; font-size: 19px; }
.gsample p:last-child { margin-top: 12px; color: var(--mute); }
.glists { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.glist h2 { font-size: clamp(24px, 2.4vw, 36px); }
.glist__note { margin-top: 12px; color: var(--mute); max-width: 44ch; }
.glist ul { list-style: none; margin-top: 28px; border-top: 1px solid var(--line); }
.glist li { padding: 14px 0; border-bottom: 1px solid var(--line); font-weight: 600; font-size: 19px; }
.exlist { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
.exlist h3 { font-family: var(--body); font-size: 16px; font-weight: 600; color: var(--sky); }
.exlist ul { list-style: none; margin-top: 12px; }
.exlist li { padding: 6px 0; font-size: 18px; }

/* Session lengths: a bar for each, scaled to its minutes */
.sess { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px; }
.sess__item { display: flex; flex-direction: column; }
.sess__bar { height: 12px; border-radius: 6px; background: rgba(244, 248, 250, 0.16); overflow: hidden; }
.sess__bar span { display: block; height: 100%; border-radius: 6px; background: var(--sky); transform: scaleX(var(--w)); transform-origin: left center; transition: transform 1300ms var(--ease-wipe) 200ms; }
.js .sess__bar span { transform: scaleX(0); }
.js .sess__item.is-in .sess__bar span { transform: scaleX(var(--w)); }
.sess__time { margin-top: 28px; font-size: clamp(28px, 2.6vw, 40px); }
.sess__price { margin-top: 8px; font-family: var(--display); font-stretch: 100%; font-style: italic; font-weight: 800; font-size: clamp(48px, 5vw, 80px); line-height: 1; color: var(--sky); }
.sess__item p { margin-top: 20px; max-width: 40ch; }
.kat-price { margin-top: 64px; padding-top: 40px; border-top: 1px solid var(--line); display: grid; grid-template-columns: 5fr 7fr; gap: 64px; align-items: start; }
.kat-price dl { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.kat-price dt { font-family: var(--display); font-stretch: 100%; font-style: italic; font-weight: 800; font-size: clamp(36px, 4vw, 60px); line-height: 1; color: var(--sky); }
.kat-price dd { margin-top: 8px; color: var(--mute); }

/* Party steps: a slanted bar, not a numbered list */
.steps { list-style: none; border-top: 1px solid var(--line); }
.steps li { position: relative; padding: 28px 0 28px 56px; border-bottom: 1px solid var(--line); }
.steps li::before {
  content: ""; position: absolute; left: 4px; top: 36px; width: 28px; height: 8px; border-radius: 4px;
  background: var(--sky); transform: skewX(-10deg) rotate(-10deg);
}
.steps strong { display: block; font-size: 20px; }
.steps span { display: block; margin-top: 4px; color: var(--mute); }
.pdfs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 32px; }
.pdf {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 72px; padding: 0 24px;
  border: 2px solid var(--line); border-radius: 36px; text-decoration: none; font-weight: 600;
  transition: border-color 160ms ease, transform 200ms var(--ease);
}
.pdf:hover { border-color: var(--sky); transform: translateX(6px); }
.pdf .mark { width: 36px; flex: none; }
.pdf .mark path { stroke-width: 44; }

/* Call to action band */
.cta { background: var(--sky); color: var(--ink); padding: 88px 0; overflow: hidden; }
.cta__grid { display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; }
.cta__title { font-size: clamp(30px, 3.6vw, 56px); max-width: 18ch; }
.cta p { margin-top: 16px; max-width: 48ch; }
.cta .btn { background: var(--ink); color: var(--paper); }
.cta .btn:hover { background: var(--paper); color: var(--ink); }
.cta .link { color: var(--ink); text-decoration-color: var(--ink); }
.cta__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; }

/* Sibling experiences rail */
.sib { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); border-top: 1px solid var(--line); }
.sib a {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 96px; padding: 0 24px 0 0;
  border-bottom: 1px solid var(--line); text-decoration: none;
  font-family: var(--display); font-stretch: 112%; font-style: italic; font-weight: 700; font-size: 22px; text-transform: uppercase;
}
.sib a + a { padding-left: 24px; border-left: 1px solid var(--line); }
.sib a:hover { color: var(--sky); }
.sib .mark { width: 44px; flex: none; transition: transform 240ms var(--ease); }
.sib a:hover .mark { transform: translateX(8px); }
.sib .mark path { stroke-width: 44; }

/* FAQ */
.faq { border-top: 1px solid var(--line); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary {
  position: relative; display: flex; align-items: center; min-height: 72px; padding: 16px 64px 16px 0; cursor: pointer; list-style: none;
  font-family: var(--display); font-stretch: 100%; font-style: italic; font-weight: 700; font-size: 21px; line-height: 1.2;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: ""; position: absolute; right: 8px; top: 50%; width: 32px; height: 8px; margin-top: -4px; border-radius: 4px;
  background: var(--sky); transform: skewX(-10deg) rotate(-10deg); transition: transform 300ms var(--ease);
}
.faq details[open] summary::after { transform: skewX(-10deg) rotate(80deg); }
.faq summary:hover { color: var(--sky); }
.faq__a { padding: 0 64px 28px 0; max-width: 72ch; }
.faq__a p + p { margin-top: 12px; }

/* Venue gallery: real photos on the slant */
.gal { display: grid; grid-template-columns: 1.3fr 1fr 1fr; grid-auto-rows: 260px; gap: 16px; }
.gal figure { position: relative; margin: 0; overflow: hidden; background: var(--ink-3); clip-path: polygon(0 0, 100% 0, calc(100% - 28px) 100%, 0 100%); }
.gal figure:nth-child(1) { grid-row: span 2; }
.gal img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 700ms var(--ease); }
.gal figure:hover img { transform: scale(1.05); }
.quotes { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line); }
.quote { padding: 40px 40px 40px 0; border-bottom: 1px solid var(--line); }
.quote + .quote { padding-left: 40px; border-left: 1px solid var(--line); }
.quote p { font-size: 18px; line-height: 1.55; }
.quote cite { display: block; margin-top: 20px; font-style: normal; font-weight: 600; color: var(--sky); }
.rewards { display: grid; grid-template-columns: 5fr 7fr; gap: 64px; align-items: center; }

/* Contact */
.contact { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.contact__block + .contact__block { margin-top: 40px; }
.contact h2 { font-family: var(--body); font-size: 16px; font-weight: 600; color: var(--mute); }
.contact p { margin-top: 8px; font-size: 22px; line-height: 1.4; }
.contact p a {
  display: inline-flex; align-items: center; min-height: 48px;
  text-decoration: underline; text-decoration-color: var(--sky); text-decoration-thickness: 2px; text-underline-offset: 5px;
}
.contact__photo { position: relative; min-height: 420px; overflow: hidden; clip-path: polygon(14% 0, 100% 0, 100% 100%, 0 100%); background: var(--ink-3); }
.contact__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 60%; }

/* Footer */
.foot { display: block; padding: 0; background: var(--ink-2); color: var(--paper); font-size: 16px; }
.foot__top { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1.2fr; gap: 48px; max-width: 1440px; margin: 0 auto; padding: 72px var(--gutter) 48px; }
.foot__brand img { width: 176px; height: auto; }
.foot__brand p { margin-top: 20px; color: var(--mute); max-width: 32ch; }
.foot h2 { font-family: var(--body); font-size: 16px; font-weight: 600; color: var(--sky); }
.foot ul { list-style: none; margin-top: 12px; }
.foot li a, .foot address a { display: inline-flex; align-items: center; min-height: 48px; text-decoration: none; color: var(--paper); }
.foot li a:hover, .foot address a:hover { color: var(--sky); }
.foot address { margin-top: 12px; font-style: normal; color: var(--mute); }
.foot address p { margin-bottom: 8px; }
.foot__base { border-top: 1px solid var(--line); }
.foot__base p { max-width: 1440px; margin: 0 auto; padding: 16px var(--gutter); color: var(--mute); font-size: 16px; }
.foot__base a { display: inline-flex; align-items: center; min-height: 48px; color: var(--paper); text-decoration-color: var(--sky); text-underline-offset: 5px; }

@media (max-width: 1100px) {
  .exlist { grid-template-columns: 1fr 1fr; }
  .foot__top { grid-template-columns: 1fr 1fr; }
  .pdfs { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 960px) {
  .hero--slides, .hero--window { height: auto; }
  .hero--slides .hero__panel, .hero--window .hero__panel, .hero--type .hero__panel { width: auto; }
  .hero--rtl .hero__panel, .hero--left .hero__panel { right: auto; text-align: left; }
  .hero--rtl .hero__actions { justify-content: flex-start; }
  .hero--rtl .hero__mark { margin-left: 0; transform: none; }
  .hero--rtl .hero__lede { margin-left: 0; }
  .slides, .hero--window .slides, .hero--left .slides, .hero--type .slides {
    position: relative; inset: auto; left: auto; right: auto; transform: none; height: 380px; margin: 0; --sl: 28px;
    clip-path: polygon(0 0, 100% 0, 100% calc(100% - 28px), 0 100%);
  }
  .hero--window .slides::after, .slides::after, .hero--rtl .slides::after { transform: none; left: 0; right: 0; background: linear-gradient(0deg, rgba(7, 11, 16, 0.6), rgba(7, 11, 16, 0) 40%); }
  .hero--window .slide__in { left: 0; right: 0; transform: none; }
  .hero--left::before { display: none; }
  .hero__h1 { font-size: 40px; margin-top: 8px; }
  .hero--type .hero__h1 { font-size: 72px; }
  .hero__lede { font-size: 17px; margin-top: 12px; }
  .hero--flip .strips { left: auto; right: auto; }
  .hero--flip .hero__panel { width: auto; }
  .hero__rail { position: static; }

  .sec { padding: 64px 0; }
  .split, .kat-price, .rewards, .contact { grid-template-columns: 1fr; gap: 32px; }
  .xrow { grid-template-columns: 1fr; min-height: 0; }
  .xrow__media { min-height: 260px; aspect-ratio: 4 / 3; clip-path: polygon(0 0, 100% 0, 100% 90%, 0 100%); }
  .xrow--flip .xrow__media { order: 0; clip-path: polygon(0 0, 100% 0, 100% 90%, 0 100%); }
  .xrow--flip .xrow__copy { order: 1; padding: 40px var(--gutter) 56px; justify-self: auto; }
  .xrow__copy { padding: 40px var(--gutter) 56px; max-width: none; }
  .xrow__media--type { padding: 32px; }
  .gsamples, .glists, .quotes { grid-template-columns: 1fr; }
  .glists { gap: 48px; }
  .gsample { padding: 32px 0; }
  .gsample + .gsample { padding-left: 0; border-left: 0; }
  .quote, .quote + .quote { padding: 32px 0; border-left: 0; }
  .sess { grid-template-columns: 1fr; gap: 40px; }
  .gal { grid-template-columns: 1fr 1fr; grid-auto-rows: 180px; }
  .gal figure:nth-child(1) { grid-column: span 2; grid-row: span 1; }
  .pdfs { grid-template-columns: 1fr; }
  .cta { padding: 64px 0; }
  .faq summary { font-size: 19px; padding-right: 56px; }
  .faq__a { padding-right: 0; }
  .contact__photo { min-height: 260px; clip-path: polygon(0 0, 100% 0, 100% 100%, 0 90%); }
  .sib a, .sib a + a { padding: 0 8px 0 0; border-left: 0; }
  .foot__top { padding: 56px var(--gutter) 32px; gap: 32px; }
}

@media (max-width: 520px) {
  .exlist { grid-template-columns: 1fr; }
  .foot__top { grid-template-columns: 1fr; }
  .gal { grid-auto-rows: 150px; }
  .kat-price dl { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .js .slide, .js .slide.is-active { transition: none; }
  .slide.is-active img { animation: none; }
  .hero.is-cycling .hero__rail span { animation: none; }
  .hero__rail span { transform: scaleX(1); }
  .js .sess__bar span { transform: scaleX(var(--w)); transition: none; }
  .pdf, .sib .mark, .gal img, .faq summary::after { transition: none; }
}

.hero--band { --hero-h: clamp(480px, 64svh, 620px); }
.find .link { color: var(--ink); text-decoration-color: var(--sky-deep); }
.find .btn + .link { margin-left: 24px; }
.find__more { margin-top: 40px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 32px; }
.find__more .btn { margin-top: 0; }

.facts__more { padding-bottom: 32px; margin-top: -16px; }

/* Header folds into the menu earlier now that there are six pages in it */
@media (min-width: 961px) and (max-width: 1180px) {
  .head__nav, .head__phone, .head .btn { display: none; }
  .head__menu {
    display: inline-flex; align-items: center; justify-content: center;
    margin-left: auto; min-width: 88px; min-height: 48px; padding: 0 20px;
    border-radius: 24px; border: 2px solid var(--paper); background: none; color: var(--paper);
    font-family: var(--body); font-size: 16px; font-weight: 600; cursor: pointer;
  }
  .drawer.is-open {
    display: flex; flex-direction: column; gap: 8px;
    position: fixed; inset: 0; z-index: 40; padding: 88px var(--gutter) 32px;
    background: var(--ink); overflow-y: auto;
  }
  .drawer a {
    display: flex; align-items: center; min-height: 56px;
    font-family: var(--display); font-stretch: 125%; font-style: italic; font-weight: 700;
    font-size: 24px; text-transform: uppercase; text-decoration: none; border-bottom: 1px solid var(--line);
  }
  .drawer .btn { margin-top: 24px; border-bottom: 0; font-size: 17px; text-transform: none; color: var(--ink); }
  .drawer__close {
    position: absolute; top: 16px; right: var(--gutter); min-width: 88px; min-height: 48px; border-radius: 24px;
    border: 2px solid var(--paper); background: none; color: var(--paper);
    font-family: var(--body); font-size: 16px; font-weight: 600; cursor: pointer;
  }
}


/* =====================================================================
   Round 2: no caps line above headings, a hero panel that flows under the header, a text pause
   control beside the timer, drawn elements below the heroes, slanted closing band.
   ===================================================================== */

/* Timer row: the mark's blue bar, its cycling word on the same line, and a text pause control */
.hero__timer { display: flex; align-items: center; gap: 20px; }
.hero__timer .hero__now {
  margin: 0; height: 1.3em; min-width: 0; flex: 0 1 17em;
  font-size: clamp(20px, 1.7vw, 26px); color: var(--paper);
}
.hero__pause {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 48px; min-width: 56px; padding: 0 8px;
  background: none; border: 0; border-radius: 0; color: var(--mute);
  font-family: var(--body); font-size: 16px; font-weight: 600; cursor: pointer;
  text-decoration: underline; text-decoration-color: var(--sky); text-decoration-thickness: 2px; text-underline-offset: 6px;
}
.hero__pause:hover { color: var(--paper); border: 0; }
.hero--slides .hero__mark, .hero--window .hero__mark, .hero--short .hero__mark, .hero--flip .hero__mark { width: clamp(72px, 7vw, 104px); flex: none; }
.hero--rtl .hero__mark { margin-left: 0; transform: scaleX(-1); }
.hero--rtl .hero__timer { flex-direction: row-reverse; }
.hero--rtl .hero__timer .hero__now { text-align: right; }
.hero--rtl .hero__timer .now { right: 0; left: auto; }
.hero__h1 { margin-top: 20px; }
.hero--short .hero__h1, .hero--flip .hero__h1 { margin-top: 20px; }

/* The hero panel flows in the hero, so it can never sit under the header */
@media (min-width: 961px) {
  .hero--slides, .hero--window, .hero--short, .hero--flip {
    height: auto; min-height: var(--hero-h);
    display: flex; align-items: flex-end;
    padding: 136px var(--gutter) 72px;
  }
  .hero--rtl, .hero--left, .hero--flip { justify-content: flex-end; }
  .hero--slides .hero__panel, .hero--window .hero__panel, .hero--short .hero__panel, .hero--flip .hero__panel,
  .hero--rtl .hero__panel, .hero--left .hero__panel {
    position: relative; left: auto; right: auto; top: auto; bottom: auto; z-index: 3;
  }
  .hero--short .hero__now, .hero--flip .hero__now { font-size: clamp(36px, 4.4vw, 76px); }
  
}
.hero--short .hero__now:not(.hero__timer .hero__now) { margin-top: 24px; height: 1.95em; }

/* KAT VR: no footage. The hero is the mark, big type and the real facts cycling on the timer */
.hero--kat { background: var(--ink); }
.hero--kat .slide { background: var(--sky); color: var(--ink); }
.hero--kat .slide:nth-child(even) { background: var(--paper); }
.hero--kat .slides::after { display: none; }
@media (min-width: 961px) { .hero--kat .slides { top: 112px; } }
.slide__fact { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 14px; padding: 0 144px 0 160px; }
.fact__mark { width: 84px; margin-bottom: 12px; }
.fact__mark .mark__top { stroke: var(--ink); }
.fact__mark .mark__low { stroke: var(--sky-deep); }
.hero--kat .slide:nth-child(even) .fact__mark .mark__low { stroke: var(--sky); }
.fact__big { font-size: clamp(64px, 10vw, 180px); line-height: 0.92; }
.fact__txt { font-weight: 600; font-size: clamp(18px, 1.6vw, 24px); max-width: 18ch; line-height: 1.25; }

/* Drawn to scale: zones, bay, countdown, stations, week */
.draw { --u: clamp(16px, 3.1vw, 44px); }
.zones { display: flex; align-items: flex-end; justify-content: center; gap: clamp(32px, 6vw, 96px); padding: 16px 0 8px; }
.zone { display: flex; flex-direction: column; }
.zone__floor {
  position: relative; width: calc(var(--m) * var(--u)); aspect-ratio: 1; border: 3px solid var(--sky);
  background:
    linear-gradient(rgba(84, 192, 227, 0.2) 1px, transparent 1px) 0 0 / var(--u) var(--u),
    linear-gradient(90deg, rgba(84, 192, 227, 0.2) 1px, transparent 1px) 0 0 / var(--u) var(--u),
    rgba(84, 192, 227, 0.07);
  transform: skewX(-10deg); transform-origin: bottom left;
}
.js .zone__floor { clip-path: inset(100% 0 0 0); transition: clip-path 1300ms var(--ease-wipe); }
.js .draw.is-in .zone__floor { clip-path: inset(0); }
.zone__pl { position: absolute; width: calc(var(--u) * 1.05); left: var(--x); top: var(--y); }
.zone__pl svg { width: 100%; }
.zone__pl .mark path { stroke-width: 46; }
.js .zone__pl { opacity: 0; transform: translateY(10px) scale(0.4); transition: opacity 500ms ease calc(800ms + var(--i) * 110ms), transform 600ms var(--ease) calc(800ms + var(--i) * 110ms); }
.js .draw.is-in .zone__pl { opacity: 1; transform: none; }
.zone__cap { margin-top: 24px; }
.zone__m { font-size: clamp(24px, 3vw, 44px); }
.zone__n { margin-top: 6px; color: var(--mute); }
.nest { position: relative; width: calc(10 * var(--u)); aspect-ratio: 1; transform: skewX(-10deg); transform-origin: bottom left; }
.nest__sq { position: absolute; left: 0; bottom: 0; width: calc(var(--m) * var(--u)); aspect-ratio: 1; border: 3px solid var(--sky); }
.nest__sq--ghost { border-style: dashed; border-color: rgba(84, 192, 227, 0.55); }
.nest__sq--bay { background: var(--sky); border-color: var(--sky); }
.nest__sq--bay .zone__pl { left: 14%; top: 14%; width: 70%; }
.nest__sq--bay .mark__top { stroke: var(--ink); }
.nest__sq--bay .mark__low { stroke: var(--paper); }
.js .nest__sq { clip-path: inset(100% 0 0 0); transition: clip-path 1100ms var(--ease-wipe) calc(var(--k) * 350ms); }
.js .draw.is-in .nest__sq { clip-path: inset(0); }
.legend { list-style: none; display: grid; gap: 20px; align-content: center; }
.legend li { display: grid; grid-template-columns: 44px 1fr; gap: 20px; align-items: center; }
.legend i { display: block; height: 20px; border: 3px solid var(--sky); transform: skewX(-10deg); }
.legend li.is-ghost i { border-style: dashed; border-color: rgba(84, 192, 227, 0.55); }
.legend li.is-bay i { background: var(--sky); }
.legend b { display: block; font-family: var(--display); font-stretch: 112%; font-style: italic; font-weight: 800; text-transform: uppercase; font-size: clamp(22px, 2.4vw, 34px); line-height: 1.05; }
.legend span { color: var(--mute); }
.drawgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }

.countdown__bar { height: 20px; border-radius: 10px; background: rgba(244, 248, 250, 0.16); overflow: hidden; }
.countdown__bar span { display: block; height: 100%; border-radius: 10px; background: var(--sky); transform-origin: left center; transform: scaleX(1); }
.js .draw.is-in .countdown__bar span { animation: drain 7s cubic-bezier(0.4, 0, 0.6, 1) 400ms forwards; }
@keyframes drain { to { transform: scaleX(0.06); } }
.countdown__title { font-size: clamp(30px, 4.4vw, 72px); margin-bottom: 32px; }

.stations { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.station { display: flex; flex-direction: column; gap: 20px; }
.station .mark { width: clamp(64px, 9vw, 140px); }
.station__base { height: 8px; border-radius: 4px; background: var(--sky); transform: skewX(-10deg); }
.js .station { opacity: 0; transform: translateX(-72px); transition: opacity 600ms ease calc(var(--i) * 180ms), transform 900ms var(--ease) calc(var(--i) * 180ms); }
.js .draw.is-in .station { opacity: 1; transform: none; }

.week { list-style: none; display: grid; gap: 4px; }
.week li { display: grid; grid-template-columns: 8.5em 1fr; align-items: center; gap: 16px; min-height: 40px; }
.week b { font-weight: 600; }
.week i { display: block; height: 12px; border-radius: 6px; background: var(--sky); clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%); transform-origin: left center; }
.js .week i { transform: scaleX(0); transition: transform 1100ms var(--ease-wipe) calc(var(--i) * 120ms); }
.js .draw.is-in .week i { transform: none; }
.week__note { margin-top: 12px; color: var(--mute); }

.rcard {
  position: relative; max-width: 440px; aspect-ratio: 1.6; padding: 28px; display: flex; flex-direction: column; justify-content: space-between;
  background: var(--ink-3); border: 3px solid var(--sky); transform: skewX(-10deg); margin-left: 12px;
}
.rcard > * { transform: skewX(10deg); }
.rcard .mark { width: 72px; }
.rcard__bar { height: 12px; border-radius: 6px; background: rgba(244, 248, 250, 0.18); overflow: hidden; }
.rcard__bar span { display: block; height: 100%; border-radius: 6px; background: var(--sky); transform-origin: left center; transform: scaleX(0.82); }
.js .rcard__bar span { transform: scaleX(0); transition: transform 1800ms var(--ease-wipe) 300ms; }
.js .draw.is-in .rcard__bar span { transform: scaleX(0.82); }

/* Slanted real-video band */
.vband { position: relative; height: clamp(300px, 34vw, 500px); overflow: hidden; background: var(--ink-3); clip-path: polygon(6% 0, 100% 0, 94% 100%, 0 100%); }
.js .vband { clip-path: polygon(6% 0, 6% 0, 0 100%, 0 100%); transition: clip-path 1300ms var(--ease-wipe); }
.js .vwrap.is-in .vband { clip-path: polygon(6% 0, 100% 0, 94% 100%, 0 100%); }
.vband video { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: var(--pos, 50% 30%); }
.vband::after { content: ""; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(7, 11, 16, 0.4), rgba(7, 11, 16, 0) 40%); pointer-events: none; }
.vband--copy::after { background: linear-gradient(90deg, rgba(7, 11, 16, 0.88) 0%, rgba(7, 11, 16, 0.6) 38%, rgba(7, 11, 16, 0) 66%); }
.vband__copy { position: absolute; z-index: 2; left: calc(var(--gutter) + 5%); top: 50%; transform: translateY(-50%); width: min(560px, 60%); }
.vband__copy h2 { font-size: clamp(28px, 3.4vw, 52px); }
.vband__copy p { margin-top: 16px; font-size: 18px; }

/* Games ticker */
.ticker { overflow: hidden; border-block: 1px solid var(--line); background: var(--ink-2); padding: 28px 0; }
.ticker__track { display: flex; width: max-content; animation: tick 70s linear infinite; }
.ticker:hover .ticker__track, .ticker:focus-within .ticker__track { animation-play-state: paused; }
.ticker__set { display: flex; align-items: center; gap: 40px; padding-right: 40px; flex: none; }
.ticker__set span { font-family: var(--display); font-stretch: 112%; font-style: italic; font-weight: 800; text-transform: uppercase; font-size: clamp(32px, 4vw, 64px); line-height: 1; white-space: nowrap; }
.ticker__set .mark { width: 40px; flex: none; }
.ticker__set .mark path { stroke-width: 44; }
@keyframes tick { to { transform: translateX(-50%); } }

/* Party steps draw their rule */
.steps { position: relative; }
.steps::before { content: ""; position: absolute; left: 17px; top: 0; bottom: 0; width: 2px; background: rgba(84, 192, 227, 0.5); transform-origin: top; }
.js .steps::before { transform: scaleY(0); transition: transform 1600ms var(--ease-wipe); }
.js .steps.is-in::before { transform: none; }
.js .steps li::before { opacity: 0; transition: opacity 500ms ease calc(300ms + var(--i) * 260ms); }
.js .steps.is-in li::before { opacity: 1; }
.steps li::before { z-index: 1; }

/* Closing band: the slant of the mark, wiped in */
.cta { background: var(--ink); color: var(--ink); padding: 0; overflow: hidden; }
.cta__band { background: var(--sky); padding: 88px 0; clip-path: polygon(6vw 0, 100% 0, calc(100% - 6vw) 100%, 0 100%); }
.js .cta__band { clip-path: polygon(6vw 0, 6vw 0, 0 100%, 0 100%); transition: clip-path 1300ms var(--ease-wipe); }
.js .cta.is-in .cta__band { clip-path: polygon(6vw 0, 100% 0, calc(100% - 6vw) 100%, 0 100%); }
.cta__grid { padding-left: calc(var(--gutter) + 4vw); padding-right: calc(var(--gutter) + 4vw); }

/* Hub rows wipe in */
.js .xrow__media { clip-path: polygon(0 0, 0 0, 0 100%, 0 100%); transition: clip-path 1200ms var(--ease-wipe), opacity 700ms ease; }
.js .xrow.is-in .xrow__media { clip-path: polygon(0 0, 100% 0, 88% 100%, 0 100%); }
.js .xrow--flip .xrow__media { clip-path: polygon(100% 0, 100% 0, 100% 100%, 100% 100%); }
.js .xrow--flip.is-in .xrow__media { clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%); }

@media (max-width: 960px) {
  .hero--slides .hero__mark, .hero--window .hero__mark, .hero--short .hero__mark, .hero--flip .hero__mark { width: 64px; }
  .hero__timer { gap: 12px; }
  .hero__timer .hero__now { flex: 1 1 auto; width: auto; }
  .hero--rtl .hero__timer { flex-direction: row; }
  .hero--rtl .hero__mark { transform: none; }
  .hero--rtl .hero__timer .hero__now { text-align: left; }
  .hero--rtl .hero__timer .now { left: 0; right: auto; }
  .slide__fact { padding: 0 24px; }
  .fact__big { font-size: 64px; }
  .drawgrid { grid-template-columns: 1fr; gap: 40px; }
  .stations { grid-template-columns: repeat(2, 1fr); }
  .vband { height: 240px; }
  .vband__copy { left: var(--gutter); width: calc(100% - 2 * var(--gutter)); }
  .vband--copy::after { background: linear-gradient(0deg, rgba(7, 11, 16, 0.85), rgba(7, 11, 16, 0.35)); }
  .cta__band { padding: 64px 0; }
  .week li { grid-template-columns: 7em 1fr; }
  .rcard { max-width: 320px; }
}

@media (prefers-reduced-motion: reduce) {
  .js .zone__floor, .js .nest__sq { clip-path: none; transition: none; }
  .js .zone__pl, .js .station { opacity: 1; transform: none; transition: none; }
  .js .week i, .js .rcard__bar span, .js .steps::before { transform: none; transition: none; }
  .js .rcard__bar span { transform: scaleX(0.82); }
  .js .steps li::before { opacity: 1; transition: none; }
  .js .draw.is-in .countdown__bar span, .countdown__bar span { animation: none; transform: scaleX(0.5); }
  .ticker { overflow-x: auto; }
  .ticker__track { animation: none; }
  .js .vband, .js .cta__band, .js .xrow__media, .js .xrow--flip .xrow__media { transition: none; }
  .js .vband { clip-path: polygon(6% 0, 100% 0, 94% 100%, 0 100%); }
  .js .cta__band { clip-path: polygon(6vw 0, 100% 0, calc(100% - 6vw) 100%, 0 100%); }
  .js .xrow__media { clip-path: polygon(0 0, 100% 0, 88% 100%, 0 100%); }
  .js .xrow--flip .xrow__media { clip-path: polygon(12% 0, 100% 0, 100% 100%, 0 100%); }
}

.sess--two { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 960px) { .sess--two { grid-template-columns: 1fr; } }
