/* Secciones en flujo normal. Medidas de referencia a 1440px: 833 / 637 / 904 / 798 / 698 / 821 / 850 / 1123 / 489 / 616. */
.hero__video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; z-index:1; pointer-events:none; filter:brightness(.7); }
.hero .hero__photo { z-index:0; }
.hero .hero__photo::after { z-index:2; }
.hero__video.is-playing { opacity:1; }
.hero__video-toggle { position:absolute; right:24px; bottom:24px; z-index:2; width:48px; height:48px; display:grid; place-items:center; border:1px solid currentColor; border-radius:50%; background:rgba(0,0,0,.65); color:white; cursor:pointer; }
.hero__video-toggle[hidden] { display:none; }
.hero__video-toggle span { width:14px; height:18px; border-inline:5px solid currentColor; }
.hero__video-toggle[data-paused="true"] span { width:0; height:0; border:9px solid transparent; border-left:14px solid currentColor; border-right:0; }
.hero__video-toggle:focus-visible { outline:3px solid white; outline-offset:4px; }
@media(prefers-reduced-motion:reduce) { .hero__video,.hero__video-toggle { display:none; } }
.hero {
  height:833px;
  position:relative;
  text-align:center;
}
.hero__photo {
  position:absolute;
  inset:0;
}
.hero__photo>img {
  width:100%;
  height:115.26%;
  top:-15.21%;
  left:0;
  object-fit:cover;
}
.hero__content {
  position:relative;
  z-index:1;
  padding-top:289px;
}
.hero h1 {
  font:700 90px/1 var(--font-body);
  letter-spacing:-.9px;
}
.hero__eyebrow {
  display:block;
  font-size:60px;
  line-height:60px;
  font-weight:400;
  letter-spacing:-.6px;
  text-transform:uppercase;
}
.hero time {
  display:block;
}
.hero__registration {
  font-size:30px;
  line-height:30px;
  text-transform:uppercase;
  letter-spacing:-.3px;
  margin-top:4px;
}
.hero__content>.button {
  margin-top:37px;
}
.hero__scroll {
  position:absolute;
  bottom:36px;
  left:50%;
  transform:translateX(-50%);
  font:500 18px/1.2 var(--font-mono);
  text-transform:uppercase;
  letter-spacing:-.18px;
  padding:4px;
}
.hero__media-controls {
  position:absolute;
  right:29px;
  bottom:22px;
  display:flex;
  align-items:center;
  gap:17px;
}
.pause-icon {
  position:relative;
  display:block;
}
.pause-icon__bar {
  position:absolute;
  top:17px;
}
.pause-icon__bar--one {
  left:17px;
}
.pause-icon__bar--two {
  left:34px;
}
.introduction {
  min-height:637px;
  background:var(--color-green);
  padding:184px 0 150px;
}
.introduction__inner {
  max-width:1081px;
  width:calc(100% - 80px);
  margin:auto;
}
.introduction p {
  font-size:28px;
  line-height:36px;
}
.introduction .button {
  display:flex;
  width:max-content;
  margin:30px auto 0;
}
.races {
  min-height:904px;
  padding:85px var(--page-gutter) 157px;
}
.races>h2 {
  text-align:center;
  line-height:77px;
  font-size:72px;
  letter-spacing:-1.5px;
}
.races__grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:21px;
  margin-top:96px;
}
.race-card {
  position:relative;
  aspect-ratio:664/489;
}
.race-card__photo {
  position:absolute;
  inset:0;
}
.race-card--mim .photo>img {
  width:182.23%;
  height:164.96%;
  left:-41.13%;
  top:-37.84%;
}
.race-card--csp .photo>img {
  width:132.83%;
  height:120.75%;
  left:-16.38%;
  top:-20.82%;
}
.race-card h3 {
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
}
.race-card--mim h3,.race-card--csp h3 { position:static; transform:none; }
.race-card__link { position:absolute; inset:0; display:grid; place-items:center; z-index:1; }
.race-card__link:focus-visible { outline-offset:-6px; }
.race-card p {
  position:absolute;
  left:28px;
  bottom:22px;
  font:400 clamp(18px,1.7vw,26px)/1.35 var(--font-body);
  right:20px;
  text-transform:uppercase;
}
.race-card--csp p {
  left:49px;
  bottom:12px;
}
.avant {
  height:798px;
  position:relative;
}
.avant__photo {
  position:absolute;
  inset:0;
}
.avant__photo>img {
  width:100%;
  height:120.61%;
  left:-.02%;
  top:-10.31%;
  object-fit:cover;
}
.avant__content {
  position:absolute;
  left:51%;
  right:4.4%;
  top:302px;
}
.avant h2 {
  font-size:clamp(54px,4.86vw,70px);
  line-height:1.1;
  font-style:normal;
  max-width:511px;
}
.avant .button {
  margin-top:29px;
}
.statistics {
  min-height:698px;
  background:var(--color-deep);
  border-top:4px solid var(--color-background);
  padding:97px 8% 190px;
  text-align:center;
}
.statistics h2 {
  font-size:72px;
  line-height:75px;
}
.statistics__grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:30px;
  margin-top:127px;
}
.statistics__grid>div {
  display:flex;
  flex-direction:column;
  align-items:center;
}
.statistics dd {
  order:-1;
  font:400 104px/1.1 var(--font-display);
  letter-spacing:-1.1px;
  margin-bottom:29px;
}
.statistics dt {
  font:400 24px/1.2 var(--font-sans);
  letter-spacing:-.24px;
}
.community {
  position:relative;
  margin:15px 0 0 9px;
}
.slider__viewport {
  position:relative;
}
.slide {
  height:806px;
  position:relative;
}
.slide__photo {
  position:absolute;
  inset:0;
}
.slide--volunteers .photo>img {
  width:106.46%;
  height:128.36%;
  left:-6.44%;
  top:-16.77%;
  object-fit:cover;
}
.slide--supporters .photo>img {
  width:139.84%;
  height:168.6%;
  left:0;
  top:-9.51%;
  object-fit:cover;
}
.slide__content {
  position:absolute;
  left:65.07%;
  top:233px;
  width:30%;
  max-width:432px;
}
.slide h2 {
  font-size:64px;
  line-height:1.08;
  min-height:247px;
}
.slide__content>p {
  font-size:20px;
  font-weight:700;
  line-height:24px;
  letter-spacing:-.2px;
  max-width:366px;
  min-height:99px;
}
.slide .button {
  margin-top:31px;
}
.slide--supporters .slide__content {
  left:8.8%;
  top:246px;
  max-width:400px;
}
.slide--supporters .button {
  margin-top:0;
}
.slider__arrow {
  position:absolute;
  top:calc(50% - 30px);
  display:flex;
  align-items:center;
  justify-content:center;
  width:52px;
  height:60px;
  background:#18171244;
}
.slider__arrow--previous {
  left:27px;
}
.slider__arrow--next {
  right:20px;
}
.slider__arrow--next img {
  transform:rotate(180deg);
}
.slider__counter {
  position:absolute;
  bottom:22px;
  left:50%;
  transform:translateX(-50%);
  font-size:14px;
  padding:4px 12px;
  background:#18171299;
  border-radius:20px;
}
.slider-ready .slide:not([hidden]) {
  animation:slide-reveal .3s ease-out;
}
@keyframes slide-reveal {
  from {
    opacity:.4;
  }
  to {
    opacity:1;
  }
}
/* Noticias crece con las tarjetas, sin altura reservada. */
.news {
  padding:74px var(--page-gutter);
}
.news h2 {
  text-align:center;
  font-size:72px;
  line-height:1.05;
  margin-bottom:40px;
}
.avant .button:disabled:hover { background:transparent; }
.sponsors {
  min-height:1123px;
  padding-bottom:140px;
  padding-top:8px;
}
.sponsors__statement {
  width:100%;
  max-width:100%;
  min-width:0;
  contain:inline-size;
  overflow:hidden;
  padding-bottom:49px;
  font:500 100px/117px var(--font-display);
  text-transform:uppercase;
  letter-spacing:-1.1px;
}
.marquee__row {
  width:100%;
  max-width:100%;
  min-width:0;
  overflow:hidden;
  overflow:clip;
}
.marquee__text {
  padding-inline:var(--page-gutter);
  overflow-wrap:anywhere;
}
.marquee__copy {
  display:none;
}
.marquee__controls {
  display:flex;
  justify-content:flex-end;
  padding:18px var(--page-gutter) 0;
  font:400 16px/1.4 var(--font-body);
  letter-spacing:normal;
}
.marquee__controls:has([hidden]) {
  display:none;
}
.marquee__controls .button {
  min-height:44px;
}
/* Dos mitades idénticas: el final coincide con el principio, incluido el espacio. */
@media(prefers-reduced-motion:no-preference) {
  .marquee-ready .marquee__track {
    display:flex;
    width:max-content;
    animation:marquee-loop 90s linear infinite;
    will-change:transform;
  }
  .marquee-ready .marquee__text {
    flex:0 0 auto;
    width:max-content;
    min-width:100vw;
    padding:0 .65em 0 0;
    white-space:nowrap;
    overflow-wrap:normal;
  }
  .marquee-ready .marquee__copy {
    display:block;
  }
  .marquee-ready .marquee__row--reverse .marquee__track {
    animation-direction:reverse;
  }
  .marquee-ready.is-paused .marquee__track {
    animation-play-state:paused;
  }
}
@keyframes marquee-loop {
  from { transform:translateX(0); }
  to { transform:translateX(-50%); }
}
.sponsors__groups {
  padding:0 var(--page-gutter);
}
.sponsor-group h3 {
  font-size:16px;
  font-weight:400;
  line-height:23px;
  text-transform:uppercase;
  margin-bottom:38px;
}
.sponsor-group--institutional {
  margin-bottom:76px;
}
.sponsor-group--title {
  margin-bottom:79px;
}
.sponsor-group--title h3 {
  margin-bottom:33px;
}
.sponsor-group--premium {
  margin-bottom:90px;
}
.sponsor-group--premium h3 {
  margin-bottom:25px;
}
.sponsor-logos {
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  min-height:59px;
}
/* Permitir que las imágenes se reduzcan dentro de las columnas, sin imponer
 * su anchura intrínseca como mínimo de la fila. */
.sponsor-logos>li {
  min-width:0;
  max-width:100%;
}
.sponsor-group img {
  max-width:100%;
  height:auto;
}
.sponsor-group--official h3 {
  margin-bottom:36px;
}
.sponsor-group--official .sponsor-logos {
  justify-content:flex-start;
  gap:49px;
  min-height:24px;
}
.finish-photo {
  height:489px;
}
.finish-photo>img {
  width:100.74%;
  height:198.01%;
  left:0;
  top:-45.63%;
  object-fit:cover;
}
@media(min-width:1600px) {
  .hero {
    height:58vw;
    max-height:1100px;
  }
  .hero__content {
    padding-top:20vw;
  }
  .races {
    padding-bottom:157px;
  }
  .races__grid {
    max-width:1680px;
    margin-inline:auto;
  }
  .avant,.slide {
    height:56vw;
    max-height:1000px;
  }
  .avant__content {
    top:38%;
  }
  .slide__content {
    top:29%;
  }
  .slide--supporters .slide__content {
    top:30%;
  }
}
/* Referencias locales: home-actual-escritorio.pdf y home-actual-movil.pdf.
 * Tablet y legibilidad de las tres noticias son adaptación del contenido real. */
@media(max-width:1100px) {
  .hero {
    height:760px;
  }
  .hero__content {
    padding-top:275px;
  }
  .hero__photo>img {
    width:100%;
    height:100%;
    left:0;
    top:0;
    object-position:center;
  }
  .introduction {
    min-height:0;
    padding:110px 6%;
  }
  .introduction__inner {
    width:100%;
  }
  .introduction p {
    font-size:25px;
    line-height:34px;
  }
  .races {
    min-height:0;
    padding:85px 24px 100px;
  }
  .races>h2 {
    font-size:58px;
    line-height:1.05;
  }
  .races__grid {
    margin-top:65px;
    gap:20px;
  }
  .race-card p,.race-card--csp p {
    font-size:25px;
    line-height:1.2;
    left:20px;
    bottom:20px;
  }
  .race-card h3 {
    width:30%;
  }
  .avant {
    height:630px;
  }
  .avant__content {
    left:55%;
    right:5%;
    top:220px;
  }
  .avant h2 {
    font-size:46px;
  }
  .statistics {
    min-height:0;
    padding:80px 5% 110px;
  }
  .statistics h2 {
    font-size:60px;
  }
  .statistics__grid {
    margin-top:80px;
    gap:20px;
  }
  .statistics dt {
    font-size:18px;
  }
  .statistics dd {
    font-size:92px;
  }
  .community {
    margin-left:0;
  }
  .slide {
    height:650px;
  }
  .slide__content {
    left:59%;
    width:34%;
    top:160px;
  }
  .slide h2 {
    font-size:48px;
    min-height:225px;
  }
  .slide__content>p {
    font-size:18px;
    min-height:85px;
  }
  .slide .button {
    margin-top:20px;
    padding-inline:18px;
    font-size:14px;
  }
  .slide--supporters .slide__content {
    top:160px;
    left:10%;
  }
  .slider__arrow--previous {
    left:10px;
  }
  .slider__arrow--next {
    right:8px;
  }
  .news h2 {
    font-size:60px;
  }
  .sponsors {
    min-height:0;
    padding:0 0 100px;
  }
  .sponsors__statement {
    font-size:80px;
    line-height:1.15;
    padding-bottom:65px;
  }
  .sponsor-logos {
    flex-wrap:wrap;
    justify-content:flex-start;
    gap:35px 45px;
  }
  .sponsor-group--premium {
    margin-bottom:70px;
  }
  .finish-photo {
    height:360px;
  }
}
@media(max-width:600px) {
  .hero {
    height:clamp(510px,144vw,620px);
    min-height:0;
  }
  .hero__content {
    position:absolute;
    bottom:44px;
    inset-inline:20px;
    padding:0;
  }
  /* Source/Referencias/home-actual-movil.pdf, p. 1, muestra solo el CTA.
     Se conserva la omisión visual existente; aprobación final de Diseño pendiente.
     La fecha y el título continúan accesibles, sin cambiar sus datos. */
  .hero h1,.hero__registration {
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip-path:inset(50%);
    white-space:nowrap;
  }
  .hero__scroll,.hero__media-controls { display:none; }
  .hero h1 {
    font-size:68px;
  }
  .hero__eyebrow {
    font-size:40px;
    line-height:52px;
  }
  .hero__registration {
    font-size:21px;
    line-height:28px;
  }
  .hero__content>.button {
    margin-top:28px;
  }
  .hero__scroll {
    font-size:12px;
    bottom:36px;
    left:24px;
    transform:none;
  }
  .hero__media-controls {
    right:20px;
    bottom:26px;
    transform:scale(.75);
    transform-origin:right bottom;
  }
  .hero__photo>img {
    object-position:51% center;
  }
  .introduction {
    padding:48px 22px 36px;
  }
  .introduction p {
    font-size:20px;
    line-height:28px;
  }
  .introduction .button {
    margin-top:34px;
  }
  .races {
    padding:48px 18px 64px;
  }
  .races>h2 {
    font-size:44px;
    line-height:1.05;
    letter-spacing:-.6px;
    max-width:350px;
    margin:auto;
  }
  .races__grid {
    grid-template-columns:1fr;
    margin-top:32px;
    gap:18px;
  }
  .race-card {
    aspect-ratio:342 / 252;
  }
  .race-card p,.race-card--csp p {
    font-size:18px;
    left:18px;
    bottom:18px;
  }
  .race-card h3 {
    width:auto;
  }
  .race-card h3 img {
    max-width:140px;
  }
  .avant {
    min-height:435px;
    height:auto;
    display:flex;
    align-items:center;
  }
  .avant__photo {
    position:absolute;
    inset:0;
    height:100%;
  }
  .avant__photo>img {
    height:100%;
    width:100%;
    top:0;
    left:0;
    object-position:38% center;
  }
  .avant__content {
    position:relative;
    inset:auto;
    width:100%;
    background:linear-gradient(transparent,#18171299,transparent);
    padding:100px 24px 44px;
    text-align:center;
  }
  .avant h2 {
    font-size:clamp(30px,8.5vw,38px);
    font-style:normal;
    max-width:400px;
    margin-inline:auto;
  }
  .avant .button {
    margin-top:25px;
  }
  .statistics {
    padding:52px 18px 64px;
  }
  .statistics h2 {
    font-size:46px;
    line-height:1.1;
  }
  .statistics__grid {
    grid-template-columns:repeat(4,minmax(0,1fr));
    margin-top:48px;
    gap:12px;
  }
  .statistics dd {
    font-size:clamp(36px,11vw,52px);
    line-height:1;
    margin-bottom:14px;
  }
  .statistics dt {
    font-size:12px;
    line-height:1.4;
    max-width:100%;
    overflow-wrap:anywhere;
  }
  .community {
    margin-top:0;
  }
  .slide {
    height:auto;
    min-height:490px;
    background:var(--color-green);
    display:flex;
    align-items:flex-end;
  }
  .slide__photo {
    position:absolute;
    inset:0;
    height:100%;
  }
  .slide--volunteers .photo>img {
    width:100%;
    height:100%;
    inset:0;
    object-fit:cover;
    object-position:40% center;
  }
  .slide--supporters .photo>img {
    width:100%;
    height:100%;
    top:0;
    left:0;
    object-fit:cover;
  }
  .slide__content,.slide--supporters .slide__content {
    position:relative;
    inset:auto;
    width:100%;
    max-width:none;
    padding:48px 36px 68px;
    text-align:center;
    background:linear-gradient(transparent,#181712cc);
  }
  .slide h2 {
    font-size:34px;
    min-height:0;
    max-width:400px;
    margin-inline:auto;
  }
  .slide__content>p {
    min-height:0;
    max-width:350px;
    margin-top:20px;
    font-size:18px;
    line-height:25px;
    margin-inline:auto;
  }
  .slide .button,.slide--supporters .button {
    margin-top:25px;
    min-height:44px;
  }
  .slider__arrow {
    top:90px;
    width:44px;
    height:52px;
    background:#181712a6;
  }
  .slider__counter {
    bottom:19px;
  }
  .news {
    padding-block:48px;
  }

  .news-card__content { min-height:0; gap:24px; }
  .news h2 {
    font-size:46px;
  }
  .sponsors {
    padding-bottom:70px;
  }
  .sponsors__statement {
    font-size:55px;
    line-height:1.12;
    padding-bottom:52px;
  }
  .sponsors__groups {
    padding:0 24px;
  }
  .sponsor-group h3 {
    font-size:14px;
    margin-bottom:26px;
  }
  .sponsor-group--institutional,.sponsor-group--title,.sponsor-group--premium {
    margin-bottom:48px;
  }
  .sponsor-logos {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:30px 24px;
  }
  .sponsor-logos img {
    max-width:100%;
    height:auto;
  }
  .sponsor-group--official .sponsor-logos {
    gap:24px;
  }
  .finish-photo {
    height:260px;
  }
  .finish-photo>img {
    width:100%;
    height:100%;
    top:0;
    object-fit:cover;
    object-position:center;
  }
}
@media(max-width:359px) {
  .statistics__grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px 16px; }
}

/* Tarjetas de carreras: ambas imágenes en color por defecto, zoom en hover y la opuesta en blanco y negro */
.race-card__photo img {
  filter: grayscale(0);
  transform: scale(1);
  transition: transform 0.45s cubic-bezier(0.25, 1, 0.5, 1), filter 0.45s ease;
  will-change: transform, filter;
}

@media(hover:hover) {
  .race-card:hover .race-card__photo img,
  .race-card:focus-within .race-card__photo img {
    transform: scale(1.06);
    filter: grayscale(0);
  }

  .races__grid:has(.race-card:hover) .race-card:not(:hover) .race-card__photo img,
  .races__grid:has(.race-card:focus-within) .race-card:not(:focus-within) .race-card__photo img {
    filter: grayscale(1);
    transform: scale(1);
  }
}
@media(prefers-reduced-motion:reduce) {
  .race-card__photo img, .news .news-card img { transition:none; transform:none; }
}

.institutional-logos { position:relative; width:min(734px,100%); margin-left:0; margin-right:auto; }
.institutional-logos>img { width:100%; height:auto; }
.institutional-logos>a { position:absolute; top:0; bottom:0; min-height:44px; }
.institutional-logos__dipcas { left:0; width:36%; }
.institutional-logos__gva { left:43%; right:0; }
.institutional-logos>a:focus-visible { outline-offset:4px; }
.sponsors__statement:not(.marquee-ready) .marquee__row--reverse { display:none; }


/* Control discreto, accesible con teclado y toque; sin etiqueta de texto visible. */
.sponsors__statement { position:relative; }
.sponsors__statement .marquee__pause { position:absolute; right:var(--page-gutter); bottom:5px; width:44px; height:44px; min-height:44px; padding:0; display:grid; place-items:center; border:1px solid currentColor; border-radius:50%; background:var(--color-deep); color:inherit; font:16px/1 var(--font-body); }
.sponsors__statement .marquee__pause[hidden] { display:none; }
.marquee__pause span { width:12px; height:14px; border-inline:4px solid currentColor; }
.marquee__pause[aria-pressed="true"] span { width:0; height:0; border:7px solid transparent; border-left:11px solid currentColor; border-right:0; margin-left:3px; }
.marquee__pause:focus-visible { outline:3px solid currentColor; outline-offset:4px; }

/* Revisión responsive 21/10/2026. */
@media(min-width:601px) {
 .hero { height:100svh; min-height:600px; }
 .hero__content { height:100%; padding:100px 24px; display:flex; flex-direction:column; align-items:center; justify-content:center; }
}
@media(max-width:600px) {
 .sponsor-group--title>a>img { width:96px; }
 .sponsor-group--premium .sponsor-logos { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:28px 16px; }
 .sponsor-group--premium li { grid-column:span 3; }
 .sponsor-group--premium li:nth-child(-n+3) { grid-column:span 4; }
 .sponsor-logos img { max-height:26px; object-fit:contain; }
 .sponsor-group--official .sponsor-logos { display:flex; gap:30px; }
 .sponsor-group--official img { width:auto; max-width:90px; max-height:20px; }
}

@media(max-width:600px) { .sponsor-group h3 { font-size:12px; margin-bottom:20px; } .sponsor-group--institutional,.sponsor-group--title,.sponsor-group--premium { margin-bottom:36px; } }
