/* ==========================================================================
   CAJAMARCA CORRE 10K — Impala Gestión y Producción Deportiva S.A.C.
   Dirección: editorial deportivo claro, tomado del logo
   (cian #24AEE4 + carbón #363636 sobre papel blanco)
   ========================================================================== */

/* ──────────────────────────────────────────────────────────────
   TIPOGRAFÍA DE MARCA — Cocogoose Pro (Zetafonts)

   Es la familia del logo. Para activarla en toda la página:
     1. Compra la licencia en zetafonts.com y consigue los .woff2
     2. Déjalos en assets/fonts/ con estos nombres
     3. Descomenta los dos bloques de abajo

   NO uses el archivo de prueba (Cocogoose-Pro-Light-trial.ttf):
   reemplaza TODOS los números por marcas de agua "TRIAL ONLY", y esta
   página está llena de cifras (precios, cuenta regresiva, fechas,
   horarios y la numeración de secciones). Además su licencia no
   permite publicarla.

@font-face{
  font-family:'Cocogoose Pro';
  src:url('../assets/fonts/cocogoose-pro-light.woff2') format('woff2');
  font-weight:300 500;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Cocogoose Pro';
  src:url('../assets/fonts/cocogoose-pro-bold.woff2') format('woff2');
  font-weight:600 900;font-style:normal;font-display:swap;
}
   Cocogoose es más ancha que la actual: al activarla, revisa que los
   titulares grandes sigan cabiendo (sobre todo el hero y el pie).
   ────────────────────────────────────────────────────────────── */

:root{
  /* ── Marca oficial ────────────────────────────────────
     Dos colores, tal como los entregó el cliente. Todo lo demás
     son pasos tonales del mismo cian, no colores nuevos. */
  --cyan:#2cb1e7;          /* cian oficial · rellenos y grafismo */
  --cyan-deep:#12719B;     /* mismo tono, oscurecido: TEXTO, botones y bandas */
  --cyan-wash:#E3F4FC;     /* lavado para secciones */
  --ink:#161616;           /* carbón oficial */

  /* ── Neutros, con sesgo frío hacia el cian ────────── */
  --paper:#F7FAFC;
  --paper-2:#E9F1F6;
  --card:#FFFFFF;
  --gris:#5C666D;
  --linea:#D6E3EB;

  /* ── Tipografía ───────────────────────────────────── */
  --display:'Cocogoose Pro','Big Shoulders Display','Antonio','Oswald','Haettenschweiler','Arial Narrow',sans-serif;
  --body:'Cocogoose Pro','Familjen Grotesk','Helvetica Neue',Helvetica,sans-serif;
  --mono:'Martian Mono','IBM Plex Mono',ui-monospace,monospace;

  /* ── Ritmo ────────────────────────────────────────── */
  --gut:clamp(20px,4vw,64px);
  --sec:clamp(76px,10vw,164px);
  --max:1360px;
  --ease:cubic-bezier(.16,1,.3,1);
  --ease-io:cubic-bezier(.65,.05,.36,1);
}

/* ── Reset ──────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:clamp(15px,1.05vw,17px);line-height:1.62;
  overflow-x:hidden;-webkit-font-smoothing:antialiased;
}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ul,ol{list-style:none}
::selection{background:var(--cyan-deep);color:#fff}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.solo-movil{display:none}
@media(max-width:1049px){.solo-movil{display:inline}}
.skip{position:fixed;top:-100px;left:16px;z-index:999;background:var(--ink);color:#fff;
  padding:12px 18px;font-family:var(--mono);font-size:11px;transition:top .2s}
.skip:focus{top:16px}
:focus-visible{outline:2px solid var(--cyan-deep);outline-offset:3px}

/* ── Grano + progreso + cursor ──────────────────────── */
.grain{
  position:fixed;inset:-50%;z-index:900;pointer-events:none;opacity:.16;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grainShift 8s steps(6) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}
  60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,1%)}100%{transform:translate(0,0)}
}
.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:800;background:rgba(22,22,22,.08)}
.progress__bar{display:block;height:100%;width:0;background:var(--cyan);transition:width .1s linear}


/* ── Layout ─────────────────────────────────────────── */
.wrap{width:min(100% - var(--gut)*2,var(--max));margin-inline:auto}
.wrap--narrow{width:min(100% - var(--gut)*2,860px)}
.section{padding-block:var(--sec);position:relative}
section[id]{scroll-margin-top:96px}
.section--alt{background:var(--paper-2)}
.section--card{background:var(--card)}
.section--wash{background:var(--cyan-wash)}

/* ── Tipos base ─────────────────────────────────────── */
.kicker{
  font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.22em;
  text-transform:uppercase;color:var(--cyan-deep);margin-bottom:22px;
}
.h2{
  font-family:var(--display);font-weight:800;color:var(--ink);
  font-size:clamp(40px,7vw,98px);line-height:.87;letter-spacing:-.015em;text-transform:uppercase;
  text-wrap:balance;
}
.head{margin-bottom:clamp(44px,5.5vw,80px)}
.head--split{display:grid;grid-template-columns:1fr;gap:26px;align-items:end}
.head__note{max-width:46ch;color:var(--gris);font-size:.95em}
@media(min-width:900px){.head--split{grid-template-columns:1.2fr .8fr;gap:60px}}

.eyebrow{
  display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gris);margin-bottom:26px;
}
.eyebrow__dot{width:7px;height:7px;border-radius:50%;background:var(--cyan);
  box-shadow:0 0 0 0 rgba(44,177,231,.6);animation:pulse 2.4s infinite;flex:none}
@keyframes pulse{
  70%{box-shadow:0 0 0 12px rgba(44,177,231,0)}
  100%{box-shadow:0 0 0 0 rgba(44,177,231,0)}
}

/* ── Botones ────────────────────────────────────────── */
.btn{
  --bg:transparent;--fg:var(--ink);--bd:rgba(22,22,22,.28);
  position:relative;display:inline-flex;align-items:center;gap:10px;
  padding:16px 30px;background:var(--bg);color:var(--fg);border:1px solid var(--bd);
  font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;
  overflow:hidden;transition:color .35s var(--ease),border-color .35s var(--ease),transform .35s var(--ease);
}
.btn::after{
  content:"";position:absolute;inset:0;background:var(--ink);z-index:-1;
  transform:translateY(101%);transition:transform .45s var(--ease);
}
.btn:hover{color:#fff;border-color:var(--ink);transform:translateY(-2px)}
.btn:hover::after{transform:translateY(0)}
.btn--primary{--bg:var(--cyan-deep);--fg:#fff;--bd:var(--cyan-deep)}
.btn--primary::after{background:var(--ink)}
.btn--primary:hover{color:#fff;border-color:var(--ink)}
.btn--ghost{--bd:rgba(22,22,22,.3)}
.btn--ink{--bg:var(--ink);--fg:#fff;--bd:var(--ink)}
.btn--ink::after{background:#fff}
.btn--ink:hover{color:var(--ink);border-color:var(--ink)}
.btn--sm{padding:11px 20px;font-size:10px}
.btn--lg{padding:21px 42px;font-size:12px}
.btn--block{display:flex;justify-content:center;width:100%;margin-top:auto}

/* ── Reveal ─────────────────────────────────────────────
   Tres tratamientos, no uno: el texto corriente sube con un
   fundido, los titulares se descubren con un barrido vertical
   —el mismo gesto que el titular del hero— y las fotos entran
   con un ligero desescalado. Así la jerarquía también se mueve. */
.js .reveal{opacity:0;transform:translateY(24px);
  transition:opacity .9s var(--ease) var(--d,0ms),transform .9s var(--ease) var(--d,0ms)}
.js .reveal.is-in{opacity:1;transform:none}

/* Titulares: barrido de arriba a abajo */
.js .h2.reveal,.js .statement.reveal,.js .cta__title .reveal{
  opacity:1;transform:none;
  clip-path:inset(0 0 104% 0);
  transition:clip-path 1.05s var(--ease) var(--d,0ms);
}
.js .h2.reveal.is-in,.js .statement.reveal.is-in,.js .cta__title .reveal.is-in{
  clip-path:inset(0 0 -12% 0);
}

/* Foto del hero: se descubre y se asienta */
.js .hero__media.reveal{opacity:1;transform:none}
.js .hero__media img{
  clip-path:inset(0 0 100% 0);transform:scale(1.05);
  transition:clip-path 1.15s var(--ease) var(--d,0ms),transform 1.7s var(--ease) var(--d,0ms);
}
.js .hero__media.is-in img{clip-path:inset(0 0 0 0);transform:scale(1)}
.js .hero__media .bib{opacity:0;transition:opacity .7s var(--ease) 1s,transform .6s var(--ease)}
.js .hero__media.is-in .bib{opacity:1}

/* ══════════ NAV ══════════ */
.nav{position:fixed;top:0;left:0;right:0;z-index:700;transition:background .45s var(--ease),border-color .45s;
  border-bottom:1px solid transparent}
.nav.is-stuck{background:rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(16px) saturate(1.3);backdrop-filter:blur(16px) saturate(1.3);
  border-bottom-color:var(--linea)}
.nav__inner{width:min(100% - var(--gut)*2,var(--max));margin-inline:auto;
  display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:14px;
  transition:padding .45s var(--ease)}
.nav.is-stuck .nav__inner{padding-block:9px}

.brand{display:flex;align-items:center}
.brand__logo{height:clamp(38px,4vw,50px);width:auto;transition:transform .5s var(--ease)}
.nav.is-stuck .brand__logo{height:clamp(34px,3.4vw,42px)}
.brand:hover .brand__logo{transform:scale(1.04)}

.nav__links{display:flex;align-items:center;gap:22px}
.nav__doc{display:inline-flex;align-items:center;gap:7px}
.nav__doc::before{content:"";width:11px;height:13px;flex:none;background:currentColor;
  clip-path:polygon(0 0,68% 0,100% 30%,100% 100%,0 100%)}
.nav__links>a:not(.btn){
  font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gris);position:relative;padding-block:4px;transition:color .3s
}
.nav__links>a:not(.btn)::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;
  background:var(--cyan);transition:width .35s var(--ease)}
.nav__links>a:not(.btn):hover{color:var(--ink)}
.nav__links>a:not(.btn):hover::after{width:100%}

.burger{display:none;width:44px;height:44px;position:relative;flex:none;margin-right:-6px}
.burger span{position:absolute;left:11px;right:11px;height:2px;background:var(--ink);
  transition:transform .4s var(--ease),opacity .3s}
.burger span:nth-child(1){top:15px}.burger span:nth-child(2){top:21px}.burger span:nth-child(3){top:27px}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

@media(max-width:1000px){
  .burger{display:block}
  .nav__links{
    position:fixed;inset:0 0 auto;top:0;
    padding:clamp(84px,13vh,116px) var(--gut) clamp(32px,6vh,56px);
    max-height:100vh;max-height:100dvh;overflow-y:auto;overscroll-behavior:contain;
    flex-direction:column;align-items:flex-start;gap:4px;
    background:var(--card);border-bottom:1px solid var(--linea);
    clip-path:inset(0 0 100% 0);visibility:hidden;
    transition:clip-path .6s var(--ease),visibility 0s .6s;
  }
  .nav__links.is-open{clip-path:inset(0 0 0 0);visibility:visible;
    transition:clip-path .6s var(--ease),visibility 0s 0s}
  .nav__links>a:not(.btn){font-family:var(--display);font-size:32px;font-weight:700;
    letter-spacing:0;text-transform:uppercase;color:var(--ink);line-height:1.15}
  .nav__cta{margin-top:22px;min-height:44px;justify-content:center}
}

/* ══════════ HERO ══════════ */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;
  padding:118px 0 78px;overflow:hidden}
.hero__glow{
  position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(56% 44% at 10% 6%,rgba(44,177,231,.20),transparent 62%),
    radial-gradient(48% 42% at 94% 74%,rgba(20,120,165,.14),transparent 64%),
    radial-gradient(70% 56% at 50% 118%,rgba(44,177,231,.13),transparent 60%);
}
.hero__grid{
  position:relative;width:min(100% - var(--gut)*2,var(--max));margin-inline:auto;
  display:grid;grid-template-columns:1fr;gap:48px;align-items:center;
}
@media(min-width:1000px){.hero__grid{grid-template-columns:1.32fr .68fr;gap:clamp(40px,5vw,80px)}}

.hero__title{font-family:var(--display);font-weight:900;text-transform:uppercase;color:var(--ink);
  font-size:clamp(52px,min(11.4vw,13.4vh),172px);line-height:.82;letter-spacing:-.022em;margin-bottom:26px}
.hero__title .line{display:block;overflow:hidden;padding-top:.18em;margin-top:-.18em}
.hero__title .line__in{display:block}
.js .hero__title .line__in{transform:translateY(112%);
  transition:transform 1.05s var(--ease) var(--d,0ms)}
.js .hero__title .line.is-in .line__in{transform:translateY(0)}
.hero__title .outline{color:transparent;-webkit-text-stroke:1.6px var(--ink);padding-left:.09em}
.hero__title .accent{color:var(--cyan-deep)}
@media(min-width:700px){.hero__title .accent{padding-left:.16em}}

.hero__lede{max-width:48ch;color:var(--gris);font-size:clamp(15px,1.25vw,18.5px);margin-bottom:28px}
.hero__actions{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:38px}

.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;
  max-width:520px;background:var(--linea);border:1px solid var(--linea)}
.countdown__cell{background:var(--card);padding:15px 10px 12px;text-align:center}
.countdown dd{font-family:var(--display);font-weight:700;font-size:clamp(30px,4.2vw,50px);
  line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--ink)}
.countdown dd.tick{animation:tick .38s var(--ease)}
@keyframes tick{from{transform:translateY(-32%);opacity:0}to{transform:translateY(0);opacity:1}}
.countdown dt{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gris);margin-top:8px}

.hero__media{position:relative}
.hero__media img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;
  box-shadow:0 30px 70px -34px rgba(22,22,22,.5)}
.bib{
  position:absolute;right:-14px;bottom:-28px;width:clamp(126px,15vw,166px);
  background:var(--card);color:var(--ink);padding:12px 10px 14px;text-align:center;
  transform:rotate(4.5deg);box-shadow:0 22px 46px -18px rgba(22,22,22,.45);
  border:1px solid var(--linea);transition:transform .6s var(--ease);
}
.hero__media:hover .bib{transform:rotate(-3deg) translateY(-6px)}
.bib__top,.bib__bot{display:block;font-family:var(--mono);font-size:7.5px;letter-spacing:.18em;color:var(--gris)}
.bib__num{display:block;font-family:var(--display);font-weight:900;font-size:clamp(44px,5.4vw,62px);
  line-height:.9;margin:4px 0 5px;border-block:1px solid var(--linea);padding-block:4px;color:var(--cyan-deep)}

.scrollcue{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:9px}
.scrollcue__line{width:1px;height:42px;background:linear-gradient(var(--cyan),transparent);
  animation:cue 2.2s var(--ease-io) infinite}
@keyframes cue{0%{transform:scaleY(0);transform-origin:top}
  50%{transform:scaleY(1);transform-origin:top}
  50.1%{transform:scaleY(1);transform-origin:bottom}
  100%{transform:scaleY(0);transform-origin:bottom}}
.scrollcue__txt{font-family:var(--mono);font-size:8px;letter-spacing:.3em;color:var(--gris)}
.hero__side{position:absolute;right:14px;top:50%;
  transform:translateY(-50%) rotate(180deg);writing-mode:vertical-rl;
  font-family:var(--mono);font-size:8.5px;letter-spacing:.28em;color:var(--gris);opacity:.7}
@media(max-width:1200px){.hero__side{display:none}}
@media(max-width:999px){.scrollcue{display:none}}

/* ── Ajustes de teléfono ─────────────────────────────── */
@media(max-width:600px){
  .hero{padding:104px 0 64px}
  .hero__lede{margin-bottom:24px;font-size:16px;line-height:1.55}
  .hero__actions{gap:10px;margin-bottom:30px}
  .hero__actions .btn{width:100%;justify-content:center}
  .hero__grid{gap:36px}
  .eyebrow{margin-bottom:20px;line-height:1.8}
  .race__foot{gap:18px}
  .race__foot .btn{width:100%;justify-content:center}
  .btn--lg{width:100%;justify-content:center}
}

/* ══════════ MARQUEE ══════════ */
.marquee-bleed{overflow:hidden;position:relative;z-index:5;pointer-events:none;
  padding-block:calc(1.6vw + 6px);margin-block:calc(-1.6vw - 20px)}
.marquee{overflow:hidden;position:relative}
.marquee__track{display:flex;align-items:center;gap:34px;width:max-content;
  animation:slide 26s linear infinite}
.marquee__track--slow{animation-duration:46s}
@keyframes slide{to{transform:translateX(-50%)}}
.marquee--band{background:var(--cyan-deep);color:#fff;padding:15px 0;
  transform:rotate(-1.6deg) scale(1.04);position:relative;z-index:5}
.marquee--band span{font-family:var(--display);font-weight:800;font-size:clamp(26px,3.4vw,44px);
  line-height:1;text-transform:uppercase;letter-spacing:.01em}
.marquee--band i{font-size:11px;opacity:.5;font-style:normal;color:var(--cyan)}

/* ══════════ MANIFIESTO ══════════ */
.manifiesto{padding-top:calc(var(--sec) + 18px)}
.manifiesto__grid{display:grid;grid-template-columns:1fr;gap:32px}
@media(min-width:980px){
  .manifiesto__grid{grid-template-columns:1fr auto;grid-template-areas:"k k" "s b";
    column-gap:70px;align-items:start}
  .manifiesto .kicker{grid-area:k}
  .statement{grid-area:s}
  .manifiesto__body{grid-area:b;max-width:34ch;padding-top:10px}
}
.statement{
  font-family:var(--display);font-weight:600;text-transform:uppercase;color:var(--ink);
  font-size:clamp(27px,4.2vw,58px);line-height:1.04;letter-spacing:-.01em;
}
.statement em{font-style:normal;color:var(--cyan-deep)}
.statement .hl{position:relative;color:#fff;white-space:nowrap;padding-inline:.16em}
.statement .hl::before{content:"";position:absolute;inset:.08em -.02em .06em;background:var(--cyan-deep);
  z-index:-1;transform:skewX(-6deg)}
.manifiesto__body{color:var(--gris)}

.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--linea);
  border:1px solid var(--linea);margin-top:clamp(56px,6.5vw,102px)}
@media(min-width:820px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--card);padding:clamp(24px,3.2vw,42px) clamp(18px,2.4vw,32px);
  transition:background .4s var(--ease)}
.stat:hover{background:var(--cyan-wash)}
.stat__num{display:block;font-family:var(--display);font-weight:800;
  font-size:clamp(42px,6vw,82px);line-height:.9;color:var(--cyan-deep);
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat__label{display:block;margin-top:12px;font-family:var(--mono);font-size:9px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--gris)}

/* ══════════ EL 10K ══════════ */
.race{
  position:relative;display:grid;grid-template-columns:1fr;
  gap:clamp(26px,3.6vw,56px);align-items:center;
  padding:clamp(28px,3.6vw,54px);
  background:var(--card);border:1px solid var(--linea);overflow:hidden;
  box-shadow:0 24px 60px -40px rgba(22,22,22,.4);
}
.race::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--cyan)}
@media(min-width:920px){.race{grid-template-columns:auto 1fr}}
.race__mark{display:flex;flex-direction:column;align-items:flex-start}
.race__num{font-family:var(--display);font-weight:900;color:var(--ink);
  font-size:clamp(108px,14.5vw,218px);line-height:.74;letter-spacing:-.04em;white-space:nowrap}
.race__num small{font-size:.36em;letter-spacing:0;color:var(--cyan-deep)}
.race__sub{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gris);margin-top:16px}
.race__desc{font-size:clamp(15px,1.15vw,17.5px);color:var(--gris);max-width:56ch;margin-bottom:26px}
.race__data{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--linea);border:1px solid var(--linea);margin-bottom:28px}
@media(min-width:640px){.race__data{grid-template-columns:repeat(3,1fr)}}
.race__data>div{background:var(--card);padding:14px 16px}
.race__data dt{font-family:var(--mono);font-size:8px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gris)}
.race__data dd{font-family:var(--display);font-weight:700;font-size:23px;line-height:1.1;
  margin-top:4px;color:var(--ink)}
.race__foot{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(18px,3vw,36px)}
.race__price{font-family:var(--display);font-weight:900;font-size:clamp(36px,3.8vw,50px);
  line-height:1;color:var(--ink)}
.race__price span{font-family:var(--mono);font-size:11px;font-weight:400;color:var(--gris);
  margin-right:10px;vertical-align:middle;letter-spacing:.14em;text-transform:uppercase}

/* ══════════ RECORRIDO ══════════ */

/* Reserva del trazado hasta el 15/11/2026.
   Ojo con la dirección de la regla: lo que se oculta por defecto es el
   contenido revelado, y el JS lo destapa quitando el atributo. Falla en
   cerrado a propósito — si el script no llega a correr, no se filtra nada. */
[data-ruta="revelada"]{display:none}
[hidden]{display:none!important}

.velo{max-width:640px;padding:8px 0 4px}
.velo .kicker{margin-bottom:18px}
.velo .h2{margin-bottom:22px}
.velo__txt{color:var(--gris);font-size:16px;line-height:1.65;max-width:52ch}
.velo__aviso{margin-top:28px;padding-top:20px;border-top:1px solid var(--linea);
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cyan-deep)}


.route{display:grid;grid-template-columns:1fr;gap:32px}
@media(min-width:1050px){.route{grid-template-columns:1.5fr .78fr;column-gap:52px}}
.route__col{min-width:0}
.route__map{border:1px solid var(--linea);background:var(--card);padding:6px}
.map{width:100%;height:auto;display:block}

/* ── Capa de anotaciones sobre el mapa oficial ──
   Las flechas llevan halo blanco (paint-order) porque van pegadas a la traza
   roja del propio mapa: sin halo se confundirían con ella. */
.mapa__dir path{fill:#E02C2C;stroke:#fff;stroke-width:3.2;paint-order:stroke;stroke-linejoin:round}
.mapa__guia{stroke:var(--ink);stroke-width:1.4;stroke-dasharray:3 3;opacity:.72}
.mapa__hitos>g rect{fill:#fff;stroke:var(--ink);stroke-width:1.4}
.mapa__hitos>g text{font-family:var(--mono);font-size:14px;font-weight:500;fill:var(--ink);
  letter-spacing:.1em;text-anchor:middle}
.mapa__hito--agua rect{fill:var(--cyan-deep);stroke:var(--cyan-deep)}
.mapa__hito--agua text{fill:#fff}
.mapa__agua{fill:none;stroke:var(--cyan-deep);stroke-width:3.4}

/* Las flechas aparecen escalonadas cuando el mapa entra en pantalla.
   Solo opacidad: 'scale' queda reservado para agrandarlas en pantallas chicas. */
.js .mapa__flechas .mapa__dir{opacity:0;transition:opacity .45s var(--ease)}
.js [data-route].is-drawn .mapa__flechas .mapa__dir{opacity:1}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(1){transition-delay:80ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(2){transition-delay:160ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(3){transition-delay:240ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(4){transition-delay:320ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(5){transition-delay:400ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(6){transition-delay:480ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(7){transition-delay:560ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(8){transition-delay:640ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(9){transition-delay:720ms}
.js [data-route].is-drawn .mapa__flechas .mapa__dir:nth-child(10){transition-delay:800ms}

/* Leyenda del mapa: va fuera del SVG para no tapar el trazado y para que se
   lea igual de bien cuando el mapa se desliza. */
.mapaleg{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:12px;align-items:center}
.mapaleg__i{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--gris)}
.mapaleg__i svg{width:15px;height:12px;flex:none;fill:#E02C2C}
.mapaleg__i--v svg{transform:scaleX(-1)}
.mapaleg__i--a svg{fill:var(--cyan-deep);width:11px;height:13px}

.map__note{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--gris);
  margin-top:12px}

.tramos{border-top:1px solid var(--linea);counter-reset:t}
.tramo{display:flex;gap:16px;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--linea)}
.tramo::before{counter-increment:t;content:counter(t,decimal-leading-zero);
  font-family:var(--mono);font-size:9px;color:var(--cyan-deep);letter-spacing:.1em;flex:none}
.tramo b{font-family:var(--display);font-weight:700;font-size:19px;letter-spacing:.01em;
  text-transform:uppercase;color:var(--ink);line-height:1.15}
.tramo span{display:block;font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;
  color:var(--gris);margin-top:4px;text-transform:uppercase}
.route__facts{margin-top:24px;border-top:1px solid var(--linea)}
.route__facts>div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding:13px 0;border-bottom:1px solid var(--linea)}
.route__facts dt{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gris)}
.route__facts dd{font-family:var(--display);font-weight:700;font-size:20px;color:var(--ink);text-align:right}


/* ── Altimetría ── */
.alti{margin-top:60px;border-top:1px solid var(--linea);padding-top:34px}
.alti__head{display:grid;gap:14px;margin-bottom:26px}
@media(min-width:900px){.alti__head{grid-template-columns:.82fr 1.18fr;column-gap:48px;align-items:start}}
.alti__title{font-family:var(--display);font-weight:700;font-size:clamp(25px,3.2vw,38px);
  line-height:1.02;letter-spacing:.005em;text-transform:uppercase;color:var(--ink)}
.alti__lead{max-width:58ch;color:var(--gris);font-size:15.5px;line-height:1.62}
.alti__chart{border:1px solid var(--linea);background:var(--card);padding:10px}
.altisvg{width:100%;height:auto;display:block}
.alti__facts{margin-top:20px;display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--linea);border:1px solid var(--linea)}
@media(min-width:760px){.alti__facts{grid-template-columns:repeat(4,1fr)}}
.alti__facts>div{background:var(--card);padding:15px 17px}
.alti__facts dt{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gris)}
.alti__facts dd{font-family:var(--display);font-weight:700;font-size:30px;color:var(--ink);
  margin-top:6px;line-height:1}
.alti__facts dd i{font-style:normal;font-family:var(--mono);font-size:12px;font-weight:400;
  color:var(--gris);margin-left:3px}

@media(max-width:620px){
  .alti__facts dd{font-size:26px}
}

/* ══════════ PÁGINA DE LA CLAVE (oculta, sin enlaces) ══════════ */
.pagina-clave{background:var(--paper);min-height:100svh;display:flex;align-items:center;
  justify-content:center;padding:40px 20px}
.cs{width:100%;max-width:560px}
.cs__caja{background:var(--card);border:1px solid var(--linea);padding:clamp(26px,5vw,44px)}
.cs__kicker{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gris)}
.cs__titulo{font-family:var(--display);font-weight:700;font-size:clamp(32px,7vw,52px);
  line-height:.98;letter-spacing:.005em;text-transform:uppercase;color:var(--ink);margin:12px 0 24px}
.cs__estado{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  padding:12px 14px;border:1px solid var(--linea);margin-bottom:26px}
.cs__estado.es-si{color:var(--cyan-deep);border-color:var(--cyan);background:var(--cyan-wash)}
.cs__estado.es-no{color:var(--gris)}
.cs__label{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--gris);margin-bottom:9px}
.cs__input{width:100%;padding:14px 16px;border:1px solid var(--linea);background:var(--paper);
  font-family:var(--mono);font-size:14px;color:var(--ink);min-height:48px}
.cs__input:focus{outline:2px solid var(--cyan-deep);outline-offset:1px;background:var(--card)}
.cs__acciones{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}
.cs__acciones .btn{min-height:48px}
.cs__aviso{min-height:20px;margin-top:14px;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.06em;line-height:1.5;color:var(--gris)}
.cs__aviso.es-bien{color:var(--cyan-deep)}
.cs__aviso.es-mal{color:#B3261E}
.cs__nota{margin-top:30px;padding-top:22px;border-top:1px solid var(--linea)}
.cs__nota p{font-size:13.5px;line-height:1.65;color:var(--gris);margin-bottom:11px}
.cs__nota strong{color:var(--ink)}
.cs__nota code{font-family:var(--mono);font-size:12px;background:var(--paper-2);padding:1px 5px}
.cs__vuelta a{color:var(--cyan-deep);text-decoration:underline;text-underline-offset:3px}

/* ══════════ PÁGINA DEL REGLAMENTO ══════════ */
.pagina-doc .nav{position:sticky;top:0}
.rg__cab{padding-top:140px;padding-bottom:56px}
.rg__titulo{font-family:var(--display);font-weight:700;font-size:clamp(44px,9vw,104px);
  line-height:.92;letter-spacing:-.005em;text-transform:uppercase;color:var(--ink);
  margin:16px 0 20px}
.rg__sub{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--cyan-deep)}
.rg__intro{margin-top:22px;max-width:54ch;color:var(--gris);font-size:16.5px;line-height:1.65}
.rg__acciones{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}

.rg{display:grid;grid-template-columns:1fr;gap:44px}
@media(min-width:1000px){.rg{grid-template-columns:250px 1fr;column-gap:64px;align-items:start}}

.rg__indice{border-top:2px solid var(--ink);padding-top:18px}
@media(min-width:1000px){.rg__indice{position:sticky;top:96px;max-height:calc(100svh - 130px);overflow-y:auto}}
.rg__ix-t{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--gris);margin-bottom:14px}
.rg__indice ol{list-style:none;display:flex;flex-direction:column}
.rg__indice a{display:flex;gap:10px;align-items:baseline;padding:7px 0;
  font-family:var(--body);font-size:14px;line-height:1.35;color:var(--ink);
  border-bottom:1px solid var(--linea);transition:color .25s var(--ease)}
.rg__indice a:hover{color:var(--cyan-deep)}
.rg__ix-n{font-family:var(--mono);font-size:9px;color:var(--gris);flex:none}

.rg__cuerpo{min-width:0;max-width:70ch}
.rg__art{padding-bottom:40px;margin-bottom:40px;border-bottom:1px solid var(--linea);
  scroll-margin-top:96px}
.rg__art:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
.rg__h2{font-family:var(--display);font-weight:700;font-size:clamp(26px,3.4vw,36px);
  line-height:1.05;letter-spacing:.005em;text-transform:uppercase;color:var(--ink);
  margin-bottom:20px}
.rg__num{display:block;font-family:var(--mono);font-size:9.5px;font-weight:400;
  letter-spacing:.18em;color:var(--cyan-deep);margin-bottom:9px;text-transform:uppercase}
.rg__cuerpo h3{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ink);margin:28px 0 12px}
.rg__cuerpo h3:first-of-type{margin-top:0}
.rg__cuerpo p{color:var(--gris);font-size:15.5px;line-height:1.72;margin-bottom:14px}
.rg__cuerpo p strong{color:var(--ink);font-weight:600}
.rg__cuerpo a{color:var(--cyan-deep);text-decoration:underline;text-underline-offset:3px}

.rg__lista{list-style:none;display:flex;flex-direction:column;gap:11px;margin-bottom:16px}
.rg__lista li{position:relative;padding-left:22px;color:var(--gris);font-size:15.5px;line-height:1.7}
.rg__lista li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;
  background:var(--cyan);flex:none}
.rg__lista li strong{color:var(--ink);font-weight:600}
.rg__ast{color:var(--cyan-deep);font-weight:700}
.rg__nota{font-size:13.5px!important}

.rg__datos{border-top:1px solid var(--linea);margin:0 0 16px}
.rg__datos>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 20px;
  padding:12px 0;border-bottom:1px solid var(--linea)}
.rg__datos dt{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gris);padding-top:3px}
.rg__datos dd{font-family:var(--display);font-weight:700;font-size:18px;color:var(--ink);
  text-align:right;margin-left:auto}

.rg__tabla{width:100%;border-collapse:collapse;margin-bottom:16px;font-size:14.5px}
.rg__tabla th,.rg__tabla td{padding:11px 12px;border-bottom:1px solid var(--linea);text-align:left}
.rg__tabla thead th{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--gris);border-bottom:2px solid var(--ink)}
.rg__tabla tbody th{font-family:var(--display);font-weight:700;font-size:17px;color:var(--ink)}
.rg__tabla td{color:var(--gris);font-variant-numeric:tabular-nums}

.rg__reserva{border-left:3px solid var(--cyan);padding:2px 0 2px 16px}

/* Datos de pago: números en mono para que se lean y se copien sin ambigüedad */
.rg__datos--pago dd{font-size:16px}
.rg__num2{font-family:var(--mono)!important;font-weight:500!important;font-size:14px!important;
  letter-spacing:.02em;word-break:break-all;font-variant-numeric:tabular-nums}
.rg__qr{margin:18px 0 20px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.rg__qr img{width:200px;height:200px;border:1px solid var(--linea);padding:10px;background:#fff}
.rg__qr figcaption{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--gris)}

/* Al imprimir, el documento solo: sin cabecera, pie ni índice */
@media print{
  .nav,.foot,.rg__indice,.rg__acciones,.grain,.skip{display:none!important}
  .rg{grid-template-columns:1fr}
  .rg__cab{padding:0 0 24px}
  .section{padding:0}
  .rg__cuerpo{max-width:none}
  .rg__art{break-inside:avoid;page-break-inside:avoid}
  .rg__cuerpo p,.rg__lista li{color:#222}
}

/* ══════════ INSCRIPCIÓN ══════════ */
.tiers{display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:900px){.tiers{grid-template-columns:repeat(3,1fr)}}
.tier{position:relative;display:flex;flex-direction:column;
  padding:clamp(26px,3vw,38px) clamp(22px,2.5vw,32px);
  border:1px solid var(--linea);background:var(--card)}
.tier--live{border-color:var(--cyan);
  box-shadow:0 0 0 1px var(--cyan),0 28px 60px -34px rgba(44,177,231,.5)}
.tier__pulse{position:absolute;top:-1px;left:-1px;right:-1px;bottom:-1px;border:1px solid var(--cyan);
  animation:tierPulse 2.8s var(--ease-io) infinite;pointer-events:none}
@keyframes tierPulse{0%{opacity:.8;transform:scale(1)}70%{opacity:0;transform:scale(1.035)}100%{opacity:0}}
.tier__when{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--gris);margin-bottom:16px}
.tier__name{font-family:var(--display);font-weight:800;font-size:clamp(28px,3.2vw,40px);
  line-height:.94;text-transform:uppercase;margin-bottom:16px;color:var(--ink)}
.tier__name span{display:block;color:var(--cyan-deep)}
.tier__price{font-family:var(--display);font-weight:900;font-size:clamp(38px,4.4vw,56px);line-height:1;
  margin-bottom:20px;display:flex;align-items:baseline;gap:12px;color:var(--ink)}
.tier__from{font-family:var(--mono);font-size:9px;font-weight:400;letter-spacing:.16em;color:var(--gris)}
.tier__list{margin-bottom:26px;display:grid;gap:10px}
.tier__list li{position:relative;padding-left:20px;font-size:.92em;color:var(--gris)}
.tier__list li::before{content:"";position:absolute;left:0;top:.62em;width:9px;height:1px;background:var(--cyan)}
.tier__state{margin-top:auto;display:inline-block;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.18em;padding:14px 0;border-top:1px solid var(--linea);color:var(--gris)}
.tiers__note{margin-top:24px;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--gris);
  line-height:2}

.pago{margin-top:clamp(40px,5vw,72px);display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:760px){.pago{grid-template-columns:repeat(2,1fr)}}
.pago__card{border:1px solid var(--linea);background:var(--card);padding:clamp(22px,2.6vw,32px)}
.pago__card h3{font-family:var(--display);font-weight:800;font-size:26px;text-transform:uppercase;
  color:var(--ink);margin-bottom:14px}
.pago__card dl{display:grid;gap:12px}
.pago__card dt{font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gris)}
.pago__card dd{font-family:var(--mono);font-size:13px;color:var(--ink);margin-top:2px;
  word-break:break-word;font-variant-numeric:tabular-nums}
.pago__card p{color:var(--gris);font-size:.9em}

/* ══════════ CATEGORÍAS Y PREMIOS ══════════ */
.cats{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--linea);
  border:1px solid var(--linea)}
@media(max-width:899px){.cat:last-child{grid-column:1 / -1}}
@media(min-width:900px){.cats{grid-template-columns:repeat(5,1fr)}}
.cat{background:var(--card);padding:clamp(20px,2.4vw,30px) clamp(16px,2vw,24px);
  transition:background .4s var(--ease)}
.cat:hover{background:var(--cyan-wash)}
.cat__name{font-family:var(--display);font-weight:800;font-size:clamp(24px,2.6vw,32px);
  text-transform:uppercase;line-height:1;color:var(--ink)}
.cat__age{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.14em;
  color:var(--cyan-deep);margin-top:10px}
.cat__sex{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.14em;
  color:var(--gris);margin-top:6px;text-transform:uppercase}
.premios{margin-top:clamp(36px,4.5vw,64px);display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:760px){.premios{grid-template-columns:repeat(2,1fr)}}
.premio{border:1px solid var(--linea);padding:clamp(22px,2.6vw,32px);background:var(--card);
  position:relative;overflow:hidden}
.premio::before{content:"";position:absolute;top:0;left:0;bottom:0;width:3px;background:var(--cyan)}
.premio h3{font-family:var(--display);font-weight:800;font-size:clamp(24px,2.6vw,32px);
  text-transform:uppercase;color:var(--ink);margin-bottom:10px}
.premio p{color:var(--gris);font-size:.94em}

/* ══════════ KIT ══════════ */
.kitlist{display:grid;grid-template-columns:1fr;gap:1px;background:var(--linea);
  border:1px solid var(--linea)}
@media(min-width:700px){.kitlist{grid-template-columns:repeat(5,1fr)}}
.kititem{background:var(--card);padding:clamp(22px,2.6vw,32px) clamp(18px,2vw,24px);
  transition:background .4s var(--ease)}
.kititem:hover{background:var(--cyan-wash)}
.kititem__foto{margin:calc(-1 * clamp(22px,2.6vw,32px)) calc(-1 * clamp(18px,2vw,24px)) 20px;
  overflow:hidden;background:var(--paper-2)}
.kititem__foto .ki{width:100%;height:auto;display:block;
  transition:transform .7s var(--ease)}
.kititem:hover .kititem__foto .ki{transform:scale(1.04)}
.ki-fondo{fill:var(--paper-2)}
.ki-linea{fill:none;stroke:var(--ink);stroke-width:5;stroke-linejoin:round;stroke-linecap:round}
.ki-acento{fill:none;stroke:var(--cyan-deep);stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round}
.ki-cinta{fill:none;stroke:var(--ink);stroke-width:9;stroke-linecap:round}
.ki-relleno{fill:var(--cyan-deep)}
.ki-tenue{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;opacity:.28}
.ki-num{font-family:var(--display);font-weight:800;font-size:44px;fill:var(--ink);text-anchor:middle}
.kititem__n{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--cyan-deep)}
.kititem h3{font-family:var(--display);font-weight:800;font-size:clamp(21px,2.2vw,26px);
  text-transform:uppercase;margin:12px 0 6px;line-height:1.05;color:var(--ink)}
.kititem p{font-size:.85em;color:var(--gris);line-height:1.5}

/* ══════════ PROGRAMA ══════════ */
.timeline{border-top:1px solid var(--linea)}
.tl{display:grid;grid-template-columns:1fr;gap:14px;padding:clamp(24px,3vw,40px) 0;
  border-bottom:1px solid var(--linea);position:relative;transition:padding-left .5s var(--ease)}
@media(min-width:760px){.tl{grid-template-columns:200px 1fr;gap:40px;align-items:start}}
.tl:hover{padding-left:14px}
.tl__date{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--gris);
  display:flex;align-items:baseline;gap:12px}
.tl__date b{font-family:var(--display);font-weight:900;font-size:clamp(38px,4.6vw,60px);
  line-height:.85;color:var(--ink);letter-spacing:-.02em}
.tl__body h3{font-family:var(--display);font-weight:800;font-size:clamp(25px,2.9vw,36px);
  text-transform:uppercase;line-height:.98;margin-bottom:10px;color:var(--ink)}
.tl__body p{max-width:60ch;color:var(--gris)}
.tl__where{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:9px;
  letter-spacing:.16em;color:var(--cyan-deep);text-transform:uppercase}
.tl--race{background:linear-gradient(90deg,var(--cyan-wash),transparent 62%)}
.tl--race .tl__body h3::after{content:"●";font-size:.32em;vertical-align:middle;color:var(--cyan);
  margin-left:12px}

/* ══════════ GALERÍA (10 fotos) ══════════ */
.gal{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(10px,1.4vw,18px)}
.gal figure{overflow:hidden;background:var(--paper-2)}
.gal img{width:100%;height:100%;object-fit:cover;
  transform:scale(var(--gs,1));transition:transform 1.1s var(--ease) var(--d,0ms)}
.js .gal figure.reveal{opacity:1;transform:none;--gs:1.07;
  clip-path:inset(0 0 100% 0);transition:clip-path .95s var(--ease) var(--d,0ms)}
.js .gal figure.reveal.is-in{--gs:1;clip-path:inset(0 0 0 0)}
.gal figure:hover{--gs:1.04}
.js .gal figure.reveal.is-in:hover{--gs:1.04}
@media(max-width:899px){.gal img{aspect-ratio:4/3}}
@media(min-width:900px){
  .gal{grid-template-columns:repeat(12,1fr)}
  .gal__1{grid-column:span 5}          .gal__1 img{aspect-ratio:4/3}
  .gal__2{grid-column:span 3;align-self:end} .gal__2 img{aspect-ratio:1/1}
  .gal__3{grid-column:span 4;grid-row:span 2} .gal__3 img{aspect-ratio:3/4}
  .gal__4{grid-column:span 4}          .gal__4 img{aspect-ratio:4/3}
  .gal__5{grid-column:span 4}          .gal__5 img{aspect-ratio:1/1}
  .gal__6{grid-column:span 5}          .gal__6 img{aspect-ratio:16/9}
  .gal__7{grid-column:span 3;align-self:end} .gal__7 img{aspect-ratio:1/1}
  .gal__8{grid-column:span 4;grid-row:span 2} .gal__8 img{aspect-ratio:3/4}
  .gal__9{grid-column:span 4}          .gal__9 img{aspect-ratio:4/3}
  .gal__10{grid-column:span 4}         .gal__10 img{aspect-ratio:1/1}
}

/* ══════════ SPONSORS ══════════ */
.sponsors{background:var(--paper-2);padding:42px 0 48px;border-block:1px solid var(--linea)}
.sponsors__title{text-align:center;font-family:var(--mono);font-size:9px;letter-spacing:.26em;
  color:var(--gris);margin-bottom:28px}
/* Cada logo en tarjeta blanca: llegan con fondos distintos y así se ven todos
   igual de limpios sobre el papel gris. La caja fija acota alto Y ancho, para
   que el logo cuadrado no quede diminuto al lado del apaisado. */
.ausp{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;
  gap:16px;max-width:1080px;margin:0 auto;padding:0 24px}
.ausp__i{display:flex;align-items:center;justify-content:center;
  background:#fff;border:1px solid var(--linea);border-radius:4px;
  width:200px;height:104px;padding:16px 20px;
  transition:border-color .35s var(--ease),transform .35s var(--ease)}
.ausp__i:hover{border-color:var(--cyan);transform:translateY(-3px)}
.ausp__i img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
@media(max-width:520px){
  .ausp{gap:12px}
  .ausp__i{width:calc(50% - 6px);height:88px;padding:12px 14px}
  .ausp__i:last-child:nth-child(odd){width:calc(50% - 6px)}
}

/* ══════════ FAQ ══════════ */
.acc__item{border-bottom:1px solid var(--linea)}
.acc__item:first-child{border-top:1px solid var(--linea)}
.acc__btn{display:flex;justify-content:space-between;align-items:center;gap:24px;width:100%;
  text-align:left;padding:23px 0;transition:color .3s,padding .4s var(--ease);color:var(--ink)}
.acc__btn span{font-family:var(--display);font-weight:700;font-size:clamp(20px,2.3vw,28px);
  line-height:1.12;text-transform:uppercase}
.acc__btn:hover{color:var(--cyan-deep);padding-left:10px}
.acc__btn i{position:relative;width:16px;height:16px;flex:none}
.acc__btn i::before,.acc__btn i::after{content:"";position:absolute;background:currentColor;
  transition:transform .45s var(--ease),opacity .3s}
.acc__btn i::before{left:0;top:7.5px;width:16px;height:1.5px}
.acc__btn i::after{left:7.5px;top:0;width:1.5px;height:16px}
.acc__btn[aria-expanded="true"]{color:var(--cyan-deep)}
.acc__btn[aria-expanded="true"] i::after{transform:rotate(90deg);opacity:0}
.acc__panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .55s var(--ease)}
.acc__panel>div{overflow:hidden}
.acc__panel p{padding-bottom:24px;max-width:62ch;color:var(--gris)}
.acc__item.is-open .acc__panel{grid-template-rows:1fr}

/* ══════════ CTA FINAL ══════════ */
.cta{background:var(--cyan-deep);color:#fff;padding:clamp(76px,9.5vw,142px) var(--gut) 0;
  text-align:center;position:relative;overflow:hidden}
.cta__inner{position:relative;z-index:2;max-width:1100px;margin-inline:auto;
  padding-bottom:clamp(66px,8.5vw,114px)}
.cta__eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:.24em;margin-bottom:20px}
.cta__eyebrow b{font-family:var(--display);font-size:22px;letter-spacing:0;vertical-align:-2px}
.cta__title{font-family:var(--display);font-weight:900;text-transform:uppercase;
  font-size:clamp(46px,10.8vw,158px);line-height:.8;letter-spacing:-.03em;margin-bottom:38px}
.cta__title span{display:block}
.cta__note{margin-top:22px;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em}
.cta__wave{position:absolute;left:0;right:0;bottom:-1px;line-height:0}
.cta__wave svg{width:100%;height:clamp(56px,7.5vw,104px)}
.cta__wave path{fill:var(--ink)}

/* ══════════ FOOTER ══════════ */
.foot{background:var(--ink);color:#E9EDEF;padding-top:clamp(56px,6.5vw,94px);overflow:hidden}
.foot__top{display:grid;grid-template-columns:1fr;gap:44px;padding-bottom:52px}
@media(min-width:960px){.foot__top{grid-template-columns:1.1fr 1.4fr 1fr;gap:52px}}
.foot__logo{height:56px;width:auto;margin-bottom:16px}
.foot__tag{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;line-height:2;
  color:rgba(233,237,239,.72)}
.foot__cols{display:grid;grid-template-columns:repeat(2,1fr);gap:30px}
@media(min-width:600px){.foot__cols{grid-template-columns:repeat(3,1fr)}}
.foot__cols h3,.news h3{font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--cyan);margin-bottom:15px;font-weight:500}
.foot__cols a{display:block;padding:5px 0;color:rgba(233,237,239,.72);font-size:.92em;
  transition:color .3s,transform .3s var(--ease)}
.foot__cols a:hover{color:#fff;transform:translateX(4px)}
.news p{font-size:.88em;color:rgba(233,237,239,.72);margin-bottom:16px;max-width:34ch}
.news__field{display:flex;border:1px solid rgba(233,237,239,.28);transition:border-color .35s}
.news__field:focus-within{border-color:var(--cyan)}
.news__field input{flex:1;background:none;border:0;padding:14px 16px;color:#fff;
  font-family:var(--mono);font-size:11px;letter-spacing:.06em}
.news__field input::placeholder{color:rgba(233,237,239,.72)}
.news__field input:focus{outline:none}
.news__field button{padding:0 20px;background:var(--cyan-deep);color:#fff;font-size:17px;
  transition:background .3s}
.news__field button:hover{background:#fff;color:var(--ink)}
.news__field input:disabled{opacity:.5}
.news__msg{min-height:1.2em;margin-top:10px;font-family:var(--mono);font-size:10px;
  letter-spacing:.08em;line-height:1.6;color:rgba(233,237,239,.72)}
.news__msg.is-ok{color:var(--cyan)}
.news__msg.is-error{color:#FF9C7A}

.foot__org{display:flex;align-items:center;gap:14px;margin-top:26px;
  padding-top:20px;border-top:1px solid rgba(233,237,239,.14)}
.foot__org img{height:34px;width:auto;filter:brightness(0) invert(1);opacity:.8}
.foot__org span{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;
  color:rgba(233,237,239,.72);line-height:1.7}

.foot__bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:18px;
  padding:22px 0;border-top:1px solid rgba(233,237,239,.14);
  font-family:var(--mono);font-size:9px;letter-spacing:.12em;color:rgba(233,237,239,.72)}
.foot__social{display:flex;gap:22px;flex-wrap:wrap;align-items:center}
.foot__social a{display:inline-flex;align-items:center;gap:8px;padding:4px 0;
  transition:color .3s var(--ease)}
.rs{width:16px;height:16px;flex:none;fill:currentColor;transition:transform .35s var(--ease)}
.foot__social a:hover .rs{transform:scale(1.15)}
.foot__social a:hover,.foot__legal a:hover{color:var(--cyan)}
.foot__giant{line-height:.72;text-align:center;padding-inline:8px;
  margin-bottom:-.14em;user-select:none}
.foot__giant span{font-family:var(--display);font-weight:900;text-transform:uppercase;
  /* Ajustado a "CAJAMARCA CORRE" (~6,67 em de ancho en esta fuente).
     Si cambias el nombre, reajusta el vw: 0,96 x (100vw - 16px) / anchoEnEm  */
  font-size:clamp(28px,14.2vw,300px);letter-spacing:-.03em;
  color:transparent;-webkit-text-stroke:1px rgba(233,237,239,.18);
  display:block;white-space:nowrap}

/* ══════════ Accesibilidad / motion ══════════ */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important}
  .reveal{opacity:1;transform:none}
  .h2.reveal,.statement.reveal,.cta__title .reveal,
  .gal figure.reveal,.hero__media img{clip-path:none}
  .hero__media img,.gal img{transform:none}
  .hero__media .bib{opacity:1}
  .countdown dd.tick{animation:none}
  .hero__title .line__in{transform:none}
  .mapa__flechas .mapa__dir{opacity:1!important}
  .nav__links{transition-delay:0s}
    .grain{animation:none}
}

/* [1] Bajo 1050px el mapa oficial conserva un tamaño legible y se desliza en
   horizontal: ajustarlo al ancho de un móvil lo dejaba en 293x112 px, donde no
   se leen ni las calles ni los kilómetros.
   La capa de anotaciones NO se escala aquí. Se dimensiona una sola vez para que
   funcione tanto al 0,70 del carril como al 0,96 de escritorio: al agrandarla
   solo en móvil, las flechas invadían los discos de kilómetro y las pastillas
   se montaban sobre el trazado. */
@media(max-width:1049px){
  .route__map{overflow-x:auto;overscroll-behavior-x:contain;
    -webkit-mask-image:linear-gradient(90deg,#000 90%,transparent);
            mask-image:linear-gradient(90deg,#000 90%,transparent)}
  .map{width:848px;min-width:848px;max-width:none}
}
/* La altimetría, en cambio, NO lleva carril: un mapa se explora desplazándolo,
   pero un perfil se lee de golpe. Con carril solo se veían los 3 primeros km
   —pura bajada— y daba a entender que la carrera es cuesta abajo. Los rótulos
   del eje quedan pequeños, pero las cifras exactas las da .alti__facts. */
