/* =========================================================
   CODECRYPT 3.0 — page sections (after the hero)
   Same world as the hero: warm void, ember neon, technical grid, halftone suns.
   ========================================================= */
:root {
  --neon: #ff7434;
  --line: rgba(255, 190, 160, .12);
  --line-2: rgba(255, 190, 160, .22);
  --panel: rgba(255, 120, 60, .028);
  --serif: 'Instrument Serif', Georgia, serif;
}

.wrap { width: min(1320px, 100%); margin-inline: auto; }
.tl, .editions, .steps, .rules__list { list-style: none; }
.sec { position: relative; padding: clamp(96px, 15vh, 170px) var(--gutter); }
/* a hairline between sections that fades out at both ends */
.sec + .sec::before {
  content: ''; position: absolute; left: var(--gutter); right: var(--gutter); top: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--line-2) 20%, var(--line-2) 80%, transparent);
}

/* ---------- scroll reveal (only when JS is running) ---------- */
.js-rv .rv { opacity: 0; transform: translate3d(0, 34px, 0); transition: opacity 1s var(--ease-out) var(--rd, 0ms), transform 1.2s var(--ease-out) var(--rd, 0ms); }
.js-rv .rv.is-in { opacity: 1; transform: none; }

/* ---------- shared type ---------- */
.kicker { display: flex; align-items: center; gap: 14px; font-family: var(--f-mono); font-size: 12px; letter-spacing: .26em; text-transform: uppercase; color: var(--orange); }
.kicker__idx {
  padding: 4px 8px 3px; border: 1px solid rgba(255, 116, 52, .55); border-radius: 2px; color: #ffd8c2; letter-spacing: .14em;
  box-shadow: 0 0 12px rgba(255, 100, 45, .25), inset 0 0 8px rgba(255, 100, 45, .18); text-shadow: 0 0 8px rgba(255, 140, 80, .7);
}
.sec-title { margin-top: 24px; font-weight: 600; font-size: clamp(36px, 5vw, 84px); line-height: 1.02; letter-spacing: -.02em; text-wrap: balance; }
.sec-title em, .about em, .sponsor-cta em, .footer__lead em, .campus em, .memorial em {
  font-family: var(--serif); font-style: italic; font-weight: 400; letter-spacing: 0; color: var(--neon);
}
.sec-title em { font-size: 1.1em; text-shadow: 0 0 26px rgba(255, 100, 40, .35); }
.lead { margin-top: 26px; max-width: 600px; font-size: clamp(16px, 1.2vw, 19px); line-height: 1.62; color: var(--mute); }
.sec-head { max-width: 860px; margin-bottom: clamp(48px, 7vh, 80px); }
.sec-head--c { margin-inline: auto; text-align: center; }
.sec-head--c .kicker { justify-content: center; }
.sec-head--c .lead { margin-inline: auto; }
.chip {
  display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: #ffd8c2; border: 1px solid var(--line-2); border-radius: 2px; background: rgba(255, 110, 50, .06);
}
.chip::before { content: ''; width: 6px; height: 6px; background: var(--neon); rotate: 45deg; box-shadow: 0 0 8px var(--neon); }

/* HUD bracket frame for panels */
.hud-frame { position: relative; }
.hud-frame > .hc { width: 14px; height: 14px; filter: none; border-color: rgba(255, 140, 90, .75); z-index: 2; }
.hud-frame > .hc--tl { left: -1px; top: -1px; } .hud-frame > .hc--tr { right: -1px; top: -1px; }
.hud-frame > .hc--bl { left: -1px; bottom: -1px; } .hud-frame > .hc--br { right: -1px; bottom: -1px; }
.hud-btn--sm { margin-top: 34px; font-size: clamp(16px, 1.2vw, 19px); }

/* buttons for forms and CTAs */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 0 22px;
  font-family: var(--f-mono); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; border-radius: 2px;
  transition: background-color .3s, color .3s, border-color .3s, box-shadow .3s;
}
.btn--solid { background: var(--orange); color: #160704; font-weight: 700; box-shadow: 0 0 22px rgba(233, 83, 31, .35); }
.btn--solid:hover { background: #ff6a2c; box-shadow: 0 0 32px rgba(255, 106, 44, .55); }
.btn--solid:disabled { opacity: .6; cursor: progress; }
.btn--ghost { border: 1px solid var(--line-2); color: var(--bone); }
.btn--ghost:hover { border-color: var(--neon); color: #fff; }
.line-btn { display: inline-flex; gap: 12px; align-items: center; padding: 16px 0; font-family: var(--f-mono); font-size: 12px; letter-spacing: .22em; text-transform: uppercase; color: var(--bone); border-bottom: 1px solid var(--neon); white-space: nowrap; }
.line-btn span { color: var(--neon); transition: transform .5s var(--ease-out); }
.line-btn:hover span { transform: translateX(6px); }

/* the campus render, re-graded: grey → ember duotone under a halftone screen */
.duo { position: relative; overflow: hidden; background: #160805; isolation: isolate; }
.duo img { display: block; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.3) brightness(.95); transition: transform 1.4s var(--ease-out); }
.duo::before { content: ''; position: absolute; inset: 0; z-index: 1; background: linear-gradient(150deg, #ffb35c 0%, #e9531f 45%, #6d0f0d 100%); mix-blend-mode: multiply; }
.duo::after { content: ''; position: absolute; inset: 0; z-index: 2; background: radial-gradient(circle, rgba(10, 4, 3, .5) 1px, transparent 1.5px) 0 0 / 5px 5px; }
.duo:hover img { transform: scale(1.04); }

/* =========================================================
   01 MANIFESTO (keeps the .next seam work: grid + glow continue from the hero)
   ========================================================= */
.about { display: block; min-height: 0; padding-top: clamp(110px, 18vh, 200px); }
.about .next__inner { max-width: none; }
.about__grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(40px, 6vw, 110px); align-items: center; }
.prose { margin-top: 30px; max-width: 560px; display: grid; gap: 18px; font-size: clamp(15px, 1.05vw, 17px); line-height: 1.7; color: rgba(244, 238, 230, .72); }
.campus { margin: 0; border: 1px solid var(--line); background: #0d0605; padding: 10px; }
.campus .duo { aspect-ratio: 16 / 11; }
.campus figcaption { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 6px 6px; font-family: var(--serif); font-size: 19px; color: var(--bone); }
.sticker {
  position: absolute; right: -18px; top: -26px; z-index: 3; display: grid; place-content: center; width: 116px; height: 116px; border-radius: 50%;
  background: var(--orange); color: #160704; text-align: center; rotate: 12deg;
  font-family: var(--f-mark); font-size: 13px; line-height: 1.05; text-transform: uppercase; letter-spacing: .02em;
  box-shadow: 0 0 0 6px #0a0504, 0 0 0 7px rgba(255, 116, 52, .5), 0 0 40px rgba(233, 83, 31, .4);
  animation: stickerSpin 22s linear infinite;
}
@keyframes stickerSpin { to { rotate: 372deg; } }

/* =========================================================
   STATS between two crossed ribbons
   ========================================================= */
.stats-band { position: relative; padding: 70px 0; overflow: hidden; overflow: clip; }
.ribbon { position: relative; width: 112vw; margin-left: -6vw; overflow: hidden; white-space: nowrap; }
.ribbon--a { rotate: -2.4deg; background: var(--orange); color: #170704; box-shadow: 0 0 40px rgba(233, 83, 31, .35); z-index: 2; }
.ribbon--b { rotate: 1.8deg; background: #0d0605; border-block: 1px solid rgba(255, 116, 52, .45); color: transparent; }
.ribbon__track { display: inline-flex; animation: ribbon 34s linear infinite; will-change: transform; }
.ribbon--b .ribbon__track { animation-direction: reverse; animation-duration: 40s; }
.ribbon__row { display: inline-flex; align-items: center; }
.ribbon__row span { padding: 16px 26px; font-family: var(--f-mark); font-size: clamp(24px, 3vw, 46px); line-height: 1; text-transform: uppercase; }
.ribbon__row span::after { /* separator: a double slash, the blade's mark */
  content: ''; display: inline-block; width: .11em; height: .78em; margin: 0 .3em 0 1.1em; vertical-align: -.06em;
  background: #170704; transform: skewX(-28deg); box-shadow: .24em 0 0 #170704; -webkit-text-stroke: 0;
}
.ribbon--a .ribbon__row span:nth-child(even) { color: transparent; -webkit-text-stroke: 1.2px #170704; }
.ribbon--b .ribbon__row span { -webkit-text-stroke: 1.2px rgba(255, 140, 90, .8); }
.ribbon--b .ribbon__row span:nth-child(odd) { color: #ffb08a; -webkit-text-stroke: 0; }
.ribbon--b .ribbon__row span::after { background: var(--neon); box-shadow: .24em 0 0 var(--neon), 0 0 10px rgba(255, 116, 52, .6); }
@keyframes ribbon { to { transform: translate3d(-50%, 0, 0); } }

.stats-band .wrap { padding: clamp(60px, 9vh, 100px) var(--gutter); }
.stats { display: grid; grid-template-columns: repeat(4, 1fr); }
.stat { display: grid; grid-template-columns: auto 1fr; align-items: baseline; column-gap: 8px; padding: 6px clamp(16px, 2.4vw, 40px); border-left: 1px solid var(--line-2); }
.stat:first-child { border-left: 0; padding-left: 0; }
.stat__v { font-weight: 700; font-size: clamp(54px, 6.6vw, 112px); line-height: .95; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.stat__u { font-family: var(--f-mono); font-size: clamp(14px, 1.3vw, 20px); color: var(--neon); text-shadow: 0 0 10px rgba(255, 116, 52, .7); }
.stat__l { grid-column: 1 / -1; margin-top: 12px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute); }

/* =========================================================
   KINETIC — letters drift apart and stretch with scroll (--p 0..1 set by JS)
   ========================================================= */
.kinetic { position: relative; height: 230vh; --p: 0; }
.kinetic__sticky { position: sticky; top: 0; height: 100vh; height: 100svh; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; }
.kinetic__sticky::before { /* the hero grid, faint, behind the type */
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background-image: linear-gradient(rgba(255, 200, 170, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 200, 170, .045) 1px, transparent 1px);
  background-size: var(--cell, 144px) var(--cell, 144px); background-position: var(--gx, 0) 0;
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, #000, transparent); mask-image: radial-gradient(ellipse 70% 60% at 50% 50%, #000, transparent);
}
.kinetic__word { position: relative; font-family: var(--f-mark); font-size: clamp(64px, 15vw, 270px); line-height: .9; white-space: nowrap; text-transform: uppercase; }
.k-l {
  display: inline-block;
  transform: translate3d(calc((var(--i) - var(--c)) * var(--p) * .34em + var(--dir) * (var(--p) - .5) * 14vw), 0, 0) scaleY(calc(1 + var(--p) * .28));
  will-change: transform;
}
.kinetic__word:nth-child(1) { color: var(--bone); }
.kinetic__word.is-outline { color: transparent; -webkit-text-stroke: 2px var(--neon); filter: drop-shadow(0 0 14px rgba(255, 100, 40, .45)); }
.kinetic__word:nth-child(3) .k-l { background: linear-gradient(180deg, #f7c548, #e9531f 55%, #8e1616); -webkit-background-clip: text; background-clip: text; color: transparent; }

/* =========================================================
   02 LEGACY
   ========================================================= */
.legacy__grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(48px, 7vw, 120px); align-items: center; }
.diamond { position: relative; width: min(420px, 70%); margin-bottom: 90px !important; aspect-ratio: 1; margin: 0 auto; }
.diamond__img, .diamond__rim { position: absolute; inset: 0; rotate: 45deg; }
.diamond__img { overflow: hidden; border: 1px solid rgba(255, 116, 52, .5); }
.diamond__img img { position: absolute; left: 50%; top: 50%; width: 150%; height: 150%; max-width: none; translate: -50% -50%; rotate: -45deg; }
.diamond__img:hover img { transform: none; }
.diamond__rim { inset: -22px; border: 1px solid var(--line-2); box-shadow: 0 0 60px rgba(233, 83, 31, .12); }
.diamond__rim::before, .diamond__rim::after { content: ''; position: absolute; width: 10px; height: 10px; background: var(--neon); box-shadow: 0 0 12px var(--neon); }
.diamond__rim::before { left: -5px; top: -5px; } .diamond__rim::after { right: -5px; bottom: -5px; }
.diamond__cap { position: absolute; left: 50%; bottom: calc(-21% - 56px); translate: -50% 0; font-family: var(--f-mono); font-size: 11px; letter-spacing: .3em; text-transform: uppercase; color: var(--mute); white-space: nowrap; }

.editions { position: relative; margin-top: 48px; display: grid; gap: 0; }
.editions::before { content: ''; position: absolute; left: 47px; top: 10px; bottom: 10px; width: 1px; background: linear-gradient(180deg, var(--line-2), rgba(255, 116, 52, .7)); }
.edition { position: relative; display: grid; grid-template-columns: 96px 1fr; gap: 28px; align-items: center; padding: 20px 0; }
.edition__yr { justify-self: center; position: relative; z-index: 1; display: grid; place-items: center; width: 70px; height: 70px; background: #0a0504; border: 1px solid var(--line-2); font-family: var(--f-mark); font-size: 22px; color: var(--mute); }
.edition h3 { font-weight: 600; font-size: clamp(22px, 2vw, 30px); letter-spacing: -.01em; }
.edition p { margin-top: 6px; color: var(--mute); font-size: 16px; }
.edition.is-now .edition__yr { color: #160704; background: var(--orange); border-color: var(--orange); box-shadow: 0 0 30px rgba(233, 83, 31, .55); }
.edition.is-now h3 { color: #fff; text-shadow: 0 0 18px rgba(255, 116, 52, .55); }
.edition.is-now p { color: var(--neon); font-family: var(--serif); font-style: italic; font-size: 21px; }

/* =========================================================
   03 TRACKS
   ========================================================= */
.tracks::after { /* grid that fades in around the section */
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background-image: linear-gradient(rgba(255, 200, 170, .04) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 200, 170, .04) 1px, transparent 1px);
  background-size: var(--cell, 144px) var(--cell, 144px); background-position: var(--gx, 0) 0;
  -webkit-mask-image: radial-gradient(ellipse 60% 55% at 50% 50%, #000, transparent); mask-image: radial-gradient(ellipse 60% 55% at 50% 50%, #000, transparent);
}
.tracks { isolation: isolate; }
.track-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; }
.track { grid-column: span 2; }
.track:nth-child(-n+2) { grid-column: span 3; }
.track {
  position: relative; overflow: hidden; display: flex; flex-direction: column; min-height: 320px; padding: clamp(26px, 2.6vw, 38px);
  background: var(--panel); border: 1px solid var(--line); --sx: 50%; --sy: 50%;
}
.track::before { /* spotlight under the pointer */
  content: ''; position: absolute; inset: 0; opacity: 0; transition: opacity .4s; pointer-events: none;
  background: radial-gradient(340px circle at var(--sx) var(--sy), rgba(255, 110, 50, .14), transparent 70%);
}
.track:hover { border-color: rgba(255, 116, 52, .5); }
.track:hover::before { opacity: 1; }
.track > * { position: relative; }
.track__no { position: absolute; right: -6px; top: -18px; font-family: var(--f-mark); font-size: clamp(110px, 10vw, 170px); line-height: 1; color: transparent; -webkit-text-stroke: 1px rgba(255, 140, 90, .2); transition: -webkit-text-stroke-color .4s; pointer-events: none; }
.track:hover .track__no { -webkit-text-stroke-color: rgba(255, 140, 90, .55); }
.track__code { font-family: var(--f-mono); font-size: 11px; letter-spacing: .24em; color: var(--neon); }
.track h3 { margin-top: auto; padding-top: 70px; font-weight: 600; font-size: clamp(26px, 2.3vw, 36px); line-height: 1.05; letter-spacing: -.01em; }
.track > p:not(.track__code) { margin-top: 14px; max-width: 460px; color: var(--mute); line-height: 1.6; font-size: 15.5px; }
.tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
.tags li { padding: 6px 10px; font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; border: 1px solid var(--line-2); color: rgba(244, 238, 230, .75); }
.track--open { background: linear-gradient(135deg, rgba(233, 83, 31, .14), rgba(142, 22, 22, .08)); border-color: rgba(255, 116, 52, .35); }

/* =========================================================
   05 EXPERIENCE
   ========================================================= */
.facts { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(20px, 3vw, 48px); margin-bottom: 56px; }
.facts li, .kv li { display: grid; align-content: start; gap: 10px; padding-top: 18px; border-top: 1px solid var(--line-2); }
.facts span, .kv span { font-family: var(--f-mono); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--neon); }
.facts b, .kv b { font-weight: 500; font-size: clamp(16px, 1.3vw, 20px); line-height: 1.45; }
.gallery { display: grid; grid-template-columns: 1.7fr 1fr; grid-template-rows: repeat(2, minmax(200px, 1fr)); gap: 18px; height: clamp(440px, 64vh, 640px); }
.tile { position: relative; margin: 0; overflow: hidden; border: 1px solid var(--line); }
.tile--wide { grid-row: span 2; }
.tile .duo { position: absolute; inset: 0; }
.tile figcaption { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 40px 22px 18px; background: linear-gradient(0deg, rgba(8, 4, 3, .92), transparent); }
.tile figcaption b { font-weight: 600; font-size: 20px; }
.tile figcaption span { font-family: var(--f-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--mute); }
.tile--ph { background: #0d0605; }
.tile--ph::before { /* halftone sunrise placeholder */
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle, rgba(255, 116, 52, .55) 1.3px, transparent 1.8px) 0 0 / 9px 9px;
  -webkit-mask-image: radial-gradient(circle at 50% 110%, #000 0 30%, transparent 62%); mask-image: radial-gradient(circle at 50% 110%, #000 0 30%, transparent 62%);
}
.tile__soon { position: absolute; left: 22px; top: 20px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute); }
.venue-line { margin-top: 22px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute); }

/* =========================================================
   06 PRIZES — podium 2 · 1 · 3
   ========================================================= */
.podium { display: grid; grid-template-columns: 1fr 1.15fr 1fr; gap: 18px; align-items: end; max-width: 1120px; margin: 0 auto; }
.prize { position: relative; display: flex; flex-direction: column; padding: 32px 30px 0; background: var(--panel); border: 1px solid var(--line); overflow: hidden; }
.prize header { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.prize__place { font-family: var(--f-mark); font-size: 34px; line-height: 1; }
.prize__title { font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute); text-align: right; }
.prize__amt { position: relative; margin-top: 46px; font-weight: 700; font-size: clamp(40px, 4.2vw, 68px); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.prize ul { position: relative; display: grid; gap: 8px; margin: 22px 0 30px; }
.prize li { padding-left: 18px; position: relative; color: var(--mute); font-size: 15px; }
.prize li::before { content: ''; position: absolute; left: 0; top: .55em; width: 6px; height: 6px; background: var(--neon); rotate: 45deg; }
.prize__base { display: block; margin: 0 -30px; height: 90px; border-top: 1px solid rgba(255, 116, 52, .5); background: repeating-linear-gradient(-45deg, rgba(255, 120, 60, .13) 0 1px, transparent 1px 11px); }
.prize--2 .prize__base { height: 70px; }
.prize--3 .prize__base { height: 44px; }
.prize--1 { padding-top: 40px; border-color: rgba(255, 116, 52, .6); background: linear-gradient(180deg, rgba(233, 83, 31, .16), rgba(20, 8, 5, .6) 60%); box-shadow: 0 0 60px rgba(233, 83, 31, .18), inset 0 0 40px rgba(255, 100, 45, .08); }
.prize--1 .prize__place { color: var(--neon); text-shadow: 0 0 18px rgba(255, 116, 52, .7); }
.prize--1 .prize__amt { font-size: clamp(48px, 5.2vw, 84px); text-shadow: 0 0 30px rgba(255, 116, 52, .35); }
.prize--1 .prize__base { height: 130px; }
.prize__sun { position: absolute; left: 50%; top: 34%; width: 360px; height: 360px; translate: -50% -50%; opacity: .26; pointer-events: none; }
.prize__sun canvas, .countdown__sun canvas { display: block; width: 100%; height: 100%; }
.special { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 12px; margin-top: 52px; }
.special__k { margin-right: 6px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--mute); }

/* =========================================================
   07 SPONSORS
   ========================================================= */
.sponsor-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.sponsor { display: grid; place-items: center; height: 150px; border: 1px dashed var(--line-2); font-family: var(--f-mono); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: rgba(244, 238, 230, .35); transition: border-color .3s, color .3s; }
.sponsor:hover { border-color: rgba(255, 116, 52, .55); color: var(--bone); }
.sponsor-cta { display: flex; justify-content: space-between; align-items: center; gap: 32px; margin-top: 18px; padding: clamp(28px, 3vw, 44px); border: 1px solid var(--line); background: var(--panel); }
.sponsor-cta h3 { font-weight: 600; font-size: clamp(22px, 2.2vw, 34px); line-height: 1.15; letter-spacing: -.01em; }
.sponsor-cta p { margin-top: 10px; color: var(--mute); }

/* =========================================================
   08 TIMELINE — the rail fills as you scroll (--p set by JS)
   ========================================================= */
.timeline__grid { display: grid; grid-template-columns: 1fr 1.25fr; gap: clamp(40px, 7vw, 120px); align-items: start; }
.timeline__side { position: sticky; top: 130px; }
.tl { position: relative; padding-left: 56px; --p: 0; }
.tl::before, .tl::after { content: ''; position: absolute; left: 16px; top: 8px; bottom: 8px; width: 1px; }
.tl::before { background: var(--line-2); }
.tl::after { background: linear-gradient(180deg, #f7c548, var(--orange) 60%, var(--crimson)); transform: scaleY(var(--p)); transform-origin: top; box-shadow: 0 0 10px rgba(255, 116, 52, .7); }
.tl__item { position: relative; padding-bottom: 54px; }
.tl__item:last-child { padding-bottom: 0; }
.tl__node { position: absolute; left: -45px; top: 6px; width: 11px; height: 11px; rotate: 45deg; background: #0a0504; border: 1px solid var(--line-2); transition: background-color .4s, border-color .4s, box-shadow .4s; }
.tl__item.is-past .tl__node { background: var(--neon); border-color: var(--neon); box-shadow: 0 0 14px var(--neon); }
.tl__date { font-family: var(--f-mono); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--neon); }
.tl__item h3 { margin-top: 10px; font-weight: 600; font-size: clamp(22px, 2vw, 30px); letter-spacing: -.01em; transition: color .4s; color: rgba(244, 238, 230, .6); }
.tl__item.is-past h3 { color: var(--bone); }
.tl__item p { margin-top: 8px; max-width: 480px; color: var(--mute); line-height: 1.6; }

/* =========================================================
   10 FAQ
   ========================================================= */
.faq__grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(40px, 6vw, 110px); align-items: start; }
.contacts { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-top: 40px; }
.contact { display: grid; gap: 6px; padding: 20px; border: 1px solid var(--line); background: var(--panel); }
.contact span { font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--mute); margin-bottom: 6px; }
.contact a { color: rgba(244, 238, 230, .8); font-size: 15px; transition: color .3s; overflow-wrap: anywhere; }
.contact a:hover { color: var(--neon); }
.acc { border-top: 1px solid var(--line-2); }
.acc__item { border-bottom: 1px solid var(--line-2); }
.acc__btn { display: grid; grid-template-columns: 44px 1fr 24px; align-items: center; gap: 12px; width: 100%; padding: 24px 0; text-align: left; }
.acc__n { font-family: var(--f-mono); font-size: 12px; color: var(--neon); }
.acc__q { font-weight: 500; font-size: clamp(17px, 1.4vw, 21px); line-height: 1.35; transition: color .3s; }
.acc__btn:hover .acc__q { color: #fff; }
.acc__i { position: relative; width: 16px; height: 16px; justify-self: end; }
.acc__i::before, .acc__i::after { content: ''; position: absolute; left: 0; top: 50%; width: 100%; height: 1.5px; background: var(--neon); transition: transform .45s var(--ease-out); }
.acc__i::after { transform: rotate(90deg); }
.acc__item.is-open .acc__i::after { transform: rotate(0deg); }
.acc__item.is-open .acc__q { color: #fff; }
.acc__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .5s var(--ease-out); }
.acc__item.is-open .acc__panel { grid-template-rows: 1fr; }
.acc__panel > div { overflow: hidden; }
.acc__panel p { padding: 0 24px 26px 56px; color: var(--mute); line-height: 1.65; }

/* =========================================================
   11 RULES
   ========================================================= */
.rules__grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(40px, 6vw, 110px); align-items: start; }
.rules__list { border-top: 1px solid var(--line-2); }
.rules__list li { display: grid; grid-template-columns: 56px 1fr; gap: 12px; padding: 22px 0; border-bottom: 1px solid var(--line-2); font-size: clamp(16px, 1.25vw, 19px); line-height: 1.5; color: rgba(244, 238, 230, .82); }
.rules__list li span { font-family: var(--f-mono); font-size: 12px; color: var(--neon); padding-top: .3em; }

/* =========================================================
   REMEMBRANCE — quiet: no neon, just a warm candle of light
   ========================================================= */
.remembrance { background: radial-gradient(40vmax 30vmax at 50% 0%, rgba(160, 70, 30, .07), transparent 70%); }
.memorial { max-width: 680px; margin: 0 auto; display: grid; gap: 20px; font-family: var(--serif); font-size: clamp(18px, 1.45vw, 22px); line-height: 1.65; color: rgba(244, 238, 230, .78); }
.memorial em { color: #ffcfae; }
.memorial__k { justify-self: center; position: relative; padding-top: 36px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .3em; text-transform: uppercase; color: var(--mute); margin-bottom: 16px; }
.memorial__k::before { content: ''; position: absolute; left: 50%; top: 0; width: 6px; height: 14px; translate: -50% 0; border-radius: 50% 50% 40% 40%; background: radial-gradient(circle at 50% 70%, #ffe3b0, #f39a2c 60%, transparent 70%); box-shadow: 0 0 18px rgba(247, 197, 72, .6); animation: flicker 3.2s ease-in-out infinite; }
@keyframes flicker { 0%, 100% { opacity: 1; transform: scaleY(1); } 40% { opacity: .82; transform: scaleY(.92); } 70% { opacity: .95; transform: scaleY(1.06); } }
.memorial__sign { margin-top: 18px; text-align: center; font-family: var(--f-mark); font-size: 28px; color: var(--bone); }
.memorial__foot { text-align: center; font-family: var(--f-mono); font-size: 12px; letter-spacing: .08em; color: var(--mute); }

/* =========================================================
   COUNTDOWN — the intro's halftone sun rises one last time
   ========================================================= */
.countdown { overflow: hidden; isolation: isolate; display: flex; align-items: center; min-height: min(100vmin, 920px); padding-block: 120px; }
.countdown > .wrap { width: min(1320px, 100%); }
.countdown__sun { position: absolute; z-index: -1; right: -12vmin; top: 50%; width: min(84vmin, 820px); aspect-ratio: 1; translate: 0 -50%; opacity: .7; animation: spin 140s linear infinite; }
.countdown::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, var(--void) 30%, rgba(5, 4, 4, .55) 60%, rgba(5, 4, 4, .2)); pointer-events: none; }
.countdown__inner { display: grid; grid-template-columns: 1fr auto; gap: 48px; align-items: center; }
.countdown__clock { display: grid; justify-items: end; gap: 10px; }
.clock { display: flex; gap: clamp(10px, 1.4vw, 22px); }
.cd { display: grid; justify-items: center; gap: 10px; min-width: clamp(70px, 8vw, 128px); padding: 18px 10px 14px; border: 1px solid rgba(255, 116, 52, .35); background: rgba(10, 5, 4, .7); box-shadow: inset 0 0 22px rgba(255, 100, 45, .1); }
.cd__n { font-weight: 700; font-size: clamp(42px, 5.4vw, 92px); line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.cd__n.flip { animation: flip .5s var(--ease-out); }
@keyframes flip { from { transform: perspective(300px) rotateX(-70deg); opacity: .2; } }
.cd__l { font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .26em; text-transform: uppercase; color: var(--neon); }
.clock__live { font-family: var(--f-mono); letter-spacing: .2em; text-transform: uppercase; color: var(--neon); }

/* =========================================================
   FOOTER
   ========================================================= */
.footer { position: relative; padding: clamp(80px, 12vh, 140px) var(--gutter) 34px; border-top: 1px solid var(--line-2); overflow: hidden; }
.footer__mark { display: flex; align-items: baseline; gap: .25em; font-size: clamp(40px, 9.4vw, 170px); line-height: 1; white-space: nowrap; }
.footer__mark .ct-word { display: inline-flex; align-items: baseline; }
.f-cap { font-family: 'Pinyon Script', cursive; font-size: 1.15em; background: linear-gradient(180deg, #fff, #c9c2bb 45%, #6b625c 55%, #f4eee6); -webkit-background-clip: text; background-clip: text; color: transparent; padding: .1em .06em 0; }
.f-pix { font-family: 'Pixelify Sans', monospace; font-weight: 500; color: var(--bone); }
.f-ver { font-family: 'Inter', system-ui, sans-serif; font-weight: 300; font-size: .62em; color: rgba(255, 110, 50, .14); -webkit-text-stroke: .016em var(--neon); text-shadow: 0 0 4px rgba(255, 140, 80, .9), 0 0 22px rgba(255, 100, 40, .5); margin-left: .1em; }
.footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px; margin-top: 60px; padding-top: 40px; border-top: 1px solid var(--line); }
.footer__grid nav, .footer__grid > div:last-child { display: grid; gap: 10px; align-content: start; }
.footer__grid a { color: rgba(244, 238, 230, .78); transition: color .3s; justify-self: start; }
.footer__grid a:hover { color: var(--neon); }
.footer__grid nav { grid-template-columns: 1fr 1fr; column-gap: 24px; }
.footer__grid nav .footer__small { grid-column: 1 / -1; }
.footer__lead { font-size: clamp(20px, 1.8vw, 28px); line-height: 1.3; }
.footer__small { margin-bottom: 6px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .14em; line-height: 1.8; text-transform: uppercase; color: var(--mute); }
.footer__lead + .footer__small { margin-top: 22px; text-transform: none; letter-spacing: .04em; }
.footer__bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-top: 70px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: var(--mute); }
.footer__bottom b { color: var(--bone); font-weight: 400; }
.footer__bottom a:hover { color: var(--neon); }

/* active nav link (set by sections.js) */
.nav__links a.is-active { color: var(--bone); }
.nav__links a.is-active::after { transform: scaleX(1); }

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 1080px) {
  .track-grid { grid-template-columns: 1fr 1fr; }
  .track, .track:nth-child(-n+2) { grid-column: span 1; }
  .track--open { grid-column: 1 / -1; }
  .countdown__inner { grid-template-columns: 1fr; }
  .countdown__clock { justify-items: start; }
}
@media (max-width: 860px) {
  .about__grid, .legacy__grid, .timeline__grid, .faq__grid, .rules__grid { grid-template-columns: 1fr; }
  .sticker { width: 92px; height: 92px; font-size: 11px; right: -6px; top: -20px; }
  .stats { grid-template-columns: 1fr 1fr; row-gap: 40px; }
  .stat:nth-child(3) { border-left: 0; padding-left: 0; }
  .kinetic { height: 170vh; }
  .diamond { width: min(320px, 74%); margin-bottom: 70px; }
  .track-grid { grid-template-columns: 1fr; }
  .track, .track:nth-child(-n+2), .track--open { grid-column: auto; min-height: 0; }
  .track h3 { padding-top: 48px; }
  .facts { grid-template-columns: 1fr; }
  .gallery { grid-template-columns: 1fr 1fr; grid-template-rows: 260px 200px; height: auto; }
  .tile--wide { grid-row: auto; grid-column: 1 / -1; }
  .podium { grid-template-columns: 1fr; }
  .prize--1 { order: -1; }
  .prize__base, .prize--1 .prize__base, .prize--2 .prize__base, .prize--3 .prize__base { height: 30px; }
  .sponsor-grid { grid-template-columns: 1fr; }
  .sponsor { height: 96px; }
  .sponsor-cta { flex-direction: column; align-items: flex-start; }
  .timeline__side { position: static; }
  .contacts { grid-template-columns: 1fr; }
  .footer__grid { grid-template-columns: 1fr; }
  .footer__mark { flex-wrap: wrap; font-size: 15vw; }
  .countdown__sun { right: -40vmin; width: 110vmin; opacity: .5; }
  .clock { width: 100%; }
  .cd { flex: 1; min-width: 0; }
}
@media (max-width: 520px) {
  .gallery { grid-template-columns: 1fr; grid-template-rows: 240px 180px 180px; }
  .acc__panel p { padding-left: 0; padding-right: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .k-l { transform: none !important; }
  .countdown__sun, .sticker { animation: none; }
}

/* =========================================================
   MOTION LAYER (driven by sections.js)
   ========================================================= */
html.has-ss { scroll-behavior: auto; }
.js-rv .rv { transform: translate3d(0, 48px, 0); transition: opacity 1.3s var(--ease-out) var(--rd, 0ms), transform 1.6s var(--ease-out) var(--rd, 0ms); }

/* masked headlines: words rise out of their slots; the italic words sharpen out of a blur */
.js-rv .sec-title.rv.is-split { opacity: 1; transform: none; }
.is-split .w { display: inline-block; overflow: clip; padding: .1em .08em .2em; margin: -.1em -.08em -.2em; vertical-align: top; }
.is-split .wi { display: inline-block; transform: translate3d(0, 112%, 0) rotate(4deg); transform-origin: 0 100%; transition: transform 1.3s cubic-bezier(.19, 1, .22, 1) var(--wd, 0ms); }
.is-split .wi--em { opacity: 0; filter: blur(12px); transition: transform 1.3s cubic-bezier(.19, 1, .22, 1) var(--wd, 0ms), opacity 1.4s var(--ease-out) calc(var(--wd, 0ms) + 120ms), filter 1.4s var(--ease-out) calc(var(--wd, 0ms) + 120ms); }
.is-split.is-in .wi, .is-in .is-split .wi { transform: none; opacity: 1; filter: none; }

/* section hairlines draw out from the centre */
.sec + .sec::before { transform: scaleX(0); transition: transform 1.8s cubic-bezier(.77, 0, .18, 1); }
.sec.is-on::before { transform: scaleX(1); }

/* images unveil: a curtain lifts while the picture settles from a slow zoom */
.js-rv .duo { clip-path: inset(100% 0 0 0); transition: clip-path 1.5s cubic-bezier(.77, 0, .18, 1) .1s; }
.js-rv .is-in .duo, .js-rv .is-in.duo { clip-path: inset(0); }
.js-rv .duo img { scale: 1.28; transition: scale 2.4s cubic-bezier(.16, 1, .3, 1) .1s, transform 1.4s var(--ease-out); }
.js-rv .is-in .duo img { scale: 1; }
.campus .duo img, .tile .duo img { height: 118%; margin-top: -9%; translate: 0 var(--py, 0); }

/* pointer tilt (enabled once the panel has revealed) */
.tilt { transform-style: preserve-3d; }
.js-rv .tilt.is-tiltable, .tilt.is-tiltable { transform: perspective(1000px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); transition: opacity 1s, transform .12s linear, border-color .4s; }

/* ribbons are driven by scroll velocity in JS */
.ribbon__track.is-js { animation: none; }

/* scroll HUD */
.hud-prog {
  position: fixed; left: var(--gutter); bottom: 24px; z-index: 30; display: flex; align-items: center; gap: 14px;
  font-family: var(--f-mono); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; color: var(--mute);
  opacity: 0; transform: translate3d(0, 10px, 0); transition: opacity .6s var(--ease-out), transform .8s var(--ease-out); pointer-events: none;
  mix-blend-mode: difference;
}
.hud-prog.is-on { opacity: 1; transform: none; }
.hud-prog__idx { color: #fff; }
.hud-prog__bar { position: relative; width: 90px; height: 1px; background: rgba(255, 255, 255, .22); overflow: hidden; }
.hud-prog__bar i { position: absolute; inset: 0; background: #fff; transform: scaleX(0); transform-origin: left; }
@media (max-width: 860px) { .hud-prog { display: none; } }
@media (prefers-reduced-motion: reduce) {
  .js-rv .duo { clip-path: none; } .js-rv .duo img { scale: 1; }
  .sec + .sec::before { transform: none; }
}

/* never let anything widen the mobile layout viewport: clip (unlike hidden) creates no scroll container, so sticky still works */
html, body { overflow-x: clip; }
.about__grid > *, .legacy__grid > *, .timeline__grid > *, .faq__grid > *, .rules__grid > *, .reg-band > * { min-width: 0; }
@media (max-width: 860px) { .diamond__rim { inset: -12px; } }

/* =========================================================
   03 TRACKS — software (main) + hardware
   ========================================================= */
.ptracks { display: grid; grid-template-columns: 1.15fr 1fr; gap: 18px; align-items: stretch; }
.ptrack {
  position: relative; overflow: hidden; display: flex; flex-direction: column; padding: clamp(28px, 3vw, 48px);
  background: var(--panel); border: 1px solid var(--line); --sx: 50%; --sy: 50%; min-width: 0;
}
.ptrack::before { content: ''; position: absolute; inset: 0; opacity: 0; transition: opacity .4s; pointer-events: none; background: radial-gradient(420px circle at var(--sx) var(--sy), rgba(255, 110, 50, .13), transparent 70%); }
.ptrack:hover::before { opacity: 1; }
.ptrack > * { position: relative; }
.ptrack--sw { border-color: rgba(255, 116, 52, .45); background: linear-gradient(150deg, rgba(233, 83, 31, .15), rgba(20, 8, 5, .5) 55%); box-shadow: 0 0 70px rgba(233, 83, 31, .1); }
.ptrack > .ptrack__glyph { position: absolute; right: -4px; top: -20px; font-family: var(--f-mark); font-size: clamp(120px, 13vw, 210px); line-height: 1; color: transparent; -webkit-text-stroke: 1px rgba(255, 140, 90, .22); pointer-events: none; transition: -webkit-text-stroke-color .4s; }
.ptrack:hover .ptrack__glyph { -webkit-text-stroke-color: rgba(255, 140, 90, .5); }
.ptrack__top { display: flex; align-items: center; gap: 14px; }
.ptrack h3 { margin-top: clamp(70px, 10vh, 120px); font-weight: 600; font-size: clamp(40px, 4.4vw, 72px); line-height: 1; letter-spacing: -.02em; }
.ptrack--sw h3 { text-shadow: 0 0 30px rgba(255, 116, 52, .3); }
.ptrack > p:not(.track__code) { margin-top: 18px; max-width: 520px; color: rgba(244, 238, 230, .72); line-height: 1.6; font-size: clamp(15px, 1.1vw, 17px); }
.ptrack__facts { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin: 30px 0 34px; }
.ptrack__facts li { display: grid; align-content: start; gap: 6px; padding-top: 14px; border-top: 1px solid var(--line-2); }
.ptrack__facts span { font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--neon); }
.ptrack__facts b { font-weight: 500; font-size: 15px; line-height: 1.45; }
.ptrack__cta { margin-top: auto; align-self: flex-start; }
.hud-btn--solid { background: var(--orange); color: #1a0703; text-shadow: none; box-shadow: 0 0 26px rgba(233, 83, 31, .5); }
.hud-btn--solid .hud-btn__arrow { color: #1a0703; }
.hud-btn--solid:hover { background: #ff6a2c; box-shadow: 0 0 40px rgba(255, 106, 44, .7); }
.reg-note { min-height: 1.6em; margin-top: 18px; font-family: var(--f-mono); font-size: 12px; letter-spacing: .04em; line-height: 1.6; color: var(--mute); opacity: 0; transform: translateY(6px); transition: opacity .5s var(--ease-out), transform .6s var(--ease-out); }
.reg-note.is-on { opacity: 1; transform: none; }
.reg-note b { color: var(--bone); font-weight: 600; }
.reg-note a { color: var(--neon); border-bottom: 1px solid currentColor; }

/* =========================================================
   04 FORMAT — two rounds of bidding
   ========================================================= */
.format { isolation: isolate; }
.format::after {
  content: ''; position: absolute; inset: 40% 0 0; z-index: -1; pointer-events: none;
  background: radial-gradient(circle, rgba(255, 116, 52, .22) 1.2px, transparent 1.7px) 0 0 / 11px 11px;
  -webkit-mask-image: radial-gradient(ellipse 55% 50% at 50% 60%, #000, transparent); mask-image: radial-gradient(ellipse 55% 50% at 50% 60%, #000, transparent);
}
.flow { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; list-style: none; }
.flow::before {
  content: ''; position: absolute; left: 0; right: 0; top: 33px; height: 1px; z-index: -1;
  background: linear-gradient(90deg, rgba(255, 116, 52, .7), rgba(255, 116, 52, .15)); transform: scaleX(0); transform-origin: left; transition: transform 2.2s cubic-bezier(.77, 0, .18, 1) .3s;
}
.format.is-on .flow::before { transform: scaleX(1); }
.flow__step { position: relative; padding: 24px 24px 28px; background: #0c0605; border: 1px solid var(--line); min-width: 0; }
.flow__n { font-family: var(--f-mono); font-size: 11px; color: var(--neon); }
.flow__step > .coin, .flow__tag { position: absolute; right: 22px; top: 20px; }
.flow__tag { padding: 4px 8px 3px; font-family: var(--f-mono); font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: #ffd8c2; border: 1px solid rgba(255, 116, 52, .45); }
.flow__step h3 { margin-top: 44px; font-weight: 600; font-size: clamp(20px, 1.7vw, 26px); letter-spacing: -.01em; }
.flow__step p { margin-top: 10px; color: var(--mute); line-height: 1.6; font-size: 15px; }

/* the Crypt Coin: a tiny minted disc that turns now and then */
.coin {
  display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; flex: none;
  font-family: 'Pinyon Script', cursive; font-size: 15px; line-height: 1; color: #3a1405;
  background: radial-gradient(circle at 35% 30%, #fff4cf, #f7c548 35%, #e9831f 70%, #a8410f);
  box-shadow: inset 0 0 0 1.5px rgba(255, 240, 200, .55), 0 0 12px rgba(247, 197, 72, .35);
  animation: coinTurn 3.6s linear infinite;
}
.coin--lg { width: 44px; height: 44px; font-size: 30px; }
@keyframes coinTurn { 0%, 70% { transform: rotateY(0); } 85% { transform: rotateY(180deg); } 100% { transform: rotateY(360deg); } }

.auction { margin-top: 56px; border: 1px solid var(--line-2); background: linear-gradient(180deg, rgba(18, 8, 6, .92), rgba(10, 5, 4, .92)); box-shadow: 0 40px 100px rgba(0, 0, 0, .5); }
.auction__bar { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 24px; border-bottom: 1px solid var(--line); font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; text-transform: uppercase; }
.auction__live { display: inline-flex; align-items: center; gap: 10px; color: var(--mute); }
.auction__live i { width: 7px; height: 7px; border-radius: 50%; background: #ff4b2b; box-shadow: 0 0 10px #ff4b2b; animation: liveBlink 1.4s steps(1) infinite; }
@keyframes liveBlink { 50% { opacity: .2; } }
.auction__round { color: #ffd8c2; }
.auction__body { display: grid; grid-template-columns: 300px 1fr; }
.wallet { padding: 28px 24px; border-right: 1px solid var(--line); }
.wallet__k { font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .22em; text-transform: uppercase; color: var(--mute); }
.wallet__bal { display: flex; align-items: center; gap: 14px; margin-top: 16px; font-weight: 700; font-size: clamp(40px, 4vw, 60px); line-height: 1; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.wallet__bal.is-hit #aBal { animation: hit .8s var(--ease-out); }
@keyframes hit { 0% { color: #ff6a3c; text-shadow: 0 0 24px rgba(255, 90, 40, .9); } 100% { color: inherit; text-shadow: none; } }
.wallet__sub { margin-top: 8px; font-size: 14px; color: var(--mute); }
.wallet__won { margin-top: 30px; padding-top: 18px; border-top: 1px solid var(--line); }
.wallet__won ul { display: grid; gap: 10px; margin-top: 12px; }
.wallet__won li { font-size: 14px; line-height: 1.4; animation: wonIn .6s var(--ease-out); }
@keyframes wonIn { from { opacity: 0; transform: translateY(10px); } }
.wallet__won li span { display: block; font-family: var(--f-mono); font-size: 10px; letter-spacing: .2em; text-transform: uppercase; color: var(--neon); }
.wallet__won li em { font-style: normal; color: var(--mute); font-family: var(--f-mono); font-size: 12px; }
.wallet__won li.is-empty { color: rgba(244, 238, 230, .35); }

.lots { display: grid; align-content: start; }
.lot { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 150px 120px; align-items: center; gap: 16px; padding: 20px 24px; border-bottom: 1px solid var(--line); overflow: hidden; --life: 1; transition: background-color .5s, opacity .6s; }
.lot:last-child { border-bottom: 0; }
.lot__name { font-weight: 600; font-size: clamp(15px, 1.25vw, 19px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lot__lead { font-family: var(--f-mono); font-size: 11px; letter-spacing: .1em; color: var(--mute); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lot__bid { display: inline-flex; align-items: center; justify-content: flex-end; gap: 8px; font-family: var(--f-mono); font-size: 18px; font-variant-numeric: tabular-nums; }
.lot__bid .coin { width: 16px; height: 16px; font-size: 11px; animation: none; }
.lot__time { position: absolute; left: 0; bottom: 0; height: 2px; width: 100%; background: linear-gradient(90deg, var(--crimson), var(--neon)); transform: scaleX(var(--life)); transform-origin: left; transition: transform .6s var(--ease-out); }
.lot.is-bump .lot__bid b { animation: bump .5s var(--ease-out); }
@keyframes bump { 0% { color: #fff; text-shadow: 0 0 14px rgba(255, 140, 80, .9); } 100% { color: inherit; text-shadow: none; } }
.lot.is-you { background: rgba(255, 110, 50, .07); }
.lot.is-you .lot__lead { color: var(--neon); }
.lot__sold {
  position: absolute; right: 150px; top: 50%; padding: 4px 10px; font-family: var(--f-mark); font-size: 14px; letter-spacing: .1em; text-transform: uppercase;
  color: var(--neon); border: 2px solid var(--neon); rotate: -8deg; translate: 0 -50%; opacity: 0; scale: 1.6; transition: opacity .3s, scale .4s cubic-bezier(.2, 1.6, .4, 1);
}
.lot.is-sold .lot__sold { opacity: 1; scale: 1; }
.lot.is-sold .lot__time { transform: scaleX(0); }
.lot.is-sold:not(.is-you) { opacity: .55; }
.auction__note { padding: 14px 24px; border-top: 1px solid var(--line); font-family: var(--f-mono); font-size: 11px; letter-spacing: .06em; line-height: 1.6; color: rgba(244, 238, 230, .42); }

/* =========================================================
   09 REGISTER band
   ========================================================= */
.reg-band { display: grid; grid-template-columns: 1.2fr 1fr; gap: 40px 60px; align-items: center; padding: clamp(32px, 5vw, 72px); border: 1px solid rgba(255, 116, 52, .35); background: linear-gradient(135deg, rgba(233, 83, 31, .12), rgba(12, 6, 4, .85) 60%); }
.reg-band__cta { display: grid; gap: 24px; justify-items: start; }
.reg-band__cta .hud-btn { margin-top: 0; }
.reg-band__cta .reg-note { margin-top: 0; }
.reg-band__kv { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }

@media (max-width: 1080px) {
  .flow { grid-template-columns: 1fr 1fr; }
  .flow::before { display: none; }
}
@media (max-width: 860px) {
  .ptracks { grid-template-columns: 1fr; }
  .ptrack h3 { margin-top: 56px; }
  .auction__body { grid-template-columns: 1fr; }
  .wallet { border-right: 0; border-bottom: 1px solid var(--line); }
  .lot { grid-template-columns: minmax(0, 1fr) auto; padding: 16px 18px; }
  .lot__lead { grid-row: 2; }
  .lot__bid { grid-row: 1 / span 2; grid-column: 2; }
  .lot__sold { right: 110px; }
  .reg-band { grid-template-columns: 1fr; }
  .reg-band__kv { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .flow { grid-template-columns: 1fr; }
  .ptrack__facts { grid-template-columns: 1fr; }
  .auction__bar { flex-direction: column; align-items: flex-start; gap: 8px; }
}
@media (prefers-reduced-motion: reduce) { .coin { animation: none; } }


/* =========================================================
   PARTNER LOGO SLIDER
   ========================================================= */
.logo-slider {
  position: relative; overflow: hidden; padding: 10px 0; cursor: grab; touch-action: pan-y; user-select: none;
  border-block: 1px solid var(--line);
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.logo-slider.is-dragging { cursor: grabbing; }
.logo-slider__track { display: flex; width: max-content; will-change: transform; }
.logo {
  position: relative; flex: none; display: grid; grid-template-rows: 1fr auto; justify-items: center; align-items: center; gap: 18px;
  width: clamp(240px, 24vw, 340px); height: clamp(170px, 18vw, 220px); margin: 0; padding: 30px 28px 22px;
  border-right: 1px solid var(--line);
}
.logo::before { /* ember glow that wakes on hover */
  content: ''; position: absolute; inset: 0; opacity: 0; transition: opacity .5s; pointer-events: none;
  background: radial-gradient(60% 70% at 50% 45%, rgba(255, 110, 50, .14), transparent 70%);
}
.logo img { position: relative; max-width: 78%; max-height: 72px; width: auto; height: auto; object-fit: contain; opacity: .62; transition: opacity .5s, transform .7s var(--ease-out), filter .5s; pointer-events: none; }
.logo figcaption { position: relative; font-family: var(--f-mono); font-size: 10.5px; letter-spacing: .24em; text-transform: uppercase; color: rgba(244, 238, 230, .38); transition: color .4s; }
.logo:hover::before { opacity: 1; }
.logo:hover img { opacity: 1; transform: scale(1.06); filter: drop-shadow(0 0 16px rgba(255, 120, 60, .45)); }
.logo:hover figcaption { color: var(--neon); }
.sponsors .sponsor-cta { margin-top: 48px; }
.prize__amt--word { font-family: var(--serif); font-style: italic; font-weight: 400; letter-spacing: 0; color: var(--neon); text-shadow: 0 0 24px rgba(255, 100, 40, .35); }
.prize__place { font-size: 26px; }
@media (max-width: 860px) {
  .logo { width: 210px; height: 150px; padding: 22px 18px 16px; }
  .logo img { max-height: 54px; }
}


/* =========================================================
   RETICLE CURSOR — four HUD brackets + a pin dot; brackets lock onto clickables
   ========================================================= */
.reticle { display: none; }
.has-cursor .reticle { display: block; }
.has-cursor, .has-cursor * { cursor: none !important; }
.reticle > * { position: fixed; left: 0; top: 0; z-index: 100; pointer-events: none; will-change: transform; }
.reticle { opacity: 0; transition: opacity .3s; }
.reticle.is-on { opacity: 1; }
.rc { width: 9px; height: 9px; border: 0 solid var(--neon); filter: drop-shadow(0 0 4px rgba(255, 110, 50, .7)); transition: width .35s var(--ease-out), height .35s var(--ease-out), border-color .3s; }
.rc--tl { margin: 0; border-left-width: 1.5px; border-top-width: 1.5px; }
.rc--tr { margin: 0 0 0 -9px; border-right-width: 1.5px; border-top-width: 1.5px; }
.rc--bl { margin: -9px 0 0 0; border-left-width: 1.5px; border-bottom-width: 1.5px; }
.rc--br { margin: -9px 0 0 -9px; border-right-width: 1.5px; border-bottom-width: 1.5px; }
.reticle.is-locked .rc { width: 12px; height: 12px; }
.reticle.is-locked .rc--tr { margin-left: -12px; } .reticle.is-locked .rc--bl { margin-top: -12px; } .reticle.is-locked .rc--br { margin: -12px 0 0 -12px; }
.reticle__dot { width: 4px; height: 4px; margin: -2px 0 0 -2px; background: #fff; box-shadow: 0 0 6px rgba(255, 255, 255, .8); transition: width .25s var(--ease-out), height .25s var(--ease-out), margin .25s var(--ease-out), opacity .3s; }
.reticle.is-locked .reticle__dot { opacity: 0; }
.reticle.is-down .reticle__dot { width: 8px; height: 8px; margin: -4px 0 0 -4px; background: var(--neon); }
.reticle.is-down .rc { border-color: #fff; }
.reticle__tag {
  padding: 3px 6px 2px; font-family: var(--f-mono); font-size: 9.5px; letter-spacing: .2em; text-transform: uppercase; white-space: nowrap;
  color: #160704; background: var(--neon); box-shadow: 0 0 12px rgba(255, 110, 50, .5);
  opacity: 0; transition: opacity .25s;
}
.reticle.has-tag .reticle__tag { opacity: 1; }

/* ACES CUSAT wordmark in the nav */
.nav__logo-img { display: block; height: 34px; width: auto; transition: opacity .3s, filter .4s; }
.nav__logo:hover .nav__logo-img { filter: drop-shadow(0 0 10px rgba(255, 120, 60, .55)); }
.nav.is-scrolled .nav__logo-img { height: 30px; }
@media (max-width: 860px) { .nav__logo-img { height: 28px; } }

/* hero foot: the replay dial sits alone on the right now */
.hero__bottom { justify-content: flex-end; }

/* legacy editions: one opens at a time (hover, focus or tap) */
.edition { cursor: pointer; align-items: start; outline: none; transition: opacity .4s; }
.edition .edition__yr { transition: color .4s, background-color .4s, border-color .4s, box-shadow .4s; }
.edition__body { min-width: 0; padding-top: 10px; }
.edition .edition__meta { margin-top: 6px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--mute); }
.edition.is-now .edition__meta { font-family: var(--f-mono); font-style: normal; font-size: 11px; color: var(--neon); }
.edition__about { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .6s var(--ease-out); }
.edition__about > div { overflow: hidden; }
.edition__about p { padding-top: 14px; max-width: 520px; font-size: 15.5px; line-height: 1.65; color: rgba(244, 238, 230, .74); opacity: 0; transform: translateY(8px); transition: opacity .5s var(--ease-out), transform .6s var(--ease-out); }
.edition.is-open .edition__about { grid-template-rows: 1fr; }
.edition.is-open .edition__about p { opacity: 1; transform: none; transition-delay: .1s; }
.edition.is-open h3 { color: #fff; }
.edition.is-open:not(.is-now) .edition__yr { color: var(--bone); border-color: rgba(255, 116, 52, .7); box-shadow: 0 0 22px rgba(233, 83, 31, .35); }
.editions:hover .edition:not(.is-open), .editions:focus-within .edition:not(.is-open) { opacity: .55; }
.edition:focus-visible .edition__yr { outline: 1px solid var(--neon); outline-offset: 4px; }


/* =========================================================
   LAYOUT VARIETY — each section shaped by its content
   ========================================================= */
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.sec-title:first-child, .wrap > .sec-title:first-child { margin-top: 0; }
.sec-head > .sec-title:first-child, .about__copy > .sec-title:first-child, .legacy__copy > .sec-title:first-child,
.timeline__side > .sec-title:first-child, .reg-band__copy > .sec-title:first-child, .faq__grid .sec-title, .countdown .sec-title, .format__copy > .sec-title { margin-top: 0; }

/* title left, a short note right, bottoms aligned */
.sec-head--row { max-width: none; display: grid; grid-template-columns: 1.15fr .85fr; gap: 24px 64px; align-items: end; }
.sec-head--row .lead { margin-top: 0; justify-self: end; max-width: 440px; }

/* legacy: a + that turns into − on the open edition */
.edition { position: relative; }
.edition__plus { position: absolute; right: 0; top: 34px; width: 14px; height: 14px; }
.edition__plus::before, .edition__plus::after { content: ''; position: absolute; left: 0; top: 50%; width: 100%; height: 1.5px; background: var(--neon); transition: transform .5s var(--ease-out), opacity .4s; }
.edition__plus::after { transform: rotate(90deg); }
.edition.is-open .edition__plus::after { transform: rotate(0deg); }
.edition.is-now .edition__plus { opacity: 0; }

/* format: copy + slim steps left, the live auction right (sticky) */
.format__grid { display: grid; grid-template-columns: .82fr 1.18fr; gap: clamp(40px, 5vw, 90px); align-items: start; }
.format .flow { display: block; margin-top: 44px; border-top: 1px solid var(--line-2); }
.format .flow::before { display: none; }
.format .flow__step { display: grid; grid-template-columns: 52px 1fr; gap: 6px; padding: 20px 0; background: none; border: 0; border-bottom: 1px solid var(--line); }
.format .flow__n { padding-top: 5px; }
.format .flow__step h3 { margin-top: 0; font-size: clamp(18px, 1.4vw, 21px); }
.format .flow__step p { margin-top: 6px; font-size: 14.5px; }
.format .auction { margin-top: 0; position: sticky; top: 110px; }
.format .auction__body { grid-template-columns: 1fr; }
.format .wallet { display: grid; grid-template-columns: auto auto 1fr; align-items: end; column-gap: 28px; row-gap: 6px; border-right: 0; border-bottom: 1px solid var(--line); padding: 22px 24px; }
.format .wallet > .wallet__k { grid-column: 1 / 3; }
.format .wallet__bal { margin-top: 0; grid-row: 2; grid-column: 1; font-size: clamp(34px, 3vw, 46px); }
.format .wallet__sub { grid-row: 2; grid-column: 2; margin: 0 0 6px; }
.format .wallet__won { grid-row: 1 / span 2; grid-column: 3; margin: 0; padding: 0 0 0 24px; border-top: 0; border-left: 1px solid var(--line); align-self: stretch; }
.format .wallet__won ul { gap: 6px; margin-top: 8px; }
.format .lot { grid-template-columns: minmax(0, 1fr) 130px 104px; padding: 16px 22px; }
.format .lot__sold { right: 130px; }

/* experience: the campus is the section */
.xp-banner { position: relative; margin: 0; height: clamp(440px, 72vh, 720px); overflow: hidden; border: 1px solid var(--line); }
.xp-banner .duo { position: absolute; inset: 0; }
.xp-banner .duo img { height: 118%; margin-top: -9%; translate: 0 var(--py, 0); }
.xp-banner::after { content: ''; position: absolute; inset: 0; z-index: 3; pointer-events: none; background: linear-gradient(0deg, rgba(8, 4, 3, .92) 0%, rgba(8, 4, 3, .45) 42%, transparent 70%); }
.xp-banner__cap { position: absolute; z-index: 4; left: clamp(22px, 4vw, 56px); right: clamp(22px, 4vw, 56px); bottom: clamp(22px, 4vw, 52px); }
.xp-banner__cap .sec-title { margin: 0; font-size: clamp(44px, 7vw, 120px); }
.xp-banner__cap p { margin-top: 18px; max-width: 520px; color: rgba(244, 238, 230, .78); font-size: clamp(15px, 1.15vw, 18px); line-height: 1.6; }
.xp-banner__loc { position: absolute; z-index: 4; right: 22px; top: 18px; font-family: var(--f-mono); font-size: 11px; letter-spacing: .2em; color: rgba(244, 238, 230, .7); }
.xp-row { display: grid; grid-template-columns: 1.4fr 1fr; gap: 18px 48px; margin-top: 40px; align-items: start; }
.xp-row .facts { grid-template-columns: 1fr; gap: 0; margin: 0; }
.xp-row .facts li { grid-template-columns: 110px 1fr; align-items: baseline; padding: 16px 0; }
.xp-past { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.xp-past .tile { height: 190px; }

/* prizes: the pool is the headline */
.pool { text-align: center; margin-bottom: clamp(48px, 7vh, 80px); }
.pool__num {
  font-family: var(--f-mark); font-weight: 400; font-size: clamp(60px, 13.5vw, 230px); line-height: .9; letter-spacing: -.02em;
  background: linear-gradient(180deg, #ffe7a8 0%, #f7c548 30%, #e9531f 62%, #8e1616 100%); -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 0 40px rgba(233, 83, 31, .25));
}
.pool__sub { margin-top: 14px; font-family: var(--f-mono); font-size: 12px; letter-spacing: .3em; text-transform: uppercase; color: var(--mute); }

/* partners: the strip carries its own label */
.sponsors { padding-top: clamp(70px, 10vh, 120px); }
.logo-slider__label {
  position: absolute; z-index: 2; left: var(--gutter); top: 50%; translate: 0 -50%; pointer-events: none;
  font-family: var(--serif); font-style: italic; font-size: clamp(22px, 2.2vw, 34px); line-height: 1.05; color: var(--neon); max-width: 7ch;
  text-shadow: 0 0 20px rgba(255, 100, 40, .35);
}
.sponsors .logo-slider { -webkit-mask-image: linear-gradient(90deg, transparent 0, transparent 14%, #000 26%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent 0, transparent 14%, #000 26%, #000 88%, transparent); }
.sponsors .logo-slider__label { -webkit-mask-image: none; }

/* rules: a two-column rulebook with big numerals */
.rules .rules__list { display: grid; grid-template-columns: 1fr 1fr; column-gap: 64px; border-top: 0; counter-reset: none; }
.rules .rules__list li { grid-template-columns: 1fr; gap: 10px; padding: 26px 0 28px; border-bottom: 0; border-top: 1px solid var(--line-2); }
.rules .rules__list li span { font-family: var(--f-mark); font-size: 40px; line-height: 1; color: transparent; -webkit-text-stroke: 1px rgba(255, 140, 90, .55); padding: 0; }

@media (max-width: 1080px) {
  .format__grid { grid-template-columns: 1fr; }
  .format .auction { position: static; }
}
@media (max-width: 860px) {
  .sec-head--row { grid-template-columns: 1fr; }
  .sec-head--row .lead { justify-self: start; }
  .xp-row { grid-template-columns: 1fr; }
  .xp-banner { height: 520px; }
  .rules .rules__list { grid-template-columns: 1fr; }
  .format .wallet { grid-template-columns: auto 1fr; }
  .format .wallet__won { grid-column: 1 / -1; grid-row: 3; border-left: 0; padding: 14px 0 0; border-top: 1px solid var(--line); }
  .format .lot { grid-template-columns: minmax(0, 1fr) auto; }
  .format .lot__sold { right: 100px; }
  .logo-slider__label { font-size: 18px; }
}

.logo-band { position: relative; }
.logo-band .logo-slider__label { z-index: 3; }
.pool__c { font-family: var(--f-display); font-weight: 700; margin: 0 -.04em 0 -.02em; }


/* =========================================================
   MOBILE FIXES (audit: overflow, legibility, touch targets)
   ========================================================= */
@media (max-width: 860px) {
  /* legacy diamond: the rotated frame stays inside the screen */
  .diamond { width: min(300px, 60%); }

  /* BUILD / BREAK / REPEAT: smaller type, gentler spread, so no word leaves the screen */
  .kinetic__word { font-size: 14.5vw; }
  .k-l { transform: translate3d(calc((var(--i) - var(--c)) * var(--p) * .1em + var(--dir) * (var(--p) - .5) * 3vw), 0, 0) scaleY(calc(1 + var(--p) * .22)); }
  .kinetic__word.is-outline { -webkit-text-stroke-width: 1.5px; }

  /* partners: the label sits above the strip instead of over the first logo */
  .logo-band .logo-slider__label { position: static; translate: none; max-width: none; margin: 0 var(--gutter) 16px; font-size: 22px; }
  .sponsors .logo-slider { -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }

  /* past-edition tiles: captions stack instead of squeezing */
  .xp-past .tile { height: 170px; }
  .xp-past .tile figcaption { flex-direction: column; align-items: flex-start; gap: 4px; padding: 30px 14px 12px; }
  .xp-past .tile__soon { left: 14px; top: 14px; font-size: 10.5px; letter-spacing: .14em; }

  /* legibility: the small mono labels never drop below 11.5px */
  .tags li, .ptrack__facts span, .wallet__k, .contact span, .cd__l, .flow__tag, .facts span, .kv span,
  .lot__lead, .prize__title, .stat__l, .tl__date, .track__code, .edition .edition__meta, .auction__bar,
  .tile figcaption span, .footer__small, .footer__bottom, .pool__sub, .chip, .xp-banner__loc { font-size: 11.5px; }
  .auction__note { font-size: 12px; }

  /* touch targets: at least 44px tall */
  .nav__logo { min-height: 44px; display: flex; align-items: center; }
  .sound { min-width: 44px; min-height: 44px; justify-content: center; }
  .nav__links a { padding: 12px 18px; }
  .contact a { display: flex; align-items: center; min-height: 44px; }
  .contact span { margin-bottom: 0; }
  .footer__grid nav, .footer__grid > div:last-child { gap: 0; }
  .footer__grid a { display: flex; align-items: center; min-height: 44px; }
  .footer__bottom { align-items: center; }
  .footer__bottom a { display: inline-flex; align-items: center; min-height: 44px; }
}
@media (max-width: 860px) {
  .footer__grid a { min-width: 44px; }
  .xp-past .tile__soon { font-size: 11px; letter-spacing: .1em; }
}
/* very narrow phones (≤400px): everything in the nav bar still fits */
@media (max-width: 400px) {
  .nav { gap: 10px; }
  .nav__right { gap: 6px; }
  .nav__logo-img { height: 24px; }
  .badge-mark { font-size: 14px; }
}
