/* =====================================================================
   The Loveworld Kingdom Producers Summit
   Design system: archival "producer's desk". Cream stock, ink navy,
   stamp red, mustard tape. Condensed display type, typewriter metadata.
   ===================================================================== */

/* ---------- Tokens ---------- */
:root {
  /* halftone prints: the layout sets these per edition; London is the fallback */
  --art-summit: url("../img/summit-tower-bridge-halftone-v1.jpg");
  --art-poster: url("../img/poster-st-pauls-halftone-v1.jpg");
  --art-pathways: url("../img/pathways-westminster-halftone-v1.jpg");
  --art-process: url("../img/process-battersea-halftone-v1.jpg");
  --art-cta: url("../img/cta-wembley-halftone-v1.jpg");
  --art-portal: url("../img/portal-british-library-halftone-v1.jpg");
  --art-footer: url("../img/footer-royal-albert-hall-halftone-v1.jpg");

  /* paper & ink */
  --paper:        #FFFFFF;
  --paper-2:      #F4F4F3;
  --paper-3:      #E6E6E4;
  --paper-line:   rgba(27, 34, 66, 0.14);
  --ink:          #1B2242;
  --ink-2:        #2A3260;
  --ink-soft:     #4C5375;
  --charcoal:     #201E1A;
  --muted:        #5C5648;
  --muted-2:      #635D4E;

  /* accents */
  --stamp:        #B4232B;
  --stamp-deep:   #8E1A21;
  --mustard:      #D9A521;
  --mustard-deep: #B98614;
  --tape:         rgba(220, 176, 78, 0.55);

  /* type */
  --font-display: "Oswald", "Arial Narrow", Impact, sans-serif;
  --font-body:    "Switzer", "Helvetica Neue", Arial, sans-serif;
  --font-mono:    "IBM Plex Mono", "SFMono-Regular", Menlo, monospace;
  --font-hand:    "Caveat", "Segoe Script", cursive;

  /* scale (fluid) */
  --fs-hero:  clamp(3.6rem, 9.5vw, 8.5rem);
  --fs-h1:    clamp(2.8rem, 6vw, 5.4rem);
  --fs-h2:    clamp(2.2rem, 4.4vw, 4rem);
  --fs-h3:    clamp(1.5rem, 2.2vw, 2rem);
  --fs-lede:  clamp(1.05rem, 1.35vw, 1.25rem);
  --fs-body:  1rem;
  --fs-small: 0.9375rem;
  --fs-mono:  0.845rem;

  /* layout */
  --container: 1280px;
  --gutter: clamp(1.25rem, 4vw, 3rem);
  --section: clamp(5rem, 11vw, 10rem);
  --radius: 3px;

  /* motion */
  /* One curve for every UI motion: quick off the mark, long soft settle. */
  --ease-smooth: cubic-bezier(.32, .72, 0, 1);
  --ease-out: var(--ease-smooth);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-fast: 260ms;
  --dur: 420ms;
}

/* ---------- Reset & base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.6;
  color: var(--charcoal);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}
h1, h2, h3, h4 { margin: 0; font-family: var(--font-display); font-weight: 600; line-height: 0.98; letter-spacing: -0.005em; text-transform: uppercase; color: var(--ink); }
p { margin: 0 0 1em; }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
em { font-style: italic; }
::selection { background: var(--ink); color: var(--paper); }

.container { width: min(100% - var(--gutter) * 2, var(--container)); margin-inline: auto; }
.mono { font-family: var(--font-mono); font-size: var(--fs-mono); letter-spacing: 0.06em; text-transform: uppercase; }
.hand { font-family: var(--font-hand); font-weight: 600; text-transform: none; letter-spacing: 0; }

.skip-link { position: absolute; left: 1rem; top: -100%; background: var(--ink); color: var(--paper); padding: .6rem 1rem; z-index: 999; font-family: var(--font-mono); font-size: .8rem; }
.skip-link:focus { top: 1rem; }

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

/* ---------- First-load motion ident ---------- */
.site-intro { display: none; }
.intro-pending { overflow: hidden; }
.intro-pending .site-intro { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; overflow: hidden; color: var(--paper); background: var(--ink); }
.site-intro__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.site-intro.is-leaving { animation: intro-exit .8s var(--ease-in-out) both; }
.site-intro__skip { position: absolute; z-index: 2; right: clamp(1rem, 4vw, 2.5rem); bottom: clamp(1rem, 4vw, 2.5rem); padding: .6rem 1.1rem; color: var(--paper); background: rgba(13,19,46,.62); border: 1px solid rgba(255,255,255,.5); font-size: .75rem; letter-spacing: .12em; text-transform: uppercase; cursor: pointer; }
.site-intro__skip:hover { background: rgba(13,19,46,.85); }
@keyframes intro-exit { to { opacity: 0; visibility: hidden; } }

/* ---------- Cookie preferences ---------- */
.cookie-banner {
  position: fixed; z-index: 1100;
  right: clamp(1rem, 3vw, 2rem); bottom: clamp(1rem, 3vw, 2rem);
  width: min(calc(100% - 2rem), 23rem);
  padding: 1.5rem;
  color: var(--ink);
  background: linear-gradient(165deg, rgba(253,251,246,.88), rgba(255,255,255,.82));
  backdrop-filter: blur(18px) saturate(1.25);
  -webkit-backdrop-filter: blur(18px) saturate(1.25);
  border: 1px solid rgba(27,34,66,.14);
  border-radius: 18px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.55),
    0 32px 80px -28px rgba(8,12,29,.5),
    0 12px 28px -14px rgba(8,12,29,.22);
  opacity: 0;
  transform: translateY(1.5rem) scale(.97);
  transition: opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out);
}
.cookie-banner[hidden] { display: none; }
.cookie-banner.is-in { opacity: 1; transform: translateY(0) scale(1); }
.cookie-banner.is-out { opacity: 0; transform: translateY(.75rem) scale(.98); }
.cookie-banner__top { display: flex; align-items: center; gap: .8rem; margin-bottom: .85rem; }
.cookie-banner__icon {
  width: 2.6rem; height: 2.6rem; flex: none;
  display: grid; place-items: center;
  border-radius: 12px;
  color: var(--ink);
  background: rgba(27,34,66,.07);
  border: 1px solid rgba(27,34,66,.12);
}
.cookie-banner__icon svg { width: 1.3rem; height: 1.3rem; }
.cookie-banner__title { margin: 0; font-family: var(--font-display); font-weight: 600; font-size: 1.15rem; letter-spacing: .04em; text-transform: uppercase; }
.cookie-banner__text { margin: 0 0 1.25rem; color: var(--ink-soft); font-size: .9rem; line-height: 1.55; }
.cookie-banner__actions { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem 1rem; align-items: center; }
.cookie-banner__actions .btn { grid-column: 1 / -1; justify-content: center; padding: .85rem 1.2rem .8rem; }
.cookie-banner__reject { justify-self: center; padding: .2rem 0; color: var(--ink-soft); border-bottom: 1px solid currentColor; transition: color var(--dur-fast); }
.cookie-banner__reject:hover { color: var(--ink); }
.cookie-banner__prefs { display: grid; grid-template-rows: 0fr; transition: grid-template-rows var(--dur) var(--ease-out); }
.cookie-banner__prefs.is-open { grid-template-rows: 1fr; }
.cookie-banner__prefs-inner { overflow: hidden; min-height: 0; }
.cookie-banner__cats { margin-top: 1.1rem; padding-top: .35rem; border-top: 1px solid var(--paper-line); }
.cookie-switch { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 0; cursor: pointer; }
.cookie-switch + .cookie-switch { border-top: 1px solid var(--paper-line); }
.cookie-switch--locked { cursor: default; }
.cookie-switch__label { display: grid; gap: .1rem; font-size: .875rem; font-weight: 500; line-height: 1.35; color: var(--ink); }
.cookie-switch__label small { font-size: .76rem; font-weight: 400; letter-spacing: .01em; color: var(--muted); }
.cookie-switch__input { position: absolute; opacity: 0; pointer-events: none; }
.cookie-switch__track { position: relative; width: 2.6rem; height: 1.45rem; flex: none; border-radius: 999px; background: rgba(27,34,66,.16); border: 1px solid rgba(27,34,66,.14); transition: background var(--dur-fast) var(--ease-out); }
.cookie-switch__thumb { position: absolute; top: 50%; left: .15rem; width: 1.02rem; height: 1.02rem; border-radius: 50%; background: #FDFBF6; box-shadow: 0 1px 3px rgba(8,12,29,.35); transform: translateY(-50%); transition: transform var(--dur-fast) var(--ease-out); }
.cookie-switch__input:checked ~ .cookie-switch__track { background: var(--ink); }
.cookie-switch__input:checked ~ .cookie-switch__track .cookie-switch__thumb { transform: translate(1.15rem, -50%); }
.cookie-switch__input:focus-visible ~ .cookie-switch__track { outline: 2px solid var(--stamp); outline-offset: 3px; }
.cookie-switch--locked .cookie-switch__track { background: var(--ink); opacity: .55; }
.cookie-switch--locked .cookie-switch__thumb { transform: translate(1.15rem, -50%); }
.cookie-banner__save { width: 100%; justify-content: center; margin-top: 1rem; }

/* paper grain overlay */
.grain {
  position: fixed; inset: -50%; pointer-events: none; z-index: 1000; opacity: .045;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode: multiply;
}

/* ---------- Primitives ---------- */
.eyebrow {
  display: inline-flex; align-items: center; gap: .6rem;
  font-family: var(--font-mono); font-size: var(--fs-mono); letter-spacing: .1em; text-transform: uppercase;
  color: var(--ink-soft); margin: 0 0 1.4rem;
}
.eyebrow__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--stamp); flex: none; }
.eyebrow__sep { opacity: .45; }
.eyebrow--light { color: rgba(255,255,255, .93); }
.eyebrow--pill {
  display: inline-flex; align-items: center; gap: .6rem; width: fit-content;
  border: 1px solid transparent; border-radius: 999px;
  padding: .55rem 1.2rem .55rem 1rem; margin-bottom: 2rem;
  color: var(--ink);
  background: rgba(255,255,255, .93);
}
.eyebrow--pill .eyebrow__icon { width: 14px; height: 14px; flex: none; color: var(--ink); }

.btn {
  --btn-bg: var(--ink); --btn-fg: var(--paper); --btn-bd: var(--ink);
  position: relative; display: inline-flex; align-items: center; gap: .85rem;
  padding: .95rem 1.4rem .9rem; border: 1.5px solid var(--btn-bd); border-radius: var(--radius);
  background: var(--btn-bg); color: var(--btn-fg);
  font-family: var(--font-display); font-weight: 500; font-size: .95rem; letter-spacing: .12em; text-transform: uppercase; line-height: 1;
  transition: transform var(--dur-fast) var(--ease-out), background var(--dur-fast), color var(--dur-fast), box-shadow var(--dur-fast);
  overflow: hidden; isolation: isolate;
}
.btn::before { content: ""; position: absolute; inset: 0; background: currentColor; opacity: 0; transition: opacity var(--dur-fast); z-index: -1; }
.btn:hover::before { opacity: .08; }
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }
.btn__arrow { display: inline-flex; align-items: center; justify-content: center; transition: transform var(--dur-fast) var(--ease-out); }
.btn:hover .btn__arrow { transform: translateX(4px); }
.icon-arrow { width: 1.05em; height: 1.05em; display: block; flex: none; }
.btn--stamp { --btn-bg: var(--stamp); --btn-bd: var(--stamp); --btn-fg: var(--paper); box-shadow: 0 6px 18px -8px rgba(180, 35, 43, .55); }
.btn--outline { --btn-bg: transparent; --btn-fg: var(--ink); --btn-bd: var(--ink); }
.btn--paper { --btn-bg: var(--paper); --btn-fg: var(--stamp-deep); --btn-bd: var(--paper); }
.btn--lg { padding: 1.2rem 1.8rem 1.1rem; font-size: 1.05rem; }
.btn--block { width: 100%; justify-content: center; }

/* masking tape */
.tape {
  position: absolute; display: block; width: 120px; height: 28px; background: var(--tape);
  transform: rotate(-4deg); pointer-events: none;
  clip-path: polygon(1% 0, 99% 2%, 100% 96%, 98% 100%, 0 98%, 2% 90%, 0 4%);
  mix-blend-mode: multiply;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
}
.tape--red { background: repeating-linear-gradient(135deg, rgba(180,35,43,.72) 0 10px, rgba(255,255,255,.75) 10px 20px); }
.tape--mustard { background: rgba(217,165,33,.72); }

/* rubber stamp */
.stamp-base {
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase; color: var(--stamp);
  border: 3px double var(--stamp); border-radius: 6px; line-height: .95; text-align: center;
  mix-blend-mode: multiply; opacity: .92;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .55 .55'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
          mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .55 .55'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  -webkit-mask-size: 160px; mask-size: 160px;
}

/* ruled / blueprint background */
.section--paper-dark { background: var(--paper-2); }
.section--ink { background: var(--ink); color: rgba(255,255,255,.86); isolation: isolate; overflow: hidden; }
.section--ink h2, .section--ink h3 { color: var(--paper); }
.section--stamp { background: var(--stamp); color: var(--paper); }
.section--stamp h2 { color: var(--paper); }

.section { padding-block: var(--section); position: relative; }
.section__head { max-width: 62ch; margin-bottom: clamp(3rem, 6vw, 5rem); }
.section__head--split { max-width: none; display: grid; grid-template-columns: 1.1fr .9fr; gap: 3rem; align-items: end; }
.section__head--split .section__lede { margin-bottom: .4rem; }
.section__title { font-size: var(--fs-h2); margin-bottom: 1.2rem; }
.section__lede { font-size: var(--fs-lede); line-height: 1.5; color: var(--muted); max-width: 52ch; }
.section--ink .section__lede { color: rgba(255,255,255,.82); }

/* ---------- Nav ---------- */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 70;
  padding-block: .9rem;
  background: var(--paper);
  border-bottom: 1px solid var(--paper-line);
  transition: padding var(--dur) var(--ease-out), box-shadow var(--dur);
}
.nav.is-scrolled { padding-block: .55rem; box-shadow: 0 6px 18px -14px rgba(32,30,26,.4); }
.nav__inner { display: flex; align-items: center; gap: 2rem; }
.brand { display: inline-flex; align-items: center; gap: .8rem; color: var(--ink); }
.brand__mono { display: inline-flex; color: var(--stamp); }
.brand__crest { width: 44px; height: auto; object-fit: contain; mix-blend-mode: multiply; }
.brand__text { display: flex; flex-direction: column; line-height: 1.05; }
.brand__line { font-family: var(--font-display); text-transform: uppercase; font-weight: 600; letter-spacing: .02em; }
.brand__line--top { font-size: .8rem; }
.brand__line--bottom { font-size: .68rem; color: var(--stamp); letter-spacing: .14em; }
.nav__cta { margin-left: auto; transform: translateX(clamp(.5rem, 2vw, 2rem)); }
.nav__cta .btn { padding: .7rem 1.1rem .65rem; font-size: .85rem; }
.nav__burger {
  display: none; position: relative; width: 42px; height: 42px; margin-left: auto;
  border: 1px solid var(--paper-line); border-radius: var(--radius); z-index: 2;
}
.nav__burger span {
  position: absolute; left: 11px; width: 18px; height: 1.5px; background: var(--ink);
  transition: transform var(--dur-fast) var(--ease-out), top var(--dur-fast) var(--ease-out);
}
.nav__burger span:first-child { top: 16px; }
.nav__burger span:last-child { top: 24px; }
.nav__burger[aria-expanded="true"] span:first-child { top: 20px; transform: rotate(45deg); }
.nav__burger[aria-expanded="true"] span:last-child { top: 20px; transform: rotate(-45deg); }

.mobile-menu {
  position: fixed; inset: 0; z-index: 60; display: grid;
  padding: 6.6rem var(--gutter) 1.6rem; background: var(--paper); isolation: isolate;
  visibility: hidden; opacity: 0; transform: translateY(-12px); pointer-events: none;
  transition: opacity var(--dur) var(--ease-out), transform var(--dur) var(--ease-out), visibility 0s var(--dur);
}
.mobile-menu::before { content: ""; position: absolute; z-index: -2; inset: 0; background: var(--art-portal) 74% bottom / cover no-repeat; }
.mobile-menu::after { content: ""; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgba(255,255,255,.98) 0%, rgba(255,255,255,.94) 50%, rgba(255,255,255,.7) 100%); }
.mobile-menu.is-open {
  visibility: visible; opacity: 1; transform: none; pointer-events: auto;
  transition-delay: 0s;
}
.mobile-menu__inner { display: grid; grid-template-rows: auto 1fr auto; min-height: calc(100dvh - 8.2rem); }
.mobile-menu__meta { display: flex; justify-content: space-between; gap: 1rem; padding-bottom: 1.2rem; color: var(--stamp); border-bottom: 1px solid rgba(27,34,66,.18); }
.mobile-menu__links { align-self: center; display: grid; gap: clamp(.5rem, 2vw, 1rem); padding-block: 2rem; }
.mobile-menu__link { width: fit-content; font-family: var(--font-display); font-size: clamp(2.55rem, 10vw, 4.25rem); font-weight: 600; line-height: .92; text-transform: uppercase; color: var(--ink); transition: color var(--dur-fast), transform var(--dur-fast) var(--ease-out); }
.mobile-menu__link:hover, .mobile-menu__link:focus-visible { color: var(--stamp); transform: translateX(.35rem); }
.mobile-menu__action { display: grid; gap: .85rem; padding-top: 1.25rem; border-top: 1px solid rgba(27,34,66,.18); }
.mobile-menu__action p { margin: 0; color: var(--ink-soft); }
.mobile-menu__action .btn { width: 100%; justify-content: space-between; }
.mobile-menu.is-open .mobile-menu__link { animation: menu-link-in .55s var(--ease-out) both; }
.mobile-menu.is-open .mobile-menu__link:nth-child(2) { animation-delay: .05s; }
.mobile-menu.is-open .mobile-menu__link:nth-child(3) { animation-delay: .1s; }
.mobile-menu.is-open .mobile-menu__link:nth-child(4) { animation-delay: .15s; }
@keyframes menu-link-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
body.menu-open { overflow: hidden; }
/* ---------- Hero ---------- */
.hero { position: relative; min-height: 100svh; padding-top: clamp(7rem, 14vh, 10rem); padding-bottom: 4rem; display: flex; align-items: center; overflow: clip; }
.hero__bg {
  position: absolute; inset: 0; z-index: 0; display: grid; grid-template-columns: repeat(6, 1fr); pointer-events: none;
}
.hero__panel {
  position: relative; height: calc(100% + 140px); margin-top: -70px; background-size: cover; background-position: center;
  -webkit-mask-image: linear-gradient(105deg, transparent 0%, #000 20%, #000 80%, transparent 100%);
          mask-image: linear-gradient(105deg, transparent 0%, #000 20%, #000 80%, transparent 100%);
}
.hero__panel::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: url("../img/print-halftone-texture-v1.png") center / cover no-repeat;
  mix-blend-mode: soft-light; opacity: .16;
}
.hero__panel:nth-child(1) { background-position: 8% center; }
.hero__panel:nth-child(2) { background-position: 25% center; }
.hero__panel:nth-child(3) { background-position: 42% center; }
.hero__panel:nth-child(4) { background-position: 59% center; }
.hero__panel:nth-child(5) { background-position: 76% center; }
.hero__panel:nth-child(6) { background-position: 94% center; }
.hero__bg::after {
  content: ""; position: absolute; inset: 0; z-index: 2;
  background: linear-gradient(90deg, rgba(255,255,255, .96) 0%, rgba(255,255,255, .9) 32%, rgba(255,255,255, .74) 58%, rgba(255,255,255, .38) 100%);
}
.hero__vertical {
  position: absolute; right: -1.2vw; top: 50%; transform: translateY(-50%) rotate(90deg); transform-origin: center;
  font-family: var(--font-display); font-weight: 700; font-size: clamp(6rem, 17vw, 17rem); line-height: 1; letter-spacing: -.02em;
  color: var(--ink); opacity: .07; pointer-events: none; white-space: nowrap; user-select: none;
}
.hero__grid { position: relative; z-index: 3; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.hero__eyebrow { margin-bottom: 2rem; }
.hero__title { font-size: var(--fs-hero); font-weight: 700; line-height: .9; letter-spacing: -.02em; display: flex; flex-direction: column; margin-bottom: 2rem; color: var(--ink); text-shadow: 0 1px 2px rgba(255,255,255, .9), 0 0 24px rgba(255,255,255, .75); }
.hero__line { display: block; overflow: hidden; }
.hero__line--accent { color: var(--stamp-deep); }
.hero__lede { font-size: var(--fs-lede); line-height: 1.5; color: var(--charcoal); max-width: 46ch; margin-bottom: 2.4rem; text-shadow: 0 1px 3px rgba(255,255,255, 1), 0 0 14px rgba(255,255,255, .95); }
.hero__lede em { color: var(--ink); font-style: normal; font-weight: 600; border-bottom: 2px solid var(--stamp); }
.hero__actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-bottom: 3rem; }
.hero__date {
  display: grid; grid-template-columns: 1.1fr .55fr 1.5fr; width: min(100%, 660px); margin: 0;
  color: var(--ink); background: rgba(255,255,255,.94); border: 1px solid rgba(27,34,66,.22);
  box-shadow: 0 18px 38px -28px rgba(27,34,66,.7); backdrop-filter: blur(8px);
}
.hero__date > div { min-width: 0; padding: .9rem 1rem; }
.hero__date > div + div { border-left: 1px solid rgba(27,34,66,.16); }
.hero__date dt { margin-bottom: .3rem; color: var(--stamp); font-size: .72rem; font-weight: 500; letter-spacing: .15em; text-transform: uppercase; }
.hero__date dd { margin: 0; color: var(--ink); font-family: var(--font-display); font-size: 1rem; font-weight: 600; line-height: 1.25; letter-spacing: .025em; text-transform: uppercase; }

.hero__scroll { position: absolute; left: var(--gutter); bottom: 2rem; display: flex; align-items: center; gap: .8rem; color: var(--ink-soft); text-shadow: 0 1px 8px rgba(255,255,255, .9); }
.hero__scroll-line { display: block; width: 48px; height: 1px; background: var(--ink-soft); transform-origin: left; animation: scrollLine 2.2s var(--ease-in-out) infinite; }
@keyframes scrollLine { 0% { transform: scaleX(0); transform-origin: left; } 45% { transform: scaleX(1); transform-origin: left; } 55% { transform: scaleX(1); transform-origin: right; } 100% { transform: scaleX(0); transform-origin: right; } }

/* collage → single poster plate */
.hero__collage { position: relative; aspect-ratio: 1 / 1.08; max-width: 420px; margin-left: auto; width: 100%; justify-self: end; transform: none; }
.hero__collage > * { position: absolute; }

.poster {
  left: 0; right: 0; top: 8%; width: 100%; max-width: 420px; margin-inline: auto; padding: 2.4rem 2.2rem 2rem;
  background-color: #FFFFFF;
  background-image: linear-gradient(rgba(255,255,255,.92), rgba(255,255,255,.92)), var(--art-poster);
  background-size: cover; background-position: center;
  border: 1px solid rgba(27,34,66,.16);
  transform: rotate(-2deg);
  box-shadow: 0 24px 48px -26px rgba(32,30,26,.55), 0 2px 0 rgba(255,255,255,.7) inset;
  display: flex; flex-direction: column; align-items: flex-start;
}
.poster__crest {
  width: 64%; height: auto; margin: 0 auto 1.7rem; display: block;
  mix-blend-mode: multiply;
}
.poster__edition {
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase;
  font-size: clamp(3.2rem, 5.5vw, 4.6rem); line-height: .88; letter-spacing: -.02em;
  color: var(--ink);
}
.poster__rule { display: block; width: 100%; height: 1px; background: rgba(27,34,66,.22); margin: 1.6rem 0 1.1rem; }
.collage__note {
  position: absolute; left: auto; right: clamp(1rem, 5%, 2rem); bottom: -26px; padding: .7rem 1rem;
  transform: rotate(-5deg);
  background: #F7F3E8; border: 1px solid rgba(27,34,66,.15);
  box-shadow: 0 10px 24px -16px rgba(32,30,26,.5); z-index: 2;
}
.collage__note .hand { font-size: 1.35rem; line-height: 1.05; color: var(--charcoal); display: block; }

/* video trigger + hover preview */
.produce-trigger { cursor: default; transition: background var(--dur-fast) var(--ease-out); }
.produce-trigger:hover { background: rgba(180, 35, 43, .09); }

.video-preview {
  position: fixed; z-index: 80; width: 260px; padding: 7px; margin: 0; pointer-events: none;
  background: var(--paper); border: 1px solid rgba(27,34,66,.28);
  box-shadow: 0 24px 48px -24px rgba(32,30,26,.7);
  opacity: 0; transform: translateY(8px) rotate(-1.5deg);
  transition: opacity .22s var(--ease-out), transform .22s var(--ease-out);
}
.video-preview.is-visible { opacity: 1; transform: translateY(0) rotate(-1.5deg); }
.video-preview video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--ink); }
.video-preview::after {
  content: ""; position: absolute; left: 50%; bottom: -5.5px; width: 10px; height: 10px;
  background: var(--paper); border-right: 1px solid rgba(27,34,66,.28); border-bottom: 1px solid rgba(27,34,66,.28);
  transform: translateX(-50%) rotate(45deg);
}
.video-preview.is-below::after { bottom: auto; top: -5.5px; border: 0; border-left: 1px solid rgba(27,34,66,.28); border-top: 1px solid rgba(27,34,66,.28); }

/* ---------- Eyebrow pill: glossy border beam ---------- */
@property --beam { syntax: "<angle>"; initial-value: 0deg; inherits: true; }
.eyebrow--pill { position: relative; isolation: isolate; }
.eyebrow--pill::before {
  content: ""; position: absolute; inset: -1px; border-radius: inherit; padding: 1.5px;
  background: conic-gradient(from var(--beam, 0deg),
    #D9A521 0turn 0.18turn,
    #F0CB4F 0.30turn,
    #D9A521 0.42turn 0.58turn,
    #F0CB4F 0.70turn,
    rgba(255, 246, 224, .6) 0.80turn,
    #FFFFFF 0.86turn,
    rgba(255, 246, 224, .6) 0.92turn,
    rgba(180, 35, 43, .9) 0.96turn,
    rgba(180, 35, 43, .9) 0.98turn,
    #D9A521 1turn);
  -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
          mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  filter: drop-shadow(0 0 6px rgba(255, 244, 214, .65));
  pointer-events: none;
}

/* ---------- Statement ---------- */
.statement { isolation: isolate; overflow: hidden; }
.statement::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: var(--art-summit) center bottom / cover no-repeat;
  mix-blend-mode: multiply; opacity: .12;
}
.statement__grid {
  position: relative; z-index: 1;
  max-width: 1120px; display: grid; grid-template-columns: minmax(0, .78fr) minmax(0, 1.22fr);
  column-gap: clamp(3.5rem, 8vw, 7rem); row-gap: 2rem; align-items: center;
}
.statement__title { font-size: var(--fs-h2); max-width: 18ch; text-wrap: balance; }
.statement__body {
  display: grid; gap: 1.25rem; max-width: 52ch; color: var(--muted); font-size: 1.05rem;
}
.statement__body p { margin: 0; }
/* No companion image: the halftone would sit straight under the copy. */
.statement--plain::before { opacity: .07; }
.statement--plain .statement__body { position: relative; padding: clamp(1.25rem, 2.5vw, 2rem); background: rgba(255,255,255, .82); backdrop-filter: blur(2px); }
.statement--plain .statement__body p { color: var(--charcoal); }
.statement__image { position: relative; grid-column: 2; grid-row: 1 / span 2; margin: 0; overflow: hidden; aspect-ratio: 4 / 3; }
.statement__image img { width: 100%; height: 100%; object-fit: cover; }
.statement__image::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: url("../img/print-halftone-texture-v1.png") center / cover no-repeat;
  mix-blend-mode: soft-light; opacity: .18;
}

/* ---------- Pathways ---------- */
.pathways::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: var(--art-pathways) center bottom / cover no-repeat;
}
.pathways::after {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: linear-gradient(90deg, rgba(27,34,66,.94) 0%, rgba(27,34,66,.77) 48%, rgba(27,34,66,.28) 100%);
}
.pathways > .container { position: relative; z-index: 1; }
.pathways .section__head { max-width: 760px; }
.pathways__grid { border-top: 1px solid rgba(255,255,255,.22); }
.path {
  display: grid; grid-template-columns: minmax(12rem, .75fr) 1.35fr auto; gap: clamp(1.5rem, 4vw, 4rem);
  align-items: start; padding: clamp(1.6rem, 3vw, 2.4rem) 0; border-bottom: 1px solid rgba(255,255,255,.22);
  transition: transform var(--dur) var(--ease-out);
}
.path:hover { transform: translateX(.65rem); }
.path__head { display: block; }
.path__title { font-size: var(--fs-h3); color: var(--paper); }
.path__meta { display: block; margin-top: .5rem; font-size: .85rem; letter-spacing: .09em; text-transform: uppercase; color: rgba(255,255,255,.75); }
.path__copy { max-width: 42ch; margin: 0; color: rgba(255,255,255,.8); }
.path__copy > p { margin: 0 0 1rem; }
.path__list { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; font-size: 1rem; }
.path__list li { display: grid; grid-template-columns: 1.15rem 1fr; gap: .5rem; }
.path__list li::before { font-family: var(--font-display); line-height: 1.5; }
.path__list--yes li::before { content: "✓"; color: var(--paper); }
.path__list--no { color: rgba(255,255,255,.78); }
.path__list--no li::before { content: "—"; color: var(--stamp); }
.path__list--no::before { content: "Not included"; display: block; margin-bottom: .65rem; font-family: var(--font-display); font-size: .85rem; letter-spacing: .09em; text-transform: uppercase; color: var(--stamp); }
.path__cost { margin: 1rem 0 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .7rem; }
.path__cost strong { font-family: var(--font-display); font-weight: 700; font-size: clamp(1.9rem, 2.6vw, 2.5rem); line-height: 1; color: var(--paper); }
.path__cost span { font-size: .85rem; letter-spacing: .05em; text-transform: none; color: rgba(255,255,255,.85); }
.path__cost s { color: rgba(255,255,255,.6); }
.path__cta { min-width: 15.5rem; padding: .9rem 1rem; border: 1px solid transparent; font-family: var(--font-display); text-transform: uppercase; letter-spacing: .075em; font-weight: 600; color: var(--paper); display: flex; gap: 1rem; justify-content: space-between; align-items: center; line-height: 1.15; }
.path__cta--onsite { background: var(--stamp); border-color: #df4c53; }
.path__cta--online { color: var(--ink); background: var(--paper); border-color: var(--paper); }
.path__cta span { transition: transform var(--dur-fast) var(--ease-out); color: currentColor; display: inline-flex; align-items: center; }
.path__cta:hover span { transform: translateX(4px); }

/* ---------- Initiative ---------- */
/* ---------- Onsite delegate benefits ---------- */
.perks { background: var(--paper); }
.perks .section__head { max-width: 720px; margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.perks__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 clamp(1.5rem, 3vw, 3rem); border-top: 1px solid var(--paper-line); }
.perk { padding: 1.5rem 0; border-bottom: 1px solid var(--paper-line); }
.perk__num { display: block; margin-bottom: .8rem; color: var(--stamp); font-size: .85rem; letter-spacing: .09em; }
.perk__title { font-size: 1.125rem; margin-bottom: .5rem; }
.perk__desc { max-width: 34ch; margin: 0; color: var(--muted); font-size: 1rem; }
.perks__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem; margin-top: clamp(2rem, 4vw, 3rem); }
.perks__foot p { margin: 0; font-size: .85rem; letter-spacing: .09em; text-transform: uppercase; color: var(--muted); }
.initiative__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1.25rem 2rem; }
.initiative__more { display: inline-flex; align-items: center; gap: .5rem; font-family: var(--font-display); text-transform: uppercase; letter-spacing: .075em; font-size: .8125rem; border-bottom: 1px solid currentColor; padding-bottom: .15rem; }
.initiative__more span { display: inline-flex; transition: transform var(--dur-fast) var(--ease-out); }
.initiative__more:hover span { transform: translateX(4px); }

.initiative { background: var(--paper); }
.initiative__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(3rem, 8vw, 7rem); align-items: start; }
.initiative__intro { position: sticky; top: 7rem; }
.initiative__intro .section__title { max-width: 10ch; margin-bottom: 1.2rem; }
.initiative__intro .section__lede { margin-bottom: 1.8rem; }
.initiative__benefits { padding: clamp(1.5rem, 3vw, 2.5rem); background: var(--ink); color: var(--paper); }
.initiative__benefits h3 { margin-bottom: 1.4rem; color: var(--paper); font-size: var(--fs-h3); }
.initiative__benefits ul, .initiative-benefits { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.initiative__benefits li, .initiative-benefits li { position: relative; padding: 1rem 0 1rem 1.8rem; border-top: 1px solid rgba(255,255,255,.18); color: rgba(255,255,255,.9); }
.initiative__benefits li::before, .initiative-benefits li::before { content: "→"; position: absolute; left: 0; color: var(--mustard); }

/* ---------- Process ---------- */
.process { isolation: isolate; overflow: hidden; }
.process::before {
  content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background: var(--art-process) center bottom / cover no-repeat;
  mix-blend-mode: multiply; opacity: .18;
}
.process > .container { position: relative; z-index: 1; }
.process__head { max-width: 660px; margin-bottom: clamp(3rem, 6vw, 5rem); }
.process__steps { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--paper-line); }
.step { position: relative; padding: 1.6rem clamp(1.25rem, 2.2vw, 2rem) 0; min-height: 13rem; }
.step:first-child { padding-left: 0; }
.step + .step { border-left: 1px solid var(--paper-line); }
.step__title { font-size: var(--fs-h3); margin-bottom: .8rem; }
.step__desc { max-width: 28ch; color: var(--muted); margin: 0; }

/* ---------- FAQ ---------- */
.faq__grid { display: block; }
.faq__head { max-width: 720px; margin-bottom: clamp(3rem, 6vw, 5rem); }
.faq__head .section__title { max-width: 12ch; }
.faq__list { max-width: 940px; margin-left: auto; border-top: 1px solid var(--paper-line); }
.faq__item { border-bottom: 1px solid var(--paper-line); }
.faq__q { display: grid; grid-template-columns: 1fr 2rem; align-items: center; gap: 1.5rem; padding: 1.6rem 0; cursor: pointer; list-style: none; }
.faq__q::-webkit-details-marker { display: none; }
.faq__text { font-family: var(--font-display); text-transform: uppercase; font-weight: 500; font-size: clamp(1.25rem, 2vw, 1.65rem); line-height: 1.1; color: var(--ink); letter-spacing: .01em; }
.faq__icon { position: relative; width: 20px; height: 20px; justify-self: end; }
.faq__icon::before, .faq__icon::after { content: ""; position: absolute; inset: 50% auto auto 50%; background: var(--ink); transform: translate(-50%, -50%); transition: transform var(--dur) var(--ease-out); }
.faq__icon::before { width: 100%; height: 1.5px; }
.faq__icon::after { width: 1.5px; height: 100%; }
.faq__item[open] .faq__icon::after { transform: translate(-50%, -50%) rotate(90deg); }
.faq__a { padding: 0 3.5rem 1.75rem 0; color: var(--muted); max-width: 65ch; }
.faq__a p { margin: 0; }

/* ---------- CTA ---------- */
.cta { position: relative; isolation: isolate; overflow: clip; background: var(--stamp); }
.cta::before { content: ""; position: absolute; inset: 0; z-index: -2; background: var(--art-cta) center bottom / cover no-repeat; }
.cta::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(180,35,43,.34) 0%, rgba(180,35,43,.04) 48%, rgba(27,34,66,.24) 100%); }
.cta__inner { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(16rem, .65fr); align-items: end; gap: clamp(3rem, 8vw, 8rem); }
.cta__copy { max-width: 48rem; }
.cta__status { margin-bottom: clamp(1.5rem, 3vw, 2.5rem); color: rgba(255,255,255,.93); }
.cta__title { max-width: 10ch; margin: 0; font-size: var(--fs-h1); font-weight: 700; letter-spacing: -.015em; line-height: .92; }
.cta__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; padding: clamp(1.5rem, 3vw, 2.25rem); background: rgba(27,34,66,.88); border: 1px solid rgba(255,255,255,.18); box-shadow: 0 24px 60px -34px rgba(8,12,29,.8); }
.cta__text { max-width: 29ch; margin: 0 0 .75rem; color: var(--paper); font-size: 1.05rem; }
.cta__note { color: rgba(255,255,255,.74); }

/* ---------- Footer ---------- */
.footer { isolation: isolate; background: var(--ink); color: rgba(255,255,255,.88); padding-top: clamp(4.5rem, 8vw, 7.5rem); padding-bottom: clamp(9rem, 17vw, 15rem); overflow: clip; position: relative; }
.footer::before { content: ""; position: absolute; inset: 0; z-index: -2; background: var(--art-footer) center bottom / cover no-repeat; }
.footer::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, rgba(27,34,66,.72) 0%, rgba(27,34,66,.86) 43%, rgba(27,34,66,.8) 100%); }
.footer__newsletter { position: relative; z-index: 3; display: grid; grid-template-columns: minmax(0, 1fr) minmax(20rem, .8fr); align-items: end; gap: clamp(3rem, 8vw, 8rem); padding: clamp(2rem, 4vw, 3.5rem); margin-bottom: clamp(4rem, 7vw, 6rem); background: rgba(13,19,46,.86); border: 1px solid rgba(255,255,255,.17); box-shadow: 0 30px 80px -45px rgba(3,6,18,.9); }
#newsletter-title { max-width: 11ch; color: var(--paper); font-size: clamp(2.5rem, 5vw, 4.8rem); line-height: .94; text-shadow: 0 2px 18px rgba(4,8,23,.55); }
.footer__newsletter-form { display: grid; gap: .75rem; }
.footer__newsletter-field { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; border: 1px solid rgba(255,255,255,.38); background: rgba(9,14,35,.68); }
.footer__newsletter-field input { width: 100%; min-width: 0; min-height: 3.7rem; padding: .9rem 1.1rem; color: var(--paper); background: transparent; border: 0; border-radius: 0; font: inherit; }
.footer__newsletter-field input::placeholder { color: rgba(255,255,255,.56); }
.footer__newsletter-field input:focus, .footer__newsletter-field input:focus-visible { outline: none; }
.footer__newsletter-field .btn { min-height: 3.7rem; margin: -1px -1px -1px 0; padding-inline: 1.25rem; border-radius: 0; }
.footer__newsletter-note { margin: 0; color: rgba(255,255,255,.56); }
.footer__grid { position: relative; z-index: 2; display: grid; grid-template-columns: minmax(15rem, 1.7fr) repeat(3, minmax(8rem, 1fr)); gap: clamp(2rem, 5vw, 5rem); padding-bottom: clamp(4rem, 7vw, 6.5rem); }
.footer__col { display: flex; flex-direction: column; gap: .55rem; }
.footer__col a { color: rgba(255,255,255,.92); text-shadow: 0 1px 12px rgba(7,11,27,.55); transition: color var(--dur-fast); overflow-wrap: anywhere; }
.footer__col a:hover { color: var(--mustard); }
.footer__kicker { color: #e76368; margin-bottom: .9rem; }
.footer__office { font-family: var(--font-display); text-transform: uppercase; font-weight: 600; font-size: clamp(1.4rem, 2vw, 2rem); color: var(--paper); margin-bottom: .8rem; max-width: 18ch; line-height: 1.05; }
.footer__motto { max-width: 35ch; color: rgba(255,255,255,.58); line-height: 1.75; }
.footer__heading { color: #e76368; margin-bottom: .9rem; font-size: .95rem; letter-spacing: .1em; }
.footer__bottom { position: relative; z-index: 3; display: flex; justify-content: space-between; gap: 1rem; padding-block: 1.4rem; border-top: 1px solid rgba(255,255,255,.14); color: rgba(255,255,255,.68); flex-wrap: wrap; }
.footer__made { color: var(--paper); border-bottom: 1px solid rgba(230,90,95,.72); }
.footer__made:hover { color: #e76368; }
.footer__flag-stage { position: absolute; z-index: 1; inset: auto 0 0; height: clamp(9rem, 17vw, 15rem); overflow: hidden; background: var(--ink); pointer-events: none; background-image: url('../img/union-jack-still.jpg'); background-size: cover; background-position: center; }
.footer__flag-stage::before { content: ""; position: absolute; z-index: 2; inset: 0; background: linear-gradient(180deg, var(--ink) 0%, rgba(27,34,66,.74) 20%, rgba(14,20,48,.42) 58%, rgba(14,20,48,.62) 100%); }
.footer__flag-video { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.footer__flag-wordmark { position: absolute; z-index: 3; inset: auto var(--gutter) clamp(.8rem, 1.6vw, 1.5rem); overflow: hidden; white-space: nowrap; font-family: var(--font-display); font-size: clamp(3.15rem, 10.6vw, 10rem); font-weight: 700; line-height: .78; letter-spacing: -.045em; text-align: center; text-transform: uppercase; color: var(--paper); -webkit-mask: url("../img/footer-wordmark-halftone-alpha-v1.png") center / 100% 100% no-repeat; mask: url("../img/footer-wordmark-halftone-alpha-v1.png") center / 100% 100% no-repeat; -webkit-text-stroke: 1px rgba(255,255,255,.36); filter: drop-shadow(0 3px 0 rgba(27,34,66,.95)) drop-shadow(0 12px 24px rgba(7,11,27,.68)); pointer-events: none; }

/* ---------- Registration ---------- */
.reg { position: relative; isolation: isolate; padding-top: clamp(7rem, 14vh, 9rem); padding-bottom: var(--section); overflow: clip; }
.reg::before { content: ""; position: absolute; z-index: -1; inset: 0; opacity: .11; background: var(--art-process) right 6rem / min(68rem, 70vw) auto no-repeat; pointer-events: none; }
.reg__grid { display: grid; grid-template-columns: minmax(18rem, 23rem) minmax(0, 1fr); gap: clamp(3rem, 8vw, 8rem); align-items: start; }
.reg__aside { position: sticky; top: 5.5rem; align-self: start; }
.reg__card { position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden; min-height: 40rem; padding: clamp(2rem, 4vw, 3rem); color: var(--paper); background: var(--ink); border: 1px solid rgba(255,255,255,.16); box-shadow: 0 30px 60px -42px rgba(21,27,55,.85); }
.reg__card::before { content: ""; position: absolute; inset: auto 0 0; height: 48%; opacity: .46; background: var(--art-poster) center top / cover no-repeat; }
.reg__card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, var(--ink) 0%, var(--ink) 46%, rgba(27,34,66,.94) 62%, rgba(27,34,66,.58) 100%); pointer-events: none; }
.reg__card > * { position: relative; z-index: 1; }
.reg__card-inner { width: min(100%, 17.5rem); margin-inline: auto; text-align: left; }
.reg__kicker { margin: 0 0 1.5rem; color: #e76368; }
.reg__title { width: 100%; color: var(--paper); font-size: clamp(3.2rem, 5.3vw, 4.45rem); font-weight: 700; letter-spacing: -.025em; margin-bottom: 1rem; }
.reg__lede { max-width: 27ch; color: rgba(255,255,255,.86); margin: 0 0 2.5rem; }
.reg__steps { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; color: rgba(255,255,255,.72); margin-bottom: 2.5rem; }
.reg__steps li { display: flex; justify-content: flex-start; gap: .9rem; align-items: baseline; transition: color var(--dur-fast); }
.reg__steps li span { color: rgba(255,255,255,.58); min-width: 2ch; }
.reg__steps li.is-current { color: var(--paper); }
.reg__steps li.is-current span { color: #e76368; }
.reg__steps li.is-done { color: rgba(255,255,255,.82); }
.reg__facts { display: grid; gap: 1rem; padding-top: 1.4rem; border-top: 1px solid rgba(255,255,255,.28); margin: 0; }
.reg__facts dt { color: rgba(255,255,255,.68); margin-bottom: .2rem; }
.reg__facts dd { margin: 0; color: var(--paper); }

.form { display: flex; flex-direction: column; gap: 3.5rem; max-width: 760px; }
.form__section { border: 0; padding: 0; margin: 0; min-width: 0; }
.form__legend { font-family: var(--font-display); text-transform: uppercase; font-weight: 600; font-size: var(--fs-h3); color: var(--ink); margin-bottom: 1.6rem; display: flex; gap: 1rem; align-items: baseline; padding: 0; }
.form__legend .mono { color: var(--stamp); }
.form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4rem; }
.form__row--title { grid-template-columns: 120px 1fr 1fr; }
.form__alert { padding: 1rem 1.2rem; border-left: 3px solid var(--stamp); background: rgba(180,35,43,.06); color: var(--stamp-deep); display: flex; flex-direction: column; gap: .2rem; font-size: .95rem; }
.form__alert--ok { border-left-color: var(--ink); background: rgba(27,34,66,.06); color: var(--ink); margin-bottom: 1.5rem; }
.reg__grid > :not(.reg__aside) { grid-column: 2; }
.lost-pass { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; max-width: 760px; margin-top: 3rem; padding-top: 2rem; border-top: 1px solid rgba(27,34,66,.18); }
.lost-pass > span { flex-basis: 100%; color: var(--muted-2); }
.lost-pass input { flex: 1 1 16rem; padding: .8rem 1rem; border: 1px solid rgba(27,34,66,.3); background: var(--paper); font: inherit; }
.form__error { color: var(--stamp); font-size: var(--fs-small); margin: -.8rem 0 1rem; }
.form__conditional { display: none; flex-direction: column; gap: 1.4rem; padding: 1.6rem; margin-bottom: 1.4rem; background: rgba(234,227,210,.72); border: 1px solid rgba(27,34,66,.18); }
.form__conditional.is-active { display: flex; }
.form__submit { margin-top: 1.5rem; display: flex; flex-direction: column; gap: .9rem; align-items: flex-start; }
.form__fine { color: var(--muted-2); }

.field { display: flex; flex-direction: column; gap: .5rem; margin-bottom: 1.4rem; min-width: 0; }
/* An author display rule beats the hidden attribute, so state it once for everything. */
[hidden] { display: none !important; }
.form__row .field { margin-bottom: 0; }
.form__row { margin-bottom: 1.4rem; }
.field label, .field__label { font-family: var(--font-mono); font-size: var(--fs-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.field__opt { color: var(--muted-2); text-transform: none; letter-spacing: 0; font-style: italic; margin-left: .3rem; }
.field input[type="text"], .field input[type="email"], .field input[type="tel"], .field input[type="password"], .field input[type="search"], .field select, .field textarea {
  width: 100%; padding: .85rem 0 .7rem; border: 0; border-bottom: 1.5px solid rgba(27,34,66,.3); background: transparent;
  font: inherit; font-size: 1.05rem; color: var(--charcoal); border-radius: 0; transition: border-color var(--dur-fast), box-shadow var(--dur-fast);
}
.field select { appearance: none; -webkit-appearance: none; min-height: 3.35rem; padding: .78rem 3.3rem .7rem 1rem; border: 1px solid rgba(27,34,66,.34); background-color: rgba(255,255,255,.88); background-image: linear-gradient(90deg, transparent calc(100% - 3rem), rgba(27,34,66,.1) calc(100% - 3rem)), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%231B2242' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat, no-repeat; background-position: 0 0, right 1rem center; cursor: pointer; box-shadow: inset 0 1px 0 rgba(255,255,255,.74); }
.field select:hover { border-color: var(--ink); }
.field textarea { resize: vertical; line-height: 1.55; border: 1.5px solid rgba(27,34,66,.3); padding: .9rem 1rem; background: rgba(255,255,255,.35); }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--ink); }
.field textarea:focus { box-shadow: 0 0 0 3px rgba(27,34,66,.08); }
.field input::placeholder, .field textarea::placeholder { color: var(--muted-2); }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: var(--stamp); }
.field__hint { color: var(--muted-2); font-size: var(--fs-small); margin: 0; }
.field__sub-label { margin-top: 1rem; }
.field__reveal { display: grid; gap: .2rem; }
.field__reveal[hidden] { display: none; }
.field__error { color: var(--stamp); font-size: var(--fs-small); margin: 0; }
.field--sm { max-width: 120px; }
.field--check { justify-content: center; }

.check { display: flex; gap: .9rem; align-items: flex-start; cursor: pointer; font-family: var(--font-body) !important; text-transform: none !important; letter-spacing: 0 !important; font-size: .95rem !important; color: var(--charcoal) !important; line-height: 1.5; }
.check input { appearance: none; -webkit-appearance: none; flex: none; width: 20px; height: 20px; margin-top: .15rem; border: 1.5px solid var(--ink); background: transparent; position: relative; cursor: pointer; transition: background var(--dur-fast); }
.check input:checked { background: var(--ink); }
.check input:checked::after { content: ""; position: absolute; left: 6px; top: 2px; width: 5px; height: 10px; border: solid var(--paper); border-width: 0 2px 2px 0; transform: rotate(45deg); }
.has-error .check input { border-color: var(--stamp); }

.chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.chip { position: relative; cursor: pointer; }
.chip input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.chip span {
  display: inline-block; padding: .55rem .95rem .5rem; border: 1.5px solid rgba(27,34,66,.3); border-radius: 999px;
  font-family: var(--font-mono); font-size: var(--fs-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--ink-soft);
  transition: background var(--dur-fast), color var(--dur-fast), border-color var(--dur-fast), transform var(--dur-fast) var(--ease-out);
}
.chip:hover span { border-color: var(--ink); color: var(--ink); }
.chip input:checked + span { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.chip input:focus-visible + span { outline: 2px solid var(--stamp); outline-offset: 2px; }
.chip:active span { transform: scale(.97); }

/* path tickets */
.tickets { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
.ticket { position: relative; cursor: pointer; }
.ticket input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.ticket__body { position: relative; display: flex; flex-direction: column; gap: .45rem; padding: 1.5rem 1.35rem 1.35rem; min-height: 100%; overflow: hidden; border: 1.5px solid rgba(27,34,66,.26); background: #FFFFFF; transition: border-color var(--dur-fast), transform var(--dur) var(--ease-out), box-shadow var(--dur); }
.ticket__body::before { content: ""; position: absolute; inset: 0; z-index: 0; opacity: .21; background-size: cover; background-position: center; mix-blend-mode: multiply; }
.ticket__body > * { position: relative; z-index: 1; }
.ticket--onsite .ticket__body { background: #f4e3dc; }
.ticket--onsite .ticket__body::before { background-image: var(--art-cta); }
.ticket--online .ticket__body { background: #dbe1eb; }
.ticket--online .ticket__body::before { background-image: var(--art-pathways); }
.ticket--initiative .ticket__body { background: #f2e8c4; }
.ticket--initiative .ticket__body::before { background-image: var(--art-process); }
.ticket:hover .ticket__body { border-color: var(--ink); transform: translateY(-3px); box-shadow: 0 18px 34px -28px rgba(27,34,66,.65); }
.ticket input:checked + .ticket__body { border-color: var(--ink); box-shadow: 0 0 0 2px var(--ink), 0 20px 40px -28px rgba(27,34,66,.6); }
.ticket input:focus-visible + .ticket__body { outline: 2px solid var(--stamp); outline-offset: 3px; }
.ticket__letter { width: 30px; height: 30px; border: 1.5px solid var(--ink); color: var(--ink); display: grid; place-items: center; font-size: .8rem; margin-bottom: .4rem; }
.ticket input:checked + .ticket__body .ticket__letter { background: var(--ink); color: var(--paper); }
.ticket__label { font-family: var(--font-display); text-transform: uppercase; font-weight: 600; font-size: 1.3rem; color: var(--ink); line-height: 1; }
.ticket__desc { color: var(--charcoal); font-size: .95rem; line-height: 1.5; }
.ticket__cost { display: block; margin-top: .7rem; padding-top: .7rem; border-top: 1px solid rgba(27,34,66,.2); }
.ticket__amount { display: block; font-family: var(--font-display); font-weight: 700; font-size: clamp(1.9rem, 3.4vw, 2.5rem); line-height: 1; letter-spacing: -.01em; color: var(--ink); }
.ticket__was { display: block; margin-top: .3rem; font-size: .8rem; letter-spacing: .05em; text-transform: none; color: var(--muted); }
.ticket__was s { color: var(--muted); }
.ticket__seats { margin-top: .5rem; font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--stamp); }
.ticket__limit { margin-top: .45rem; color: var(--muted); font-size: .78rem; line-height: 1.45; letter-spacing: .05em; text-transform: none; }
.ticket__punch { position: absolute; right: -8px; top: 50%; width: 16px; height: 16px; border-radius: 50%; background: var(--paper); border-left: 1.5px solid rgba(27,34,66,.22); transform: translateY(-50%); }
.ticket input:checked + .ticket__body .ticket__punch { border-color: var(--ink); }

/* producer stages */
.stages { display: grid; grid-template-columns: repeat(2, 1fr); gap: .8rem; }
.stage { position: relative; cursor: pointer; }
.stage input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.stage__body { display: grid; grid-template-columns: 2.4rem 1fr; gap: .2rem .8rem; padding: 1rem 1.1rem; border: 1.5px solid rgba(27,34,66,.22); background: transparent; min-height: 100%; transition: border-color var(--dur-fast), background var(--dur-fast); }
.stage:hover .stage__body { border-color: var(--ink); }
.stage input:checked + .stage__body { border-color: var(--ink); background: var(--ink); color: var(--paper); }
.stage input:checked + .stage__body .stage__num, .stage input:checked + .stage__body .stage__name { color: var(--paper); }
.stage input:checked + .stage__body .stage__desc { color: rgba(255,255,255,.72); }
.stage input:focus-visible + .stage__body { outline: 2px solid var(--stamp); outline-offset: 3px; }
.stage__num { color: var(--stamp); grid-row: span 2; padding-top: .2rem; }
.stage__name { font-family: var(--font-display); text-transform: uppercase; font-weight: 600; font-size: 1.15rem; color: var(--ink); line-height: 1; }
.stage__desc { color: var(--muted); font-size: .9rem; line-height: 1.45; }

.portal-note { position: relative; display: flex; gap: 1.2rem; align-items: flex-start; padding: 1.2rem 1.3rem; background: #FFFFFF; border: 1px solid rgba(27,34,66,.16); }
.portal-note p { margin: 0; color: var(--ink-soft); font-size: .95rem; }
.portal-note__stamp { flex: none; font-family: var(--font-display); font-weight: 700; text-transform: uppercase; color: var(--stamp); border: 3px double var(--stamp); border-radius: 6px; padding: .35rem .6rem .3rem; transform: rotate(-6deg); font-size: .95rem; letter-spacing: .1em; mix-blend-mode: multiply; }
.initiative-enrolment { padding: clamp(1.5rem, 4vw, 2.5rem); color: var(--paper); background: var(--ink); }
.initiative-enrolment__eyebrow { margin: 0 0 .75rem; color: var(--mustard); font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; }
.initiative-enrolment h2 { margin: 0 0 1rem; color: var(--paper); font-size: var(--fs-h3); }
.initiative-enrolment h3 { margin: 1.6rem 0 .6rem; color: var(--paper); font-size: 1rem; text-transform: uppercase; }
.initiative-enrolment p { color: rgba(255,255,255,.88); }

/* onsite payment note + resume-payment page */
.pay-note { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1rem 1.4rem; align-items: start; padding: 1.4rem 1.5rem; background: #FFFFFF; border: 1px solid rgba(27,34,66,.16); }
.pay-note__stamp { align-self: start; flex: none; font-family: var(--font-display); font-weight: 700; text-transform: uppercase; color: var(--stamp); border: 3px double var(--stamp); border-radius: 6px; padding: .35rem .6rem .3rem; transform: rotate(-6deg); font-size: .95rem; letter-spacing: .1em; mix-blend-mode: multiply; }
.pay-note__body { display: grid; gap: .55rem; min-width: 0; }
.pay-note p { margin: 0; color: var(--ink); font-size: .95rem; line-height: 1.55; max-width: 62ch; }
.pay-note__amount { display: flex; flex-wrap: wrap; align-items: baseline; gap: .1rem .55rem; }
.pay-note__due { font-size: .78rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.pay-note__amount strong { font-family: var(--font-display); font-size: clamp(1.9rem, 4vw, 2.4rem); line-height: 1; letter-spacing: -.02em; color: var(--ink); }
.pay-note__for { font-size: .95rem; color: var(--muted); }
.reg__facts-note { display: block; color: rgba(255,255,255,.72); font-size: .78rem; letter-spacing: .04em; }

.pay { display: grid; justify-items: center; padding-block: 2rem 4rem; }
.pay__card { width: min(100%, 34rem); display: flex; flex-direction: column; gap: 1.4rem; padding: clamp(2rem, 5vw, 3rem); background: #FFFFFF; border: 1px solid rgba(27,34,66,.16); box-shadow: 0 30px 60px -42px rgba(21,27,55,.85); }
.pay__kicker { display: inline-flex; align-items: center; gap: .6rem; margin: 0; font-size: .78rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.pay__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--stamp); }
.pay__title { margin: 0; font-family: var(--font-display); font-size: clamp(2.2rem, 5vw, 3rem); line-height: .95; text-transform: uppercase; letter-spacing: -.01em; color: var(--ink); }
.pay__lede { margin: 0; color: var(--ink); font-size: 1rem; line-height: 1.55; }
.pay__alert { padding: 1rem 1.2rem; border-left: 3px solid var(--stamp); background: rgba(180,35,43,.07); color: var(--ink); }
.pay__alert strong { display: block; margin-bottom: .25rem; }
.pay__alert span { display: block; margin-top: .35rem; }
.pay__methods { display: flex; flex-direction: column; gap: .8rem; margin-top: 1.4rem; }
.pay__method { display: flex; justify-content: space-between; align-items: center; gap: 1rem; width: 100%; padding: 1.1rem 1.2rem; border: 1.5px solid rgba(27,34,66,.25); background: transparent; color: var(--ink); text-decoration: none; text-align: left; transition: border-color .15s var(--ease-smooth), background .15s var(--ease-smooth); }
.pay__method:hover { border-color: var(--ink); background: rgba(27,34,66,.04); }
.pay__method strong { display: block; font-size: 1.05rem; }
.pay__method-blurb { display: block; color: var(--muted); font-size: .88rem; margin-top: .15rem; }
/* ---------- Proof of payment ---------- */
.proof { padding: clamp(1.25rem, 3vw, 1.6rem); background: var(--paper-2); border: 1px solid rgba(27,34,66,.18); }
.proof__title { font-size: 1.15rem; margin: 0 0 .3rem; color: var(--ink); }
.proof__lede { margin: 0 0 1rem; color: var(--muted); font-size: .95rem; line-height: 1.5; }
.proof__rows { display: grid; margin: 0; }
.proof__row { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .35rem 1rem; padding: .75rem 0; border-top: 1px solid rgba(27,34,66,.16); }
.proof__row dt { flex: none; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.proof__row dd { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: 0; min-width: 0; }
.proof__value { font-weight: 600; color: var(--ink); overflow-wrap: anywhere; }
/* Handles and codes are case-sensitive, so keep them exactly as issued. */
.proof__value.mono { text-transform: none; letter-spacing: .03em; font-size: .95rem; }
a.proof__value { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(27,34,66,.35); }
a.proof__value:hover { text-decoration-color: var(--ink); }

.copy-btn { display: inline-block; margin-left: .5rem; padding: .15rem .55rem; border: 1px solid rgba(27,34,66,.35); border-radius: 3px; background: transparent; color: var(--ink); font: 500 .68rem/1.4 var(--font-mono, monospace); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; transition: background .12s var(--ease-smooth), border-color .12s var(--ease-smooth); vertical-align: middle; }
.copy-btn:hover { background: rgba(27,34,66,.06); border-color: var(--ink); }
.copy-btn.is-copied { color: #1e7d3c; border-color: #1e7d3c; }
.pay__form { display: flex; flex-direction: column; gap: 1.2rem; }
.pay__form .btn { justify-content: center; }
.pay__form .form__fine { margin: 0; }
.pay__fine { margin: 0; font-size: .8rem; color: var(--muted); }
.pay__fine a { color: var(--ink); }

/* ---------- Self check-in ---------- */
.checkin .pay { gap: 1rem; }
.checkin__show { width: min(100%, 34rem); padding: 1rem 1.2rem; background: var(--ink); color: var(--paper); font-weight: 600; font-size: 1.05rem; line-height: 1.35; text-align: center; }
.checkin__welcome { position: relative; }
.checkin__stamp { position: absolute; top: 1.4rem; right: 1.4rem; transform: rotate(7deg); font-family: var(--font-display); font-weight: 700; text-transform: uppercase; color: var(--stamp); border: 4px double var(--stamp); border-radius: 8px; padding: .45rem .7rem .4rem; font-size: .9rem; letter-spacing: .1em; mix-blend-mode: multiply; animation: checkin-stamp .28s var(--ease-out) .15s both; }
@keyframes checkin-stamp { from { opacity: 0; transform: rotate(7deg) scale(1.35); } to { opacity: 1; transform: rotate(7deg) scale(1); } }
.checkin__welcome .pay__title { font-size: clamp(2.8rem, 12vw, 4.2rem); padding-right: 6.5rem; }
.checkin__facts { display: grid; margin: 0; }
.checkin__facts div { display: flex; justify-content: space-between; gap: 1rem; padding: .8rem 0; border-top: 1px solid var(--paper-line); }
.checkin__facts dt { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.checkin__facts dd { margin: 0; font-weight: 600; color: var(--ink); text-align: right; overflow-wrap: anywhere; }
.checkin__live { display: flex; align-items: center; gap: .55rem; margin: 0; font-size: .85rem; color: var(--ink); }
.checkin__pulse { width: 10px; height: 10px; border-radius: 50%; background: var(--stamp); animation: checkin-pulse 1.2s ease-in-out infinite; }
@keyframes checkin-pulse { 50% { opacity: .25; } }
.checkin__other summary { cursor: pointer; font-size: .9rem; color: var(--muted); text-decoration: underline; text-underline-offset: 3px; }
.checkin__other[open] summary { margin-bottom: 1.2rem; }
.checkin__new { display: grid; gap: .9rem; padding-top: 1.4rem; border-top: 1px solid var(--paper-line); }
.checkin__new p { margin: 0; color: var(--ink); line-height: 1.5; }
.checkin__new .btn, .checkin__cta { justify-content: center; }
@media (prefers-reduced-motion: reduce) { .checkin__stamp, .checkin__pulse { animation: none; } }

/* ---------- Confirmed ---------- */
.confirmed { position: relative; overflow: clip; padding: clamp(8rem, 15vh, 11rem) 0 var(--section); color: var(--paper); background: var(--ink); isolation: isolate; }
.confirmed::before { content: ""; position: absolute; z-index: -2; inset: 0; background: linear-gradient(110deg, rgba(27,34,66,.98) 0%, rgba(27,34,66,.9) 45%, rgba(27,34,66,.58) 100%); }
.confirmed::after { content: ""; position: absolute; z-index: -1; inset: 0; opacity: .17; background: url("../img/print-halftone-texture-v1.png") center / cover; mix-blend-mode: screen; pointer-events: none; }
.confirmed__architecture { position: absolute; z-index: -3; inset: 0 0 auto 36%; height: min(52rem, 82vh); opacity: .62; background: var(--art-summit) center / cover no-repeat; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 22%, #000 100%), linear-gradient(180deg, #000 62%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 22%, #000 100%), linear-gradient(180deg, #000 62%, transparent 100%); -webkit-mask-composite: source-in; mask-composite: intersect; }
.confirmed__intro { margin-bottom: clamp(3.5rem, 7vw, 6.5rem); }
.confirmed__edition { display: block; margin-bottom: clamp(2rem, 5vw, 4.5rem); color: #ef6166; }
.confirmed__headline { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(16rem, .65fr); gap: clamp(2rem, 6vw, 6rem); align-items: end; }
.confirmed__headline > p { max-width: 32ch; margin: 0 0 .65rem; color: rgba(255,255,255,.76); font-size: var(--fs-lede); }
.confirmed__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(18rem, .75fr); gap: clamp(3rem, 7vw, 7rem); align-items: start; }
.confirmed__ticket { position: relative; color: var(--ink); background: #FFFFFF; border: 1px solid rgba(255,255,255,.3); box-shadow: 0 45px 100px -55px rgba(0,0,0,.9); }
.confirmed__ticket-head { display: flex; justify-content: space-between; gap: 2rem; align-items: flex-start; padding: clamp(1.5rem, 3vw, 2.25rem); border-bottom: 1px solid var(--paper-line); }
.confirmed__ticket-head .mono { display: block; margin-bottom: .7rem; color: var(--stamp); }
.confirmed__ticket-head h2 { max-width: 14ch; font-size: clamp(1.9rem, 3.6vw, 3rem); }
.confirmed__stamp {
  flex: none; transform: rotate(7deg);
  font-family: var(--font-display); font-weight: 700; text-transform: uppercase; color: var(--stamp);
  border: 4px double var(--stamp); border-radius: 8px; padding: .55rem .8rem .5rem; font-size: 1.05rem; letter-spacing: .1em; mix-blend-mode: multiply; opacity: .9;
}
.confirmed__title { max-width: 9ch; color: var(--paper); font-size: var(--fs-hero); font-weight: 700; line-height: .88; letter-spacing: -.02em; }
.confirmed__pass { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3rem); align-items: center; padding: clamp(1.5rem, 3vw, 2.25rem); border-bottom: 1px solid var(--paper-line); }
.confirmed__qr-wrap { padding: .75rem; background: var(--ink); color: var(--paper); }
.confirmed__qr-wrap > span { display: block; padding: .65rem .25rem 0; color: rgba(255,255,255,.66); text-align: center; }
.confirmed__qr { width: 196px; min-width: 196px; height: 196px; padding: 10px; background: var(--paper); }
.confirmed__qr img, .confirmed__qr canvas { display: block; width: 100% !important; height: 100% !important; }
.confirmed__pass-copy > span { display: block; margin-bottom: .7rem; color: var(--muted-2); }
.confirmed__ref-code { display: block; overflow-wrap: anywhere; margin-bottom: 1rem; font-family: var(--font-display); font-size: clamp(1.7rem, 4vw, 3rem); line-height: 1; letter-spacing: .04em; text-transform: uppercase; }
.confirmed__copy { padding: .55rem .75rem; color: var(--paper); background: var(--stamp); border: 1px solid var(--stamp); transition: transform var(--dur-fast), background var(--dur-fast); }
.confirmed__copy:hover { background: var(--stamp-deep); }
.confirmed__copy:active { transform: translateY(1px); }
.confirmed__pass-copy p { max-width: 34ch; margin: 1.25rem 0 0; color: var(--muted); font-size: .92rem; }
.confirmed__pass-copy form .btn { margin-top: 1rem; }
.confirmed__facts { display: grid; grid-template-columns: repeat(2, 1fr); margin: 0; padding: clamp(1.5rem, 3vw, 2.25rem); }
.confirmed__facts > div { min-width: 0; padding: 1rem 1.25rem 1rem 0; border-top: 1px solid var(--paper-line); }
.confirmed__facts > div:nth-child(even) { padding-left: 1.25rem; border-left: 1px solid var(--paper-line); }
.confirmed__facts dt { color: var(--muted-2); margin-bottom: .3rem; }
.confirmed__facts dd { overflow-wrap: anywhere; margin: 0; color: var(--ink); text-transform: none; letter-spacing: 0; font-family: var(--font-body); font-size: .95rem; }
.confirmed__next { padding-top: .25rem; }
.confirmed__section-label { display: block; margin-bottom: 1.25rem; color: #ef6166; }
.confirmed__next > h2 { max-width: 11ch; margin-bottom: 2.5rem; color: var(--paper); font-size: clamp(2.4rem, 4vw, 4rem); }
.next__list { display: flex; flex-direction: column; margin-bottom: 2.4rem; border-top: 1px solid rgba(255,255,255,.2); }
.next__list li { display: grid; grid-template-columns: 2.6rem 1fr; gap: 1rem; padding: 1.35rem 0; border-bottom: 1px solid rgba(255,255,255,.2); }
.next__list p { margin: 0; color: rgba(255,255,255,.72); }
.next__num { color: #ef6166; padding-top: .3rem; }
.confirmed__actions { display: flex; flex-wrap: wrap; gap: .9rem; margin-bottom: 1.6rem; }
.confirmed__actions .btn--ink { --btn-bg: var(--paper); --btn-fg: var(--ink); --btn-bd: var(--paper); }
.confirmed__countdown { margin-top: 1.25rem; color: #ef6166; }
.confirmed__countdown span { color: var(--paper); }
.confirmed__tools { margin: 0 0 2rem; }
.confirmed__tools-label { display: block; margin: 0 0 .6rem; color: rgba(255,255,255,.6); font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; }
.confirmed__tools-row { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1.4rem; }
.confirmed__tools .btn--outline, .confirmed__actions .btn--outline { --btn-bg: transparent; --btn-fg: var(--paper); --btn-bd: rgba(255,255,255,.55); }
.confirmed__fine { color: rgba(255,255,255,.55); text-transform: none; letter-spacing: 0; }
.confirmed__fine a { color: var(--paper); border-bottom: 1px solid rgba(255,255,255,.35); }

/* ---------- About ---------- */
.about-hero { padding-top: clamp(8rem, 16vh, 11rem); }
.about-hero__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 6rem); align-items: end; }
.about-hero__title { font-size: var(--fs-hero); font-weight: 700; line-height: .9; letter-spacing: -.02em; }
.about-hero__copy { color: var(--muted); font-size: 1.05rem; }
.about-hero__lede { font-size: var(--fs-lede); color: var(--ink); line-height: 1.5; }
.pillars__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 2rem; }
.pillar { padding-top: 1.4rem; border-top: 1px solid rgba(255,255,255,.2); }
.pillar__num { color: var(--mustard); display: block; margin-bottom: 1.2rem; }
.pillar__title { font-size: var(--fs-h3); margin-bottom: .8rem; }
.pillar p { color: rgba(255,255,255,.82); margin: 0; }

/* ---------- Error pages ---------- */
.errpage { min-height: 80svh; display: flex; align-items: center; padding-top: 6rem; }
.errpage__inner { max-width: 54ch; }
.errpage__code { color: var(--stamp); display: block; margin-bottom: 1.2rem; }
.errpage__title { font-size: var(--fs-h1); margin-bottom: 1.2rem; }
.errpage p { color: var(--muted); font-size: 1.05rem; margin-bottom: 2rem; }
.errpage__note { font-size: .95rem !important; margin-top: -1.2rem !important; }
.errpage__debug { text-transform: none; letter-spacing: 0; background: var(--paper-2); padding: 1rem; overflow: auto; margin-bottom: 2rem; }

/* ---------- Reveal (JS-enhanced) ---------- */
html.js [data-reveal] { opacity: 0; transform: translateY(24px); }
html.js [data-reveal].is-inview { opacity: 1; transform: none; transition: opacity .9s var(--ease-out), transform .9s var(--ease-out); }
html.js [data-split] .split-line { display: block; overflow: hidden; }
html.js [data-split] .split-inner { display: block; transform: translateY(110%); }
html.js [data-split].is-inview .split-inner { transform: none; transition: transform 1s var(--ease-out); }

/* ---------- Responsive ---------- */
@media (max-width: 1100px) {
  .hero__grid { gap: clamp(3.5rem, 6vw, 5rem); grid-template-columns: minmax(0, 1.08fr) minmax(320px, .92fr); }
  .hero__title { font-size: clamp(3.6rem, 8.5vw, 6.4rem); }
  .statement__grid { column-gap: clamp(3rem, 6vw, 4.5rem); }
  .process__steps { grid-template-columns: repeat(2, 1fr); }
  .step:nth-child(odd) { padding-left: 0; border-left: 0; }
  .step:nth-child(n+3) { border-top: 1px solid var(--paper-line); }
  .pillars__grid { grid-template-columns: repeat(2, 1fr); }
  .perks__grid { grid-template-columns: repeat(2, 1fr); }
  .footer__grid { grid-template-columns: 1fr 1fr; }
  .reg__grid { grid-template-columns: 300px 1fr; }
}

@media (max-width: 900px) {
  .nav__cta { display: none; }
  .nav__burger { display: block; }
  .hero { min-height: auto; padding-top: 7rem; }
  .hero__grid { grid-template-columns: 1fr; }
  .hero__bg::after { background: rgba(255,255,255, .94); }
  .hero__collage { max-width: 440px; aspect-ratio: auto; }
  .poster { position: relative; left: auto; top: auto; width: 100%; margin-inline: auto; transform: none; }
  .collage__note { right: 1.25rem; bottom: -30px; }
  .hero__collage { max-width: 440px; margin: 2rem auto 0; transform: none; }
  .hero__vertical { display: none; }
  .hero__scroll { display: none; }
  .section__head--split { grid-template-columns: 1fr; gap: 1rem; }
  .statement__grid { grid-template-columns: 1fr; gap: 2rem; }
  .statement__image { grid-column: 1; grid-row: auto; }
  .statement__body { grid-template-columns: 1fr; }
  .path { grid-template-columns: .8fr 1.2fr; }
  .path__cta { grid-column: 2; justify-self: start; }
  .initiative__grid, .faq__grid, .confirmed__grid, .about-hero__grid { grid-template-columns: 1fr; }
  .confirmed__headline { grid-template-columns: 1fr; }
  .confirmed__headline > p { max-width: 38ch; }
  .confirmed__architecture { inset-inline-start: 20%; opacity: .45; }
  .initiative__intro, .faq__head { position: static; }
  .perks__grid { grid-template-columns: 1fr; }
  .perk__desc { max-width: none; }
  .reg__grid { grid-template-columns: 1fr; }
  .reg__aside { position: static; }
  .reg__grid > :not(.reg__aside) { grid-column: 1; }
  .reg__steps { display: none; }
  .tickets { grid-template-columns: 1fr; }
  .ticket__punch { display: none; }
  .cta__inner { grid-template-columns: 1fr; align-items: start; gap: 2.75rem; }
  .cta__actions { padding-bottom: 0; }
  .footer__newsletter { grid-template-columns: 1fr; align-items: start; gap: 2.5rem; }
}

@media (max-width: 640px) {
  :root { --fs-hero: clamp(2.75rem, 13vw, 4.5rem); }
  .proof__row { flex-direction: column; align-items: flex-start; }
  .pay-note { grid-template-columns: 1fr; gap: .9rem; padding: 1.25rem; }
  .pay-note__stamp { justify-self: start; }
  .hero { padding-top: 6.5rem; padding-bottom: 3.5rem; }
  .hero__eyebrow { margin-bottom: 1.5rem; }
  .hero__title { margin-bottom: 1.5rem; }
  .hero__lede { margin-bottom: 1.75rem; }
  .hero__date { grid-template-columns: 1fr 1fr; width: 100%; }
  .hero__date > div:nth-child(3) { grid-column: 1 / -1; border-top: 1px solid rgba(27,34,66,.16); border-left: 0; }
  .hero__actions { flex-direction: column; align-items: stretch; margin-bottom: 2rem; }
  .hero__actions .btn { width: 100%; justify-content: center; }
  .statement { padding-block: 4.5rem; }
  .statement__title { font-size: clamp(2.55rem, 12vw, 3.45rem); }
  .statement__body { gap: 1.25rem; font-size: 1rem; }
  .pathways { padding-block: 4.5rem; }
  .pathways .section__head { margin-bottom: 2.5rem; }
  .path { grid-template-columns: 1fr; gap: .75rem; padding-block: 1.5rem; }
  .path:hover { transform: none; }
  .path__copy { margin-bottom: .65rem; }
  .path__cta { grid-column: 1; justify-self: stretch; min-width: 0; width: 100%; }
  .initiative__grid { gap: 2.5rem; }
  .form__row, .form__row--title { grid-template-columns: 1fr; }
  .form__row .field { margin-bottom: 1.4rem; }
  .form__row { margin-bottom: 0; }
  .field--sm { max-width: none; }
  .stages, .confirmed__facts { grid-template-columns: 1fr; }
  .process__steps, .pillars__grid { grid-template-columns: 1fr; }
  .step { min-height: 0; padding: 1.5rem 0; }
  .step + .step { border-left: 0; border-top: 1px solid var(--paper-line); }
  .footer__grid { grid-template-columns: 1fr; }
  .poster { padding: 1.8rem 1.5rem 1.5rem; }
  .poster__crest { width: 58px; }
  .collage__note .hand { font-size: 1.15rem; }
  .confirmed { padding-top: 7rem; }
  .confirmed__intro { margin-bottom: 3rem; }
  .confirmed__title { font-size: clamp(3.3rem, 17vw, 5rem); }
  .confirmed__ticket-head { align-items: center; }
  .confirmed__stamp { font-size: .78rem; border-width: 3px; padding: .4rem .55rem; }
  .confirmed__pass { grid-template-columns: 1fr; }
  .confirmed__qr-wrap { width: fit-content; max-width: 100%; }
  .confirmed__qr { width: min(196px, calc(100vw - 6.5rem)); min-width: 0; height: auto; aspect-ratio: 1; }
  .confirmed__facts { grid-template-columns: 1fr; }
  .confirmed__facts > div:nth-child(even) { padding-left: 0; border-left: 0; }
  .confirmed__actions { flex-direction: column; }
  .confirmed__actions .btn { justify-content: center; width: 100%; }
  .faq { padding-block: 4.5rem; }
  .faq__head { margin-bottom: 2.5rem; }
  .faq__q { grid-template-columns: 1fr 1.5rem; gap: 1rem; padding-block: 1.35rem; }
  .faq__a { padding: 0 2.5rem 1.5rem 0; }
  .cta { padding-block: 5rem; }
  .cta::before { background-position: 61% bottom; opacity: .68; }
  .cta::after { background: rgba(180,35,43,.22); }
  .cta__inner { gap: 2.25rem; }
  .cta__title { font-size: clamp(3rem, 14vw, 4.5rem); }
  .cta__actions .btn { width: 100%; justify-content: center; }
  .footer { padding-top: 4.5rem; }
  .footer__newsletter { padding: 1.5rem; margin-bottom: 4rem; }
  .footer__newsletter-field { grid-template-columns: 1fr; gap: .75rem; }
  .footer__newsletter-field input { border-right: 1px solid rgba(255,255,255,.28); }
  .footer__newsletter-field .btn { width: 100%; justify-content: center; }
  .footer::before { background-position: 64% bottom; opacity: .72; }
  .footer__grid { gap: 2.5rem; padding-bottom: 3.5rem; }
  .footer__bottom { flex-direction: column; align-items: flex-start; gap: .8rem; }
  .footer { padding-bottom: clamp(8rem, 38vw, 12rem); }
  .footer__flag-stage { height: clamp(8rem, 38vw, 12rem); }
  .footer__flag-video { object-position: center; }
  .cookie-banner { right: 1rem; bottom: 1rem; }
  .cookie-banner__actions { grid-template-columns: 1fr; gap: .75rem; }
  .cookie-banner__actions .btn { justify-content: center; }
  .cookie-banner__reject { align-self: center; padding: .2rem .25rem; }
  /* Stack the ministries rather than running them off the side of the screen. */
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
  html.js [data-reveal], html.js [data-split] .split-inner { opacity: 1; transform: none; }
}

.ticket.is-soldout { opacity: .45; }
.ticket.is-soldout .ticket__body { cursor: not-allowed; }

/* ---------- Watch ---------- */


.pay__dot.is-live { background: #e0384a; }

/* ---------- Legal pages ---------- */
.legal { padding-block: clamp(7rem, 13vh, 10rem) var(--section); }
.legal__inner { max-width: 46rem; }
.legal__head { margin-bottom: clamp(2.5rem, 5vw, 4rem); }
.legal__title { font-size: var(--fs-h1); line-height: .95; margin-bottom: 1.2rem; }
.legal__lede { color: var(--muted); font-size: var(--fs-lede); line-height: 1.5; max-width: 42ch; }
.legal__body h2 { margin: 2.4rem 0 .8rem; font-size: 1.35rem; }
.legal__body h2:first-child { margin-top: 0; }
.legal__body p, .legal__body li { color: var(--charcoal); line-height: 1.7; }
.legal__body p { margin: 0 0 1rem; max-width: 68ch; }
.legal__body ul { margin: 0 0 1.4rem; padding-left: 1.1rem; display: grid; gap: .55rem; max-width: 68ch; }
.legal__body a { border-bottom: 1px solid var(--paper-line); }
.legal__body a:hover { border-color: var(--stamp); color: var(--stamp); }

.confirmed__pass--noqr { grid-template-columns: minmax(0, 1fr); }

.field__optional { margin-left: .5rem; font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); }


/* ---------- Payment method marks ---------- */
.pay-icon { display: inline-block; flex: none; vertical-align: middle; }
.pay-icon--espees { border-radius: 50%; }
.pay__method-icon { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 2.6rem; height: 2.6rem; color: var(--ink); background: rgba(27,34,66,.06); border-radius: 50%; }
.pay__method > div { flex: 1 1 auto; min-width: 0; }
.pay__kicker .pay-icon { margin-right: .1rem; }
.pay__with { display: inline; }
.pay__with .pay-icon { vertical-align: -.2em; margin-right: .35rem; }
.pay__method-icon .pay-icon--espees { width: 2.1rem; height: 2.1rem; }

/* ---------- Notices fade away ---------- */
[role="status"].form__alert, [role="status"].pay__alert { transition: opacity .5s var(--ease-smooth), transform .5s var(--ease-smooth), max-height .5s var(--ease-smooth), margin .5s var(--ease-smooth); }
[role="status"].is-leaving { opacity: 0; transform: translateY(-4px); pointer-events: none; }

/* ---------- Optional contribution ---------- */
.support { margin: 0 0 2.2rem; padding: clamp(1.25rem, 3vw, 1.75rem); border: 1px solid rgba(255,255,255,.22); background: rgba(255,255,255,.06); }
.support__kicker { display: inline-block; margin-bottom: .6rem; font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; color: rgba(255,255,255,.6); }
.support__title { margin: 0 0 .6rem; font-family: var(--font-display); font-size: 1.5rem; text-transform: uppercase; letter-spacing: .01em; color: var(--paper); }
.support__lede { margin: 0 0 1.1rem; max-width: 46ch; color: rgba(255,255,255,.85); font-size: .98rem; line-height: 1.55; }
.support__lede strong { color: var(--paper); }
.support__thanks { margin: 0 0 2rem; color: rgba(255,255,255,.7); font-size: .78rem; letter-spacing: .1em; text-transform: uppercase; }

/* ---------- Sponsor ---------- */
.pay--sponsor { grid-template-columns: minmax(0, 36rem) minmax(16rem, 20rem); justify-content: center; align-items: start; gap: clamp(2rem, 5vw, 4rem); }
.sponsor__card { width: 100%; min-width: 0; }
.sponsor__form { gap: 2.2rem; }
.sponsor__step { border: 0; padding: 0; margin: 0; min-width: 0; }
.sponsor__chips { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.sponsor__chip { position: relative; padding: .7rem 1.1rem; border: 1.5px solid rgba(27,34,66,.3); background: transparent; color: var(--ink); cursor: pointer; transition: border-color var(--dur-fast), background var(--dur-fast), color var(--dur-fast); }
.sponsor__chip input { position: absolute; opacity: 0; pointer-events: none; }
.sponsor__chip:has(input:checked) { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.sponsor__chip:has(input:focus-visible) { outline: 2px solid var(--ink); outline-offset: 2px; }
@media (hover: hover) and (pointer: fine) { .sponsor__chip:hover { border-color: var(--ink); } }
.sponsor__amount { margin-bottom: 0; }
.sponsor__amount-wrap { display: flex; align-items: center; gap: .5rem; border-bottom: 1px solid rgba(27,34,66,.35); }
.sponsor__amount-wrap span { color: var(--muted); font-size: 1.4rem; }
.field .sponsor__amount-wrap input { flex: 1; min-width: 0; width: 100%; border: 0; padding-left: 0; font-size: 1.5rem; }
.sponsor__method { position: relative; justify-content: flex-start; cursor: pointer; }
.sponsor__method > span:last-child { flex: 1; min-width: 0; }
.sponsor__method input { position: absolute; opacity: 0; pointer-events: none; }
.sponsor__method:has(input:checked) { border-color: var(--ink); background: rgba(27,34,66,.06); }
.sponsor__method:has(input:focus-visible) { outline: 2px solid var(--ink); outline-offset: 2px; }
.sponsor__aside { display: flex; flex-direction: column; gap: 1.5rem; padding-top: .5rem; }
.sponsor__espees { display: flex; flex-direction: column; align-items: flex-start; gap: .7rem; padding: clamp(1.25rem, 3vw, 1.75rem); background: var(--ink); color: var(--paper); }
.sponsor__espees > span { display: inline-flex; align-items: center; gap: .5rem; color: rgba(255,255,255,.66); }
.sponsor__espees p { margin: .4rem 0 0; color: rgba(255,255,255,.8); font-size: .92rem; }
.sponsor__espees--inline { align-self: flex-start; }
.sponsor__code { font-family: var(--font-display); font-size: clamp(2rem, 5vw, 3rem); line-height: 1; letter-spacing: .06em; text-transform: uppercase; }
.sponsor__claim { display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; padding-top: 1.2rem; border-top: 1px solid rgba(27,34,66,.15); }
@media (max-width: 900px) { .pay--sponsor { grid-template-columns: 1fr; } }

/* ---------- Getting there ---------- */
.venue__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.venue__address { margin: 1.4rem 0 1.6rem; font-style: normal; font-size: 1.1rem; line-height: 1.6; color: var(--ink); }
.venue__address strong { font-family: var(--font-display); font-size: 1.35rem; text-transform: uppercase; letter-spacing: .01em; }
.venue__maps { display: flex; flex-wrap: wrap; gap: .7rem; margin-bottom: 1.8rem; }
.venue__everyone { max-width: 46ch; padding: 1.1rem 1.25rem; border-left: 3px solid var(--stamp); background: rgba(180,35,43,.05); color: var(--ink); font-size: 1.02rem; line-height: 1.55; }
.venue__how { display: grid; gap: 1.4rem; margin: 0; }
.venue__how > div { padding-top: 1rem; border-top: 1px solid var(--paper-line); }
.venue__how dt { margin-bottom: .35rem; font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted-2); }
.venue__how dd { margin: 0; color: var(--muted); line-height: 1.55; font-size: .98rem; }
.footer__venue { margin: .4rem 0 0; font-size: .74rem; letter-spacing: .04em; color: rgba(255,255,255,.6); }
@media (max-width: 800px) { .venue__grid { grid-template-columns: 1fr; } }


/* ================= Watch page (paper, like the rest of the site) ================= */
.page-watch { background: var(--paper); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
@keyframes watchPulse { to { box-shadow: 0 0 0 10px rgba(224,56,74,0); } }

.watch { padding-block: clamp(5.5rem, 10vh, 7.5rem) clamp(2.5rem, 5vw, 4rem); color: var(--ink); background: var(--paper); min-height: 100svh; }
.watch__inner { display: grid; gap: 1rem; }

/* Header: title and status on the left, the viewer on the right. */
.watch__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .8rem 2rem; }
.watch__title { margin: 0 0 .35rem; font-size: clamp(1.35rem, 2.6vw, 1.9rem); color: var(--ink); }
.watch__sub { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem .9rem; margin: 0; font-size: .74rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.watch__pill { display: inline-flex; align-items: center; gap: .45rem; padding: .3rem .65rem .26rem; border-radius: 999px; border: 1px solid rgba(27,34,66,.25); color: var(--ink); background: #FFFFFF; }
.watch__pill-dot { width: 7px; height: 7px; border-radius: 50%; background: rgba(27,34,66,.35); }
.watch__pill.is-live { border-color: transparent; background: var(--stamp); color: #fff; }
.watch__pill.is-live .watch__pill-dot { background: #fff; box-shadow: 0 0 0 0 rgba(255,255,255,.6); animation: watchPulse 1.8s ease-out infinite; }
.watch__count { color: var(--ink); }
.watch__now { color: var(--muted); }
.watch__viewer { display: flex; align-items: center; gap: .7rem; }
.watch__avatar { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--ink); color: var(--paper); font-size: .68rem; letter-spacing: .08em; }
.watch__who { display: grid; line-height: 1.25; }
.watch__name { font-size: .92rem; color: var(--ink); }
.watch__ref { font-size: .68rem; letter-spacing: .08em; color: var(--muted-2); }
.watch__leave { margin-left: .4rem; padding: .45rem .8rem .4rem; border: 1px solid rgba(27,34,66,.3); border-radius: 6px; background: transparent; color: var(--ink); font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; text-decoration: none; transition: border-color .15s var(--ease-smooth), background .15s var(--ease-smooth); }
@media (hover: hover) and (pointer: fine) { .watch__leave:hover { border-color: var(--ink); background: rgba(27,34,66,.05); } }
.watch__notice { margin: 0; }

/* Stage and chat rail. The video is the one dark block on the page. */
.watch__layout { display: grid; gap: 1rem; align-items: stretch; }
.watch--chat .watch__layout { grid-template-columns: minmax(0, 1fr) minmax(19rem, 22rem); }
.watch__stage { position: relative; aspect-ratio: 16 / 9; width: 100%; overflow: hidden; border-radius: 10px; background: #0b0f1f; border: 1px solid rgba(27,34,66,.35); box-shadow: 0 24px 48px -32px rgba(21,27,55,.6); }
.watch__quality { position: absolute; top: .6rem; right: .6rem; z-index: 2; padding: .3rem .5rem; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: #fff; background: rgba(11,15,31,.72); border: 1px solid rgba(255,255,255,.35); border-radius: 6px; backdrop-filter: blur(4px); }
.watch__quality option { color: #111; }
.watch__tools { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .6rem; margin-top: .7rem; font-size: .68rem; letter-spacing: .1em; text-transform: uppercase; color: var(--muted-2); }
.watch__tools-label { margin-right: .2rem; }
.watch__tools-hint { margin-left: auto; letter-spacing: .06em; }
.watch__pill--pick { font: inherit; cursor: pointer; transition: background-color .15s var(--ease-smooth), border-color .15s var(--ease-smooth), color .15s var(--ease-smooth); }
.watch__pill--pick.is-live .watch__pill-dot { animation: none; box-shadow: none; }
@media (hover: hover) and (pointer: fine) { .watch__pill--pick:not(.is-live):hover { border-color: var(--ink); } }
@media (max-width: 480px) { .watch__tools-hint { margin-left: 0; flex-basis: 100%; } }
.watch__reload { position: absolute; top: .6rem; left: .6rem; z-index: 2; padding: .3rem .6rem; font-size: .7rem; letter-spacing: .06em; text-transform: uppercase; color: #fff; background: rgba(11,15,31,.72); border: 1px solid rgba(255,255,255,.35); border-radius: 6px; cursor: pointer; backdrop-filter: blur(4px); }
@media (hover: hover) and (pointer: fine) { .watch__reload:hover { background: rgba(11,15,31,.9); } }
.watch__video, .watch__frame, .watch__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.watch__video { object-fit: contain; background: #0b0f1f; }
.watch__placeholder { position: absolute; inset: 0; display: grid; }
.watch__fine { margin: 0; color: var(--muted); font-size: .74rem; line-height: 1.7; }
.watch__fine a { color: var(--ink); border-bottom: 1px solid rgba(27,34,66,.3); }

/* Holding screen inside the stage: the one place the page goes dark, as a screen would. */
/* The holding screen is a printed event card: halftone London, paper ink, ruled rows. */
.holding { position: relative; isolation: isolate; display: grid; align-content: center; padding: clamp(1.2rem, 4vw, 2.4rem); color: var(--ink);
  background: var(--paper) var(--art-summit) center / cover no-repeat; }
.holding::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.92) 55%, var(--paper) 100%); }
.holding::after { content: ""; position: absolute; inset: 10px; border: 1px solid rgba(27,34,66,.25); pointer-events: none; }
.holding__card { max-width: 40rem; }
.holding__kicker { margin: 0 0 .9rem; font-size: .66rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted-2); }
.holding__label { display: inline-block; margin: 0 0 .7rem; padding: .3rem .6rem; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: var(--paper); background: var(--stamp); }
.holding--paused .holding__label { background: var(--ink); }
.holding--ended .holding__label { background: var(--muted-2); }
.holding__headline { margin: 0; font-family: var(--font-display); font-size: clamp(2rem, 5.5vw, 3.6rem); line-height: .95; letter-spacing: -.01em; text-transform: uppercase; color: var(--ink); max-width: 14ch; }
.holding__message { max-width: 42ch; margin: .8rem 0 0; color: var(--muted); font-size: clamp(.92rem, 1.4vw, 1.02rem); line-height: 1.55; }
.holding__rows { margin: 1.2rem 0 0; display: grid; }
.holding__rows > div { display: grid; grid-template-columns: 7rem 1fr; gap: 1rem; align-items: baseline; padding: .55rem 0; border-top: 1px solid rgba(27,34,66,.22); }
.holding__rows dt { font-size: .64rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted-2); }
.holding__rows dd { margin: 0; font-size: .82rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ink); font-variant-numeric: tabular-nums; }
.holding__rows [data-holding-countdown] { font-size: clamp(1.3rem, 3vw, 1.9rem); letter-spacing: .06em; }

/* Chat rail: a white card with a pinned composer. */
.chat { display: flex; flex-direction: column; min-height: 0; border-radius: 10px; background: #FFFFFF; border: 1px solid rgba(27,34,66,.16); overflow: hidden; box-shadow: 0 16px 32px -28px rgba(21,27,55,.5); }
.chat__head { display: flex; align-items: baseline; justify-content: space-between; gap: .5rem 1rem; padding: .85rem 1rem .7rem; border-bottom: 1px solid var(--paper-line); }
.chat__title { margin: 0; font-family: var(--font-display); font-size: 1.05rem; text-transform: uppercase; letter-spacing: .02em; color: var(--ink); }
.chat__count { color: var(--muted-2); font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; }
.chat__list { flex: 1 1 auto; display: grid; align-content: start; gap: .7rem; min-height: 14rem; max-height: 60vh; overflow-y: auto; margin: 0; padding: .9rem 1rem; list-style: none; overscroll-behavior: contain; }
.watch--chat .watch__layout .chat__list { max-height: none; }
/* The video sets the row height; the chat fills it and scrolls inside, never stretching the frame. */
.watch--chat .watch__layout .chat { grid-column: 2; grid-row: 1; contain: size; align-self: stretch; }
.watch--chat .watch__layout .watch__stage { grid-column: 1; grid-row: 1; }
.watch--chat .watch__layout .watch__tools { grid-column: 1; grid-row: 2; margin-top: 0; }
@media (max-width: 900px) {
  .watch--chat .watch__layout .chat { grid-column: auto; grid-row: auto; contain: none; }
  .watch--chat .watch__layout .watch__stage, .watch--chat .watch__layout .watch__tools { grid-column: auto; grid-row: auto; }
}
.chat__item { display: grid; grid-template-columns: 1.9rem minmax(0, 1fr); gap: .6rem; align-items: start; }
.chat__initials { display: grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 50%; background: rgba(27,34,66,.1); font-size: .62rem; letter-spacing: .06em; color: var(--ink); }
.chat__meta { display: flex; align-items: baseline; gap: .5rem; margin: 0 0 .1rem; font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-2); font-family: var(--font-mono); }
.chat__author { color: var(--ink); }
.chat__body { margin: 0; color: var(--charcoal); font-size: .92rem; line-height: 1.5; overflow-wrap: anywhere; }
.chat__empty { display: grid; gap: .3rem; align-self: center; margin: auto 0; padding: 2rem 0; text-align: center; color: var(--muted-2); font-size: .74rem; letter-spacing: .08em; text-transform: uppercase; }
.chat__empty-title { font-family: var(--font-display); font-size: 1.2rem; letter-spacing: .02em; color: var(--ink); }
.chat__form { display: grid; gap: .45rem; padding: .75rem .85rem .8rem; border-top: 1px solid var(--paper-line); background: var(--paper-2); }
.chat__box { display: flex; align-items: flex-end; gap: .5rem; padding: .35rem .35rem .35rem .8rem; border-radius: 8px; background: #fff; border: 1px solid rgba(27,34,66,.25); transition: border-color .15s var(--ease-smooth), box-shadow .15s var(--ease-smooth); }
.chat__box:focus-within { border-color: var(--ink); box-shadow: 0 0 0 3px rgba(27,34,66,.08); }
.chat__box textarea { flex: 1 1 auto; min-height: 1.6rem; max-height: 6rem; padding: .35rem 0; background: transparent; border: 0; color: var(--ink); font: inherit; font-size: .92rem; line-height: 1.45; resize: none; outline: none; }
.chat__box textarea::placeholder { color: var(--muted-2); }
.chat__send { display: grid; place-items: center; flex: none; width: 2.1rem; height: 2.1rem; border: 0; border-radius: 6px; background: var(--ink); color: var(--paper); cursor: pointer; transition: background .15s var(--ease-smooth), transform .1s var(--ease-smooth); }
@media (hover: hover) and (pointer: fine) { .chat__send:hover { background: var(--stamp); } }
.chat__send:active { transform: translateY(1px); }
.chat__send:disabled { opacity: .5; cursor: default; }
.chat__hint { color: var(--muted-2); font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; }
.chat__hint.is-error { color: var(--stamp); }

@media (max-width: 900px) {
  .watch--chat .watch__layout { grid-template-columns: 1fr; }
  .chat__list { max-height: 50vh; }
  .watch--chat .watch__layout .chat__list { max-height: 50vh; }
}
@media (prefers-reduced-motion: reduce) { .watch__pill-dot { animation: none; } }

/* ---------- Organisers' poll or question, popping up on the watch page ---------- */
.prompt { position: fixed; right: max(1rem, 3vw); bottom: max(1rem, 3vw); z-index: 900; width: min(24rem, calc(100% - 2rem)); }
.prompt.is-in .prompt__card { animation: promptIn .32s var(--ease-smooth) both; }
@keyframes promptIn { from { opacity: 0; transform: translateY(12px) scale(.98); } to { opacity: 1; transform: none; } }
.prompt__card { position: relative; padding: 1.1rem 1.2rem 1.15rem; background: #FFFFFF; color: var(--ink); border: 1px solid rgba(27,34,66,.2); border-radius: 12px; box-shadow: 0 24px 48px -20px rgba(21,27,55,.45), 0 0 0 1px rgba(255,255,255,.4) inset; }
.prompt__kicker { display: inline-flex; align-items: center; gap: .5rem; margin: 0 0 .5rem; font-size: .66rem; letter-spacing: .16em; text-transform: uppercase; color: var(--stamp); }
.prompt__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--stamp); box-shadow: 0 0 0 0 rgba(180,35,43,.5); animation: watchPulse 2s ease-out infinite; }
.prompt__question { margin: 0 0 .8rem; font-family: var(--font-display); font-size: 1.25rem; line-height: 1.15; text-transform: uppercase; letter-spacing: .01em; color: var(--ink); padding-right: 2.6rem; }
.prompt__body { display: grid; gap: .45rem; }
.prompt__option { position: relative; display: flex; align-items: center; justify-content: space-between; gap: .6rem; width: 100%; padding: .65rem .8rem; border: 1px solid rgba(27,34,66,.25); border-radius: 8px; background: #fff; color: var(--ink); font: inherit; font-size: .92rem; text-align: left; cursor: pointer; overflow: hidden; transition: border-color .15s var(--ease-smooth), background .15s var(--ease-smooth); }
@media (hover: hover) and (pointer: fine) { .prompt__option:not(:disabled):hover { border-color: var(--ink); background: rgba(27,34,66,.04); } }
.prompt__option.is-result { cursor: default; }
.prompt__option.is-mine { border-color: var(--ink); }
.prompt__option-fill { position: absolute; inset: 0 auto 0 0; background: rgba(27,34,66,.1); transition: width .5s var(--ease-smooth); }
.prompt__option.is-mine .prompt__option-fill { background: rgba(180,35,43,.14); }
.prompt__option-label, .prompt__option-pct { position: relative; }
.prompt__option-pct { font-size: .74rem; color: var(--muted); }
.prompt__reply { display: grid; gap: .5rem; }
.prompt__reply textarea { width: 100%; padding: .6rem .7rem; border: 1px solid rgba(27,34,66,.25); border-radius: 8px; background: #fff; color: var(--ink); font: inherit; font-size: .92rem; resize: vertical; }
.prompt__reply textarea:focus { outline: 2px solid rgba(27,34,66,.25); outline-offset: 1px; }
.prompt__send { justify-self: end; }
.prompt__thanks { margin: 0; color: var(--muted); font-size: .92rem; }
.prompt__hint { margin: .6rem 0 0; font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted-2); }
.prompt__hint.is-error { color: var(--stamp); }
.prompt__dismiss { position: absolute; top: .7rem; right: .7rem; padding: .3rem .5rem; border: 1px solid rgba(27,34,66,.2); border-radius: 6px; background: transparent; color: var(--muted-2); font-size: .62rem; letter-spacing: .1em; text-transform: uppercase; cursor: pointer; }
@media (hover: hover) and (pointer: fine) { .prompt__dismiss:hover { color: var(--ink); border-color: var(--ink); } }
@media (prefers-reduced-motion: reduce) { .prompt.is-in .prompt__card { animation: none; } .prompt__dot { animation: none; } }

/* While the holding screen shows, the frame grows to fit its lines instead of squeezing them into 16:9.
   The video takes the frame back to 16:9 the moment it plays. */
.watch__stage:has(> .holding:not([hidden])) { aspect-ratio: auto; min-height: 16rem; }
.watch__stage:has(> .holding:not([hidden])) > .holding { position: relative; inset: auto; min-height: 16rem; }
@media (min-width: 701px) { .watch__stage:has(> .holding:not([hidden])) { aspect-ratio: 16 / 9; } .watch__stage:has(> .holding:not([hidden])) > .holding { position: absolute; inset: 0; } }
@media (max-width: 700px) {
  .holding { padding: 1.4rem 1.1rem 1.5rem; }
  .holding__headline { font-size: clamp(1.7rem, 8vw, 2.2rem); }
  .holding__message { font-size: .95rem; }
  .holding__rows > div { grid-template-columns: 5.5rem 1fr; }
}

/* ---------- The Commitment ---------- */
.commit__speaker { display: grid; gap: .15rem; margin: .4rem 0 1.4rem; padding: .9rem 0; border-block: 1px solid rgba(27,34,66,.16); }
.commit__speaker .mono { font-size: .8rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted-2); }
.commit__speaker strong { font-family: var(--font-display); font-size: 1.9rem; line-height: 1.05; letter-spacing: .02em; text-transform: uppercase; color: var(--ink); }
.commit__speaker span:last-child { font-size: 1.1rem; color: var(--muted); }
.commit__title2 { margin-top: .2rem; }
.commit__intro { margin: -.6rem 0 1.5rem; font-size: .95rem; line-height: 1.6; color: var(--muted); }
.commit__list { list-style: none; margin: 0 0 1.6rem; padding: 0; display: grid; gap: .6rem; }
.commit__list li { border: 1px solid rgba(27,34,66,.18); background: rgba(255,255,255,.55); }
.commit__item { padding: .9rem 1rem; font-size: 1.05rem !important; }
.commit__item:has(input:checked) { background: rgba(27,34,66,.05); }
.commit__item > span { display: grid; grid-template-columns: 2rem 1fr; gap: .4rem; }
.commit__num { color: var(--muted-2); }
.commit__list--plain { counter-reset: c; }
.commit__list--plain li { padding: .8rem 1rem; font-size: 1.02rem; }
.commit__list--plain li::before { counter-increment: c; content: counter(c, decimal-leading-zero) "  "; font-family: var(--font-mono); color: var(--muted-2); }
.commit__form .form__row { align-items: end; }
.commit__form .form__row--title { grid-template-columns: 130px 1fr 1fr; }
@media (max-width: 640px) { .commit__form .form__row, .commit__form .form__row--title { grid-template-columns: 1fr; } .commit__form .field--sm { max-width: none; } }

/* =====================================================================
   Edition refresh: depth, rounded controls, floating header.
   Surfaces lift off the page with soft navy-tinted shadows; no outlines,
   no gradients for decoration. Manchester adds brick and bee accents.
   ===================================================================== */
:root {
  --r-lg: 20px;
  --r-md: 14px;
  --r-sm: 10px;
  --r-pill: 999px;
  --surface: #FFFFFF;
  --lift-1: 0 1px 2px rgba(27, 34, 66, .06), 0 4px 12px -6px rgba(27, 34, 66, .12);
  --lift-2: 0 2px 4px rgba(27, 34, 66, .05), 0 18px 40px -18px rgba(27, 34, 66, .28);
  --lift-3: 0 4px 8px rgba(27, 34, 66, .06), 0 40px 80px -32px rgba(27, 34, 66, .42);
  --ease-ui: var(--ease-smooth);
  --accent: var(--stamp);
  --accent-2: var(--mustard);
}
/* Manchester: paper matched to the prints; mill brick and worker-bee gold as accents. */
[data-edition="manchester"] {
  --paper: #FFFFFF;
  --paper-2: #F4F4F3;
  --paper-3: #E6E6E4;
  --surface: #FFFFFF;
  --brick: #A5432D;
  --bee: #E2A62A;
  --mustard: #E2A62A;
  --mustard-deep: #BF8618;
  --tape: rgba(226, 166, 42, .55);
  --accent: var(--brick);
  --accent-2: var(--bee);
}
body { background: var(--paper); }

/* ---------- Buttons: pills, solid fills, a press that answers ---------- */
.btn {
  border: 0; border-radius: var(--r-pill); padding: .95rem 1.5rem; gap: .6rem;
  font-family: var(--font-body); font-weight: 600; font-size: .95rem; letter-spacing: 0; text-transform: none;
  box-shadow: var(--lift-1);
  transition-property: background-color, color, box-shadow, transform; transition-duration: 180ms; transition-timing-function: var(--ease-ui);
}
.btn::before { display: none; }
.btn:hover { transform: none; }
.btn:active { transform: scale(.97); }
.btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.btn--ink { --btn-bg: var(--ink); --btn-fg: #fff; }
@media (hover: hover) and (pointer: fine) {
  .btn--ink:hover { background: var(--ink-2); box-shadow: var(--lift-2); }
  .btn--stamp:hover { background: var(--stamp-deep); box-shadow: var(--lift-2); }
  .btn--outline:hover { background: #fff; }
  .btn--paper:hover { background: #fff; }
  .btn:hover .btn__arrow { transform: translateX(2px); }
}
.btn--stamp { box-shadow: var(--lift-1); }
.btn--outline { --btn-bg: var(--surface); --btn-fg: var(--ink); box-shadow: var(--lift-1); }
.btn--lg { padding: 1.1rem 1.8rem; font-size: 1.02rem; }
.btn__arrow { font-size: 1.1em; }
.icon-arrow { width: auto; height: auto; display: inline-block; font-size: 1.1em; line-height: 1; }

/* ---------- Floating header ---------- */
.nav { top: clamp(.5rem, 1.4vw, 1rem); padding-block: 0; background: transparent; border: 0; box-shadow: none; pointer-events: none; }
.nav.is-scrolled { padding-block: 0; box-shadow: none; }
.nav__inner { pointer-events: auto; gap: 1rem; min-height: 64px; padding: .5rem .5rem .5rem 1rem; border-radius: var(--r-pill); background: var(--surface); box-shadow: var(--lift-2); transition: box-shadow 240ms var(--ease-ui); }
.nav.is-scrolled .nav__inner { box-shadow: var(--lift-3); }
.brand__crest { width: 40px; mix-blend-mode: normal; }
.brand__line--bottom { color: var(--accent); }
.nav__links { display: flex; align-items: center; gap: .25rem; margin-left: auto; }
.nav__link { padding: .55rem .9rem; border-radius: var(--r-pill); font-size: .92rem; font-weight: 500; color: var(--ink-soft); transition: background-color 160ms var(--ease-ui), color 160ms var(--ease-ui); }
@media (hover: hover) and (pointer: fine) { .nav__link:hover { background: var(--paper); color: var(--ink); } }
.nav__link.is-active { color: var(--ink); background: var(--paper); }
.nav__edition { display: inline-flex; align-items: center; gap: .45rem; padding: .4rem .75rem; border-radius: var(--r-pill); background: var(--paper); font-size: .8rem; font-weight: 500; color: var(--ink); white-space: nowrap; }
.nav__edition i { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.nav__cta { margin-left: .5rem; transform: none; }
.nav__cta .btn { padding: .8rem 1.25rem; font-size: .92rem; box-shadow: none; }
.nav__burger { border: 0; border-radius: var(--r-pill); background: var(--paper); }
@media (max-width: 1080px) { .nav__links { display: none; } .nav__cta { margin-left: auto; } }
@media (max-width: 1080px) and (min-width: 721px) { .nav__edition { display: none; } .city-switch { margin-left: auto; } }
@media (max-width: 720px) {
  .nav { left: .5rem; right: .5rem; }
  .nav__inner { min-height: 56px; padding: .4rem .4rem .4rem .75rem; }
  .brand__crest { width: 34px; }
  .brand__line--top { font-size: .72rem; }
  .nav__edition { display: none; }
}

/* ---------- Eyebrow: quiet label, no animated beam ---------- */
.eyebrow--pill { border: 0; padding: .5rem .95rem; background: var(--surface); box-shadow: var(--lift-1); font-family: var(--font-body); font-size: .82rem; font-weight: 500; letter-spacing: 0; text-transform: none; }
.eyebrow--pill::before, .eyebrow--pill::after { display: none !important; }
.eyebrow { font-family: var(--font-body); font-size: .85rem; font-weight: 500; letter-spacing: .02em; text-transform: none; }
.eyebrow__dot { background: var(--accent); }

/* ---------- Hero: the city print as the stage, the poster card lifted above it ---------- */
.hero { padding-top: clamp(8rem, 16vh, 11rem); }
.hero__bg { display: block; }
.hero__panel { display: none; }
.hero__bg::before { content: ""; position: absolute; inset: 0; background: var(--art-summit) right bottom / min(1500px, 115%) auto no-repeat; }
.hero__bg::after { background: linear-gradient(90deg, var(--paper) 0%, var(--paper) 30%, color-mix(in srgb, var(--paper) 55%, transparent) 60%, transparent 100%); }
.hero__vertical { display: none; }
.hero__title { text-shadow: none; }
.hero__line--accent { color: var(--accent); }
.hero__lede { text-shadow: none; }
.hero__lede em { border-bottom-color: var(--accent); }
.hero__date { gap: .6rem; background: none; border: 0; box-shadow: none; backdrop-filter: none; grid-template-columns: repeat(3, minmax(0, auto)); width: auto; }
.hero__date > div { padding: .85rem 1.1rem; border-radius: var(--r-md); background: var(--surface); box-shadow: var(--lift-1); }
.hero__date > div + div { border-left: 0; }
.hero__date dt { color: var(--accent); font-family: var(--font-body); font-size: .74rem; font-weight: 600; letter-spacing: .04em; }
.hero__date dd { font-family: var(--font-body); font-size: .98rem; font-weight: 600; letter-spacing: 0; text-transform: none; }
.hero__scroll { display: none; }
.poster { transform: none; border: 0; border-radius: var(--r-lg); background-color: var(--surface); background-image: linear-gradient(color-mix(in srgb, var(--surface) 90%, transparent), color-mix(in srgb, var(--surface) 90%, transparent)), var(--art-poster); box-shadow: var(--lift-3); }
.poster__crest { mix-blend-mode: normal; }
.poster__rule { background: color-mix(in srgb, var(--ink) 14%, transparent); }
.collage__note { border: 0; border-radius: var(--r-sm); background: var(--accent-2); box-shadow: var(--lift-2); }
@media (max-width: 720px) {
  .hero__date { grid-template-columns: 1fr 1fr; }
  .hero__date > div:last-child { grid-column: 1 / -1; }
  .hero__bg::before { background-size: 180% auto; background-position: 70% bottom; opacity: .55; }
}
/* The crest artwork has a white ground; multiply lets it sit on any light surface. */
.brand__crest, .poster__crest { mix-blend-mode: multiply; }
.hero__title { font-size: clamp(3.2rem, 7.4vw, 7rem); margin-bottom: 1.6rem; }
.hero__lede { margin-bottom: 1.8rem; }
.hero__collage { max-width: 400px; }
.poster { padding: 2rem 1.9rem 1.8rem; container-type: inline-size; }
.poster__edition { font-size: clamp(2.2rem, 14.5cqi, 4rem); }

/* ---------- Pathways: each way in is its own card, lifted off the print ---------- */
.pathways__grid { display: grid; gap: 1rem; border-top: 0; }
.path { padding: clamp(1.4rem, 2.6vw, 2.2rem); border: 0; border-radius: var(--r-lg); background: rgba(19, 25, 52, .78); box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .6); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); transition: none; }
.path:hover { transform: none; }
.path__meta { font-family: var(--font-body); font-size: .8rem; font-weight: 600; letter-spacing: .04em; color: var(--accent-2); }
.path__head > .mono, .path__head p.mono { font-family: var(--font-body); letter-spacing: 0; text-transform: none; }
.path__list--no::before { font-family: var(--font-body); font-size: .8rem; font-weight: 600; letter-spacing: .04em; color: #F08B78; }
.path__list--no li::before { color: #F08B78; }
.path__cta { min-width: 0; padding: .95rem 1.4rem; border: 0; border-radius: var(--r-pill); font-family: var(--font-body); font-size: .95rem; font-weight: 600; letter-spacing: 0; text-transform: none; box-shadow: var(--lift-1); transition: background-color 180ms var(--ease-ui), transform 120ms var(--ease-ui); }
.path__cta:active { transform: scale(.97); }
.path__cta--onsite { background: var(--stamp); }
.path__cta--online { background: #fff; }
@media (hover: hover) and (pointer: fine) { .path__cta--onsite:hover { background: var(--stamp-deep); } .path__cta:hover span { transform: translateX(2px); } }

/* ---------- Perks: a grid of raised cards ---------- */
.perks__grid { gap: 1rem; border-top: 0; }
.perk { padding: 1.5rem 1.5rem 1.6rem; border: 0; border-radius: var(--r-md); background: var(--surface); box-shadow: var(--lift-1); }
.perk__num { display: inline-grid; place-items: center; min-width: 2.2rem; height: 2.2rem; margin-bottom: 1rem; padding: 0 .5rem; border-radius: var(--r-pill); background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-family: var(--font-body); font-size: .8rem; font-weight: 600; letter-spacing: 0; }
.perks__foot p { font-family: var(--font-body); font-size: .9rem; font-weight: 500; letter-spacing: 0; text-transform: none; }

/* ---------- Initiative ---------- */
.initiative__benefits { border-radius: var(--r-lg); box-shadow: var(--lift-3); }
.initiative__benefits li::before { content: "\2192"; color: var(--accent-2); }
.initiative__more { font-family: var(--font-body); font-size: .92rem; font-weight: 600; letter-spacing: 0; text-transform: none; border-bottom-width: 2px; }

/* ---------- Process: four step cards over the mill print ---------- */
.process__steps { gap: 1rem; border-top: 0; }
.step, .step:first-child { padding: 1.6rem 1.5rem; min-height: 12rem; border-radius: var(--r-md); background: color-mix(in srgb, var(--surface) 88%, transparent); box-shadow: var(--lift-1); }
.step + .step { border-left: 0; }

/* ---------- FAQ: each question on its own rounded row ---------- */
.faq__list { display: grid; gap: .6rem; border-top: 0; }
.faq__item { border: 0; border-radius: var(--r-md); background: var(--surface); box-shadow: var(--lift-1); transition: box-shadow 200ms var(--ease-ui); }
.faq__item[open] { box-shadow: var(--lift-2); }
.faq__q { padding: 1.3rem 1.5rem; }
.faq__text { font-family: var(--font-body); font-weight: 600; font-size: clamp(1.05rem, 1.5vw, 1.2rem); line-height: 1.35; letter-spacing: -.005em; text-transform: none; }
.faq__icon { width: 32px; height: 32px; border-radius: 50%; background: var(--paper); }
.faq__icon::before { width: 12px; }
.faq__icon::after { height: 12px; }
.faq__a { padding: 0 1.5rem 1.4rem; }

/* ---------- Closing CTA: the print shows clean; the action sits on a solid card ---------- */
.cta { background: var(--ink); }
.cta::after { background: linear-gradient(90deg, rgba(27,34,66,.88) 0%, rgba(27,34,66,.55) 50%, rgba(27,34,66,.15) 100%); }
.cta__actions { border: 0; border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--lift-3); }
.cta__text { color: var(--ink); }
.cta__note { color: var(--muted); }
.cta__title { color: #fff; }

@media (max-width: 900px) {
  .path { grid-template-columns: 1fr; }
  .perks__grid { grid-template-columns: 1fr 1fr; }
  .process__steps { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .perks__grid, .process__steps { grid-template-columns: 1fr; }
  .path__cta { width: 100%; justify-content: space-between; }
}
.cta__actions .btn { --btn-bg: var(--stamp); --btn-fg: #fff; }
@media (hover: hover) and (pointer: fine) { .cta__actions .btn:hover { background: var(--stamp-deep); } }
/* Small labels read as UI text; the typewriter face stays only for codes and references. */
.mono:not(code):not(kbd) { font-family: var(--font-body); letter-spacing: .01em; text-transform: none; font-weight: 500; }

/* ---------- Getting there ---------- */
.venue__everyone { border-left: 0; border-radius: var(--r-md); background: var(--surface); box-shadow: var(--lift-1); }
.venue__tba { display: flex; align-items: center; gap: 1rem; width: fit-content; margin: 0 0 1rem; padding: 1rem 1.25rem 1rem 1rem; border-radius: var(--r-md); background: var(--surface); box-shadow: var(--lift-1); }
.venue__tba-icon { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--r-sm); background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-size: 1.35rem; }
.venue__tba strong { display: block; font-size: 1.05rem; color: var(--ink); }
.venue__tba span { color: var(--muted); font-size: .95rem; }
.venue__tba-note { max-width: 46ch; color: var(--muted); }
.venue__how { gap: .75rem; }
.venue__how > div { padding: 1.25rem 1.4rem; border-top: 0; border-radius: var(--r-md); background: var(--surface); box-shadow: var(--lift-1); }
.venue__how dt { display: flex; align-items: center; gap: .45rem; font-size: .8rem; font-weight: 600; letter-spacing: .02em; text-transform: none; color: var(--accent); }
.venue__how-lead { background: var(--ink) !important; box-shadow: var(--lift-2) !important; }
.venue__how-lead dt { color: var(--accent-2); }
.venue__how-lead dd { color: rgba(255,255,255,.82); margin-bottom: 1rem !important; }
.venue__how-lead .btn--ink { --btn-bg: #fff; --btn-fg: var(--ink); }
.venue__maps { gap: .6rem; }

/* ---------- Footer newsletter: a rounded panel, a pill field ---------- */
.footer__newsletter { border: 0 !important; border-radius: var(--r-lg); box-shadow: var(--lift-3); }
.footer__newsletter-field { gap: .4rem; padding: .35rem; border: 0; border-radius: var(--r-pill); background: rgba(255,255,255,.08); }
.footer__newsletter-field input { min-height: 3.2rem; padding: .8rem 1.1rem; border-radius: var(--r-pill); }
.footer__newsletter-field { transition: background-color var(--dur-fast) var(--ease-smooth); }
.footer__newsletter-field:focus-within { background: rgba(255,255,255,.14); }
.footer__newsletter-field .btn { min-height: 3.2rem; margin: 0; border-radius: var(--r-pill); }
@media (max-width: 640px) { .footer__newsletter-field { border-radius: var(--r-md); } .footer__newsletter-field input { border-right: 0; } }

/* ---------- Registration: filled rounded fields, lifted option cards ---------- */
.reg__card { border: 0; border-radius: var(--r-lg); box-shadow: var(--lift-3); }
.form__legend { font-size: clamp(1.5rem, 2.4vw, 2rem); }
.form__legend .mono { display: inline-grid; place-items: center; min-width: 2rem; height: 2rem; padding: 0 .45rem; border-radius: var(--r-pill); background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-size: .8rem; font-weight: 600; }
.field label, .field__label { font-family: var(--font-body); font-size: .9rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--ink); }
.field__opt { font-family: var(--font-body); font-style: normal; font-size: .8rem; font-weight: 400; color: var(--muted-2); letter-spacing: 0; text-transform: none; }
.field input[type="text"], .field input[type="email"], .field input[type="tel"], .field input[type="password"], .field input[type="search"], .field select, .field textarea {
  min-height: 3.25rem; padding: .8rem 1rem; border: 0; border-radius: var(--r-sm); background-color: var(--surface);
  /* A visible edge on white cards: 50% ink keeps the outline at 3:1 contrast. */
  box-shadow: inset 0 0 0 1.5px rgba(27,34,66,.5), inset 0 1px 2px rgba(27,34,66,.06); font-size: 1rem; color: var(--ink);
  transition: background-color 160ms var(--ease-ui), box-shadow 160ms var(--ease-ui);
}
.field select {
  padding-right: 2.75rem; border: 0; background-color: var(--surface);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath fill='none' stroke='%231B2242' stroke-linecap='round' stroke-linejoin='round' stroke-width='18' d='m208 96-80 80-80-80'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 1rem center; background-size: 14px;
}
/* Checkboxes and radios keep their own fill: a white focus or hover background hid the tick until blur. */
@media (hover: hover) and (pointer: fine) { .field :is(input:not([type="checkbox"], [type="radio"]), select, textarea):hover:not(:focus) { background-color: #fff; box-shadow: inset 0 0 0 1.5px rgba(27,34,66,.75); } }
.field input:not([type="checkbox"], [type="radio"]):focus, .field select:focus, .field textarea:focus { outline: none; background-color: #fff; box-shadow: 0 0 0 2px var(--ink); }
.check input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.field.has-error input, .field.has-error select, .field.has-error textarea { background-color: #FCEDEB; box-shadow: 0 0 0 1.5px #B4232B; }
.field__hint { font-size: .85rem; color: var(--muted); }

.chip span { border: 0; padding: .6rem 1rem; background: var(--surface); box-shadow: var(--lift-1); font-family: var(--font-body); font-size: .9rem; font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--ink); transition: background-color 160ms var(--ease-ui), color 160ms var(--ease-ui); }
@media (hover: hover) and (pointer: fine) { .chip:hover span { background: #fff; } }
.chip input:checked + span { background: var(--ink); color: #fff; }
.chip:active span { transform: scale(.97); }

.ticket__body { border: 0; border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--lift-1); transition: box-shadow 200ms var(--ease-ui), background-color 200ms var(--ease-ui); }
.ticket--onsite .ticket__body, .ticket--online .ticket__body, .ticket--initiative .ticket__body { background: var(--surface); }
.ticket__body::before { opacity: .14; }
.ticket:hover .ticket__body { transform: none; box-shadow: var(--lift-2); }
.ticket input:checked + .ticket__body { box-shadow: 0 0 0 2px var(--ink), var(--lift-2); background: #fff; }
.ticket__letter { border: 0; border-radius: 50%; background: var(--paper); font-family: var(--font-body); font-weight: 600; }
.ticket input:checked + .ticket__body .ticket__letter { background: var(--ink); color: #fff; }

.check input { border-radius: 6px; border-width: 0; background: var(--surface); box-shadow: inset 0 0 0 1.5px var(--ink); }
.form__submit .btn, .form .btn--block { min-height: 3.5rem; }
@media (max-width: 900px) {
  .process__steps .step, .process__steps .step:first-child, .process__steps .step:nth-child(n) { padding: 1.4rem 1.3rem; min-height: 0; border: 0; }
}
@media (max-width: 720px) {
  .nav__cta { display: block !important; margin-left: auto; }
  .nav__cta .btn { padding: .6rem .95rem; font-size: .85rem; }
  .nav__cta .btn__arrow { display: none; }
  .nav__burger { margin-left: .35rem; }
  .reg__card { min-height: 0; }
}
@media (max-width: 380px) { .brand__text { display: none; } }

/* ---------- About: "From consumer to producer" as a lifted card with stat tiles ---------- */
.statement--plain .statement__body--card { gap: 1.25rem; padding: clamp(1.5rem, 3vw, 2.4rem); border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--lift-2); backdrop-filter: none; }
.statement__lead { font-size: clamp(1.15rem, 1.6vw, 1.3rem); line-height: 1.5; font-weight: 500; color: var(--ink) !important; }
.statement__stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .6rem; margin: .5rem 0; }
.statement__stats > div { display: flex; flex-direction: column-reverse; justify-content: flex-end; gap: .35rem; padding: 1rem 1.1rem; border-radius: var(--r-md); background: var(--paper); }
.statement__stats dd { margin: 0; font-family: var(--font-display); font-size: clamp(1.8rem, 3vw, 2.4rem); font-weight: 700; line-height: 1; letter-spacing: -.01em; color: var(--ink); font-variant-numeric: tabular-nums; }
.statement__stats dd span { display: block; margin-top: .3rem; font-family: var(--font-body); font-size: .8rem; font-weight: 500; letter-spacing: 0; color: var(--muted); }
.statement__stats dt { font-size: .78rem; font-weight: 600; letter-spacing: .02em; color: var(--accent); }
.statement__stats > div:last-child { background: var(--ink); }
.statement__stats > div:last-child dd { color: #fff; }
.statement__stats > div:last-child dd span { color: rgba(255,255,255,.65); }
.statement__stats > div:last-child dt { color: var(--accent-2); }
.statement__vision { display: grid; grid-template-columns: auto 1fr; gap: .9rem; align-items: start; margin-top: .25rem !important; padding-top: 1.25rem; border-top: 1px solid color-mix(in srgb, var(--ink) 10%, transparent); }
.statement__vision .ph { display: grid; place-items: center; width: 40px; height: 40px; border-radius: var(--r-sm); background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-size: 1.2rem; }
@media (max-width: 520px) {
  .statement__stats { grid-template-columns: 1fr; }
  .statement__stats > div { flex-direction: row-reverse; justify-content: space-between; align-items: center; }
  .statement__stats dd { text-align: left; }
  .statement__stats dd span { margin-top: .15rem; }
}
.about-hero__copy--card { display: grid; gap: 1rem; padding: clamp(1.5rem, 3vw, 2.4rem); border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--lift-2); }
.about-hero__copy--card p { margin: 0; }
.statement__stats--2 { grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
.statement__stat--text dd { font-family: var(--font-body); font-size: 1rem; font-weight: 600; line-height: 1.4; letter-spacing: 0; }
@media (max-width: 520px) { .statement__stats--2 { grid-template-columns: 1fr; } .statement__stat--text { flex-direction: column-reverse !important; align-items: flex-start !important; gap: .3rem; } }
/* Home: the gathering photo, rounded and lifted like the cards around it */
.statement__image { border-radius: var(--r-lg); box-shadow: var(--lift-3); }

/* ---------- Sponsor and payment pages: rounded, filled, no outlines ---------- */
.pay__card { border: 0; border-radius: var(--r-lg); background: var(--surface); box-shadow: var(--lift-3); }
.pay__alert { border-left: 0; border-radius: var(--r-sm); background: color-mix(in srgb, var(--accent) 10%, transparent); }
.pay__method { border: 0; border-radius: var(--r-md); background: var(--paper); box-shadow: none; transition: background-color 160ms var(--ease-ui), box-shadow 160ms var(--ease-ui); }
@media (hover: hover) and (pointer: fine) { .pay__method:hover { border: 0; background: #fff; box-shadow: var(--lift-1); } }
.pay__method:active { transform: scale(.99); }
.sponsor__method:has(input:checked) { background: #fff; box-shadow: 0 0 0 2px var(--ink), var(--lift-1); }
.pay__method-icon { border-radius: var(--r-sm); background: #fff; }
.sponsor__method:has(input:checked) .pay__method-icon { background: var(--paper); }
.sponsor__chip { border: 0; border-radius: var(--r-pill); padding: .65rem 1.15rem; background: var(--paper); font-family: var(--font-body); font-weight: 600; font-size: .92rem; letter-spacing: 0; text-transform: none; transition: background-color 160ms var(--ease-ui), color 160ms var(--ease-ui); }
@media (hover: hover) and (pointer: fine) { .sponsor__chip:hover { background: #fff; box-shadow: var(--lift-1); } }
.sponsor__chip:has(input:checked) { background: var(--ink); color: #fff; box-shadow: none; }
.sponsor__chip:active { transform: scale(.97); }
.sponsor__amount-wrap { gap: .25rem; padding: 0 1rem; border-bottom: 0; border-radius: var(--r-sm); background: var(--paper); transition: background-color 160ms var(--ease-ui), box-shadow 160ms var(--ease-ui); }
.sponsor__amount-wrap:focus-within { background: #fff; box-shadow: 0 0 0 2px var(--ink); }
.field .sponsor__amount-wrap input, .field .sponsor__amount-wrap input:focus { background: transparent !important; box-shadow: none !important; padding-left: .25rem; }
.sponsor__form .field input[type="text"], .sponsor__form .field input[type="email"] { background-color: var(--paper); }
.sponsor__espees { border-radius: var(--r-lg); box-shadow: var(--lift-3); }
.sponsor__espees .btn { border-radius: var(--r-pill); }
.sponsor__aside > p, .sponsor__aside .mono { font-size: .88rem; color: var(--muted); }
.sponsor__claim { border-top-color: color-mix(in srgb, var(--ink) 10%, transparent); }
/* Copy buttons (sponsor code, reference, pass): a readable pill wherever they sit. */
.confirmed__copy { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem 1rem; border: 0; border-radius: var(--r-pill); background: var(--ink); color: #fff !important; font-family: var(--font-body); font-size: .85rem; font-weight: 600; letter-spacing: 0; text-transform: none; cursor: pointer; transition: background-color 160ms var(--ease-ui), transform 120ms var(--ease-ui); }
.confirmed__copy:active { transform: scale(.97); }
@media (hover: hover) and (pointer: fine) { .confirmed__copy:hover { background: var(--ink-2); } }
.sponsor__espees .confirmed__copy { background: #fff; color: var(--ink) !important; }
@media (hover: hover) and (pointer: fine) { .sponsor__espees .confirmed__copy:hover { background: var(--paper); } }
.sponsor__espees > span { color: rgba(255,255,255,.78); font-size: .85rem; }
.sponsor__espees > span.mono { color: rgba(255,255,255,.8) !important; }

/* =====================================================================
   Two events, one day
   Ireland: bottle-green ink and harp gold on the same cream stock, so the
   events read as one family with two accents. Manchester keeps its own.
   ===================================================================== */
[data-edition="ireland"] {
  /* Text stays neutral: green is for fills and artwork only, never for type. */
  --ink: #1D1F1E;
  --ink-2: #333634;
  --ink-soft: #545856;
  --brand: #1F4D3A;
  --brand-2: #2B6650;
  --stamp: #9C6F1C;
  --stamp-deep: #7B5514;
  --mustard: #D9A521;
  --mustard-deep: #B98614;
  --tape: rgba(217, 165, 33, .5);
  --accent: #9C6F1C;
  --accent-2: #D9A521;
}
[data-edition="ireland"] .btn--ink { --btn-bg: var(--brand); background: var(--brand); color: #fff; }
@media (hover: hover) and (pointer: fine) { [data-edition="ireland"] .btn--ink:hover { background: var(--brand-2); } }

/* ---------- The chooser ---------- */
.choose { padding: clamp(6.5rem, 12vh, 8.5rem) 0 clamp(3rem, 6vw, 5rem); }
.choose__head { display: grid; gap: 1.25rem; margin-bottom: clamp(2rem, 4vw, 3.5rem); }
.choose__title { margin: 0; font-family: var(--font-display); font-weight: 600; text-transform: uppercase; line-height: .92; letter-spacing: -.01em; font-size: clamp(2.8rem, 6.4vw, 5.6rem); color: var(--ink); text-wrap: balance; }
.choose__title span { color: var(--accent); }
.choose__lede { margin: 0; max-width: 46ch; font-size: var(--fs-lede); line-height: 1.55; color: var(--ink-soft); }
@media (min-width: 900px) {
  .choose__head { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); align-items: end; }
  .choose__head .eyebrow { grid-column: 1 / -1; justify-self: start; }
}

.choose__grid { display: flex; flex-direction: column; gap: clamp(.75rem, 1.6vw, 1.25rem); }
.choose__panel {
  --p-ink: #1B2242; --p-fill: #1B2242; --p-accent: #A5432D; --p-paper: #FFFFFF;
  position: relative; display: flex; flex: 1 1 0; min-height: clamp(30rem, 68vh, 42rem); container-type: inline-size;
  border-radius: var(--r-lg); overflow: hidden; isolation: isolate; text-decoration: none; color: var(--p-ink);
  background: var(--p-paper); box-shadow: var(--lift-2);
  transition-property: flex-grow, box-shadow, opacity, filter; transition-duration: 480ms, 240ms, 300ms, 300ms; transition-timing-function: var(--ease-ui);
}
.choose__panel--ireland { --p-ink: #1D1F1E; --p-fill: #1F4D3A; --p-accent: #9C6F1C; --p-paper: #FFFFFF; }
.choose__panel:focus-visible { outline: 3px solid var(--p-accent); outline-offset: 4px; }
.choose__print {
  position: absolute; z-index: -1; inset: 34% 0 0; background: var(--print) right bottom / cover no-repeat;
  mix-blend-mode: multiply; opacity: .95;
  -webkit-mask-image: linear-gradient(to bottom, transparent, #000 32%); mask-image: linear-gradient(to bottom, transparent, #000 32%);
}
.choose__body { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; width: 100%; padding: clamp(1.4rem, 3vw, 2.4rem); }
.choose__tag { padding: .3rem .65rem; border-radius: var(--r-pill); background: rgba(255,255,255,.55); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--p-ink); }
.choose__city { font-family: var(--font-display); font-weight: 600; text-transform: uppercase; line-height: .9; letter-spacing: -.01em; font-size: clamp(2.4rem, 15cqi, 6.5rem); color: var(--p-ink); }
.choose__facts { display: grid; gap: .45rem; margin-top: .6rem; padding: .85rem 1rem; border-radius: var(--r-md); background: rgba(255,255,255,.82); backdrop-filter: blur(6px); }
.choose__fact { display: flex; align-items: flex-start; gap: .55rem; font-size: .95rem; font-weight: 500; line-height: 1.35; }
.choose__fact i { margin-top: .1rem; color: var(--p-accent); font-size: 1.05rem; }
.choose__modes { display: flex; gap: .4rem; margin-top: .15rem; font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; }
.choose__modes span { padding: .2rem .55rem; border: 1px solid currentColor; border-radius: var(--r-pill); opacity: .8; }
.choose__cta { margin-top: auto; --btn-bg: var(--p-fill); --btn-fg: #fff; background: var(--p-fill); color: #fff; }
.choose__panel:active .choose__cta { transform: scale(.97); }
.choose__foot { margin-top: clamp(1.5rem, 3vw, 2.5rem); font-size: .78rem; letter-spacing: .04em; color: var(--ink-soft); }

@media (min-width: 900px) {
  .choose__grid { flex-direction: row; }
}
@media (hover: hover) and (pointer: fine) and (min-width: 900px) {
  .choose__grid:has(.choose__panel:hover) .choose__panel:hover { flex-grow: 1.35; box-shadow: var(--lift-3); }
  .choose__grid:has(.choose__panel:hover) .choose__panel:not(:hover) { opacity: .88; filter: saturate(.75); }
  .choose__panel:hover .choose__cta .btn__arrow { transform: translateX(3px); }
}
@media (max-width: 899px) {
  .choose__panel { min-height: 32rem; }
  .choose__cta { margin-top: 1.25rem; }
}
@media (prefers-reduced-motion: reduce) {
  .choose__panel { transition: none; }
  .choose__grid:has(.choose__panel:hover) .choose__panel:hover { flex-grow: 1; }
}

.choose-foot { padding: 1.5rem 0 2rem; background: var(--ink); color: rgba(255,255,255,.78); font-size: .8rem; }
.choose-foot .container { display: flex; flex-wrap: wrap; gap: .75rem 1.5rem; justify-content: space-between; align-items: center; }
.choose-foot a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }

[data-edition="ireland"] .reg__card::after { background: linear-gradient(180deg, var(--ink) 0%, var(--ink) 46%, rgba(29,31,30,.94) 62%, rgba(29,31,30,.58) 100%); }
[data-edition="ireland"] .footer__flag-stage::before { background: linear-gradient(180deg, var(--ink) 0%, rgba(31,77,58,.74) 20%, rgba(14,40,28,.42) 58%, rgba(14,40,28,.62) 100%); }
[data-edition="ireland"] .footer__flag-stage { background-image: url("../img/ireland-tricolour-still.jpg"); }

/* A way back to the city chooser from every page. */
.mobile-menu__switch { display: flex; flex-direction: column; gap: .3rem; margin: 1.2rem 0 .4rem; padding: 1rem 1.1rem; border-radius: var(--r-md); background: #fff; box-shadow: var(--lift-1); color: var(--ink); text-decoration: none; }
.mobile-menu__switch .mono { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.mobile-menu__inner:has(.mobile-menu__switch) { grid-template-rows: auto auto 1fr auto; }
.mobile-menu__switch-go { font-family: var(--font-display); font-size: 1.5rem; text-transform: uppercase; letter-spacing: .01em; }
.footer__switch { display: inline-flex; gap: .4rem; margin-top: 1rem; color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.page-choose .nav__edition { margin-left: auto; }

/* Event toggle in the nav: both cities always visible; a white thumb slides to the chosen one. */
.city-switch { --switch-ease: var(--ease-smooth); --switch-dur: 300ms;
  position: relative; display: inline-flex; gap: 2px; padding: 3px; border-radius: var(--r-pill); background: #F1F1EF; box-shadow: inset 0 0 0 1px rgba(0,0,0,.05); isolation: isolate; }
.city-switch__thumb {
  position: absolute; z-index: -1; top: 3px; bottom: 3px; left: 0; width: var(--thumb-w, 0); border-radius: var(--r-pill);
  background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 2px 6px -2px rgba(0,0,0,.1);
  transform: translateX(var(--thumb-x, 0)); will-change: transform, width;
  transition-property: transform, width; transition-duration: var(--switch-dur); transition-timing-function: var(--switch-ease);
}
.city-switch:not(.is-ready) .city-switch__thumb { transition: none; }
/* Before the script measures, the active option carries its own white fill. */
.city-switch:not(.is-ready) .city-switch__opt.is-active { background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.city-switch__opt {
  position: relative; display: inline-flex; align-items: center; gap: .45rem; padding: .42rem .85rem; border-radius: var(--r-pill);
  font-size: .8rem; font-weight: 500; line-height: 1; color: #6B6E6C; text-decoration: none; white-space: nowrap;
  transition-property: color, transform; transition-duration: var(--switch-dur), 120ms; transition-timing-function: var(--switch-ease), var(--ease-smooth);
}
.city-switch__opt::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
  opacity: 0; transform: scale(.4);
  transition-property: opacity, transform; transition-duration: var(--switch-dur); transition-timing-function: var(--switch-ease);
}
.city-switch__opt.is-active { color: #1D1F1E; }
.city-switch__opt.is-active::before { opacity: 1; transform: none; }
.city-switch__opt:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.city-switch__opt:active { transform: scale(.97); }
@media (hover: hover) and (pointer: fine) { .city-switch__opt:not(.is-active):hover { color: #1D1F1E; } }
@media (max-width: 720px) { .city-switch { display: none; } }
@media (prefers-reduced-motion: reduce) { .city-switch__thumb, .city-switch__opt, .city-switch__opt::before { transition: none; } }

/* Page to page: the browser cross-fades documents, and the nav and city thumb carry over in place. */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: 280ms; animation-timing-function: var(--ease-smooth); }
.nav__inner { view-transition-name: site-nav; }
.city-switch__thumb { view-transition-name: city-thumb; }
::view-transition-group(site-nav), ::view-transition-group(city-thumb) { animation-duration: 300ms; animation-timing-function: var(--ease-smooth); }
@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  ::view-transition-group(*), ::view-transition-old(*), ::view-transition-new(*) { animation: none !important; }
}

/* ---------- Sponsor band on each event's home: its own print, ink and accent ---------- */
.give__panel {
  position: relative; display: grid; gap: clamp(1.5rem, 3vw, 2.5rem); align-items: end; overflow: hidden; isolation: isolate;
  padding: clamp(1.75rem, 4vw, 3.5rem); border-radius: var(--r-lg); background: #fff; box-shadow: var(--lift-2);
}
.give__print {
  position: absolute; z-index: -1; inset: 0 0 0 48%; background: var(--art-cta) right bottom / cover no-repeat; opacity: .9;
  -webkit-mask-image: linear-gradient(to right, transparent, #000 40%); mask-image: linear-gradient(to right, transparent, #000 40%);
}
.give__copy { max-width: 34rem; }
.give__title { margin: 1rem 0 .75rem; font-family: var(--font-display); font-weight: 600; text-transform: uppercase; line-height: .95; letter-spacing: -.01em; font-size: clamp(2.2rem, 4.6vw, 3.8rem); color: var(--ink); text-wrap: balance; }
.give__lede { margin: 0; max-width: 42ch; font-size: var(--fs-lede); line-height: 1.55; color: var(--ink-soft); }
.give__act { display: grid; gap: .85rem; justify-items: start; padding: 1.1rem 1.2rem; border-radius: var(--r-md); background: rgba(255,255,255,.88); backdrop-filter: blur(6px); box-shadow: var(--lift-1); }
.give__label { margin: 0; font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.give__chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.give__chip {
  display: inline-flex; align-items: center; min-height: 2.6rem; padding: .5rem 1rem; border-radius: var(--r-pill);
  background: #F3F3F1; color: var(--ink); font-weight: 600; text-decoration: none;
  transition-property: background-color, box-shadow, transform; transition-duration: var(--dur-fast); transition-timing-function: var(--ease-smooth);
}
.give__chip:active { transform: scale(.97); }
.give__chip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (hover: hover) and (pointer: fine) { .give__chip:hover { background: #fff; box-shadow: var(--lift-1), inset 0 0 0 1.5px var(--accent); } }
@media (min-width: 900px) {
  .give__panel { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); min-height: 26rem; }
  .give__act { justify-self: end; }
}
@media (max-width: 899px) {
  .give__print { inset: 45% 0 0 0; -webkit-mask-image: linear-gradient(to bottom, transparent, #000 35%); mask-image: linear-gradient(to bottom, transparent, #000 35%); }
}

/* Signed-in preview of an event that is hidden from the public. */
.preview-bar { position: fixed; z-index: 90; left: 50%; bottom: 1rem; transform: translateX(-50%); display: inline-flex; align-items: center; gap: .5rem; max-width: calc(100% - 2rem); padding: .6rem 1rem; border-radius: 999px; background: var(--ink); color: #fff; font-size: .85rem; font-weight: 500; box-shadow: var(--lift-3); }

/* ---------- Exhibit: same panel as sponsor, its own print and points ---------- */
.exhibit__panel .give__print { background-image: var(--art-process); }
.exhibit__points { display: grid; gap: .55rem; margin: 0; padding: 0; list-style: none; }
.exhibit__points li { display: flex; align-items: center; gap: .6rem; font-size: .95rem; font-weight: 500; color: var(--ink); }
.exhibit__points .ph { display: grid; place-items: center; width: 32px; height: 32px; border-radius: var(--r-sm); background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); font-size: 1rem; }
.exhibit__facts p { margin: 0; }
.page-exhibit .pay__card textarea { min-height: 7rem; }
/* The exhibit facts stay in view beside the long form on wide screens. */
@media (min-width: 901px) { .page-exhibit .sponsor__aside { position: sticky; top: 6.5rem; align-self: start; } }
