/* Brand-preserving refinement: full artwork, measured rhythm, quiet motion. */
:root { --gutter:clamp(22px,5vw,88px); --paper:#fff; --muted:#a9a9a9; }
body { font-size:16px; }
button, a { touch-action:manipulation; }
:focus-visible { outline:2px solid currentColor; outline-offset:5px; }
.preview-bar { font-size:12px; letter-spacing:.025em; min-height:32px; }
.header-inner { min-height:88px; gap:24px; }
.wordmark { font-size:26px; }
.desktop-nav { gap:20px; }
.desktop-nav>a,.nav-folder-trigger,.cart-link { font-size:12px; letter-spacing:0; }
.desktop-nav>a,.nav-folder-trigger { min-height:44px; display:flex; align-items:center; }
.header-cta { font-size:12px; min-height:48px; gap:14px; }
.header-actions { gap:18px; }
.desktop-nav>a { position:relative; }
.desktop-nav>a::after { content:''; position:absolute; bottom:4px; left:0; width:100%; height:1px; background:currentColor; transform:scaleX(0); transform-origin:left; transition:transform .25s var(--ease); }
.desktop-nav>a:hover::after,.desktop-nav>a.is-current::after { transform:scaleX(1); }
.hero { min-height:0; overflow:hidden; }
.hero-art { position:relative; width:100%; aspect-ratio:2500/1406; z-index:0; overflow:hidden; }
.hero-bg,.hero-fg { object-fit:contain; transform:translate3d(0,var(--cover-y,0px),0); }
.hero-fg { transform:translate3d(var(--pointer-x,0px),calc(var(--cover-y,0px) * .35 + var(--pointer-y,0px)),0); }
.hero-overlay,.hero-side-note { display:none; }
.hero-content { min-height:0; padding:28px var(--gutter) 32px; display:grid; grid-template-columns:1fr 1.6fr; align-items:center; gap:50px; border-top:1px solid #343434; }
.hero-kicker { max-width:340px; font-size:12px; line-height:1.6; }
.hero-bottomline { border:0; padding:0; font-size:12px; line-height:1.6; align-items:center; gap:22px; }
.hero-bottomline a { min-height:44px; }
.teaser { min-height:640px; height:82svh; max-height:900px; }
.teaser>img { height:110%; top:-5%; transform:translate3d(0,var(--photo-y,0px),0); }
.teaser-shade { background:linear-gradient(180deg,#0006,#0003 40%,#000a); }
.teaser h2 { font-size:clamp(5rem,11vw,11rem); line-height:.96; }
.play-button { font-size:14px; min-height:48px; padding:16px 20px; gap:25px; }
.section-kicker,.section-rail,.teaser-caption { font-size:12px; line-height:1.5; }
.section-rail { padding-top:22px; }
.homage { padding-bottom:130px; }
.homage-head { padding-top:96px; padding-bottom:70px; align-items:center; }
@media(min-width:821px) {
  .homage-head { grid-template-columns:minmax(0,1.4fr) minmax(250px,.6fr); gap:clamp(30px,6vw,94px); }
}
.homage-head h2 { font-size:clamp(4.5rem,8.8vw,9rem); line-height:.98; }
.lede,.homage-copy,.event-copy>p:not(.section-kicker),.race-intro,.schedule-heading p,.ticket-copy>p:not(.section-kicker) { font-size:16px; line-height:1.85; }
.homage-image img { aspect-ratio:auto; height:auto; object-fit:contain; }
.homage-image figcaption,.ticket-art figcaption { font-size:12px; line-height:1.5; padding-top:16px; }
.homage-copy { align-self:center; max-width:470px; }
.text-link { font-size:14px; min-height:44px; padding-bottom:8px; }
.event-section { padding-top:110px; padding-bottom:110px; }
.event-copy h2,.race-copy h2 { line-height:1; font-size:clamp(4.2rem,7.2vw,8rem); }
.event-lockup { margin-top:30px; margin-bottom:45px; }
.festival-panel { display:block; }
.festival-art { transform:rotate(-2deg); }
.race-panel { background:var(--black); row-gap:50px; }
.festival-art img { object-fit:contain; height:auto; }
.event-stamp { display:none; }
.race-art-photo img,.race-art-product img { object-fit:contain; height:auto; }
.race-art-photo,.race-art-product { min-height:0; display:flex; align-items:center; }
.class-list li { font-size:14px; padding:15px 0; }
.schedule-heading { padding-top:88px; }
.schedule-heading h2 { line-height:.98; }
.schedule-dates { display:block; margin-bottom:12px; color:var(--white); }
.schedule-tabs button { min-height:140px; padding:22px; }
.schedule-tabs button span,.schedule-tabs button small { font-size:12px; }
.schedule-tabs button small { max-width:14ch; text-align:right; line-height:1.35; }
.schedule-tabs button strong { font-size:4rem; }
.schedule-row { padding:24px 0; }
.schedule-row time { font-size:14px; line-height:1.6; }
.schedule-row div p,.schedule-row div p+p { font-size:16px; line-height:1.75; font-weight:400; color:#d1d1d1; }
.schedule-row div p { position:relative; padding-left:1.4em; }
.schedule-row div p::before { content:"–"; position:absolute; top:0; left:0; }
.ticket-marquee { font-size:clamp(2rem,6.3vw,7rem); padding-top:24px; padding-bottom:16px; }
@media(min-width:821px) {
  .ticket-marquee { padding-top:clamp(42px,3.1vw,59px); }
}
.ticket-copy h2 { font-size:clamp(4rem,7vw,8rem); line-height:1; }
.ticket-inner { align-items:center; gap:7vw; }
.ticket-art { transform:none; }
.ticket-art img { object-fit:contain; height:auto; }
.ticket-options { margin-top:32px; border-top:1px solid #777; }
.ticket-options button { width:100%; border:0; border-bottom:1px solid #777; padding:20px 0; background:transparent; display:flex; align-items:center; justify-content:space-between; gap:20px; text-align:left; }
.ticket-options small { display:block; font:12px/1.5 var(--body); letter-spacing:.05em; }
.ticket-options strong { display:block; font:700 clamp(2rem,3vw,3rem)/1.2 var(--display); margin-top:8px; }
.ticket-options button>span:first-child { min-width:0; }
.ticket-option-description { display:block; margin-top:12px; max-width:540px; font:400 14px/1.75 var(--body); color:#4d4d4d; }
.ticket-options button>span:last-child { flex-shrink:0; }
.ticket-options button>span:last-child { font-size:28px; transition:transform .2s var(--ease); }
.ticket-options button:hover>span:last-child { transform:translate(4px,-4px); }
.inverse-button,.dark-button { font-size:14px; line-height:1.5; min-height:50px; }
.info-grid article { border-width:1px 0 0; padding:30px 0; }
.info-grid { gap:48px; }
@media(min-width:821px) { .info-grid { grid-template-columns:repeat(3,minmax(0,1fr)); gap:clamp(24px,3vw,48px); } }
.info-grid h3 { line-height:1.03; font-size:clamp(2.8rem,4vw,4.5rem); }
.info-grid p:not(.section-kicker) { font-size:16px; line-height:1.8; }
.faq-list summary { font-size:16px; line-height:1.5; padding:24px 0; }
.faq-list details>p { font-size:16px; line-height:1.85; padding-bottom:26px; }
.faq-list details a { text-decoration:underline; text-underline-offset:.2em; overflow-wrap:anywhere; }
.footer-contact a,.footer-social a,.footer-contact p:not(.section-kicker) { font-size:14px; line-height:1.8; }
.footer-bottom { font-size:12px; }
dialog { max-height:calc(100svh - 32px); overflow:auto; overscroll-behavior:contain; }
.ticket-dialog h2 { line-height:1; }
.dialog-intro,dialog>p:not(.section-kicker),.ticket-detail>p:not(.section-kicker),.ticket-detail ul { font-size:16px; line-height:1.75; }
.ticket-picker label span { font-size:12px; min-height:48px; display:grid; place-items:center; }
.ticket-detail { min-height:0; }
.ticket-detail h3 { line-height:1.05; }
.preview-note,.preview-note strong { font-size:12px; }
.close-dialog { min-width:44px; min-height:44px; }
@media(min-width:1101px) { .festival-art { position:sticky; top:120px; align-self:start; } }
@media(max-width:1440px) { .desktop-nav,.cart-link { display:none; } .menu-toggle { display:flex; align-items:center; min-height:44px; } .mobile-nav:not([hidden]) { position:absolute; display:flex; flex-direction:column; top:100%; left:0; right:0; max-height:calc(100svh - 100px); overflow:auto; padding:20px var(--gutter); background:#000; border-bottom:1px solid #555; } .mobile-nav>a,.mobile-folder-trigger,.mobile-folder-panel a { display:block; padding:16px 0; font-size:14px; border:0; border-bottom:1px solid #333; text-align:left; background:transparent; } .mobile-folder-panel[hidden] { display:none; } .mobile-folder-trigger { display:flex; justify-content:space-between; } .hero-content { grid-template-columns:1fr; gap:20px; } .hero-bottomline { grid-template-columns:1fr 1fr auto; } }
@media(max-width:820px) { .festival-panel,.race-panel { gap:50px; } .event-section { padding-top:80px; padding-bottom:80px; } .homage { padding-bottom:80px; } .homage-head { padding-top:64px; padding-bottom:40px; } .info-grid { gap:18px; } .hero-bottomline span:nth-child(2),.hero-bottomline a { grid-column:auto; grid-row:auto; } .teaser { min-height:500px; height:72svh; } .festival-art { width:min(85%,430px); } }
@media(max-width:560px) {
  .preview-bar { font-size:12px; padding:8px 18px; } .preview-bar button { font-size:12px; } .preview-bar>span { display:none; }
  .header-inner { min-height:76px; } .wordmark { min-width:80px; font-size:24px; } .header-cta { font-size:12px; max-width:175px; padding:12px; line-height:1.4; }
  .hero-art { aspect-ratio:3/8; } .hero-mobile { display:block; object-fit:contain; object-position:center; }
  .hero-content { padding:24px 22px 30px; gap:20px; } .hero-kicker { font-size:12px; max-width:none; } .desktop-only { display:none; }
  .hero-bottomline { display:grid; grid-template-columns:1fr; gap:8px; font-size:14px; } .hero-bottomline a { margin-top:8px; justify-self:start; }
  .teaser-inner { padding:70px 22px; } .teaser h2 { font-size:clamp(3.7rem,17vw,6rem); }
  .section-rail { padding-left:22px; padding-right:22px; gap:18px; } .section-rail span:last-child { display:none; }
  .homage-head h2 { font-size:clamp(3.6rem,16vw,5.5rem); } .homage-head,.homage-grid { padding-left:22px; padding-right:22px; }
  .event-copy h2,.race-copy h2 { font-size:clamp(3.2rem,13.7vw,5rem); } .event-section { padding-left:22px; padding-right:22px; }
  .schedule-tabs { gap:8px; } .schedule-tabs button { min-height:120px; padding:14px 8px; } .schedule-tabs button strong { font-size:3.2rem; margin-top:12px; } .schedule-tabs button small { font-size:12px; }
  .schedule-panel h3 { font-size:2.5rem; line-height:1.1; } .schedule-row { gap:12px; } .schedule-row time { font-weight:400; }
  .ticket-inner { padding:60px 22px 70px; gap:50px; } .ticket-copy h2 { font-size:clamp(3.6rem,14vw,5rem); } .ticket-options strong { font-size:2.5rem; }
  .ticket-art { width:85%; } .info-grid article { min-height:0; } .info-grid { padding-left:22px; padding-right:22px; } .faq-block { padding-left:22px; padding-right:22px; }
  .faq-list summary { gap:20px; } .faq-list summary span { flex-shrink:0; }
  .mobile-ticket-bar>span { font-size:12px; max-width:155px; } .mobile-ticket-bar .inverse-button { font-size:14px; min-height:44px; }
  .ticket-picker label span { padding:12px 4px; } .ticket-dialog,.about-dialog { padding:24px 20px; } .ticket-dialog h2 { font-size:3.8rem; } .dialog-top .section-kicker { font-size:12px; }
  .site-footer { padding-bottom:120px; } .footer-tree { max-width:90px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .hero-bg,.hero-fg,.teaser>img { transform:none!important; } *,*::before,*::after { animation:none!important; transition:none!important; } }

/* Single-line DIN identity, straight ticket assets, and native video. */
.wordmark,.footer-wordmark { display:block; font-family:var(--display); font-weight:700; white-space:nowrap; letter-spacing:.015em; line-height:1.1; }
.wordmark { flex:0 0 auto; min-width:0; font-size:30px; }
.footer-wordmark { grid-column:1/-1; font-size:clamp(2.1rem,8.2vw,8.5rem); }
.footer-tree { opacity:1; filter:none; }
.footer-main { grid-template-columns:1fr 1fr; }
.footer-social { grid-column:auto; }
.ticket-art { transform:none; }
.ticket-art img { transform:scale(1.25); transform-origin:center; }
.ticket-section { overflow:hidden; }
.ticket-marquee { max-width:100%; overflow:hidden; }
.teaser { width:100%; height:auto; min-height:0; max-height:none; background:#000; padding:0; }
.teaser video { display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:contain; background:#000; }
.video-center-play {
  position:absolute;
  z-index:2;
  top:50%;
  left:50%;
  width:clamp(76px,7vw,112px);
  aspect-ratio:1;
  padding:0;
  display:grid;
  place-items:center;
  transform:translate(-50%,-50%);
  border:1px solid rgba(255,255,255,.9);
  border-radius:50%;
  background:rgba(0,0,0,.48);
  color:#fff;
  box-shadow:0 10px 40px rgba(0,0,0,.3);
  backdrop-filter:blur(3px);
  transition:transform .2s var(--ease),background .2s var(--ease);
}
.video-center-play:hover { transform:translate(-50%,-50%) scale(1.06); background:rgba(0,0,0,.72); }
.video-center-play[hidden] { display:none; }
.video-center-play-icon {
  width:0;
  height:0;
  margin-left:7%;
  border-top:clamp(10px,1vw,15px) solid transparent;
  border-bottom:clamp(10px,1vw,15px) solid transparent;
  border-left:clamp(17px,1.6vw,25px) solid currentColor;
}
.video-error { padding:24px var(--gutter); font-size:14px; }
.video-error a { text-decoration:underline; }
.ticket-dialog[open] { display:flex; flex-direction:column; height:min(820px,calc(100vh - 24px)); height:min(820px,calc(100dvh - 24px)); max-height:calc(100dvh - 24px); padding:0; overflow:hidden; margin:auto; }
.ticket-dialog .dialog-top { flex:0 0 auto; margin:0; padding:16px 24px; border-bottom:1px solid #bbb; }
.ticket-dialog-body { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; padding:24px; scroll-padding-block:24px; }
.ticket-dialog-body:focus-visible { outline-offset:-4px; }
.ticket-dialog-body h2 { font-size:clamp(2.8rem,7vw,4.5rem); line-height:1.05; }
.ticket-dialog-footer { flex:0 0 auto; padding:16px 24px max(16px,env(safe-area-inset-bottom)); border-top:1px solid #bbb; background:var(--paper); }
.ticket-dialog-footer .dark-button { margin:0; }
.ticket-dialog .preview-note { margin-top:8px; }
@media(min-width:1201px) and (max-width:1440px) { .desktop-nav { gap:12px; } .header-inner { gap:18px; } .cart-link { display:none; } }
@media(max-width:560px) {
  .header-inner { gap:12px; }
  .wordmark { font-size:clamp(1.25rem,5.8vw,1.8rem); min-width:0; }
  .header-actions { gap:12px; }
  .header-cta { display:none; }
  .footer-main { grid-template-columns:1fr; }
  .footer-wordmark { font-size:clamp(1.9rem,8.2vw,3rem); letter-spacing:0; }
  .ticket-art { width:100%; }
  .ticket-marquee { font-size:clamp(1.15rem,6.3vw,2.2rem); letter-spacing:-.015em; padding-left:18px; padding-right:18px; }
  .ticket-dialog .dialog-top { padding:12px 16px; }
  .ticket-dialog-body { padding:20px 16px; }
  .ticket-dialog-footer { padding:12px 16px max(12px,env(safe-area-inset-bottom)); }
}
@media(max-height:450px) { .ticket-dialog .dialog-top { padding-block:4px; } .ticket-dialog-footer { padding-block:6px; } }

.footer-bottom>span:first-child,#pass-label { white-space:nowrap; }

/* Equal schedule tabs: text must not set the grid's minimum column width. */
.schedule-tabs { grid-template-columns:repeat(3,minmax(0,1fr)); }
.schedule-tabs button { min-width:0; width:100%; }
.schedule-tabs button>* { min-width:0; max-width:100%; }
@media(max-width:900px) {
  .schedule-tabs button {
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto auto 1fr;
    column-gap:0;
    row-gap:10px;
    min-height:140px;
    padding:14px 8px;
  }
  .schedule-tabs button span { grid-column:1; }
  .schedule-tabs button strong { margin-top:0; }
  .schedule-tabs button small {
    grid-column:1;
    justify-self:start;
    align-self:end;
    margin:0;
    font-size:.75rem;
    line-height:1.4;
    letter-spacing:0;
    white-space:normal;
    overflow-wrap:anywhere;
  }
}

/* Shared section-title scale. Image lockups match DIN's visible capital height. */
:root { --section-heading-size:clamp(4.2rem,7.2vw,8rem); }
.homage-head h2,.event-copy h2,.race-copy h2,.schedule-heading h2,.ticket-copy h2,.faq-block h3 {
  font-family:var(--display);
  font-weight:700;
  font-style:normal;
  font-size:var(--section-heading-size);
  line-height:1;
}
.event-lockup,.race-art-main {
  font:700 var(--section-heading-size)/1 var(--display);
}
.event-lockup,.race-art-main img {
  display:block;
  width:auto;
  max-width:100%;
  height:.72em;
  height:1cap;
  object-fit:contain;
  object-position:left center;
}
.race-art-main { padding:0; }
.race-art-main img { font:inherit; }
.race-art-grid { grid-template-rows:max-content auto; }
@media(max-width:560px) {
  :root { --section-heading-size:clamp(3.2rem,13.7vw,5rem); }
}

/* Section 01 is the reference for label, headline and paragraph spacing. */
:root {
  --section-label-gap:96px;
  --section-body-gap:32px;
  --section-copy-width:370px;
}
.homage-head { padding-top:var(--section-label-gap); }
.event-copy>.section-kicker,.race-copy>.section-kicker {
  margin:0;
  font-size:12px;
  line-height:1.5;
  letter-spacing:.08em;
}
.event-copy>h2,.race-copy>h2 { margin:var(--section-label-gap) 0 0; }
.event-copy>p:not(.section-kicker),.race-copy>.race-intro {
  margin:var(--section-body-gap) 0 0;
}
.homage-head>.lede,.event-copy>p:not(.section-kicker),.race-copy>.race-intro {
  max-width:var(--section-copy-width);
  font-size:16px;
  line-height:1.85;
  color:#d1d1d1;
}
.festival-panel>.festival-lockup { margin:0 0 50px; }
.section-top-kicker { display:block; margin:0 0 var(--section-label-gap); }
.festival-panel>.section-top-kicker { margin-bottom:50px; }
.race-panel>.section-top-kicker,
.race-panel>.race-lockup { grid-column:1/-1; margin:0; }
.class-list li::after { content:none; }
.class-list-heading { margin:clamp(30px,3vw,43px) 0 16px; font:700 16px/1.4 var(--body); letter-spacing:.06em; }
.class-list-heading+.class-list { margin-top:0; }
.event-copy>h2,.race-copy>h2 { margin-top:0; }
/* Taller photo crops balance the rider artwork and bottom-aligned race copy. */
.race-panel { grid-template-rows:min-content min-content 1fr; }
.race-panel>.section-top-kicker,
.race-panel>.race-lockup { grid-column:1; }
.race-art-pair { display:grid; grid-column:1; grid-row:3; grid-template-rows:repeat(2,minmax(0,1fr)); gap:14px; width:100%; min-width:0; min-height:0; aspect-ratio:4/7; margin:0; align-self:stretch; overflow:hidden; }
.race-art-pair figure { margin:0; min-width:0; min-height:0; overflow:hidden; }
.race-art-pair img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; filter:grayscale(1); }
.race-details { grid-column:2; grid-row:3; display:flex; flex-direction:column; justify-content:space-between; align-self:stretch; gap:clamp(40px,4vw,64px); min-width:0; }
.race-rider-art { width:min(90%,clamp(180px,19.8vw,324px)); flex:none; margin:0 auto; }
.race-rider-art img { display:block; width:100%; height:auto; }
@media(max-width:820px) {
  .race-panel { grid-template-rows:none; }
  .race-panel>.section-top-kicker { grid-row:1; }
  .race-panel>.race-lockup { grid-row:2; }
  .race-details { display:contents; }
  .race-rider-art { grid-column:1; grid-row:3; width:min(80%,clamp(192px,48vw,288px)); margin:0 auto; justify-self:center; }
  .race-art-pair { grid-column:1; grid-row:4; }
  .race-copy { grid-column:1; grid-row:5; }
}
@media(max-width:560px) { .race-art-pair { gap:10px; } }
@media(max-width:820px) {
  :root { --section-label-gap:64px; --section-copy-width:500px; }
  .homage-head { gap:var(--section-body-gap); }
}

/* Give section 01 the same breathing room from its divider as the later sections. */
.homage>.section-rail { padding-top:36px; border-top:0; }
@media(max-width:560px) {
  .homage>.section-rail { padding-top:30px; }
}

/* Requested half-scale treatment for the Festival statement only. */
#festival-title { font-size:clamp(2.1rem,3.6vw,4rem); }
@media(max-width:560px) {
  #festival-title { font-size:clamp(1.6rem,6.85vw,2.5rem); }
}

/* One consistent divider system across the full site. */
:root {
  --divider-dark:#454545;
  --divider-light:#bdbdbd;
}
.hero-content,
.hero-bottomline,
.section-rail,
.event-section,
.class-list,
.class-list li,
.schedule-row,
.footer-bottom {
  border-color:var(--divider-dark);
}
.ticket-marquee,
.ticket-options,
.ticket-options button,
.info-grid article,
.faq-list,
.faq-list details {
  border-color:var(--divider-light);
}

/* Align the last line of the intro with the visual bottom of the heading. */
.schedule-heading p {
  align-self:end;
  transform:translateY(-1.6em);
}
.schedule-panel h3 { margin-bottom:18px; }
@media(max-width:820px) {
  .schedule-heading p { transform:none; }
  .schedule-panel h3 { margin-bottom:24px; }
}

/* Full-bleed section dividers; content stays on the established grid. */
.section-rail {
  width:100%;
  max-width:none;
  padding-left:max(var(--gutter),calc((100vw - var(--max))/2 + var(--gutter)));
  padding-right:max(var(--gutter),calc((100vw - var(--max))/2 + var(--gutter)));
}
.event-section {
  border-top:0;
  overflow:visible;
}
.event-section::before {
  content:"";
  position:absolute;
  top:0;
  left:50%;
  width:100vw;
  border-top:1px solid var(--divider-dark);
  transform:translateX(-50%);
  pointer-events:none;
}
@media(max-width:560px) {
  .section-rail { padding-left:22px; padding-right:22px; }
}

/* Festival follows the adjacent Race section's frame and spacing. */
.festival-panel {
  display:grid;
  grid-template-columns:minmax(0,1.2fr) minmax(270px,.8fr);
  grid-template-rows:min-content min-content 1fr;
  column-gap:clamp(40px,9vw,150px);
  row-gap:50px;
  align-items:start;
}
.festival-panel>.section-top-kicker,
.festival-panel>.festival-lockup {
  grid-column:1;
  margin:0;
}
.festival-panel>.festival-gallery {
  grid-column:1;
  grid-row:3;
}
.festival-details {
  grid-column:2;
  grid-row:3;
  display:flex;
  flex-direction:column;
  align-self:stretch;
  gap:clamp(40px,4vw,64px);
  min-width:0;
  max-width:540px;
}
.festival-brand-art { width:min(100%,clamp(240px,26.4vw,432px)); flex:none; margin:0; }
.festival-brand-art img { display:block; width:100%; height:auto; }
.festival-details>.event-copy { display:flex; flex:1; flex-direction:column; min-width:0; }
.festival-details>.event-copy>.text-link { align-self:flex-start; }
/* The two Festival carousels match the Race photo pair below. */
.festival-gallery {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:repeat(2,minmax(0,1fr));
  gap:14px;
  width:100%;
  min-width:0;
  min-height:0;
  aspect-ratio:4/7;
  align-self:stretch;
}
.festival-gallery-card { min-width:0; min-height:0; margin:0; overflow:hidden; }
.festival-gallery-card img {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:grayscale(1);
  background:#0a0a0a;
}
@media(min-width:821px) {
  .festival-brand-art img { width:112.5%; max-width:none; margin-left:0; }
  .event-sections { display:grid; grid-auto-rows:auto; }
  .event-sections>.event-section { margin-block:0; }
  .festival-details>.event-copy { justify-content:flex-end; }
}
@media(max-width:820px) {
  .festival-panel { grid-template-columns:minmax(0,1fr); grid-template-rows:none; }
  .festival-panel>.section-top-kicker { grid-row:1; }
  .festival-panel>.festival-lockup { grid-row:2; }
  .festival-details { display:contents; }
  .festival-brand-art { grid-column:1; grid-row:3; width:min(100%,clamp(288px,72vw,432px)); margin-inline:auto; }
  .festival-panel>.festival-gallery { grid-column:1; grid-row:4; }
  .festival-details>.event-copy { grid-column:1; grid-row:5; }
}
@media(max-width:560px) { .festival-gallery { gap:10px; } }

.faq-intro { min-width:0; }
.faq-portrait { width:100%; margin:var(--section-body-gap) 0 0; }
.faq-portrait img { display:block; width:100%; height:auto; }

/* Race rules page: a readable long-form treatment using the same IDWT system. */
.race-actions {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:12px;
  margin-top:35px;
}
.race-actions .text-link { margin-top:0; }
.race-rules-page { background:var(--black); color:var(--white); }
.race-rules-main { background:var(--black); }
.race-rules-hero {
  padding-bottom:clamp(70px,10vw,150px);
  border-bottom:1px solid #383838;
}
.race-rules-hero .section-rail { border-bottom:0; }
.race-rules-hero-grid {
  width:min(var(--max),100%);
  margin:auto;
  padding:clamp(58px,8vw,112px) var(--gutter) 0;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:clamp(32px,4vw,64px);
  align-items:start;
}
.race-rules-hero-copy { min-width:0; }
.race-rules-lockup {
  width:min(100%,500px);
  height:auto;
  margin:0 0 32px;
}
.race-rules-hero-copy h1 {
  max-width:none;
  font-size:clamp(4rem,7.8vw,9.5rem);
}
.race-rules-map { margin:0; }
.race-rules-map img {
  display:block;
  width:100%;
  height:auto;
  border:1px solid #363636;
  background:#0b0b0b;
  filter:grayscale(1);
}
.race-rules-content {
  width:min(var(--max),100%);
  margin:auto;
  padding:clamp(70px,10vw,150px) var(--gutter) clamp(100px,13vw,190px);
}
.race-rules-row {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(220px,.42fr);
  gap:clamp(40px,8vw,130px);
  align-items:stretch;
}
.race-rules-row+.race-rules-row { margin-top:clamp(58px,7vw,100px); }
.race-rules-row .race-rules-source>:first-child { margin-top:0; }
.race-rules-source {
  min-width:0;
  max-width:860px;
}
.race-rules-source>p,
.race-rules-source>ul {
  color:#d0d0d0;
  font:400 13px/1.8 var(--body);
}
.race-rules-source>p { margin:0 0 26px; }
.race-rules-source>p:first-child {
  color:var(--white);
  font-size:clamp(15px,1.35vw,19px);
  line-height:1.65;
}
.race-source-heading {
  margin:clamp(58px,7vw,100px) 0 27px;
  padding-top:18px;
  border-top:1px solid #3b3b3b;
  font-size:clamp(2.5rem,4.4vw,5.2rem);
}
/* Numbered rules are subordinate to the full-size category headlines. */
.race-source-heading.race-source-numbered {
  font-size:clamp(1.25rem,2.2vw,2.6rem);
  line-height:1.1;
}
.race-source-strong {
  color:var(--white)!important;
  font-weight:700!important;
  letter-spacing:.04em;
  text-transform:uppercase;
}
.race-source-meta {
  color:#a9a9a9!important;
  font-size:11px!important;
  letter-spacing:.05em;
  text-transform:uppercase;
}
.race-source-list {
  margin:0 0 26px;
  padding:0 0 0 20px;
}
.race-source-list li { padding:2px 0; }
.race-class-table { margin:clamp(58px,7vw,100px) 0 26px; }
.race-class-table .race-source-heading { margin-top:0; }
.race-class-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  border-top:1px solid #444;
}
.race-class-column {
  display:grid;
  grid-template-rows:auto repeat(4,1fr);
  min-width:0;
}
.race-class-cell {
  padding:13px 12px;
  border-bottom:1px solid #333;
  color:#d0d0d0;
  font:400 11px/1.35 var(--body);
  letter-spacing:.04em;
  text-transform:uppercase;
}
.race-class-cell--head {
  color:#999;
  font-size:10px;
  letter-spacing:.08em;
}
.race-rules-media {
  position:static;
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:18px;
}
.race-rules-media>.section-kicker { color:#a9a9a9; margin:0; }
.race-rules-media-card {
  position:relative;
  flex:1;
  min-height:clamp(420px,48vw,720px);
  margin:0;
  overflow:hidden;
  background:#0b0b0b;
}
.race-rules-media-card img {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
  filter:grayscale(1);
}
@media(max-width:980px) {
  .race-rules-hero-grid { grid-template-columns:1fr; }
  .race-rules-lockup { width:min(100%,480px); }
  .race-rules-map { max-width:none; }
  .race-rules-row { grid-template-columns:1fr; gap:36px; }
  .race-rules-source { max-width:none; }
  .race-rules-media-card { flex:none; min-height:0; width:100%; aspect-ratio:2/3; }
}
@media(max-width:560px) {
  .race-rules-hero { padding-bottom:76px; }
  .race-rules-hero-grid { padding-top:50px; gap:42px; }
  .race-rules-lockup { margin-bottom:25px; }
  .race-rules-hero-copy h1 { font-size:clamp(3.8rem,16vw,7.2rem); }
  .race-rules-content { padding-top:72px; padding-bottom:100px; }
  .race-rules-source>p,
  .race-rules-source>ul { font-size:11px; line-height:1.72; }
  .race-rules-source>p:first-child { font-size:13px; }
  .race-source-heading { margin-top:60px; font-size:clamp(2.25rem,11vw,4rem); }
  .race-source-heading.race-source-numbered { font-size:clamp(1.125rem,5.5vw,2rem); }
  .race-class-cell { padding:10px 7px; font-size:8px; }
  .race-class-cell--head { font-size:8px; }
  .race-rules-row { gap:28px; }
}

.homage-head>.lede { margin-block:0; text-wrap:pretty; }

/* Keep the approaching rider in view within the tall crop. */
.race-rules-media-card img.race-photo-distant-rider { object-position:68% center; }

.race-rules-media-card img.race-photo-opening-rider { object-position:40% center; }

.festival-carousel{position:relative;min-width:0;min-height:0;overflow:hidden;background:#0a0a0a}
.festival-carousel-track{display:flex;width:100%;height:100%;min-width:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.festival-carousel-track::-webkit-scrollbar{display:none}
.festival-carousel-track .festival-gallery-card{flex:0 0 100%;width:100%;height:100%;scroll-snap-align:start;scroll-snap-stop:always}
.festival-carousel-controls{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:40px 18px 18px;background:linear-gradient(transparent,#0008);pointer-events:none}
.festival-carousel-count{color:#fff;font:400 12px/1 var(--body);letter-spacing:.12em;text-shadow:0 1px 4px #000}
.festival-carousel-arrows{display:flex;gap:8px;pointer-events:auto}
.festival-carousel-arrows button{display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid #ffffff70;border-radius:0;background:#0005;color:#fff;font:400 22px/1 var(--body);cursor:pointer}
.festival-carousel-arrows button:hover{background:#fff;color:#000}
.festival-carousel-track:focus-visible{outline:2px solid #fff;outline-offset:-4px}
.festival-carousel-arrows button:focus-visible{outline:2px solid #fff;outline-offset:3px}
@media(max-width:560px){.festival-carousel-controls{padding:32px 12px 12px}}

.festival-carousel-controls[hidden]{display:none}

/* Pair the riders with the McQueen portrait at a shared height. */
.homage-photos { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,3fr); gap:14px; min-width:0; align-self:center; }
.homage-photos .homage-image { position:relative; margin:0; min-width:0; overflow:hidden; }
.homage-photos .homage-image:first-child { aspect-ratio:4/3; }
.homage-photos .homage-image img { position:absolute; inset:0; display:block; width:100%; height:100%; aspect-ratio:auto; object-fit:cover; }
@media(max-width:560px) { .homage-photos { gap:10px; } }

/* V1.14.6: match the homage introduction to the body-copy column. */
.homage-head>.lede{width:100%;max-width:470px;text-wrap:wrap}

@media(min-width:821px) { .info-grid h3 { font-size:clamp(1.8rem,3.5vw,4.5rem); } }
