/* Granite tokens (design lead D1, 13 Nov 2026). Every value in base.css, components.css and p-*.css comes from here.
   Foundation: AME Roundup's measured type scale and grid; menu, ticket pill and footer: Mews Unfold's pattern in Granite colours.
   Fonts: Geist and Geist Mono (SIL OFL, self-hosted subset) stand in for Suisse Intl and Soehne (DEVIATIONS.json).
   Contrast (WCAG): cream on red 5.75:1, white on red 5.88:1, ink on red 3.20:1 (24px+ only), ink on cream 18.4:1,
   cream on sea 11.5:1, ink on sand 13.9:1, muted on cream 6.73:1, muted on sand 5.08:1, muted-dark on ink 6.54:1. */
@font-face { font-family: "Geist"; src: url(/assets/fonts/geist.woff2) format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "Geist Mono"; src: url(/assets/fonts/geist-mono.woff2) format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }

:root {
  /* colour */
  --red: #C8102E;            /* Granite red, refined from their #FF0000: ticket pill, menu panel, accents */
  --red-ink: #A8121D;        /* pressed and hover red */
  --ink: #0B1219;            /* text, dark bands, the Menu ticket (their logo is #081018) */
  --cream: #FFFCF6;          /* page ground */
  --sea: #0F3B57;            /* pattern card 1 */
  --sand: #E9DCC3;           /* pattern card 2 */
  --muted: #5C5A55;          /* secondary text on cream and sand */
  --muted-dark: #9A9893;     /* secondary text on ink */
  --line: rgba(11, 18, 25, .14);
  --line-dark: rgba(255, 252, 246, .16);
  --head-band: rgba(11, 18, 25, .64);   /* the header's own ground over a dark photo hero while unscrolled; the hero scrims start with it */
  --ghost: #1A222B;          /* the footer GRANITE wordmark on ink, decorative */
  --dim-on-red: rgba(255, 252, 246, .72);   /* menu links not hovered: 3.36:1 on red, large text only */
  --scrim: rgba(11, 18, 25, .82);

  /* type */
  --f-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --f-mono: "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --fs-display: clamp(3.3844rem, 1.2412rem + 8.7924vw, 9.1544rem);  /* 54.15 to 146.47, w500 caps */
  --fs-h1: clamp(3.1763rem, 2.1948rem + 4.0267vw, 5.8188rem);       /* 50.82 to 93.10 */
  --fs-h2l: clamp(2.5881rem, 2.0974rem + 2.0133vw, 3.9094rem);      /* 41.41 to 62.55 */
  --fs-h2: clamp(2.1181rem, 1.8115rem + 1.2581vw, 2.9438rem);       /* 33.89 to 47.10 */
  --fs-h3: clamp(1.765rem, 1.6833rem + 0.3352vw, 1.985rem);         /* 28.24 to 31.76 */
  --fs-md: clamp(1.2063rem, 1.1041rem + 0.419vw, 1.4813rem);        /* 19.30 to 23.70 */
  --fs-base: clamp(1.0075rem, 0.9666rem + 0.1676vw, 1.1175rem);     /* 16.12 to 17.88 */
  --fs-sm: clamp(0.8825rem, 0.8416rem + 0.1676vw, 0.9925rem);       /* 14.12 to 15.88: nav, footer, buttons */
  --fs-xs: clamp(0.7575rem, 0.7166rem + 0.1676vw, 0.8675rem);       /* 12.12 to 13.88: mono caps eyebrow */
  --fs-tix: 0.8125rem;       /* 13px: ticket pill and Menu labels */
  --lh-display: .95; --lh-h1: 1.05; --lh-h2l: 1.1; --lh-h2: 1.15; --lh-h3: 1.25; --lh-md: 1.35; --lh-base: 1.45;
  --ls-display: -0.03em; --ls-h1: -0.025em; --ls-h2l: -0.02em; --ls-h2: -0.015em; --ls-h3: -0.001em;
  --ls-mono: 0.06em; --ls-date: 0.05em; --ls-caps: 0.02em;
  --w-head: 600;             /* AME declares its Semibold as 700; Geist 600 is the matching weight */

  /* grid and rhythm */
  --pad: clamp(1.25rem, 0.6667rem + 2.9167vw, 3rem);           /* 22 at 390, 48 at 1440 */
  --gutter: clamp(1.25rem, 1.1667rem + 0.4167vw, 1.5rem);
  --wide: 94.5rem;
  --content: 48rem;
  --section: clamp(4rem, 2.6667rem + 6.6667vw, 8rem);
  --header-h: clamp(3.75rem, 3.4714rem + 1.1429vw, 4.5rem);     /* 60 at 390, 72 at 1440 */
  --bp-nav: 900;             /* site.js reads this: at and above it the header shows the language switch and Register free */

  /* shape */
  --r-btn: 6px;
  --r-card: 16px;
  --r-tix: 8px;              /* the ticket pill and Menu ends */
  --tix-h: 2.25rem;          /* 36px, the visible ticket; the tap area is 44 */
  --tix-stub: 1.75rem;       /* 28px */
  --tix-tear: 6px;           /* how far the stub tears off on hover */

  /* motion */
  --ease: cubic-bezier(.65, 0, .35, 1);
  --mease: cubic-bezier(.8, 0, .2, 1);
  --out: cubic-bezier(.16, 1, .3, 1);
  --p3: cubic-bezier(.215, .61, .355, 1);
  --t-tix: .42s;
  --t-panel: .8s;
  --t-dim: .6s;

  /* focus: a two-band ring that reads on any ground (cream band inside, ink outline outside) */
  --ring-in: var(--cream);
  --ring-out: var(--ink);
}

/* Granite base (design lead D1, 13 Nov 2026): the lean shell, the header with its two tickets, the menu overlay and the footer.
   Every value comes from tokens.css. Section components live in components.css (agent D2), page parts in p-*.css. */

/* ---------------------------------------------------------------- reset and ground */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 12px); background: var(--cream); }
body { margin: 0; background: var(--cream); color: var(--ink); font-family: var(--f-sans); font-size: var(--fs-base); line-height: var(--lh-base);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-feature-settings: "kern"; }
img, svg, video, picture { display: block; max-width: 100%; }
img { height: auto; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: var(--w-head); }
p, ul, ol, figure, blockquote, address { margin: 0; }
address { font-style: normal; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
a { color: inherit; }
main a:not([class]) { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
::selection { background: var(--red); color: var(--cream); }
.nb { white-space: nowrap; }
.wrap { width: 100%; max-width: var(--wide); margin-inline: auto; padding-inline: var(--pad); }
.shell { min-height: 40vh; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0; }

/* focus: one ring for every control, two bands so it reads on cream, ink, red and photos alike */
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--ring-out); outline-offset: 2px; box-shadow: 0 0 0 4px var(--ring-in); border-radius: 2px; }

/* skip link: parked above the viewport (never off to the side), drops in on focus */
.skip { position: fixed; top: 8px; left: var(--pad); z-index: 100; display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px;
  background: var(--ink); color: var(--cream); font-weight: 600; font-size: var(--fs-sm); text-decoration: none; border-radius: var(--r-btn);
  transform: translateY(calc(-100% - 16px)); transition: transform .2s var(--out); }
.skip:focus-visible { transform: none; }

/* the placeholder body every route ships with until its sections land */
.stub { padding: calc(var(--header-h) + var(--section)) 0 var(--section); }
.stub__h { font-size: var(--fs-h1); line-height: var(--lh-h1); letter-spacing: var(--ls-h1); max-width: 16ch; }

/* entrance: nothing is hidden at first paint; site.js marks only blocks wholly below the first screen */
[data-rise].is-wait { opacity: 0; transform: translateY(12px); transition: opacity .6s var(--p3), transform .6s var(--p3); transition-delay: var(--rise-delay, 0s); }
[data-rise].is-wait.is-in { opacity: 1; transform: none; }

/* YouTube facade (sections.youtube): the thumbnail is a button until it is clicked */
.yt { position: relative; aspect-ratio: 16 / 9; background: var(--ink); border-radius: var(--r-card); overflow: hidden; }
.yt__btn { position: absolute; inset: 0; display: block; width: 100%; padding: 0; border: 0; background: none; }
.yt__btn picture, .yt__btn img { width: 100%; height: 100%; object-fit: cover; }
.yt__play { position: absolute; left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; background: var(--red); }
.yt__play::after { content: ""; position: absolute; left: 26px; top: 21px; border-left: 16px solid var(--cream); border-top: 11px solid transparent; border-bottom: 11px solid transparent; }
.yt iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ---------------------------------------------------------------- the ticket (Book a table, Menu) */
/* A body and a stub joined by a perforation. Hover or keyboard focus tears the stub off by --tix-tear: the perforation goes,
   both inner ends round off, the arrow turns from across to up-and-out. Layout keeps the torn width, so nothing moves. */
.tix { --tix-bg: var(--red); --tix-fg: var(--cream); position: relative; display: inline-flex; align-items: stretch; flex: none; height: var(--tix-h);
  margin-right: var(--tix-tear); padding: 0; border: 0; background: none; color: var(--tix-fg); text-decoration: none;
  font: 600 var(--fs-tix)/1 var(--f-sans); letter-spacing: var(--ls-caps); text-transform: uppercase; white-space: nowrap;
  -webkit-tap-highlight-color: transparent; }
.tix::after { content: ""; position: absolute; inset: -4px calc(-1 * var(--tix-tear)) -4px 0; }   /* 44px tall tap area */
.tix:focus-visible { border-radius: var(--r-tix); }
.tix__body, .tix__stub { position: relative; display: flex; align-items: center; background: var(--tix-bg); color: var(--tix-fg);
  transition: transform var(--t-tix) var(--ease), border-radius var(--t-tix) var(--ease), background-color .2s; }
.tix__body { padding: 0 14px; border-radius: var(--r-tix) 0 0 var(--r-tix); }
.tix__t { display: block; transition: transform var(--t-tix) var(--ease); }
.tix__stub { justify-content: center; width: var(--tix-stub); border-radius: 0 var(--r-tix) var(--r-tix) 0; }
.tix__stub::before { content: ""; position: absolute; left: 0; top: 7px; bottom: 7px; border-left: 1.5px dashed currentColor; opacity: .6;
  transition: opacity .12s linear .3s; }
.tix__arr { width: 10px; height: 10px; transform: rotate(45deg); transition: transform var(--t-tix) var(--ease); }
.tix--ink { --tix-bg: var(--ink); --tix-fg: var(--cream); }
.tix--cream { --tix-bg: var(--cream); --tix-fg: var(--red); }
@media (hover: hover) {
  .tix:hover .tix__body { border-radius: var(--r-tix); }
  .tix:hover .tix__stub { transform: translateX(var(--tix-tear)); border-radius: var(--r-tix); }
  .tix:hover .tix__stub::before { opacity: 0; transition: opacity .1s linear; }
  .tix:hover .tix__arr { transform: none; }
  .tix:not(.tix--cream):not(.tix--ink):hover { --tix-bg: var(--red-ink); }
}
.tix:focus-visible .tix__body { border-radius: var(--r-tix); }
.tix:focus-visible .tix__stub { transform: translateX(var(--tix-tear)); border-radius: var(--r-tix); }
.tix:focus-visible .tix__stub::before { opacity: 0; transition: opacity .1s linear; }
.tix:focus-visible .tix__arr { transform: none; }

/* the Menu ticket: three bars that step 14 / 8 / 4 on hover and cross into an X when open */
.burger__close { display: none; }
.burger[aria-expanded="true"] .burger__open { display: none; }
.burger[aria-expanded="true"] .burger__close { display: inline; }
.burger__bars { display: grid; gap: 3px; width: 14px; }
.burger__bars i { display: block; width: 14px; height: 2px; background: currentColor; transform-origin: 0 50%;
  transition: transform var(--t-tix) var(--ease), opacity .2s; }
@media (hover: hover) {
  .burger[aria-expanded="false"]:hover .burger__bars i:nth-child(2) { transform: scaleX(.5714); }
  .burger[aria-expanded="false"]:hover .burger__bars i:nth-child(3) { transform: scaleX(.2857); }
}
.burger[aria-expanded="true"] .burger__bars i { transform-origin: 50% 50%; }
.burger[aria-expanded="true"] .burger__bars i:nth-child(1) { transform: translateY(5px) rotate(45deg); }
.burger[aria-expanded="true"] .burger__bars i:nth-child(2) { opacity: 0; }
.burger[aria-expanded="true"] .burger__bars i:nth-child(3) { transform: translateY(-5px) rotate(-45deg); }
.burger[aria-expanded="true"] .burger__bars { transform: rotate(90deg); transition: transform .5s var(--out); }

/* ---------------------------------------------------------------- header */
/* Fixed, transparent over the first band; a cream glass once the page scrolls. site.js sets data-tone from what is under the
   bar (light ground: ink; dark ground or photo: cream), hides it on the way down and brings it back on any way up. The glass
   sits on ::before, never on .head itself: a backdrop-filter or transform on .head would trap the fixed menu inside the bar. */
.head { position: fixed; top: 0; left: 0; right: 0; z-index: 50; height: var(--header-h); color: var(--ink); transition: transform .45s var(--p3), color .25s; }
.head::before { content: ""; position: absolute; inset: 0; z-index: 0; background: rgba(255, 252, 246, .9); border-bottom: 1px solid var(--line);
  -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); opacity: 0; transition: opacity .3s; pointer-events: none; }
.head.is-scrolled::before { opacity: 1; }
.head[data-tone="dark"]:not(.is-scrolled) { color: var(--cream); }
/* A page that opens on a dark photo band (its first section carries data-tone="dark": the home hero, every photo page title
   band): while the header sits unscrolled over it, the header carries the top band of that hero's scrim as its own ground
   (ink .64). The photo looks the same, and the cream links have a real background of their own (the gate composites DOM
   ancestors only). Each hero's scrim starts at --header-h with the same .64, so there is no seam. Never scrolled or open. */
body:has(#main > .shell > [data-tone="dark"]:first-child) .head[data-tone="dark"]:not(.is-scrolled):not(.is-open) { background-color: var(--head-band); }
@media (prefers-reduced-motion: no-preference) {
  body:has(#main > .shell > [data-tone="dark"]:first-child) .head { transition: transform .45s var(--p3), color .25s, background-color .25s; }
}
.head.is-hidden:not(.is-open) { transform: translateY(-100%); }
.head.is-hidden:focus-within { transform: none; }   /* keyboard focus inside the bar always shows it */
.bar { position: relative; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 100%; padding-inline: var(--pad); }
/* the logo gives way first when a long French or Spanish ticket label needs the room on a small phone */
.brand { display: inline-flex; align-items: center; flex: 0 1 auto; min-width: 0; min-height: 44px; color: inherit; transition: color .25s; }
.brand__logo { width: clamp(6.25rem, 5.4606rem + 3.2381vw, 8.375rem); max-width: 100%; height: auto; }   /* 100 wide at 390, 134 at 1440 */
.head__acts { display: flex; flex: none; align-items: center; gap: 6px; }
.head__lang, .head__reg { display: none; }
.head__lang ul { display: flex; list-style: none; margin: 0; padding: 0; }
.head__lang a, .head__lang .lang__cur { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 44px; padding: 0 4px;
  font: 600 var(--fs-tix)/1 var(--f-sans); letter-spacing: var(--ls-caps); text-decoration: none; }
.head__lang .lang__cur { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 6px; }
.head__lang a:hover { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
.head__reg { align-items: center; min-height: 44px; padding: 0 12px 0 10px; font: 600 var(--fs-tix)/1 var(--f-sans); letter-spacing: var(--ls-caps);
  text-transform: uppercase; text-decoration: none; }
.head__reg:hover { text-decoration: underline; text-underline-offset: 6px; }
.head-cta .tix__more { display: none; }
@media (min-width: 560px) { .head-cta .tix__more { display: inline; } }
@media (min-width: 900px) {
  .head__lang, .head__reg { display: flex; }
  .head__lang { margin-right: 4px; }
}
@media (max-width: 559px) { .head-cta .tix__more { display: inline; position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } }
@media (max-width: 339px) { .head-cta { display: none; } }   /* the menu carries the ticket at the narrowest phones */

/* header while the menu is open: the brand and the Menu ticket stay on top, the rest steps back under the panel */
.head.is-open { color: var(--cream); transform: none; }
.head.is-open::before { opacity: 0; }
.head.is-open .head__lang, .head.is-open .head__reg, .head.is-open .head-cta { visibility: hidden; opacity: 0; transition: opacity .2s, visibility 0s .2s; }

/* ---------------------------------------------------------------- menu overlay */
html.menu-open { overflow: hidden; }
.nav__dim { position: fixed; inset: 0; z-index: 1; background: var(--scrim); -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
  opacity: 0; visibility: hidden; transition: opacity var(--t-dim) ease, visibility 0s linear var(--t-dim); }
.head.is-open .nav__dim { opacity: 1; visibility: visible; transition: opacity var(--t-dim) ease, visibility 0s; }
.nav { position: fixed; top: 0; right: 0; bottom: 0; z-index: 2; display: flex; flex-direction: column; width: min(40.625rem, 100%);
  padding: calc(var(--header-h) + 5rem) 32px 32px; overflow-y: auto; overscroll-behavior: contain; background: var(--red); color: var(--cream);
  --ring-in: var(--red); --ring-out: var(--cream);
  visibility: hidden; transform: translateX(100%); transition: transform var(--t-panel) var(--mease), visibility 0s linear var(--t-panel); }
.nav.is-open { visibility: visible; transform: none; transition: transform var(--t-panel) var(--mease), visibility 0s; }
.nav__list { display: flex; flex-direction: column; gap: 6px; list-style: none; margin: 0; padding: 0; }
.nav__list li { opacity: 0; transform: translateX(40px); transition: transform .7s var(--mease), opacity .5s; }
.nav.is-open .nav__list li { opacity: 1; transform: none; }
.nav.is-open .nav__list li:nth-child(1) { transition-delay: .30s; }
.nav.is-open .nav__list li:nth-child(2) { transition-delay: .34s; }
.nav.is-open .nav__list li:nth-child(3) { transition-delay: .38s; }
.nav.is-open .nav__list li:nth-child(4) { transition-delay: .42s; }
.nav.is-open .nav__list li:nth-child(5) { transition-delay: .46s; }
.nav.is-open .nav__list li:nth-child(6) { transition-delay: .50s; }
.nav.is-open .nav__list li:nth-child(7) { transition-delay: .54s; }
.nav.is-open .nav__list li:nth-child(8) { transition-delay: .58s; }
.nav.is-open .nav__list li:nth-child(n+9) { transition-delay: .62s; }
.nav__a { display: inline-flex; align-items: center; gap: 14px; min-height: 44px; padding: 4px 0; color: var(--cream); text-decoration: none;
  font-size: 1.5rem; font-weight: 600; line-height: 1.1; letter-spacing: var(--ls-caps); text-transform: uppercase; transition: color .25s; }
.nav__arr { flex: none; width: 17px; height: 17px; opacity: 0; transform: translateX(-6px); transition: opacity .35s var(--out), transform .35s var(--out); }
.nav__a[aria-current="page"] .nav__arr, .nav__a:hover .nav__arr, .nav__a:focus-visible .nav__arr { opacity: 1; transform: none; }
@media (hover: hover) { .nav__list:has(.nav__a:hover) .nav__a:not(:hover) { color: var(--dim-on-red); } }
.nav__foot { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin-top: auto; padding-top: 48px; opacity: 0; transition: opacity .3s; }
.nav.is-open .nav__foot { opacity: 1; transition: opacity .4s .7s; }
.nav__agent { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; font-size: var(--fs-sm); text-decoration: underline;
  text-decoration-thickness: 1px; text-underline-offset: 5px; }
.nav__lang ul { display: flex; gap: 4px 16px; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.nav__lang a, .nav__lang .lang__cur { display: inline-flex; align-items: center; min-height: 44px; font-size: var(--fs-sm); font-weight: 500; text-decoration: none; }
.nav__lang .lang__cur { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; }
.nav__lang a:hover { text-decoration: underline; text-underline-offset: 5px; }
.nav__tix { margin-left: auto; }
@media (max-width: 767px) {
  .nav { padding: calc(var(--header-h) + 2rem) var(--pad) 28px; }
  .nav__list { gap: 0; }
  .nav__a { font-size: 1.75rem; padding: 6px 0; }
  .nav__foot { padding-top: 36px; }
  .nav__tix { margin-left: 0; }
}

/* ---------------------------------------------------------------- footer */
.foot { position: relative; overflow: hidden; background: var(--ink); color: var(--cream); padding-top: var(--section); --ring-in: var(--ink); --ring-out: var(--cream); }
.foot__in { max-width: var(--wide); margin-inline: auto; padding-inline: var(--pad); }
.foot__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 48px; }
.foot__brand { display: inline-flex; min-height: 44px; margin-bottom: 40px; color: var(--cream); }
.foot__logo { width: auto; height: 3rem; }
.foot__h { margin: 0 0 18px; font: 400 var(--fs-xs)/1.3 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted-dark); }
.foot__lead { max-width: 24ch; margin: 0 0 24px; font-size: var(--fs-md); font-weight: 500; line-height: var(--lh-md); }
.news { max-width: 30rem; }
.news__label { display: block; margin-bottom: 8px; font-size: var(--fs-sm); color: var(--muted-dark); }
.news__row { display: flex; gap: 6px; }
.news__in { flex: 1; min-width: 0; height: 48px; padding: 0 16px; border: 1px solid rgba(255, 252, 246, .45); border-radius: var(--r-btn);
  background: transparent; color: var(--cream); font-size: var(--fs-base); }
.news__in::placeholder { color: var(--muted-dark); opacity: 1; }
.news__in[aria-invalid="true"] { border-color: #FFA3AE; }
.news__btn { flex: none; height: 48px; padding: 0 20px; border: 0; border-radius: var(--r-btn); background: var(--red); color: var(--cream);
  font-size: var(--fs-sm); font-weight: 600; letter-spacing: var(--ls-caps); text-transform: uppercase; transition: background-color .2s; }
.news__btn:hover { background: var(--red-ink); }
.news__btn:disabled { cursor: not-allowed; }
.news__row { flex-wrap: wrap; }
.news .field__err { flex-basis: 100%; order: 3; margin-top: 4px; color: #FFA3AE; font-size: var(--fs-sm); }   /* 9.9:1 on ink */
.news__done { margin-top: 14px; max-width: 34rem; font-size: var(--fs-sm); line-height: 1.5; }
.news__ns { margin-top: 12px; font-size: var(--fs-sm); }
.foot__list { display: grid; gap: 2px; list-style: none; margin: 0; padding: 0; }
.foot__list a { display: inline-flex; align-items: center; min-height: 32px; font-size: var(--fs-sm); text-decoration: none; overflow-wrap: anywhere; }
.foot__list a:hover { text-decoration: underline; text-underline-offset: 5px; }
.foot__addr { margin: 0 0 16px; font-size: var(--fs-sm); line-height: 1.55; }
.foot__base { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 32px; margin-top: 72px; padding: 18px 0;
  border-top: 1px solid var(--line-dark); font-size: var(--fs-tix); font-weight: 600; letter-spacing: var(--ls-caps); text-transform: uppercase; color: var(--muted-dark); }
.foot__lang ul { display: flex; gap: 4px 18px; list-style: none; margin: 0; padding: 0; }
.foot__lang a, .foot__lang .lang__cur { display: inline-flex; align-items: center; min-height: 32px; color: var(--cream); text-decoration: none; }
.foot__lang .lang__cur { color: var(--muted-dark); }
.foot__lang a:hover, .foot__credit a:hover { text-decoration: underline; text-underline-offset: 5px; }
.foot__credit a { display: inline-flex; align-items: center; min-height: 32px; color: var(--cream); text-decoration: none; }
@media (min-width: 768px) {
  .foot__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--gutter); }
  .foot__news { grid-column: 1 / -1; }
}
@media (min-width: 1100px) {
  .foot__grid { grid-template-columns: minmax(0, 1.7fr) repeat(3, minmax(0, 1fr)); column-gap: 32px; }
  .foot__news { grid-column: auto; padding-right: 48px; }
}

/* the GRANITE ghost wordmark: letters are CSS content (decorative, aria-hidden), dropped into place by site.js over the last
   footer-height of scroll; the window clips them while they wait above */
.ghost { display: flex; justify-content: space-between; max-width: var(--wide); margin: 48px auto 0; padding: 0 var(--pad);
  padding-bottom: clamp(.5rem, .25rem + 1vw, 1.25rem); overflow: hidden; overflow: clip; color: var(--ghost); font-weight: 800;
  line-height: .78; letter-spacing: 0; user-select: none; pointer-events: none;
  font-size: calc((min(100vw, var(--wide)) - 2 * var(--pad)) / 5.1); }
/* Geist: ascent 1.005em, descent .295em, caps .71em (G overshoots to .726 and -.016). At line-height .78 the caps sit inside the
   line box (top .019em, bottom .761em), so the clip window never cuts a letter at rest. GRANITE advances 4.51em: /5.1 leaves
   the letters spaced out to the full width by space-between. */
.ghost__l { display: block; will-change: transform; }
.ghost__l::before { content: attr(data-l); display: block; }

/* ---------------------------------------------------------------- reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
  [data-rise].is-wait { opacity: 1; transform: none; transition: none; }
  .tix__body, .tix__stub, .tix__t, .tix__arr, .burger__bars, .burger__bars i { transition-duration: .01s !important; }
  .head { transition: none; }
  .nav, .nav.is-open { transform: none; transition: opacity .3s, visibility 0s linear .3s; opacity: 0; }
  .nav.is-open { opacity: 1; transition: opacity .3s, visibility 0s; }
  .nav__list li, .nav.is-open .nav__list li { transform: none; transition: opacity .3s; transition-delay: 0s !important; }
  .nav__arr { transition: opacity .2s; transform: none; }
  .ghost__l { transform: none !important; }
}

/* Section components (D2). Every rule is under .cx-*. Tokens come from tokens.css (D1); the private --cx-* aliases fall back
   to D1's chosen values so this file renders even before tokens.css lands. Numbers: AME (R2c) and Mews (MOTION.md), see D2-NOTES.md. */
:root {
  --cx-red: var(--c-red, #C8102E); --cx-red-h: var(--c-red-hover, #A8121D); --cx-ink: var(--c-ink, #0B1219);
  --cx-cream: var(--c-cream, #FFFCF6); --cx-sea: var(--c-sea, #0F3B57); --cx-sand: var(--c-sand, #E9DCC3);
  --cx-muted: var(--c-muted, #5C5A55); --cx-dim: #8A8984;
  --cx-sans: var(--f-sans, system-ui, -apple-system, "Segoe UI", Arial, sans-serif);
  --cx-mono: var(--f-mono, ui-monospace, "SFMono-Regular", Consolas, monospace);
  --cx-pad: clamp(1.25rem, .6667rem + 2.9167vw, 3rem);          /* AME container padding: 48 at 1440, 22 at 390 */
  --cx-gap: clamp(1.25rem, 1.1667rem + .4167vw, 1.5rem);        /* AME gutter: 24 at 1440 */
  --cx-rhythm: clamp(4rem, 2.6667rem + 6.6667vw, 8rem);         /* AME section rhythm */
  --cx-h2: clamp(2.118rem, 1.6rem + 2.2vw, 2.944rem);           /* 33.9 at 390, 47.1 at 1440 */
  --cx-out: cubic-bezier(.16, 1, .3, 1); --cx-ease: cubic-bezier(.65, 0, .35, 1); --cx-p3: cubic-bezier(.215, .61, .355, 1);
}
.cx { background: var(--cx-cream); color: var(--cx-ink); font-family: var(--cx-sans); padding-block: var(--cx-rhythm); }
.cx-wrap { max-width: 94.5rem; margin-inline: auto; padding-inline: var(--cx-pad); }
.cx-tone-sand { background: var(--cx-sand); }
.cx-tone-ink { background: var(--cx-ink); color: var(--cx-cream); }
.cx-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.cx-eyebrow { font-family: var(--cx-mono); font-size: clamp(.757rem, .72rem + .17vw, .8675rem); letter-spacing: .06em; text-transform: uppercase; margin: 0 0 1rem; color: var(--cx-muted); }
.cx-tone-ink .cx-eyebrow { color: #B9B7B0; }
.cx-lead { font-size: clamp(1rem, .96rem + .2vw, 1.1175rem); line-height: 1.45; margin: 0 0 1.5rem; max-width: 36rem; }

/* buttons: AME's 6px radius and 1rem 2rem padding; the hover is a colour shift, not AME's lime sweep */
.cx-btn { display: inline-flex; align-items: center; min-height: 44px; padding: .75rem 1.5rem; border-radius: 6px; font: 500 .9375rem/1.2 var(--cx-sans); text-decoration: none; border: 1.5px solid transparent; transition: background-color .25s ease, color .25s ease, border-color .25s ease; }
.cx-btn--ink { background: var(--cx-ink); color: var(--cx-cream); }
.cx-btn--ink:hover { background: var(--cx-red); }
.cx-btn--red { background: var(--cx-red); color: #fff; }
.cx-btn--red:hover { background: var(--cx-red-h); }
.cx-btn--cream { background: var(--cx-cream); color: var(--cx-ink); }
.cx-btn--cream:hover { background: var(--cx-ink); color: var(--cx-cream); }
.cx-btn--line { border-color: currentColor; color: inherit; }
.cx-btn--line:hover { background: var(--cx-cream); color: var(--cx-red); border-color: var(--cx-cream); }
.cx a:focus-visible, .cx button:focus-visible { outline: 2px solid var(--cx-red); outline-offset: 3px; }
.cx-band a:focus-visible, .cx-tk button:focus-visible, .cx-tone-ink a:focus-visible, .cx-tone-ink button:focus-visible { outline-color: var(--cx-cream); }

/* 1. heading block + line swipe (AME: bar in, bar out, text from x -64px) */
.cx-head { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cx-gap); align-items: end; margin-bottom: clamp(2rem, 1.5rem + 2vw, 3.5rem); }
.cx-head--solo { grid-template-columns: 1fr; }
.cx-head__b .cx-lead { margin-bottom: 1.25rem; }
.cx-h { font: 600 var(--cx-h2)/1.15 var(--cx-sans); letter-spacing: -.015em; margin: 0; max-width: 20ch; }
.cx-heading .cx-h { font-size: clamp(2.588rem, 1.9rem + 2.95vw, 3.909rem); line-height: 1.1; letter-spacing: -.02em; }
.cx-sw-wait { opacity: 0; }
.cx-ln { display: block; position: relative; overflow: hidden; padding-bottom: .08em; margin-bottom: -.08em; }
.cx-ln__t { display: inline-block; }
.cx-ln__bar { position: absolute; inset: 0 0 .08em 0; background: var(--cx-red); clip-path: inset(0 100% 0 0); pointer-events: none; }
.cx-ln__tail { position: absolute; top: 0; bottom: .08em; right: -2px; width: 12px; background: var(--cx-ink); transform: translateX(-100vw); pointer-events: none; }
.cx-tone-ink .cx-ln__tail { background: var(--cx-cream); }

/* 2. small-caps strip (Mews: 13px 700 caps, .26px tracking, muted line over value) */
.cx-strip { padding-block: 1.25rem; border-bottom: 1px solid rgba(11, 18, 25, .14); }
.cx-strip__dl { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem var(--cx-gap); margin: 0; }
.cx-strip__c { overflow: hidden; }
.cx-strip dt, .cx-strip dd { font: 700 .8125rem/1.14 var(--cx-sans); letter-spacing: .02em; text-transform: uppercase; margin: 0; }
.cx-strip dt { color: var(--cx-muted); margin-bottom: 4px; }
.cx-arm .cx-strip__c dt, .cx-arm .cx-strip__c dd { transform: translateY(12px); opacity: 0; transition: transform .8s var(--cx-out), opacity .8s var(--cx-out); transition-delay: calc(var(--d) * .08s); }
.cx-arm.is-in .cx-strip__c dt, .cx-arm.is-in .cx-strip__c dd { transform: none; opacity: 1; }

/* 3. date band: our red ground, the mono date line, the chevron rows built bottom-up (AME: row = width*58.5/459, .3s, .1s apart) */
.cx-band { background: var(--cx-red); color: #fff; padding: 0; overflow: hidden; }
.cx-band__in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) minmax(0, 2fr); gap: var(--cx-gap); align-items: center; padding-right: 0; }
.cx-band__btns { display: flex; flex-direction: column; align-items: flex-start; gap: .75rem; padding-block: 2rem; }
.cx-band__date { font: 400 clamp(.882rem, .85rem + .17vw, .9926rem)/1.25 var(--cx-mono); letter-spacing: .05em; text-transform: uppercase; margin: 0 0 .75rem; display: flex; flex-direction: column; }
.cx-band__lead { margin: 0; line-height: 1.45; max-width: 34rem; }
.cx-chev { align-self: stretch; display: flex; flex-direction: column; justify-content: center; background: var(--cx-ink); }
.cx-chev__row { aspect-ratio: 459 / 58.5; }
.cx-chev__row svg { display: block; width: 100%; height: 100%; }
.cx-chev__row--a { color: var(--cx-cream); } .cx-chev__row--b { color: var(--cx-red); }
.cx-chev__row polygon { fill: currentColor; }
.cx-arm .cx-chev__row { clip-path: inset(100% 0 0 0); transition: clip-path .3s var(--cx-p3); transition-delay: calc(.2s + var(--i) * .1s); }
.cx-arm.is-in .cx-chev__row { clip-path: inset(0 0 0 0); }

/* 4. ticker (Mews band: 13.2px caps, gap 16.5) and the shared marquee/pause device */
.cx-tk { display: flex; align-items: center; padding: 0; background: var(--cx-red); color: #fff; }
.cx-tk--ink { background: var(--cx-ink); }
.cx-tk__view { flex: 1; min-width: 0; overflow: hidden; }
.cx-tk__move { display: flex; width: max-content; will-change: transform; }
.cx-tk__track { display: flex; align-items: center; gap: 16.5px; margin: 0; padding: 0 16.5px 0 0; list-style: none; }
.cx-tk__it { display: flex; align-items: center; gap: .5em; white-space: nowrap; font: 400 .825rem/1 var(--cx-sans); text-transform: uppercase; padding-block: 1rem; }
.cx-tk__it b { font-weight: 700; }
.cx-tk__sep { width: 10px; height: 10px; margin-left: 10px; fill: none; stroke: currentColor; stroke-width: 2; }
.cx-pause { flex: none; display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; min-width: 44px; padding: 0 1rem; border: 0; border-left: 1px solid rgba(255, 255, 255, .35); background: transparent; color: inherit; font: 700 .75rem/1 var(--cx-sans); text-transform: uppercase; letter-spacing: .04em; cursor: pointer; }
.cx-pause__i { width: 10px; height: 12px; border-inline: 3px solid currentColor; box-sizing: border-box; }
.cx-pause[data-state="paused"] .cx-pause__i { border: 0; border-left: 10px solid currentColor; border-block: 6px solid transparent; width: 0; height: 0; }

/* 5. route map */
.cx-map__grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--cx-gap); align-items: end; }
.cx-map__main, .cx-map__inset { margin: 0; }
.cx-map__svg { display: block; width: 100%; height: auto; }
.cx-map__inset { background: var(--cx-cream); border: 1px solid rgba(11, 18, 25, .18); border-radius: 16px; padding: 12px; }
.cx-map__inset figcaption { margin: .5rem 0 0; }
.cx-map__usa { fill: rgba(11, 18, 25, .05); stroke: none; }
.cx-map__land { fill: var(--cx-sand); stroke: rgba(11, 18, 25, .45); stroke-width: 1; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
.cx-map__lake { fill: var(--cx-cream); stroke: rgba(11, 18, 25, .3); stroke-width: .75; vector-effect: non-scaling-stroke; }
.cx-tone-sand .cx-map__lake { fill: var(--cx-sand); }
.cx-map__grat { fill: none; stroke: rgba(11, 18, 25, .1); stroke-width: 1; vector-effect: non-scaling-stroke; }
.cx-map__box { fill: none; stroke: var(--cx-ink); stroke-width: 1.25; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; }
.cx-map__route { fill: none; stroke-width: 2.25; vector-effect: non-scaling-stroke; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 0; }
.cx-map__route--spring { stroke: var(--cx-red); } .cx-map__route--fall { stroke: var(--cx-sea); }
.cx-map__dot { stroke: var(--cx-cream); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.cx-map__dot--spring { fill: var(--cx-red); } .cx-map__dot--fall { fill: var(--cx-sea); }
.cx-map__lab { font-family: var(--cx-sans); font-weight: 600; fill: var(--cx-ink); paint-order: stroke; stroke: var(--cx-cream); stroke-width: 3px; stroke-linejoin: round; }
.cx-map__lab--box { font-family: var(--cx-mono); font-weight: 400; text-transform: uppercase; letter-spacing: .06em; }
.cx-arm .cx-map__route { stroke-dashoffset: 1; transition: stroke-dashoffset 1.6s var(--cx-ease) .2s; }
.cx-arm .cx-map__route--fall { transition-delay: .9s; }
.cx-arm.is-in .cx-map__route { stroke-dashoffset: 0; }
.cx-map__lists { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cx-gap); margin-top: 2.5rem; }
.cx-map__sh { display: flex; align-items: center; gap: .75rem; font: 600 1.4825rem/1.25 var(--cx-sans); margin: 0 0 1rem; padding-bottom: .75rem; border-bottom: 1px solid var(--cx-ink); }
.cx-map__key { width: 14px; height: 14px; border-radius: 50%; background: var(--cx-red); }
.cx-map__season--fall .cx-map__key { background: var(--cx-sea); }
.cx-map__n { margin-left: auto; font: 400 .8125rem/1 var(--cx-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--cx-muted); }
.cx-map__reg { font: 400 .8125rem/1 var(--cx-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--cx-muted); margin: 1.25rem 0 .25rem; }
.cx-map__grp ol { list-style: none; margin: 0; padding: 0; }
.cx-map__a { display: flex; justify-content: space-between; gap: 1rem; min-height: 44px; align-items: center; border-bottom: 1px solid rgba(11, 18, 25, .14); color: inherit; text-decoration: none; font-weight: 500; transition: color .2s ease, padding .3s var(--cx-out); }
.cx-map__a time { font: 400 .875rem/1 var(--cx-mono); text-transform: uppercase; letter-spacing: .05em; color: var(--cx-muted); }
.cx-map__a:hover { color: var(--cx-red); padding-left: .5rem; }
/* compact stop list (sec_tourmap compact=True, the home page): each season's stops flow in rows, a dot between them */
.cx-map__flow { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 1.75rem; }
.cx-map__flow .cx-map__a { justify-content: flex-start; gap: .5rem; border-bottom: 0; }
.cx-map__flow .cx-map__a:hover { padding-left: 0; }
.cx-map__flow .cx-map__a span { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .25em; text-decoration-color: rgba(11, 18, 25, .3); }
.cx-map__flow .cx-map__a:hover span { text-decoration-color: currentColor; }

/* 6. cards (AME events grid numbers; our hover: the route draws across the card, the plus turns red and turns a quarter) */
.cx-cards__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cx-gap); }
.cx-card { position: relative; display: flex; flex-direction: column; justify-content: flex-end; min-height: clamp(22.5rem, 18rem + 12vw, 30.25rem); padding: 2rem; border-radius: 16px; overflow: hidden; color: #fff; text-decoration: none; isolation: isolate; }
.cx-card:nth-child(4n+2), .cx-card:nth-child(4n+3) { grid-column: span 2; }
.cx-tone-red { background: var(--cx-red); } .cx-tone-sea { background: var(--cx-sea); } .cx-tone-ink.cx-card, .cx-tone-ink.cx-yt { background: var(--cx-ink); }
.cx-card.cx-tone-sand, .cx-yt.cx-tone-sand { background: var(--cx-sand); color: var(--cx-ink); }
.cx-card__media, .cx-card__scrim, .cx-tex { position: absolute; inset: 0; z-index: -1; }
.cx-card__media img { width: 100%; height: 100%; object-fit: cover; }
.cx-card__media picture { display: block; height: 100%; }   /* inline <picture> left the photo at its own height, a dark band under it */
.cx-card__scrim { background: linear-gradient(to top, rgba(0, 0, 0, .62), rgba(0, 0, 0, .231) 55%); }
.cx-card__eb { position: absolute; top: 2rem; left: 2rem; font: 400 .8125rem/1 var(--cx-mono); text-transform: uppercase; letter-spacing: .06em; }
.cx-card__t { font: 600 clamp(1.765rem, 1.65rem + .5vw, 1.985rem)/1.25 var(--cx-sans); letter-spacing: -.001em; margin: 0; max-width: calc(100% - 64px); text-wrap: balance; }
.cx-plus { position: absolute; right: 2rem; bottom: 2rem; width: 48px; height: 48px; border-radius: 50%; background: rgba(11, 18, 25, .46); transition: background-color .25s ease, transform .45s var(--cx-out); }
.cx-plus::before, .cx-plus::after { content: ""; position: absolute; left: 50%; top: 50%; width: 14px; height: 2px; margin: -1px 0 0 -7px; background: #fff; }
.cx-plus::after { transform: rotate(90deg); }
.cx-card:hover .cx-plus, .cx-card:focus-visible .cx-plus { background: var(--cx-red); transform: rotate(90deg); }
.cx-card.cx-tone-red:hover .cx-plus, .cx-card.cx-tone-red:focus-visible .cx-plus { background: var(--cx-ink); }
.cx-tex { width: 100%; height: 100%; color: inherit; }
.cx-tex__grat { fill: none; stroke: currentColor; stroke-opacity: .12; stroke-width: 1; vector-effect: non-scaling-stroke; }
.cx-tex__land, .cx-tex__echo use { fill: none; stroke: currentColor; stroke-opacity: .32; stroke-width: 1; vector-effect: non-scaling-stroke; }
.cx-tex__echo use { stroke-opacity: .16; }
.cx-tex__lake { fill: none; stroke: currentColor; stroke-opacity: .2; stroke-width: 1; vector-effect: non-scaling-stroke; }
.cx-route-base { fill: none; stroke: currentColor; stroke-opacity: .45; stroke-width: 1.25; stroke-dasharray: 2 5; vector-effect: non-scaling-stroke; }
.cx-route { fill: none; stroke: var(--cx-red); stroke-width: 2.5; stroke-linecap: round; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset .9s var(--cx-ease); }
.cx-tone-red .cx-route { stroke: var(--cx-cream); }
.cx-card--photo .cx-route { stroke: #fff; }
.cx-tex__dots circle { fill: currentColor; fill-opacity: .7; }
.cx-card:hover .cx-route, .cx-card:focus-visible .cx-route, .cx-yt__btn:hover .cx-route, .cx-yt__btn:focus-visible .cx-route { stroke-dashoffset: 0; }

/* 7. stat row (Mews: 48px 800 numbers, 13px 700 caps labels, gap 72) */
.cx-stats { padding-block: clamp(2.5rem, 2rem + 2vw, 4rem); }
.cx-stats__row { display: flex; flex-wrap: wrap; gap: 2rem 72px; margin: 0; }
.cx-stat { display: flex; flex-direction: column-reverse; gap: 5px; max-width: 16rem; }
.cx-stat dd { margin: 0; font: 800 3rem/1.1 var(--cx-sans); letter-spacing: .01em; color: var(--cx-red); }
.cx-tone-ink .cx-stat dd { color: var(--cx-cream); }
.cx-stat dt { font: 700 .8156rem/1.32 var(--cx-sans); letter-spacing: .015em; text-transform: uppercase; }

/* 8. packages */
.cx-pk__cols { display: grid; grid-template-columns: 1fr 1fr; gap: var(--cx-gap); }
.cx-pk__col { display: flex; flex-direction: column; background: var(--cx-cream); border-radius: 16px; padding: clamp(1.5rem, 1.2rem + 1.2vw, 2.5rem); border-top: 6px solid var(--cx-ink); }
.cx-pk__col--b { border-top-color: var(--cx-red); }
.cx-pk__name { font: 500 clamp(1.206rem, 1.15rem + .3vw, 1.481rem)/1.35 var(--cx-sans); margin: 0 0 1rem; }
.cx-pk__price { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem; }
.cx-pk__price strong { font: 600 clamp(2.588rem, 2rem + 2.4vw, 3.909rem)/1 var(--cx-sans); letter-spacing: -.02em; }
.cx-pk__price span, .cx-pk__sub { font: 400 .8125rem/1.3 var(--cx-mono); text-transform: uppercase; letter-spacing: .05em; color: var(--cx-muted); }
.cx-pk__sub { margin: .5rem 0 1rem; }
.cx-pk__note { margin: 0 0 1.25rem; line-height: 1.45; }
.cx-pk__inc { list-style: none; margin: 0 0 2rem; padding: 0; flex: 1; }
.cx-pk__inc li { padding: .7rem 0 .7rem 1.5rem; border-top: 1px solid rgba(11, 18, 25, .14); position: relative; line-height: 1.35; }
.cx-pk__inc li::before { content: ""; position: absolute; left: 0; top: 1.05rem; width: 9px; height: 9px; border-right: 2px solid var(--cx-ink); border-bottom: 2px solid var(--cx-ink); transform: rotate(-45deg); }
.cx-pk__extra { font-weight: 600; } .cx-pk__extra::before { border-color: var(--cx-red) !important; }
.cx-pk__col .cx-btn { align-self: flex-start; }
.cx-pk__tiers { margin-top: var(--cx-gap); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 1rem var(--cx-gap); align-items: center; border-top: 1px solid var(--cx-ink); padding-top: 1.5rem; }
.cx-pk__th { font: 500 1.206rem/1.35 var(--cx-sans); margin: 0; }
.cx-pk__tiers ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cx-gap); }
.cx-pk__tiers li { display: flex; flex-direction: column; gap: .25rem; }
.cx-pk__tiers li span { font: 400 .8125rem/1.3 var(--cx-mono); text-transform: uppercase; letter-spacing: .05em; color: var(--cx-muted); }
.cx-pk__tiers li strong { font: 600 1.481rem/1.2 var(--cx-sans); color: var(--cx-red); }
.cx-pk__tax { grid-column: 2; margin: 0; font-size: .875rem; color: var(--cx-muted); }

/* 9. run sheet on a real 4 pm to 8 pm axis */
.cx-run__axis { display: flex; justify-content: space-between; font: 400 .8125rem/1 var(--cx-mono); text-transform: uppercase; letter-spacing: .05em; color: var(--cx-muted); border-bottom: 1px solid var(--cx-ink); padding-bottom: .5rem; }
.cx-run__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 4fr 3fr 1fr; }
.cx-run__it { display: flex; flex-direction: column; gap: .5rem; padding: 0 .75rem 0 0; }
.cx-run__bar { height: 10px; margin: 0 0 1rem; background: var(--cx-red); transform-origin: left; }
.cx-run__it--2 .cx-run__bar { background: var(--cx-ink); } .cx-run__it--3 .cx-run__bar { background: var(--cx-sea); }
.cx-run__time { font: 400 .8125rem/1.3 var(--cx-mono); text-transform: uppercase; letter-spacing: .05em; color: var(--cx-muted); }
.cx-run__name { font: 600 clamp(1.206rem, 1.1rem + .5vw, 1.481rem)/1.25 var(--cx-sans); }
.cx-arm .cx-run__bar { transform: scaleX(0); transition: transform .7s var(--cx-out); }
.cx-arm .cx-run__it--2 .cx-run__bar { transition-delay: .35s; } .cx-arm .cx-run__it--3 .cx-run__bar { transition-delay: .6s; }
.cx-arm.is-in .cx-run__bar { transform: none; }

/* 10. sponsors, marquee, exhibitor wall */
.cx-sp { border-top: 1px solid var(--cx-ink); padding-top: 1.25rem; }
.cx-sp__h { font: 400 .8125rem/1 var(--cx-mono); text-transform: uppercase; letter-spacing: .06em; margin: 0 0 1.25rem; color: var(--cx-muted); }
.cx-sp__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cx-gap); }
.cx-sp__list li { display: flex; flex-direction: column; gap: .5rem; }
.cx-sp__role { font: 700 .8125rem/1.3 var(--cx-sans); text-transform: uppercase; letter-spacing: .02em; color: var(--cx-red); }
.cx-sp__name { font: 600 clamp(1.3rem, 1.2rem + .5vw, 1.75rem)/1.2 var(--cx-sans); letter-spacing: -.01em; }
.cx-mq { display: flex; align-items: center; margin: 2.5rem 0; border-block: 1px solid rgba(11, 18, 25, .18); }
.cx-mq .cx-tk__track li { display: flex; align-items: center; white-space: nowrap; font: 600 clamp(1.1rem, 1rem + .6vw, 1.6rem)/1 var(--cx-sans); padding-block: 1.25rem; }
.cx-mq .cx-tk__sep { color: var(--cx-red); }
.cx-mq .cx-pause { border-left-color: rgba(11, 18, 25, .2); }
.cx-ex__wall { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--cx-gap); }
.cx-ex__wall li { border-top: 1px solid rgba(11, 18, 25, .18); padding: .9rem 0; font-weight: 500; line-height: 1.3; }

/* 11. videos (facade; no iframe until the click) */
.cx-vid__grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--cx-gap); }
.cx-vid__it:first-child { grid-column: span 2; grid-row: span 2; }
.cx-yt { position: relative; border-radius: 16px; overflow: hidden; aspect-ratio: 16 / 9; height: 100%; color: #fff; }
.cx-vid__it:first-child .cx-yt { aspect-ratio: auto; min-height: 100%; }
.cx-yt__btn { position: relative; display: flex; align-items: flex-end; width: 100%; height: 100%; min-height: 44px; padding: 1.5rem; border: 0; background: transparent; color: inherit; font: 600 1.1rem/1.25 var(--cx-sans); text-align: left; cursor: pointer; isolation: isolate; }
.cx-yt__play { position: absolute; left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; border-radius: 50%; background: var(--cx-red); transition: transform .45s var(--cx-out); }
.cx-yt__play::after { content: ""; position: absolute; left: 26px; top: 21px; border-left: 16px solid #fff; border-block: 11px solid transparent; }
.cx-yt__btn:hover .cx-yt__play { transform: scale(1.08); }
.cx-yt.cx-tone-red .cx-yt__play { background: var(--cx-ink); }
.cx-yt iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* 12. statement word-light (AME translucent start, Mews progress); dim stays at 3:1+ so large text passes AA */
.cx-st__p { font: 500 var(--cx-h2)/1.15 var(--cx-sans); letter-spacing: -.015em; margin: 0; max-width: 28ch; }
@media (prefers-reduced-motion: no-preference) {
  html.js .cx-st__p .cx-w { color: var(--cx-dim); transition: color .45s ease; }
  html.js .cx-tone-ink .cx-st__p .cx-w { color: #7F7E79; }
  html.js .cx-st__p .cx-w.is-lit { color: inherit; }
}
@media (prefers-reduced-motion: reduce) {
  .cx-arm .cx-strip__c dt, .cx-arm .cx-strip__c dd, .cx-arm .cx-chev__row, .cx-arm .cx-map__route, .cx-arm .cx-run__bar { transition: none; transform: none; opacity: 1; clip-path: none; stroke-dashoffset: 0; }
  .cx-route, .cx-plus, .cx-yt__play, .cx-map__a { transition: none; }
  .cx-sw-wait { opacity: 1; }
}

/* small screens: one column (AME cards 346 x 360 at 390) */
@media (max-width: 899px) {
  .cx-head, .cx-map__grid, .cx-pk__cols, .cx-pk__tiers { grid-template-columns: 1fr; }
  .cx-pk__tax { grid-column: auto; }
  .cx-band__in { grid-template-columns: 1fr; padding-right: var(--cx-pad); gap: 0; }
  .cx-band__btns { flex-direction: row; flex-wrap: wrap; order: 2; padding-block: 1.5rem 2rem; }
  .cx-band__txt { padding-top: 2rem; }
  .cx-chev { order: 3; margin-inline: calc(var(--cx-pad) * -1); }
  .cx-strip__dl { grid-template-columns: 1fr 1fr; }
  .cx-ex__wall { grid-template-columns: 1fr 1fr; }
  .cx-sp__list, .cx-vid__grid { grid-template-columns: 1fr; }
  .cx-vid__it:first-child { grid-column: auto; grid-row: auto; }
  .cx-vid__it:first-child .cx-yt { aspect-ratio: 16 / 9; }
  .cx-run__list { grid-template-columns: 1fr; gap: 1.25rem; }
  .cx-run__axis { display: none; }
  .cx-run__it { display: grid; grid-template-columns: 10px 1fr; column-gap: 1rem; }
  .cx-run__bar { grid-row: span 2; width: 10px; height: auto; min-height: calc(var(--span) * 1.25rem); margin: 0; transform-origin: top; }
  .cx-arm .cx-run__bar { transform: scaleY(0); }
}
@media (max-width: 699px) {
  .cx-cards__grid, .cx-map__lists { grid-template-columns: 1fr; }
  .cx-card:nth-child(4n+2), .cx-card:nth-child(4n+3) { grid-column: auto; }
  /* phones (B1b): at 28px in a 218px column a French word ("approfondissent") did not fit the line */
  .cx-card { padding: 1.5rem; }
  .cx-card__eb { top: 1.5rem; left: 1.5rem; right: 1.5rem; line-height: 1.3; }
  .cx-card__t { font-size: 1.5rem; max-width: calc(100% - 56px); }
  .cx-plus { right: 1.5rem; bottom: 1.5rem; }
  /* compact stop list on phones: one stop per row (the flow left ragged pairs), date at the right like the full list */
  .cx-map__flow { display: block; }
  .cx-map__flow .cx-map__a { justify-content: space-between; border-bottom: 1px solid rgba(11, 18, 25, .14); }
  .cx-map__main .cx-map__labels { display: none; }
  .cx-pk__tiers ul { grid-template-columns: 1fr; }
  .cx-stats__row { gap: 1.5rem 2.5rem; }
  /* unwidow() binds the last two words with &nbsp;: keep the hero heading at the h2 size on phones, and never let it widen the page */
  .cx-heading .cx-h { font-size: var(--cx-h2); }
  .cx-h, .cx-st__p { overflow-wrap: break-word; }
}

/* p-home.css: the home page (B1). Our hero: their hangar photo full bleed under a dark scrim, the headline low left, the
   small-caps tour strip, and a red date band across the foot. Then the paths, press and closing call. Tokens from tokens.css. */

.hm-wrap { max-width: var(--wide); margin: 0 auto; padding: 0 var(--pad); }
.hm-h2 { font-size: var(--fs-h2l); line-height: var(--lh-h2l); letter-spacing: var(--ls-h2l); font-weight: var(--w-head); margin: 0; }

/* ---- hero */
.hm-hero { position: relative; isolation: isolate; color: var(--cream); background: var(--ink); min-height: min(100svh, 62rem);
  display: grid; grid-template-rows: 1fr auto; }
/* the top band of the scrim lives on the header itself while it sits unscrolled over the photo: base.css, for every page whose
   first section is data-tone="dark" (integrator, 13 Nov 2026); this scrim starts at --header-h with the same .64. */
/* no negative top margin: .head is position fixed, so main already starts at 0 under it; the old -header-h margin pushed
   the top 72px of the photo above the page (B1b, measured: hero top was -72) */
.hm-hero__media { position: absolute; inset: 0; z-index: -2; overflow: hidden; }
.hm-hero__media picture, .hm-hero__pic img { display: block; width: 100%; height: 100%; }
.hm-hero__media img { width: 100%; height: 100%; object-fit: cover; object-position: 42% 45%; }
.hm-hero__pat { position: absolute; inset: 0; color: var(--cream); opacity: .5; }
.hm-hero__scrim { position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(11, 18, 25, 0) 0, rgba(11, 18, 25, 0) var(--header-h), rgba(11, 18, 25, .64) var(--header-h),
                rgba(11, 18, 25, .18) 26%, rgba(11, 18, 25, .38) 52%, rgba(11, 18, 25, .9) 100%),
              linear-gradient(90deg, rgba(11, 18, 25, .55) 0%, rgba(11, 18, 25, 0) 62%); }
.hm-hero__in { align-self: end; width: 100%; max-width: var(--wide); margin: 0 auto; box-sizing: border-box;
  padding: calc(var(--header-h) + 3rem) var(--pad) clamp(2rem, 1.5rem + 2vw, 3.25rem); }
.hm-hero__eb { font-family: var(--f-mono); font-size: var(--fs-xs); letter-spacing: var(--ls-mono); text-transform: uppercase; margin: 0 0 1.25rem; color: var(--cream); }
.hm-hero__h { font-size: var(--fs-h1); line-height: var(--lh-h1); letter-spacing: var(--ls-h1); font-weight: var(--w-head); margin: 0; max-width: 13ch; text-wrap: balance; }
/* the French and Spanish headlines are about twice as long: at 13ch they took four lines and pushed the red first-stop band
   below the fold at 1440 x 900 (hero 1,015 px); three lines keep the hero at the viewport height */
.hm-hero__h:lang(fr), .hm-hero__h:lang(es) { max-width: 20ch; }
.hm-hero__lead { font-size: var(--fs-md); line-height: var(--lh-md); max-width: 36rem; margin: 1.5rem 0 0; color: var(--cream); }
.hm-hero__ctas { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.75rem; margin-top: 2rem; }
.hm-hero__quiet { color: inherit; font-size: var(--fs-sm); font-weight: 500; text-decoration: underline; text-underline-offset: .3em;
  text-decoration-thickness: 1px; min-height: 44px; display: inline-flex; align-items: center; }
.hm-hero__quiet:hover { text-decoration-thickness: 2px; }
.hm-hero__strip { display: grid; grid-template-columns: repeat(3, minmax(0, max-content)); gap: .5rem clamp(1.5rem, 1rem + 3vw, 4.5rem);
  margin: clamp(2.25rem, 1.75rem + 2vw, 3.5rem) 0 0; padding-top: 1.25rem; border-top: 1px solid var(--line-dark); }
.hm-hero__c dt { font-family: var(--f-mono); font-size: var(--fs-xs); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted-dark); }
.hm-hero__c dd { margin: .3rem 0 0; font-size: var(--fs-sm); font-variant-caps: all-small-caps; letter-spacing: var(--ls-caps); font-size: var(--fs-base); }

/* the date band: their first stop, in red, across the foot of the hero */
.hm-band { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 1rem clamp(1.25rem, 1rem + 2vw, 3rem);
  background: var(--red); color: var(--cream); text-decoration: none; padding: clamp(1rem, .75rem + 1vw, 1.5rem) var(--pad);
  min-height: 44px; }
.hm-band__l { font-family: var(--f-mono); font-size: var(--fs-xs); letter-spacing: var(--ls-mono); text-transform: uppercase; }
.hm-band__v { font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--w-head); letter-spacing: var(--ls-h3); }
.hm-band__chev { width: clamp(4rem, 3rem + 4vw, 7.5rem); height: 1.75rem;
  background: repeating-linear-gradient(-45deg, transparent 0 7px, rgba(255, 252, 246, .9) 7px 10px, transparent 10px 14px);
  -webkit-mask: linear-gradient(90deg, transparent, #000 40%); mask: linear-gradient(90deg, transparent, #000 40%);
  transition: transform var(--t-tix) var(--out); }
.hm-band:hover .hm-band__chev, .hm-band:focus-visible .hm-band__chev { transform: translateX(.5rem); }
.hm-band:hover { background: var(--red-ink); }

/* ---- two paths */
.hm-paths { padding: var(--section) 0; }
.hm-paths__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); margin-top: clamp(2rem, 1.5rem + 2vw, 3.5rem); }
.hm-path { display: flex; flex-direction: column; border-radius: var(--r-card); overflow: hidden; }
.hm-path--supplier { background: var(--sea); color: var(--cream); }
.hm-path--agent { background: var(--sand); color: var(--ink); }
.hm-path__media { aspect-ratio: 16 / 9; overflow: hidden; position: relative; }
.hm-path__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hm-path__media picture { display: block; height: 100%; }
.hm-path__media--pat { color: currentColor; opacity: .6; }
.hm-path__body { padding: clamp(1.5rem, 1.25rem + 1.5vw, 2.75rem); display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; flex: 1; }
.hm-path__l { font-family: var(--f-mono); font-size: var(--fs-xs); letter-spacing: var(--ls-mono); text-transform: uppercase; margin: 0; }
.hm-path__h { font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: var(--w-head); margin: 0; }
.hm-path__t { font-size: var(--fs-md); line-height: var(--lh-md); margin: 0 0 .5rem; flex: 1; }
.hm-btn { display: inline-flex; align-items: center; min-height: 44px; padding: 0 1.25rem; border-radius: var(--r-btn);
  font-size: var(--fs-sm); font-weight: 600; text-decoration: none; }
.hm-btn--line { border: 1.5px solid currentColor; color: inherit; }
.hm-btn--line:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }

/* ---- "see all" rows under a component */
.hm-linkrow { margin-top: calc(var(--section) * -1 + 1.5rem); }   /* the link sits 1.5rem under its section's last row */

/* ---- home rhythm on the shared components (scoped by .hm-hero, which only the home page has): the statement leads straight
   into the cards' heading, so it gives up its bottom padding; the stats spread across the full width instead of three
   small items at the left of an empty row */
.hm-hero ~ .cx-st { padding-bottom: 0; }
/* their watermark sits higher on these two 4000 px frames than the 13 percent trim reached: a slight zoom from the top left
   crops it out of the frame (a crop, never painted out; PICKS.md rule) */
.hm-hero ~ .cx-cards img[data-photo="card-presentation"], .hm-path__media img[data-photo="card-booths"] { transform: scale(1.14); transform-origin: 30% 20%; }
.hm-hero ~ .cx-stats .cx-stats__row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem var(--gutter);
  border-top: 1px solid var(--line); padding-top: clamp(1.25rem, 1rem + 1vw, 2rem); }
.hm-hero ~ .cx-stats .cx-stat { max-width: 22rem; gap: .5rem; justify-content: flex-end; }   /* column-reverse: numbers top-aligned */
.hm-hero ~ .cx-stats .cx-stat dd { font-size: clamp(3rem, 2.25rem + 2.6vw, 4.5rem); line-height: 1; letter-spacing: -.02em; }
.hm-more { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; color: var(--ink); font-weight: 600;
  font-size: var(--fs-sm); text-decoration: underline; text-underline-offset: .3em; text-decoration-thickness: 1px; }
.hm-more::after { content: ""; width: .55rem; height: .55rem; border-top: 2px solid currentColor; border-right: 2px solid currentColor; transform: rotate(45deg); }
.hm-more:hover { color: var(--red-ink); }

/* ---- press */
.hm-press { padding: var(--section) 0; border-top: 1px solid var(--line); }
.hm-press__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1rem 2rem; }
.hm-press__note { color: var(--muted); font-size: var(--fs-sm); margin: 1rem 0 0; }
.hm-press__grid { list-style: none; margin: clamp(2rem, 1.5rem + 2vw, 3rem) 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gutter); }
.hm-pr { border-top: 1px solid var(--ink); padding-top: 1.25rem; display: flex; flex-direction: column; gap: .75rem; }
.hm-pr__o { font-family: var(--f-mono); font-size: var(--fs-xs); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--red-ink); margin: 0; }
.hm-pr__t { font-size: var(--fs-md); line-height: var(--lh-md); font-weight: 600; margin: 0; flex: 1; }
.hm-pr__t a { color: inherit; text-decoration: none; }
.hm-pr__t a:hover { text-decoration: underline; text-underline-offset: .2em; }
.hm-pr__d { color: var(--muted); font-size: var(--fs-sm); margin: 0; }

/* ---- closing call */
.hm-close { background: var(--ink); color: var(--cream); padding: var(--section) 0; }
.hm-close__in { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem var(--gutter); align-items: start; }
.hm-close__h { font-size: var(--fs-h1); line-height: var(--lh-h1); letter-spacing: var(--ls-h1); font-weight: var(--w-head); margin: 0; }
.hm-close__body p { font-size: var(--fs-md); line-height: var(--lh-md); margin: 0 0 1rem; }
.hm-close__body .hm-hero__ctas { margin: 1.5rem 0 2rem; }
.hm-close__body .hm-close__c { font-size: var(--fs-sm); color: var(--muted-dark); overflow-wrap: anywhere; }

@media (max-width: 899px) {
  .hm-paths__grid, .hm-close__in, .hm-press__grid { grid-template-columns: 1fr; }
}
@media (max-width: 699px) {
  .hm-hero { min-height: max(100svh, 40rem); }
  .hm-hero__media img { object-position: 50% 50%; }
  .hm-hero__strip { grid-template-columns: 1fr 1fr; }
  .hm-hero__strip .hm-hero__c:first-child { grid-column: 1 / -1; }
  .hm-band { grid-template-columns: 1fr auto; }
  .hm-band__l { grid-column: 1 / -1; }
  .hm-band__v { font-size: var(--fs-md); }
  .hm-path__h { font-size: 1.375rem; }   /* "Travel Agents/Advisors" is one unbreakable unit: at h3 size it ran to the panel edge */
  .hm-hero ~ .cx-stats .cx-stats__row { grid-template-columns: 1fr 1fr; }
  .hm-hero ~ .cx-stats .cx-stat:last-child { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) { .hm-band__chev { transition: none; } }

/* Page parts for Attend, Tour, the 14 city pages, Exhibitors, Press, Testimonials, About, Contact and the 404 (builder B3, 13 Nov 2026).
   Every rule is under .pg-* (or .pg on a section). Tokens come from tokens.css; the D2 components (.cx-*) are reused as they are. */

/* ---------------------------------------------------------------- section rhythm */
.pg { padding-block: clamp(3.5rem, 2rem + 5vw, 6.5rem); }
.pg:not(.cx-tone-sand):not(.cx-tone-ink):not(.cx-tone-red) + .pg:not(.cx-tone-sand):not(.cx-tone-ink):not(.cx-tone-red) { padding-top: 0; }
.pg-hero__btns { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }

/* ---------------------------------------------------------------- the page-title band (not the home hero) */
.pg-hero { position: relative; isolation: isolate; overflow: hidden; background: var(--cream); color: var(--ink);
  padding: calc(var(--header-h) + clamp(2.5rem, 1.5rem + 4vw, 5.5rem)) 0 clamp(2.5rem, 1.5rem + 4vw, 5rem); }
.pg-hero__bg { position: absolute; inset: 0; z-index: -1; }
.pg-hero__bg--tex { left: 0; right: 38%; color: var(--ink); opacity: .6; }
.pg-hero__bg .cx-tex { z-index: 0; }
.pg-hero__bg .cx-route { stroke: var(--red); stroke-dashoffset: 0; stroke-width: 2; }
.pg-hero__bg .cx-route-base { stroke-opacity: .55; }
.pg-hero__bg .cx-tex__land { stroke-opacity: .4; }
.pg-hero__bg .cx-tex__echo use { stroke-opacity: .22; }
.pg-hero__bg .cx-tex__dots circle { fill: var(--red); fill-opacity: 1; }
.pg-hero__in { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); gap: var(--gutter); align-items: end; }
.pg-hero__eb { font: 400 var(--fs-xs)/1.2 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted); margin: 0 0 1.25rem; }
.pg-hero__h { font: var(--w-head) var(--fs-h1)/var(--lh-h1) var(--f-sans); letter-spacing: var(--ls-h1); max-width: 14ch; overflow-wrap: break-word; }
.pg-hero__h--long { font-size: var(--fs-h2l); line-height: var(--lh-h2l); letter-spacing: var(--ls-h2l); max-width: 18ch; }
.pg-hero__b { max-width: 34rem; }
.pg-hero__when { font: 400 var(--fs-sm)/1.25 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; margin: 0 0 1rem; }
.pg-hero__lead { font-size: var(--fs-md); line-height: var(--lh-md); font-weight: 500; margin: 0; }
.pg-hero--photo { background: var(--ink); color: var(--cream); display: flex; align-items: flex-end; min-height: min(76vh, 44rem); }
.pg-hero--photo .pg-hero__in { width: 100%; }
.pg-hero--photo .pg-hero__bg img, .pg-hero--photo .pg-hero__bg picture { width: 100%; height: 100%; object-fit: cover; }
/* top: clear under the header (the header carries --head-band itself while unscrolled, base.css), then the same .64 fading out */
.pg-hero__scrim { position: absolute; inset: 0; background: linear-gradient(to bottom, rgba(11, 18, 25, 0) 0, rgba(11, 18, 25, 0) var(--header-h),
    var(--head-band) var(--header-h), rgba(11, 18, 25, 0) calc(var(--header-h) + 8rem)),
  linear-gradient(to top, rgba(11, 18, 25, .82), rgba(11, 18, 25, .5) 60%, rgba(11, 18, 25, .4)); }
.pg-hero--photo .pg-hero__eb { color: #D8D6CF; }
.pg-hero--photo .cx-ln__tail { background: var(--cream); }
.pg-hero .cx-btn--line:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.pg-hero--photo .cx-btn--line:hover { background: var(--cream); color: var(--red); border-color: var(--cream); }
.pg-facts { padding-block: 1.25rem; }

/* ---------------------------------------------------------------- closing call (ink band, the route behind it) */
.pg-s-close { position: relative; isolation: isolate; overflow: hidden; }
.pg-close__tex { position: absolute; inset: 0; z-index: -1; color: var(--cream); opacity: .6; }
.pg-close__tex .cx-tex { z-index: 0; }
/* the band's frame cuts a stop dot in half at its right edge, where it read as a stray grey knob: the route lines stay, dots go */
.pg-close__tex .cx-tex__dots { display: none; }
.pg-s-close .cx-route { stroke: var(--red); stroke-dashoffset: 0; }
.pg-close__h { font: var(--w-head) var(--fs-h2l)/var(--lh-h2l) var(--f-sans); letter-spacing: var(--ls-h2l); max-width: 16ch; margin: 0 0 2rem; }
.pg-close__lead { font-size: var(--fs-md); line-height: var(--lh-md); max-width: 36rem; margin: 0; }
.pg-s-close .cx-btn--line:hover { background: var(--cream); color: var(--ink); }

/* ---------------------------------------------------------------- Attend */
.pg-who { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: var(--gutter) clamp(2rem, 6vw, 6rem); align-items: start; }
.pg-who__big { font: 500 var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: var(--ls-h3); max-width: 24ch; }
.pg-who__p { font-size: var(--fs-md); line-height: var(--lh-md); color: var(--ink); max-width: 30rem; }
.pg-s-gift { color: var(--cream); }
.pg-s-gift > .cx-wrap { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--gutter) clamp(2rem, 6vw, 6rem); align-items: center; }
.pg-gift__n { font: 800 clamp(7rem, 4rem + 16vw, 17rem)/.8 var(--f-sans); letter-spacing: -.04em; margin: 0; }
.pg-gift__h { font: var(--w-head) var(--fs-h2)/var(--lh-h2) var(--f-sans); letter-spacing: var(--ls-h2); max-width: 18ch; margin: 0 0 1rem; }
.pg-gift__t { font-size: var(--fs-md); line-height: var(--lh-md); font-weight: 500; max-width: 30rem; margin: 0 0 .75rem; }
.pg-gift__c { font-size: var(--fs-base); max-width: 30rem; margin: 0; }
.pg-gets { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gutter); }
.pg-gets li { border-top: 1px solid var(--ink); padding-top: 1rem; display: flex; flex-direction: column; gap: 1.25rem; min-height: 10rem; }
.pg-gets__n { display: block; width: 14px; height: 14px; background: var(--red); }
.pg-gets__t { font: var(--w-head) var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: var(--ls-h3); }
.pg-stops { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: var(--gutter); }
.pg-stops li { border-top: 1px solid var(--line); }
.pg-stops__a { display: flex; align-items: center; gap: .6rem; min-height: 56px; padding-block: .5rem; color: inherit; text-decoration: none; font-weight: 500; line-height: 1.25;
  transition: color .2s ease, padding .3s var(--out); }
.pg-stops__a time { margin-left: auto; font: 400 var(--fs-sm)/1 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; color: var(--muted); white-space: nowrap; }
.pg-stops__k { flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--red); }
.pg-stops__k--fall { background: var(--sea); }
a.pg-stops__a:hover { color: var(--red); padding-left: .4rem; }
.pg-stops .is-cur .pg-stops__a { font-weight: 700; color: var(--red); }

/* ---------------------------------------------------------------- city pages */
.pg-run__when { margin: 0 0 1.5rem; font: 400 var(--fs-sm)/1.25 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; color: var(--ink); }
.pg-s-pastwrap { padding-block: clamp(2.5rem, 1.5rem + 4vw, 5rem) clamp(3.5rem, 2rem + 5vw, 6.5rem); }
.pg-s-pastwrap.pg-photoband { padding-top: 0; }
.pg-photoband > .cx-wrap { max-width: none; padding-inline: 0; }
.pg-photoband .pg-past__ph img { border-radius: 0; }
.pg-photoband figcaption { max-width: var(--wide); margin-inline: auto; padding-inline: var(--pad); }
.pg-past { margin: 0; }
.pg-past__ph img { width: 100%; height: clamp(14rem, 8rem + 24vw, 30rem); object-fit: cover; border-radius: var(--r-card); }
.pg-past figcaption { margin: .75rem 0 0; }
.pg-pat { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; gap: .5rem;
  min-height: clamp(13rem, 8rem + 14vw, 22rem); padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); border-radius: var(--r-card); background: var(--sea); color: var(--cream); }
.pg-pat__tex { position: absolute; inset: 0; z-index: -1; }
.pg-pat__tex .cx-tex { z-index: 0; }
.pg-pat .cx-route { stroke: var(--cream); stroke-dashoffset: 0; }
.pg-pat__c { font: var(--w-head) var(--fs-h2l)/var(--lh-h2l) var(--f-sans); letter-spacing: var(--ls-h2l); margin: 0; }
.pg-pat__d { font: 400 var(--fs-sm)/1.2 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; margin: 0; }
.pg-pnwrap { padding-block: 0 clamp(2rem, 1rem + 3vw, 4rem); }
.pg-pn__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); }
.pg-pn__row--one { grid-template-columns: minmax(0, 1fr); }
.pg-pn { display: flex; flex-direction: column; gap: .4rem; padding: clamp(1.25rem, 1rem + 1vw, 2rem); border: 1px solid var(--line); border-radius: var(--r-card);
  color: inherit; text-decoration: none; transition: background-color .25s ease, color .25s ease; }
.pg-pn--next { text-align: right; align-items: flex-end; }
.pg-pn__l { font: 400 var(--fs-xs)/1 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted); }
.pg-pn__c { font: var(--w-head) var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: var(--ls-h3); }
.pg-pn time { font: 400 var(--fs-sm)/1.2 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; color: var(--muted); }
.pg-pn:hover { background: var(--ink); color: var(--cream); }
.pg-pn:hover .pg-pn__l, .pg-pn:hover time { color: #D8D6CF; }
.pg-back { padding-block: 0 clamp(3.5rem, 2rem + 5vw, 6.5rem); }
.pg-calls { padding-block: 0 clamp(3rem, 2rem + 4vw, 6rem); }
.pg-calls__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); }
.pg-call { display: flex; flex-direction: column; align-items: flex-start; gap: 1rem; min-height: 22rem; padding: clamp(1.75rem, 1rem + 3vw, 3.5rem); border-radius: var(--r-card); color: var(--cream); }
.pg-call--sup { background: var(--ink); }
.pg-call--agent { background: var(--red); }
.pg-call__h { font: var(--w-head) var(--fs-h2)/var(--lh-h2) var(--f-sans); letter-spacing: var(--ls-h2); max-width: 14ch; }
.pg-call p { margin: 0; max-width: 28rem; line-height: var(--lh-base); }
.pg-call__big { font-size: var(--fs-md); line-height: var(--lh-md); font-weight: 500; }
.pg-call__note { color: #D8D6CF; font-size: var(--fs-sm); }
.pg-call .cx-btn { margin-top: auto; }

/* ---------------------------------------------------------------- Exhibitors */
.pg-spt { font: 400 var(--fs-xs)/1.2 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; margin: 0 0 2rem; }
.pg-sp__list .cx-sp__name { font-size: var(--fs-h2); line-height: var(--lh-h2); letter-spacing: var(--ls-h2); }
.pg-s-sponsors .cx-sp__role { color: var(--ink); display: flex; align-items: center; gap: .6rem; }
.pg-s-sponsors .cx-sp__role::before { content: ""; width: 10px; height: 10px; background: var(--red); flex: none; }
.pg-wallhead { margin-bottom: 1.5rem; }
/* a sentence, not a label: plain sans (the mono caps device is for eyebrows and date lines only, anti-slop.waivers.json) */
.pg-wall__note { font: 400 var(--fs-sm)/1.45 var(--f-sans); color: var(--muted); margin: 0 0 1.25rem; }
.pg-wall li { padding: 0; }
.pg-wall__a { display: block; padding: .85rem 0; min-height: 44px; font-weight: 500; line-height: 1.3; color: inherit; text-decoration: underline; text-decoration-thickness: 1px;
  text-underline-offset: .2em; text-decoration-color: rgba(11, 18, 25, .3); transition: color .2s ease; }
.pg-wall__a:hover { color: var(--red); text-decoration-color: currentColor; }
.pg-partners__h { font: var(--w-head) var(--fs-h2l)/var(--lh-h2l) var(--f-sans); letter-spacing: var(--ls-h2l); max-width: 22ch; }

/* ---------------------------------------------------------------- Press */
.pg-press__note { font: 400 var(--fs-sm)/1.45 var(--f-sans); color: var(--muted); margin: 0 0 2.5rem; max-width: 40rem; }
.pg-press__y { margin-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); }
.pg-press__yh { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; font: var(--w-head) var(--fs-h2)/var(--lh-h2) var(--f-sans);
  letter-spacing: var(--ls-h2); padding-bottom: .75rem; border-bottom: 1px solid var(--ink); }
.pg-press__yh span { font: 400 var(--fs-xs)/1 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted); }
.pg-press__list { list-style: none; margin: 0; padding: 0; }
/* columns fit "SEPTEMBER 30" and "NEWS.PAXEDITIONS.COM" (20 mono characters, 206 px at 1440) on one line each */
.pg-press__it { display: grid; grid-template-columns: 8rem 13.5rem minmax(0, 1fr); column-gap: var(--gutter); border-bottom: 1px solid var(--line); }
.pg-press__d, .pg-press__o { padding-top: 1.15rem; font: 400 var(--fs-sm)/1.3 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; color: var(--muted); }
.pg-press__o { overflow-wrap: anywhere; }
.pg-press__a { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.5rem; padding: 1.05rem 0; color: inherit; min-height: 44px;
  text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; text-decoration-color: rgba(11, 18, 25, .3); transition: color .2s ease; }
.pg-press__t { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); letter-spacing: -.005em; }
.pg-press__go { flex: none; font: 400 var(--fs-xs)/1.6 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; white-space: nowrap; }
.pg-press__arr { display: inline-block; width: 11px; height: 11px; margin-left: .5rem; vertical-align: -1px; }
.pg-press__a:hover { color: var(--red); text-decoration-color: currentColor; }

/* ---------------------------------------------------------------- Testimonials */
.pg-vid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.pg-vid .cx-vid__it { grid-column: span 2; grid-row: auto; }
.pg-vid .cx-vid__it:nth-child(-n+2) { grid-column: span 3; }
.pg-vid .cx-vid__it:first-child .cx-yt { aspect-ratio: 16 / 9; min-height: 0; }
.pg-yt__t { display: flex; flex-direction: column; gap: .2rem; max-width: calc(100% - 2rem); }
.pg-yt__t b { font: var(--w-head) var(--fs-md)/1.2 var(--f-sans); }
.pg-yt__t span { font: 400 var(--fs-xs)/1.3 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; }
.pg-q__grid { column-count: 2; column-gap: var(--gutter); }
.pg-q { break-inside: avoid; margin: 0 0 var(--gutter); padding: clamp(1.5rem, 1rem + 2vw, 2.75rem); border-radius: var(--r-card); background: var(--sand); color: var(--ink); }
.pg-q--agent { background: var(--sea); color: var(--cream); }
.pg-q::before { content: "\201C"; display: block; font: var(--w-head) 4.5rem/.7 var(--f-sans); margin-bottom: 1rem; }
.pg-q blockquote p { margin: 0 0 1em; font-size: var(--fs-base); line-height: 1.55; }
.pg-q blockquote p:first-child { font-size: var(--fs-md); line-height: var(--lh-md); font-weight: 500; }
.pg-q figcaption { display: flex; flex-direction: column; gap: .15rem; padding-top: .75rem; border-top: 1px solid currentColor; }
.pg-q figcaption strong { font-weight: 700; }
.pg-q figcaption span { font-size: var(--fs-sm); }

/* ---------------------------------------------------------------- About */
/* the team section that follows starts at padding-top 0 (section rhythm rule), so the intro keeps a bottom gap of its own:
   at 0 the THE TEAM eyebrow sat on the intro's last line (integrator look, 13 Nov 2026) */
.pg-s-aboutintro { padding-bottom: clamp(3rem, 2rem + 4vw, 5.5rem); }
.pg-about__lead { font: 500 var(--fs-md)/1.4 var(--f-sans); max-width: 52rem; margin: 0; }
.pg-person { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: var(--gutter) clamp(2rem, 5vw, 5rem); margin-top: 1.5rem; padding-bottom: clamp(3rem, 2rem + 4vw, 5rem);
  border-bottom: 1px solid var(--ink); }
.pg-person__id { align-self: start; position: sticky; top: calc(var(--header-h) + 1.5rem); }
.pg-person__n { font: var(--w-head) var(--fs-h2)/var(--lh-h2) var(--f-sans); letter-spacing: var(--ls-h2); }
.pg-person__r { margin: .75rem 0 0; font: 400 var(--fs-sm)/1.2 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; color: var(--muted); }
.pg-person__t { max-width: 44rem; }
.pg-person__t p { margin: 0 0 1.1em; line-height: 1.6; }
.pg-mates { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--gutter); padding-top: clamp(2rem, 1.5rem + 2vw, 3.5rem); }
.pg-mate { border-top: 1px solid var(--line); padding-top: 1.25rem; }
.pg-mate__n { font: var(--w-head) var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: var(--ls-h3); }
.pg-mate__r { margin: .5rem 0 1rem; font: 400 var(--fs-xs)/1.3 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted); }
.pg-mate__t { margin: 0; line-height: 1.55; }

/* ---------------------------------------------------------------- Contact */
.pg-contact { padding-top: clamp(2.5rem, 1.5rem + 3vw, 4.5rem); }
.pg-contact__grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.pg-contact__h { font: var(--w-head) var(--fs-h2)/var(--lh-h2) var(--f-sans); letter-spacing: var(--ls-h2); margin: 0 0 1.25rem; }
.pg-form__lead { margin: 0 0 2rem; max-width: 38rem; line-height: var(--lh-base); }
.pg-field { display: flex; flex-direction: column; gap: .45rem; margin-bottom: 1.25rem; }
.pg-field label { font: 600 var(--fs-sm)/1.3 var(--f-sans); }
.pg-field input, .pg-field textarea { width: 100%; min-height: 48px; padding: .8rem 1rem; border: 1.5px solid var(--ink); border-radius: var(--r-btn); background: #fff; color: var(--ink); font-size: 1rem; }
.pg-field textarea { min-height: 9rem; resize: vertical; }
.pg-field [aria-invalid="true"] { border-color: var(--red-ink); background: #FFF3F1; }
.pg-form .field__err { margin: .1rem 0 0; color: var(--red-ink); font: 600 var(--fs-sm)/1.35 var(--f-sans); }
.pg-form__req { margin: 0 0 1.5rem; font-size: var(--fs-sm); color: var(--muted); }
.pg-form__done { margin: 1.25rem 0 0; padding: 1rem 1.25rem; border-radius: var(--r-btn); background: var(--sand); color: var(--ink); line-height: 1.45; }
.pg-form__done[hidden] { display: none; }
.pg-form__ns { margin: 1rem 0 0; }
.pg-lines a, .pg-contact__side p a { display: inline-block; padding-block: .6rem; }
.pg-contact__co { margin: 0 0 1.5rem; font: 400 var(--fs-sm)/1.3 var(--f-mono); letter-spacing: var(--ls-date); text-transform: uppercase; color: var(--muted); }
.pg-offs { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); margin-bottom: 2rem; }
.pg-off { border-top: 1px solid var(--ink); padding-top: 1rem; }
.pg-off__n { font: var(--w-head) var(--fs-md)/1.2 var(--f-sans); margin-bottom: .5rem; }
.pg-off address { line-height: 1.45; }
.pg-lines { margin: 0 0 1.75rem; }
.pg-lines > div { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: .25rem 1rem; padding: .9rem 0; border-top: 1px solid var(--line); }
.pg-lines dt { font: 400 var(--fs-xs)/1.5 var(--f-mono); letter-spacing: var(--ls-mono); text-transform: uppercase; color: var(--muted); }
.pg-lines dd { margin: 0; line-height: 1.45; overflow-wrap: anywhere; }
.pg-contact__ph { margin-top: 2rem; }
.pg-contact__ph img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--r-card); }

/* ---------------------------------------------------------------- narrower screens */
@media (max-width: 1099px) {
  .pg-gets, .pg-mates { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pg-stops { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 899px) {
  .pg-hero__in, .pg-who, .pg-person, .pg-contact__grid, .pg-calls__grid { grid-template-columns: minmax(0, 1fr); }
  .pg-hero__bg--tex { right: 0; opacity: .35; }
  .pg-hero__h, .pg-hero__h--long { max-width: none; }
  .pg-s-gift > .cx-wrap { grid-template-columns: minmax(0, 1fr); }
  .pg-gift__n { font-size: clamp(6rem, 4rem + 18vw, 10rem); }
  .pg-person__id { position: static; }
  .pg-press__it { grid-template-columns: auto minmax(0, 1fr); }
  .pg-press__a { grid-column: 1 / -1; }
  .pg-press__d, .pg-press__o { padding-top: 1rem; }
  .pg-press__a { padding-top: .35rem; }
  .pg-vid { grid-template-columns: minmax(0, 1fr); }
  .pg-vid .cx-vid__it, .pg-vid .cx-vid__it:nth-child(-n+2) { grid-column: auto; }
  .pg-q__grid { column-count: 1; }
  .pg-call { min-height: 0; }
  .pg-call .cx-btn { margin-top: 1.25rem; }
}
@media (max-width: 699px) {
  .pg-hero__h { font-size: clamp(2.4rem, 11vw, 3.4rem); }
  .pg-hero__h--long { font-size: clamp(2.1rem, 9.5vw, 3rem); }
  .pg-gets, .pg-mates, .pg-pn__row, .pg-offs { grid-template-columns: minmax(0, 1fr); }
  .pg-stops { grid-template-columns: minmax(0, 1fr); }
  .pg-gets li { min-height: 0; }
  .pg-lines > div { grid-template-columns: minmax(0, 1fr); }
  .pg-press__go { display: none; }
  .pg-pn--next { text-align: left; align-items: flex-start; }
}
@media (prefers-reduced-motion: reduce) {
  .pg-stops__a, .pg-pn, .pg-wall__a, .pg-press__a { transition: none; }
}

/* EXHIBIT (/exhibit/, ex-*) and REGISTER (/register/, rg-*) pages, builder B2, 13 Nov 2026.
   Built on the shell tokens (tokens.css) and the cx-* component rules; nothing here restyles a shared class outside these pages. */

/* ================================================================== EXHIBIT */
.ex-hero { padding-top: calc(var(--header-h) + clamp(2rem, 1rem + 4vw, 4.5rem)); padding-bottom: clamp(3rem, 2rem + 4vw, 6rem); }
.ex-hero__grid { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(2rem, 1rem + 4vw, 5rem); align-items: center; }
.ex-hero__h { font: 600 clamp(2.6rem, 1.9rem + 2.9vw, 5rem)/1.03 var(--f-sans); letter-spacing: -.025em; margin: 0 0 1.5rem; max-width: 14ch; text-wrap: balance; }
.ex-hero__lead { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); margin: 0 0 1rem; max-width: 30ch; }
.ex-hero__aud { color: var(--muted); margin: 0 0 2rem; max-width: 40ch; line-height: 1.45; }
.ex-hero__cta { display: flex; flex-wrap: wrap; gap: .75rem; }
.ex-hero .cx-btn--line { color: var(--ink); }
.ex-hero .cx-btn--line:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.ex-hero__side { position: relative; padding-bottom: 2.5rem; }
.ex-hero__media { position: relative; border-radius: var(--r-card); overflow: hidden; aspect-ratio: 4 / 5; max-height: 72vh; width: 100%; }
.ex-hero__media picture, .ex-hero__media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ex-hero__media .cx-tex { position: absolute; inset: 0; width: 100%; height: 100%; }
.ex-tix { position: absolute; left: clamp(-2.5rem, -3vw, -1rem); bottom: 0; display: flex; filter: drop-shadow(0 12px 28px rgba(11, 18, 25, .22)); }
.ex-tix p { margin: 0; }
.ex-tix__body { background: var(--cream); color: var(--ink); border-radius: 12px 0 0 12px; padding: 1.1rem 1.4rem 1rem; border-right: 2px dashed rgba(11, 18, 25, .35); }
.ex-tix__v { font: 600 clamp(2rem, 1.6rem + 1.6vw, 3.25rem)/1 var(--f-sans); letter-spacing: -.02em; white-space: nowrap; }
.ex-tix__u, .ex-tix__c { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: var(--ls-mono); margin-top: .45rem !important; }
.ex-tix__stub { background: var(--red); color: var(--cream); border-radius: 0 12px 12px 0; padding: 1.1rem 1.2rem 1rem; display: flex; flex-direction: column; justify-content: center; }
.ex-tix__o { font: 600 var(--fs-md)/1.1 var(--f-sans); white-space: nowrap; }
.ex-tix__c { margin: 0 0 .3rem !important; }

.ex-inc__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--gutter); }
.ex-inc__it { background: #fff; border: 1px solid var(--line); border-radius: var(--r-card); padding: 1.25rem 1.25rem 1.4rem; display: flex; flex-direction: column; gap: 1.25rem; }
.ex-inc__n { font: 400 var(--fs-xs)/1 var(--f-mono); letter-spacing: var(--ls-mono); color: var(--red); }
.ex-inc__t { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); }
.ex-inc__note { margin: 2.5rem 0 0; font: 500 var(--fs-base)/1.45 var(--f-sans); position: relative; padding-left: 1.5rem; }
.ex-inc__note::before { content: ""; position: absolute; left: 0; top: .5em; width: 10px; height: 10px; background: var(--red); border-radius: 2px; }

.ex-pk .cx-pk__col { position: relative; border: 1.5px solid var(--ink); }
.ex-pk .cx-pk__col--b { border-color: var(--red); }
.ex-pk__status { align-self: flex-start; margin: 0 0 1rem; background: var(--red); color: var(--cream); border-radius: 999px; padding: .35rem .8rem; font: 600 var(--fs-xs)/1.2 var(--f-mono); text-transform: uppercase; letter-spacing: .05em; }
.ex-pk__col--out .cx-pk__price strong { color: var(--muted); }
.ex-pk__wait { margin: auto 0 0; padding-top: 1rem; border-top: 1px solid var(--line); line-height: 1.45; }
.ex-pk__notes { list-style: none; margin: 1.5rem 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; color: var(--muted); font-size: var(--fs-sm); }
.ex-pk__notes li { position: relative; padding-left: 1rem; }
.ex-pk__notes li::before { content: ""; position: absolute; left: 0; top: .6em; width: 6px; height: 6px; border-radius: 50%; background: var(--ink); }

.ex-lad { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 3fr 5fr 3fr 3fr; gap: 10px; align-items: end; }
.ex-lad__step { display: flex; flex-direction: column; gap: .9rem; min-width: 0; }
.ex-lad__lab { display: flex; flex-direction: column; gap: .3rem; min-height: 4.5rem; justify-content: flex-end; }
.ex-lad__off { font: 600 var(--fs-h3)/1.1 var(--f-sans); letter-spacing: -.01em; }
.ex-lad__count { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: var(--ls-mono); color: var(--muted); }
.ex-lad__none { font-size: var(--fs-sm); color: var(--muted); line-height: 1.35; max-width: 18ch; }
.ex-lad__bar { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); gap: 3px; height: calc(4.5rem + var(--lv) * 3.25rem); }
.ex-lad__cell { display: flex; align-items: flex-end; justify-content: center; padding-bottom: .55rem; border-radius: 6px; font: 500 var(--fs-xs)/1 var(--f-mono); }
.ex-lad__step--0 .ex-lad__cell { background: var(--sand); color: var(--ink); }
.ex-lad__step--1 .ex-lad__cell { background: var(--sea); color: var(--cream); }
.ex-lad__step--2 .ex-lad__cell { background: var(--ink); color: var(--cream); }
.ex-lad__step--3 .ex-lad__cell { background: var(--red); color: var(--cream); }
.ex-lad__step--3 .ex-lad__off { color: var(--red); }
.ex-lad[data-cx-in] .ex-lad__bar { transform-origin: bottom; transition: transform .9s var(--out); transition-delay: calc(var(--lv) * .12s); }
.js .ex-lad[data-cx-in]:not(.is-in) .ex-lad__bar { transform: scaleY(.15); }
.ex-low { margin-top: clamp(2rem, 1.5rem + 2vw, 3.5rem); padding-top: 1.5rem; border-top: 1px solid var(--ink); display: grid; grid-template-columns: auto minmax(0, 1fr); gap: .5rem 2rem; align-items: baseline; }
.ex-low p { margin: 0; }
.ex-low__v { font: 600 var(--fs-h2l)/1 var(--f-sans); letter-spacing: -.02em; color: var(--red); white-space: nowrap; }
.ex-low__t { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); max-width: 34ch; }

.ex-lim__grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); gap: clamp(2rem, 1rem + 4vw, 6rem); }
.ex-lim .cx-h { color: var(--cream); margin-bottom: 1.5rem; }
.ex-lim__lead { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); margin: 0 0 2rem; max-width: 36ch; }
.ex-lim__pts { list-style: none; margin: 0; padding: 0; }
.ex-lim__pts li { font: 600 var(--fs-h3)/1.2 var(--f-sans); letter-spacing: -.01em; padding: 1rem 0 1rem 1.9rem; border-top: 1px solid var(--line-dark); position: relative; }
.ex-lim__pts li::before { content: ""; position: absolute; left: 0; top: 1.45rem; width: 12px; height: 12px; background: var(--red); border-radius: 2px; }
.ex-lim__b { border-left: 1px solid var(--line-dark); padding-left: clamp(1.5rem, 1rem + 2vw, 3rem); align-self: end; }
.ex-lim__b p { margin: 0 0 1rem; line-height: 1.45; }
.ex-lim__h3 { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: var(--ls-mono); color: #B9B7B0; margin: 0 0 1.25rem; }
.ex-lim__contact a, .ex-x__contact a, .ex-pol a { color: inherit; text-decoration: underline; text-underline-offset: .18em; overflow-wrap: anywhere; display: inline-block; min-height: 24px; line-height: 24px; }
.ex-lim a:focus-visible, .ex-cta a:focus-visible { outline-color: var(--cream); }

.ex-xs__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--gutter); align-items: stretch; }
.ex-x { border-radius: var(--r-card); padding: clamp(1.5rem, 1rem + 2vw, 3rem); display: flex; flex-direction: column; }
.ex-x p { margin: 0 0 1rem; line-height: 1.45; }
.ex-x--shuttle { background: var(--sand); }
.ex-x--prizes { border: 1.5px solid var(--ink); }
.ex-x__h { font: 600 var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: -.01em; margin: 0 0 1.25rem; max-width: 22ch; }
.ex-x--shuttle .cx-btn { margin-top: auto; align-self: flex-start; }
.ex-x__intro { font-weight: 600; }
.ex-x__pts { margin: 0 0 1.25rem; padding: 0; list-style: none; columns: 2; column-gap: 1.5rem; }
.ex-x__pts li { break-inside: avoid; padding: .45rem 0 .45rem 1.1rem; position: relative; line-height: 1.35; font-size: var(--fs-sm); }
.ex-x__pts li::before { content: ""; position: absolute; left: 0; top: .95rem; width: 6px; height: 6px; background: var(--red); border-radius: 50%; }
.ex-x__due { font-size: var(--fs-sm); color: var(--muted); }

.ex-pol__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); gap: clamp(1.5rem, 1rem + 3vw, 4rem); }
.ex-pol__grid p { margin: 0 0 1rem; line-height: 1.45; }
.ex-pol__h3 { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: var(--ls-mono); color: var(--muted); margin: 0 0 1rem; }
.ex-due { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); }
.ex-due__d { background: var(--cream); border-radius: 12px; padding: 1.25rem; border: 1px solid var(--line); display: flex; flex-direction: column; gap: .5rem; }
.ex-due__d .cx-eyebrow { margin: 0; display: flex; align-items: center; gap: .6rem; }
.ex-due__d .cx-eyebrow::before { content: ""; flex: none; width: 10px; height: 10px; border-radius: 50%; background: var(--sea); }
.ex-due__d--fall .cx-eyebrow::before { background: var(--red); }
.ex-due__t { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); }
.ex-pol__list { list-style: none; margin: 0 0 1.25rem; padding: 0; }
.ex-pol__list li { padding: .8rem 0; border-top: 1px solid rgba(11, 18, 25, .18); line-height: 1.4; }
.ex-pol__fine { font-size: var(--fs-sm); color: var(--muted); }
.ex-pol__full { margin-top: clamp(2rem, 1.5rem + 2vw, 3rem); border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.ex-pol__full summary { list-style: none; cursor: pointer; min-height: 56px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; font: 600 var(--fs-md)/1.2 var(--f-sans); }
.ex-pol__full summary::-webkit-details-marker { display: none; }
.ex-pol__full .cx-plus { position: relative; right: auto; bottom: auto; flex: none; width: 36px; height: 36px; background: var(--ink); transition: transform .35s var(--out); }
.ex-pol__full[open] .cx-plus { transform: rotate(45deg); }
.ex-pol__body { columns: 2; column-gap: clamp(1.5rem, 1rem + 3vw, 4rem); padding: .5rem 0 2rem; }
.ex-pol__blk { break-inside: avoid; margin-bottom: 1.5rem; }
.ex-pol__blk h4 { font: 600 var(--fs-base)/1.3 var(--f-sans); margin: 0 0 .5rem; }
.ex-pol__blk ul { margin: 0; padding-left: 1.1rem; }
.ex-pol__blk li { margin: .35rem 0; line-height: 1.45; font-size: var(--fs-sm); }

.ex-cta { color: var(--cream); }
.ex-cta__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); gap: 2rem; align-items: end; }
.ex-cta__h { font: 600 var(--fs-h2l)/var(--lh-h2l) var(--f-sans); letter-spacing: -.02em; margin: 0; max-width: 20ch; text-wrap: balance; }
.ex-cta__b { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: flex-end; }
.ex-cta .cx-btn--line:hover { color: var(--red); }

@media (max-width: 1099.98px) {
  .ex-inc__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .ex-lim__grid, .ex-pol__grid, .ex-cta__grid { grid-template-columns: minmax(0, 1fr); }
  .ex-lim__b { border-left: 0; padding-left: 0; border-top: 1px solid var(--line-dark); padding-top: 1.5rem; }
  .ex-cta__b { justify-content: flex-start; }
}
@media (max-width: 899.98px) {
  .ex-hero__grid { grid-template-columns: minmax(0, 1fr); }
  .ex-hero__h { max-width: 16ch; }
  .ex-hero__media { aspect-ratio: 4 / 3; max-height: none; }
  .ex-tix { left: .75rem; }
  .ex-xs__grid { grid-template-columns: minmax(0, 1fr); }
  .ex-pk.cx-pk .cx-pk__cols { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 699.98px) {
  .ex-inc__list { grid-template-columns: minmax(0, 1fr); gap: .6rem; }
  .ex-inc__it { flex-direction: row; gap: 1rem; padding: 1rem 1.1rem; }
  .ex-lad { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .ex-lad__step { display: grid; grid-template-columns: minmax(0, 1fr); gap: .5rem; }
  .ex-lad__lab { min-height: 0; flex-direction: row; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .25rem 1rem; }
  .ex-lad__bar { height: 2.75rem; }
  .ex-lad__cell { align-items: center; padding: 0; }
  .js .ex-lad[data-cx-in]:not(.is-in) .ex-lad__bar { transform: scaleX(.2); }
  .ex-lad[data-cx-in] .ex-lad__bar { transform-origin: left; }
  .ex-low { grid-template-columns: minmax(0, 1fr); }
  .ex-x__pts, .ex-pol__body { columns: 1; }
  .ex-due { grid-template-columns: minmax(0, 1fr); }
  .ex-tix { max-width: calc(100% - 1.5rem); }
  .ex-tix__body { padding: .9rem 1rem .8rem; flex: none; }
  .ex-tix__stub { padding: .9rem 1rem .8rem; flex: 1 1 auto; min-width: 0; }
  .ex-tix__o { white-space: normal; font-size: var(--fs-base); }
}
@media (prefers-reduced-motion: reduce) {
  .ex-lad[data-cx-in] .ex-lad__bar { transition: none; transform: none !important; }
}

/* ================================================================== REGISTER */
.rg-hero { padding-top: calc(var(--header-h) + clamp(2rem, 1rem + 4vw, 4.5rem)); padding-bottom: clamp(2.5rem, 2rem + 2vw, 4rem); }
.rg-hero__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(2rem, 1rem + 4vw, 5rem); align-items: end; }
.rg-hero__h { font: 600 clamp(2.6rem, 1.9rem + 2.9vw, 5rem)/1.03 var(--f-sans); letter-spacing: -.025em; margin: 0 0 1.25rem; max-width: 12ch; overflow-wrap: break-word; text-wrap: balance; }
.rg-hero__lead { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); margin: 0; max-width: 32ch; }
.rg-paths { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--gutter); }
.rg-path { position: relative; display: grid; grid-template-rows: auto 1fr auto; gap: .6rem; min-height: 11rem; height: 100%; padding: 1.25rem 1.25rem 1.4rem; border-radius: var(--r-card);
  color: var(--cream); text-decoration: none; background: var(--red); transition: transform .35s var(--out), box-shadow .35s var(--out); }
.rg-path--agents { background: var(--ink); }
.rg-path__k { font: 400 var(--fs-xs)/1 var(--f-mono); letter-spacing: var(--ls-mono); }
.rg-path__t { font: 600 clamp(1.5rem, 1.25rem + 1vw, 2.15rem)/1.1 var(--f-sans); letter-spacing: -.015em; align-self: end; padding-right: 2.5rem; }
.rg-path__s { font: 400 var(--fs-xs)/1.35 var(--f-mono); text-transform: uppercase; letter-spacing: .04em; color: rgba(255, 252, 246, .88); }
.rg-path__arrow { position: absolute; right: 1.1rem; top: 1.1rem; width: 2.25rem; height: 2.25rem; border-radius: 50%; border: 1.5px solid currentColor; transition: transform .35s var(--out); }
.rg-path__arrow::before { content: ""; position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translate(-50%, -70%) rotate(45deg); }
.rg-path:hover { transform: translateY(-3px); box-shadow: 0 14px 30px rgba(11, 18, 25, .18); }
.rg-path:hover .rg-path__arrow { transform: translateY(3px); }
.rg-path:focus-visible { outline: 3px solid var(--ink); outline-offset: 3px; box-shadow: 0 0 0 6px var(--cream); }
.rg-path[aria-current="true"] { box-shadow: 0 0 0 3px var(--cream), 0 0 0 6px var(--ink); }
.rg-path[aria-current="true"] .rg-path__arrow { background: var(--cream); color: var(--ink); }

.rg-sup { padding-top: clamp(2.5rem, 2rem + 2vw, 4rem); border-top: 1px solid var(--line); }
.rg-head { max-width: 52rem; margin-bottom: clamp(2rem, 1.5rem + 2vw, 3rem); }
.rg-head .cx-h { max-width: 22ch; margin-bottom: 1rem; }
.rg-head__teaser { font: 500 var(--fs-md)/var(--lh-md) var(--f-sans); margin: 0 0 .5rem; }
.rg-head__disc { font: 400 var(--fs-sm)/1.45 var(--f-mono); color: var(--muted); margin: 0; }
.rg h2[tabindex="-1"]:focus { outline: none; }
.rg-reqnote { font-size: var(--fs-sm); color: var(--muted); margin: 0 0 1.5rem; }
.rg-ns { background: var(--sand); padding: 1rem 1.25rem; border-radius: 10px; margin: 0 0 1.5rem; line-height: 1.45; }
.rg-req { color: var(--red); margin-left: .2em; }

.rg-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(20rem, 26rem); column-gap: clamp(2rem, 1rem + 3vw, 4.5rem); align-items: start; }
.rg-main { grid-column: 1; min-width: 0; }
.rg-sum { grid-column: 2; grid-row: 1 / span 2; position: sticky; top: calc(var(--header-h) + 1rem); max-height: calc(100vh - var(--header-h) - 1.5rem); overflow-y: auto; overscroll-behavior: contain; border-radius: var(--r-card); }
.rg-send { grid-column: 1; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; padding-top: .5rem; }
.rg-send .rg-submit { min-height: 52px; padding-inline: 2rem; font-size: 1rem; }
.rg-submit[disabled] { opacity: .55; cursor: not-allowed; }
.rg-policy { color: var(--ink); font-size: var(--fs-sm); text-decoration: underline; text-underline-offset: .18em; min-height: 44px; display: inline-flex; align-items: center; }

.rg-step { border: 0; margin: 0 0 clamp(2.5rem, 2rem + 2vw, 3.5rem); padding: 0; min-width: 0; }
.rg-step__h { font: 600 var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: -.01em; padding: 0; margin: 0 0 .5rem; display: flex; align-items: center; gap: .75rem; }
.rg-step__n { flex: none; width: 2rem; height: 2rem; border-radius: 50%; background: var(--ink); color: var(--cream); font: 500 .9375rem/2rem var(--f-mono); text-align: center; }
.rg-help { font-size: var(--fs-sm); color: var(--muted); line-height: 1.45; margin: 0 0 1rem; max-width: 60ch; }
.rg-mini { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: var(--ls-mono); color: var(--muted); padding: 0; margin: 0 0 .5rem; }
.rg-err, .rg .field__err { color: var(--red-ink); font: 500 var(--fs-sm)/1.4 var(--f-sans); margin: .4rem 0 0; display: flex; gap: .45rem; align-items: baseline; }
.rg-err::before, .rg .field__err::before { content: "!"; flex: none; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--red-ink); color: #fff; font: 700 .75rem/1.1rem var(--f-sans); text-align: center; }
.rg-step--cities > .rg-err { margin: 0 0 1rem; }
.rg [hidden], .rg[hidden] { display: none !important; }   /* the display rules below must never beat the hidden attribute (picked-city cards, form while confirmed, errors) */
.rg-step__t { min-width: 0; }

/* step 1: the 14 expos, two seasons, then the picked ones with their package */
.rg-seasons { display: grid; gap: 1.75rem; }
.rg-season__h { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: var(--ls-mono); margin: 0 0 .75rem; display: flex; align-items: center; gap: .6rem; }
.rg-season__h::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--sea); }
.rg-season--fall .rg-season__h::before { background: var(--red); }
.rg-cities { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(15.5rem, 1fr)); gap: .5rem; }
.rg-city { position: relative; }
.rg-city__cb { position: absolute; left: 1rem; top: 50%; margin: -12px 0 0; width: 24px; height: 24px; appearance: none; -webkit-appearance: none; border: 1.5px solid #6F6E69; border-radius: 6px; background: #fff; cursor: pointer; z-index: 1; }
.rg-city__cb:checked { background: var(--red); border-color: var(--red); }
.rg-city__cb:checked::after { content: ""; position: absolute; left: 7px; top: 3px; width: 6px; height: 11px; border-right: 2.5px solid #fff; border-bottom: 2.5px solid #fff; transform: rotate(45deg); }
.rg-city label { display: flex; flex-direction: column; justify-content: center; gap: .2rem; min-height: 4.25rem; padding: .7rem 1rem .7rem 3.25rem; border: 1.5px solid rgba(11, 18, 25, .2); border-radius: 12px; background: #fff; cursor: pointer; transition: border-color .2s ease, background-color .2s ease; }
.rg-city label:hover { border-color: var(--ink); }
.rg-city.is-on label { border-color: var(--red); background: #FFF6F4; }
.rg-city__cb:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; box-shadow: 0 0 0 4px var(--cream); }
.rg-city__cb:focus-visible + label { border-color: var(--ink); }
.rg-city__name { font: 600 var(--fs-base)/1.25 var(--f-sans); }
.rg-city__date { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.rg-step--cities.is-bad .rg-city label { border-color: rgba(168, 18, 29, .55); }

.rg-picks { list-style: none; margin: 1.5rem 0 0; padding: 0; display: grid; gap: .5rem; }
.rg-picks:not(:has(> li:not([hidden]))) { display: none; }
.rg-pick { display: grid; grid-template-columns: minmax(9rem, .7fr) minmax(0, 2fr); gap: .75rem 1.5rem; padding: 1rem 1.1rem; border-radius: 12px; background: var(--sand); }
.rg-pick__where { display: flex; flex-direction: column; gap: .2rem; }
.rg-pick__name { font: 600 var(--fs-base)/1.25 var(--f-sans); }
.rg-pick__date { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.rg-pks { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .5rem; }
.rg-pks > legend { grid-column: 1 / -1; float: left; width: 100%; }
.rg-pk { position: relative; }
.rg-pk input { position: absolute; left: .8rem; top: .8rem; width: 24px; height: 24px; margin: 0; appearance: none; -webkit-appearance: none; border: 1.5px solid #6F6E69; border-radius: 50%; background: #fff; }
.rg-pk input:checked { border: 7px solid var(--ink); }
.rg-pk input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }
.rg-pk label { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .6rem; min-height: 3.25rem; height: 100%; padding: .8rem .9rem .8rem 3rem; border-radius: 10px; background: var(--cream); border: 1.5px solid transparent; cursor: pointer; line-height: 1.3; }
.rg-pk input:checked + label { border-color: var(--ink); }
.rg-pk__n { font-size: var(--fs-sm); font-weight: 500; flex: 1 1 10rem; }
.rg-pk__p { font: 600 var(--fs-sm)/1.3 var(--f-mono); white-space: nowrap; }
.rg-pk--off label { cursor: not-allowed; background: rgba(255, 252, 246, .55); color: var(--muted); }
.rg-pk--off input { background: transparent; border-style: dashed; }
.rg-tag { flex-basis: 100%; font: 600 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: .04em; color: var(--red-ink); }
.rg-wait { grid-column: 2; display: flex; flex-wrap: wrap; align-items: center; gap: .25rem 1rem; }
.rg-wait__q { margin: 0; font-size: var(--fs-sm); line-height: 1.4; flex: 1 1 14rem; }

/* step 2: payment choices as tiles */
.rg-radios { border: 0; margin: 0 0 1.75rem; padding: 0; min-width: 0; }
.rg-radios > legend.rg-lab { padding: 0; margin-bottom: .35rem; }
.rg-opts { display: flex; flex-wrap: wrap; gap: .5rem; }
.rg-opt { position: relative; }
.rg-opt input { position: absolute; left: .85rem; top: 50%; margin: -12px 0 0; width: 24px; height: 24px; appearance: none; -webkit-appearance: none; border: 1.5px solid #6F6E69; background: #fff; border-radius: 50%; cursor: pointer; }
.rg-opt input[type="checkbox"] { border-radius: 5px; }
.rg-opt input:checked { border: 7px solid var(--ink); }
.rg-opt input[type="checkbox"]:checked { border: 1.5px solid var(--ink); background: var(--ink); }
.rg-opt input[type="checkbox"]:checked::after { content: ""; position: absolute; left: 7px; top: 3px; width: 6px; height: 11px; border-right: 2px solid #fff; border-bottom: 2px solid #fff; transform: rotate(45deg); }
.rg-opt input:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; box-shadow: 0 0 0 4px var(--cream); }
.rg-opt label { display: flex; align-items: center; min-height: 48px; padding: .6rem 1.1rem .6rem 3.1rem; border: 1.5px solid rgba(11, 18, 25, .22); border-radius: 10px; background: #fff; cursor: pointer; font-weight: 500; line-height: 1.3; }
.rg-opt input:checked + label { border-color: var(--ink); background: #F6F1E6; }
.rg-wait .rg-opt label { background: var(--cream); min-height: 44px; font-size: var(--fs-sm); }
.rg-radios.is-bad .rg-opt label { border-color: rgba(168, 18, 29, .6); }
.rg-payer { margin-top: -.5rem; max-width: 34rem; }

/* step 3: company details */
.rg-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.1rem var(--gutter); }
.rg-f { min-width: 0; display: flex; flex-direction: column; }
.rg-f--wide { grid-column: 1 / -1; }
.rg-lab { display: block; font: 500 var(--fs-sm)/1.35 var(--f-sans); margin-bottom: .4rem; color: var(--ink); }
.rg-in { width: 100%; min-height: 50px; padding: .7rem .9rem; border: 1.5px solid #6F6E69; border-radius: 8px; background: #fff; color: var(--ink); font: 400 1rem/1.4 var(--f-sans); }
.rg-in--area { min-height: 7.5rem; resize: vertical; }
.rg-in--sel { appearance: none; -webkit-appearance: none; padding-right: 2.75rem; cursor: pointer;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%230B1219' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 1rem center; }
.rg-in:hover { border-color: var(--ink); }
.rg-in:focus-visible { outline: 2px solid var(--ink); outline-offset: 1px; box-shadow: 0 0 0 4px rgba(11, 18, 25, .08); border-color: var(--ink); }
.rg-in[aria-invalid="true"] { border-color: var(--red-ink); background: #FFF6F4; }

/* the summary: an ink receipt, sticky beside the form on wide screens */
.rg-sum__card { background: var(--ink); color: var(--cream); border-radius: var(--r-card); padding: clamp(1.25rem, 1rem + 1vw, 1.75rem); position: relative; }
.rg-sum__card::after { content: ""; position: absolute; left: 1.25rem; right: 1.25rem; bottom: 6.5rem; border-top: 2px dashed rgba(255, 252, 246, .22); pointer-events: none; display: none; }
.rg-sum__h { font: 600 var(--fs-md)/1.2 var(--f-sans); margin: 0 0 1rem; }
.rg-sum__dl { margin: 0; }
.rg-sum__row { display: flex; justify-content: space-between; gap: 1rem; padding: .4rem 0; border-top: 1px solid rgba(255, 252, 246, .14); font-size: var(--fs-sm); }
.rg-sum__row[hidden] { display: none; }
.rg-sum__row dt { color: var(--muted-dark); min-width: 0; }
.rg-sum__row dd { margin: 0; font: 500 var(--fs-sm)/1.35 var(--f-mono); text-align: right; white-space: nowrap; }
.rg-sum__x { display: block; font: 400 var(--fs-xs)/1.3 var(--f-mono); color: var(--muted-dark); margin-top: .15rem; }
.rg-sum__line dt { color: var(--cream); }
.rg-sum__disc dd { color: #FFA3AE; }
.rg-sum__disc.is-none dt { color: var(--muted-dark); font-size: var(--fs-xs); line-height: 1.4; }
.rg-sum__total { border-top: 1px solid var(--cream); margin-top: .35rem; padding-top: .8rem; align-items: baseline; }
.rg-sum__total dt { color: var(--cream); font-weight: 600; font-size: var(--fs-base); }
.rg-sum__total dd { font: 600 clamp(1.5rem, 1.3rem + .8vw, 2rem)/1.1 var(--f-sans); letter-spacing: -.01em; }
.rg-sum__due { border-top: 2px dashed rgba(255, 252, 246, .3); }
.rg-sum__due dt { color: var(--cream); font-weight: 600; }
.rg-sum__due dd { font-size: var(--fs-base); font-weight: 600; }
.rg-ex { margin-top: 1rem; padding: .85rem 1rem; border-radius: 12px; background: rgba(255, 252, 246, .07); }
.rg-ex .rg-mini { color: var(--muted-dark); }
.rg-switch { position: relative; }
.rg-switch input { position: absolute; left: 0; top: 50%; margin: -13px 0 0; width: 46px; height: 26px; appearance: none; -webkit-appearance: none; border-radius: 999px; background: #3A434C; border: 1.5px solid #8C949B; cursor: pointer; transition: background-color .2s ease; }
.rg-switch input::after { content: ""; position: absolute; left: 3px; top: 3px; width: 17px; height: 17px; border-radius: 50%; background: var(--cream); transition: transform .2s var(--out); }
.rg-switch input:checked { background: var(--red); border-color: var(--red); }
.rg-switch input:checked::after { transform: translateX(20px); }
.rg-switch input:focus-visible { outline: 2px solid var(--cream); outline-offset: 3px; }
.rg-switch label { display: flex; align-items: center; min-height: 44px; padding-left: 3.6rem; font-weight: 500; cursor: pointer; }
.rg-ex .rg-help { color: var(--muted-dark); margin: .4rem 0 0; }
.rg-sum__note { font-size: var(--fs-xs); color: var(--muted-dark); line-height: 1.45; margin: 1rem 0 0; }

/* the confirmation, inside the form, in place of the fields */
.rg-done { border-radius: var(--r-card); background: var(--sand); padding: clamp(1.5rem, 1rem + 2vw, 3rem); }
.rg-done:focus { outline: none; }
.rg-done__note { margin: 0 0 1.5rem; display: flex; flex-direction: column; gap: .75rem; }
.rg-done__note:empty { display: none; }
.rg-done__h { font: 600 var(--fs-h3)/var(--lh-h3) var(--f-sans); letter-spacing: -.01em; padding-left: 3.25rem; position: relative; }
.rg-done__h::before { content: ""; position: absolute; left: 0; top: .1em; width: 2.25rem; height: 2.25rem; border-radius: 50%; background: var(--red); }
.rg-done__h::after { content: ""; position: absolute; left: .8rem; top: .45em; width: .55rem; height: 1rem; border-right: 2.5px solid #fff; border-bottom: 2.5px solid #fff; transform: rotate(45deg); }
.rg-done__t { line-height: 1.45; max-width: 52ch; }
.rg-done__dl { margin: 0 0 1.5rem; display: grid; grid-template-columns: minmax(0, 1fr); background: var(--cream); border-radius: 12px; padding: .25rem 1.25rem; }
.rg-done__dl:empty { display: none; }
.rg-done__dl div { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem 0; border-top: 1px solid var(--line); }
.rg-done__dl div:first-child { border-top: 0; }
.rg-done__dl dt { color: var(--muted); }
.rg-done__dl dd { margin: 0; font-weight: 500; text-align: right; overflow-wrap: anywhere; }

/* the phone bar: total while picking, hidden once the full summary is in view */
.rg-bar { position: fixed; left: .75rem; right: .75rem; bottom: .75rem; z-index: 40; display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  background: var(--ink); color: var(--cream); border-radius: 14px; padding: .55rem .55rem .55rem 1rem; box-shadow: 0 10px 30px rgba(11, 18, 25, .3); }
.rg-bar[hidden] { display: none; }
.rg-bar__t { display: flex; flex-direction: column; min-width: 0; }
.rg-bar__lab, .rg-bar__d { font: 400 var(--fs-xs)/1.3 var(--f-mono); text-transform: uppercase; letter-spacing: .04em; color: var(--muted-dark); }
.rg-bar__d { color: #FFA3AE; }
.rg-bar__d:empty { display: none; }
.rg-bar__v { font: 600 1.15rem/1.2 var(--f-sans); white-space: nowrap; }
.rg-bar__go { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding: 0 1rem; border-radius: 10px; background: var(--red); color: var(--cream); text-decoration: none; font-weight: 600; font-size: var(--fs-sm); white-space: nowrap; }
.rg-bar__go:focus-visible { outline: 2px solid var(--cream); outline-offset: 2px; }
.rg-bar__arrow { width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-2px); }
html.rg-bar-on { scroll-padding-bottom: 6rem; }

/* the travel agent path */
.rg-ag__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(2rem, 1rem + 4vw, 6rem); align-items: start; }
.rg-ag .cx-h { margin-bottom: 1rem; max-width: 16ch; }
.rg-gift { display: inline-flex; margin: .5rem 0 0; background: var(--ink); color: var(--cream); border-radius: 10px; padding: .9rem 1.1rem; font-weight: 600; line-height: 1.35; max-width: 30ch; }
.rg-form--ag { background: var(--cream); border-radius: var(--r-card); padding: clamp(1.25rem, 1rem + 1.5vw, 2.5rem); }
.rg-ag__fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.1rem var(--gutter); margin-bottom: 1.5rem; }
.rg-form--ag .rg-done { background: var(--sand); }

@media (max-width: 999.98px) {
  .rg-grid { grid-template-columns: minmax(0, 1fr); }
  .rg-sum { grid-column: 1; grid-row: auto; position: static; margin-bottom: 1.5rem; max-height: none; overflow: visible; }
  .rg-ag__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 899.98px) {
  .rg-hero__grid { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 699.98px) {
  .rg-paths { grid-template-columns: minmax(0, 1fr); }
  .rg-path { min-height: 0; }
  .rg-fields, .rg-ag__fields { grid-template-columns: minmax(0, 1fr); }
  .rg-pick { grid-template-columns: minmax(0, 1fr); gap: .55rem; padding: .85rem .85rem 1rem; }
  .rg-pick__where { flex-direction: row; flex-wrap: wrap; align-items: baseline; justify-content: space-between; column-gap: .75rem; }
  .rg-pks { grid-template-columns: minmax(0, 1fr); gap: .4rem; }
  .rg-pk label { min-height: 0; padding: .65rem .8rem .65rem 3rem; }
  .rg-pk input { top: .6rem; }
  .rg-wait { grid-column: 1; }
  .rg-opt, .rg-opt label { width: 100%; }
  .rg-done__dl div { flex-direction: column; gap: .15rem; }
  .rg-done__dl dd { text-align: left; }
}
@media (min-width: 900px) { .rg-bar { display: none !important; } }
@media (prefers-reduced-motion: reduce) {
  .rg-path, .rg-path__arrow, .rg-switch input::after { transition: none; }
}
