.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:33px;
  padding:6px 29px;
  border:1px solid transparent;
  border-radius:25px;
  font-size:16px;
  line-height:19px;
  text-transform:uppercase;
  text-align:center;
  max-width:100%;
  transition:background-color .18s,border-color .18s;
}
.button--red {
  background:var(--color-accent);
}
.button--red:hover {
  background:#d90015;
}
.button--dark {
  background:var(--color-button);
}
.button--dark:hover {
  background:#30302a;
}
.button--outline {
  border-color:var(--color-text);
}
.button--outline:hover {
  background:#ffffff1c;
}
.display-heading {
  font-family:var(--font-display);
  font-size:80px;
  line-height:1.08;
  font-weight:700;
  text-transform:uppercase;
}
.display-heading--italic {
  font-style:normal;
}
.photo {
  position:relative;
  overflow:hidden;
}
.photo>img {
  position:absolute;
  max-width:none;
}
/* Protección compartida sobre la fotografía: fondo de cabecera transparente.
   Hasta 120 px, negro >=60 % da contraste a los controles blancos incluso sobre cielo claro. */
.hero__photo::after,
.mim-hero::after,
.participation-page:has(.site-header--overlay) .participation-hero::after {
  content:"";
  position:absolute;
  inset:0 0 auto;
  height:min(320px,100%);
  pointer-events:none;
  background:linear-gradient(to bottom,rgb(0 0 0 / 72%),rgb(0 0 0 / 60%) 120px,transparent);
}
.site-header {
  position:absolute;
  z-index:10;
  top:17px;
  left:3%;
  right:2.85%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:30px;
  min-height:58px;
}
.brand {
  flex:none;
}
.main-nav {
  width:min(950px,76%);
}
.main-nav ul {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
}
.main-nav a,.main-nav button {
  font-size:16px;
  text-transform:uppercase;
  white-space:nowrap;
}
.main-nav li { min-width:0; }
.button { white-space:normal; overflow-wrap:break-word; }
.main-nav button:not(.button) {
  padding:8px 0;
}
.main-nav a,.main-nav button:not(.button) {
  position:relative;
  display:inline-block;
  width:fit-content;
}
.main-nav a::after,.main-nav button:not(.button)::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-3px;
  height:2px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .28s cubic-bezier(0.25, 1, 0.5, 1);
}
.main-nav a:hover::after,
.main-nav button:hover::after,
.main-nav a:focus-visible::after,
.main-nav button:focus-visible::after {
  transform:scaleX(1);
}
.menu-toggle {
  display:none;
}
.race-nav { position:relative; }
.race-nav summary {
  cursor:pointer;
  list-style:none;
  font-size:16px;
  text-transform:uppercase;
  white-space:nowrap;
  display:inline-block;
  width:fit-content;
}
.race-nav summary::-webkit-details-marker { display:none; }
.race-nav summary:focus-visible { outline:2px solid var(--focus-color); outline-offset:6px; }
.main-nav .race-nav__links {
  position:absolute;
  top:calc(100% + 12px);
  left:0;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:4px;
  min-width:200px;
  width:max-content;
  padding:16px 20px;
  background:var(--color-deep);
  box-shadow:0 12px 28px #0006;
  border-radius:4px;
  z-index:50;
}
.main-nav .race-nav__links::before {
  content:"";
  position:absolute;
  top:-14px;
  left:0;
  right:0;
  height:14px;
}
.main-nav .race-nav__links li {
  display:flex;
  align-items:center;
  width:fit-content;
}
.main-nav .race-nav__links a,
.main-nav .race-nav__links button:not(.button) {
  display:inline-block;
  width:fit-content;
  padding-block:6px;
  white-space:nowrap;
  text-align:left;
}
.main-nav .race-nav__links button:disabled {
  pointer-events:auto;
}
.main-nav .race-nav__links a::after,
.main-nav .race-nav__links button:not(.button)::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:2px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .28s cubic-bezier(0.25, 1, 0.5, 1);
}
.main-nav .race-nav__links a:hover::after,
.main-nav .race-nav__links button:hover::after,
.main-nav .race-nav__links a:focus-visible::after,
.main-nav .race-nav__links button:focus-visible::after,
.main-nav .race-nav__links li:hover > a::after,
.main-nav .race-nav__links li:hover > button::after {
  transform:scaleX(1);
}
@media(min-width:1101px) and (max-width:1300px) {
  .race-nav summary { font-size:14px; }
}
@media(max-width:1100px) {
  .race-nav summary { padding-block:12px; }
  .main-nav .race-nav__links { position:static; min-width:0; padding:0 0 8px 18px; box-shadow:none; }
}
.site-footer {
  padding: 64px var(--page-gutter) 48px;
  background: var(--color-deep);
  color: #fff;
  font-family: var(--font-body);
}
.footer-grid {
  display: grid;
  grid-template-columns: minmax(280px, 1.4fr) minmax(220px, 1.15fr) minmax(140px, 0.8fr) minmax(130px, 0.75fr);
  justify-content: space-between;
  gap: 32px;
  align-items: start;
}
.site-footer h2 {
  font: 400 16px/1.3 var(--font-body);
  text-transform: uppercase;
  margin: 0 0 24px;
  letter-spacing: 0.5px;
  color: #fff;
}
.site-footer p,
.site-footer address,
.site-footer .footer-links {
  font-size: 15px;
  line-height: 1.45;
  color: #fff;
}
.site-footer address {
  font-style: normal;
  overflow-wrap: anywhere;
}
.footer-contact__email,
.footer-contact__address {
  margin-bottom: 22px;
}
.footer-contact__schedule {
  margin: 0;
}
.footer-links {
  list-style: none;
  padding: 0;
  margin: 0;
}
.footer-links li + li {
  margin-top: 6px;
}
.site-footer button:not(.subscribe-form button) {
  font: inherit;
  text-align: left;
  padding: 0;
  color: inherit;
  background: none;
  border: 0;
  cursor: pointer;
}
.site-footer a:hover,
.site-footer button:not(:disabled):hover {
  text-decoration: underline;
  text-underline-offset: 4px;
}
.footer-brand__img,
.footer-subscribe__brand {
  display: block;
  width: min(340px, 100%);
  height: auto;
}
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  margin-top: clamp(64px, 8vw, 110px);
  gap: 32px;
}
.footer-organizer,
.organizer {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 16px;
}
.footer-organizer img,
.organizer img {
  display: block;
  width: 60px;
  height: 49px;
}
.footer-copyright {
  margin: 0;
  font: 400 15px/1.2 var(--font-body);
  letter-spacing: -0.2px;
  color: #fff;
}
.legal-links {
  display: flex;
  gap: 32px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.legal-links button {
  font: 400 15px/1.2 var(--font-body);
  color: #fff;
  text-decoration: underline;
  text-underline-offset: 4px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}
.notice {
  position:fixed;
  bottom:24px;
  left:50%;
  transform:translateX(-50%);
  z-index:30;
  display:flex;
  align-items:center;
  gap:24px;
  width:max-content;
  max-width:calc(100% - 32px);
  padding:20px 24px;
  background:var(--color-green);
  border:1px solid #a4b78c;
  box-shadow:0 8px 30px #0005;
}
.notice button {
  padding:8px;
  text-decoration:underline;
  flex:none;
}
.noscript-note {
  padding:24px;
  background:var(--color-green);
}
@media(min-width:1101px) and (max-width:1300px) {
  .main-nav {
    width:82%;
  }
  .main-nav ul {
    gap:10px;
  }
  .main-nav a,.main-nav button {
    font-size:14px;
  }
  .main-nav .button {
    padding-inline:20px;
  }
}
@media(max-width:1100px) {
  .site-header {
    top:20px;
    left:24px;
    right:24px;
    align-items:flex-start;
    flex-wrap:wrap;
  }
  .site-header.menu-ready {
    align-items:center;
  }
  .main-nav {
    width:100%;
    padding:24px;
    background:var(--color-deep);
  }
  .main-nav ul {
    flex-wrap:wrap;
    justify-content:flex-start;
    gap:22px;
  }
  .menu-ready .main-nav {
    display:none;
    position:absolute;
    top:75px;
    right:0;
    width:100%;
    max-height:calc(100dvh - 130px);
    overflow-y:auto;
    overscroll-behavior:contain;
    padding:26px;
    box-shadow:0 12px 35px #0006;
  }
  .menu-ready .main-nav.is-open {
    display:block;
  }
  .menu-ready .main-nav > ul > li + li { border-top:1px solid #ffffff30; }
  .menu-ready .main-nav > ul > li > a:not(.button),
  .menu-ready .main-nav summary { font-size:20px; line-height:1.3; }
  .menu-ready .race-nav__links a { font-size:16px; }
  .menu-ready .main-nav > ul > li:last-child { padding-top:18px; }
  .menu-ready .main-nav ul {
    display:grid;
    justify-content:stretch;
    align-items:stretch;
    gap:10px;
  }
  .menu-ready .main-nav a,.menu-ready .main-nav button:not(.button) {
    display:block;
    padding:12px 0;
    width:100%;
    text-align:left;
  }
  .menu-ready .main-nav a,.menu-ready .main-nav button,.race-nav summary { min-height:44px; }
  .menu-ready .menu-toggle {
    display:flex;
    gap:18px;
    align-items:center;
    padding:12px 0;
    text-transform:uppercase;
  }
  .menu-toggle__lines {
    width:25px;
    height:14px;
    border-top:1px solid;
    border-bottom:1px solid;
  }
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines { position:relative; border:0; }
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines::before,
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines::after { content:""; position:absolute; left:0; top:6px; width:25px; border-top:1px solid; transform:rotate(45deg); }
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines::after { transform:rotate(-45deg); }
  .footer-grid {
    grid-template-columns:1.4fr 1fr;
    gap:15px 50px;
  }
  .site-footer {
    padding:48px 32px;
  }
  .footer-bottom {
    flex-wrap:wrap;
    margin-top:55px;
    gap:26px;
  }
  .legal-links {
    margin-left:0;
    flex-wrap:wrap;
  }
  .display-heading {
    font-size:64px;
  }
}
@media(max-width:600px) {
  .site-header { top:24px; left:18px; right:18px; gap:18px; }
  .brand img {
    width:145px;
  }
  .menu-ready .menu-toggle { min-width:44px; min-height:44px; justify-content:center; }
  .button {
    min-height:44px;
    padding:10px 22px;
    font-size:14px;
  }
  .display-heading {
    font-size:46px;
  }
  .site-footer {
    padding:40px 24px;
  }
  .footer-grid {
    grid-template-columns:1fr 1fr;
    gap:0 20px;
  }
  .footer-subscribe,.footer-contact {
    grid-column:1/-1;
  }
  .footer-subscribe {
    padding-top:0;
    max-width:390px;
  }
  .site-footer h2 {
    margin-top:40px;
    margin-bottom:22px;
  }
  .site-footer p,.site-footer address,.footer-links {
    font-size:14px;
  }
  .site-footer .footer-links a,.site-footer .footer-links button {
    display:inline-block;
    padding:9px 0;
  }
  .footer-links li+li {
    margin:0;
  }
  .footer-bottom {
    display:grid;
    gap:24px;
  }
  .legal-links {
    gap:20px;
    font-size:13px;
  }
  .notice {
    align-items:flex-start;
    font-size:14px;
    padding:16px;
    gap:10px;
  }
}

/* Cabecera direccional: no modifica el espacio ni la altura del documento. */
.site-header.menu-ready { position:fixed; transition:transform .22s ease, background-color .18s ease; }
.site-header.menu-ready.is-hidden { transform:translateY(calc(-100% - 45px)); }
.site-header.menu-ready.is-over-content { background:#181712; color:#fff; box-shadow:0 0 0 12px #181712; border-radius:0; }
.main-nav a[aria-current="page"]::after { transform:scaleX(1); }
.mobile-menu { border:0; margin:0; padding:0; width:100%; max-width:none; height:100vh; height:100dvh; max-height:none; background:var(--color-deep); color:#fff; overflow:hidden; }
.mobile-menu::backdrop { background:#181712; }
.mobile-menu[open] { display:flex; flex-direction:column; }
.mobile-menu__close { flex:none; align-self:flex-end; margin: max(16px, env(safe-area-inset-top)) 24px 12px; padding:12px; min-height:48px; font-size:20px; }
.mobile-menu.menu-ready .main-nav.is-open { position:static; display:block; width:100%; max-height:none; min-height:0; overflow:auto; flex:1; padding:16px 26px max(26px, env(safe-area-inset-bottom)); box-shadow:none; }
@media(prefers-reduced-motion:reduce) {
  .site-header.menu-ready { transition:none; }
}

.main-nav summary { position:relative; display:inline-block; width:fit-content; }
.main-nav summary::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-3px;
  height:2px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .28s cubic-bezier(0.25, 1, 0.5, 1);
}
.main-nav summary:hover::after,
.main-nav summary:focus-visible::after,
.main-nav details[open] > summary::after,
.main-nav details:has([aria-current="page"]) > summary::after {
  transform:scaleX(1);
}

/* El texto definitivo conserva tamaño y acceso semántico durante la copia visual. */
/* SVG aprobados 16/10: solo acordeones de contenido, nunca la navegación.
   Máscara alfa: color heredado del fondo claro/oscuro, geometría 12:13 intacta. */
main :is(.excel-disclosure,.participation-disclosure)>summary::after {
  content:"";
  display:block;
  width:18px;
  height:19.5px;
  flex:0 0 18px;
  margin-left:auto;
  justify-self:end;
  align-self:center;
  background-color:currentColor;
  -webkit-mask:url("../Iconos/flecha-desplegable.svg") center / contain no-repeat;
  mask:url("../Iconos/flecha-desplegable.svg") center / contain no-repeat;
  transform:rotate(-90deg);
  transition:transform .18s ease;
  pointer-events:none;
}
main :is(.excel-disclosure,.participation-disclosure)[open]>summary::after { transform:rotate(0deg); }
@media(prefers-reduced-motion:reduce) {
  main :is(.excel-disclosure,.participation-disclosure)>summary::after { transition:none; }
}
.is-scrambling { position:relative; }
.is-scrambling > .scramble-final { opacity:0; }
.scramble-visual { position:absolute; inset:0; overflow:hidden; pointer-events:none; }


/* Títulos interiores; Inicio y la página de Sostenibilidad pendiente conservan su escala. */
body:not(:has(.hero)):not(.sustainability-page) main .display-heading,
body:not(.sustainability-page) .information-block h2,
body .travel-heading h1,body .tourism-heading h2 {
  font-family:var(--font-display); font-size:55px; line-height:64px;
}
@media(max-width:600px) {
  body:not(:has(.hero)):not(.sustainability-page) main .display-heading,
  body:not(.sustainability-page) .information-block h2,
  body .travel-heading h1,body .tourism-heading h2 { font-size:clamp(32px,10vw,44px); line-height:1.16; }
}
@media(min-width:1101px) {
  body .site-header { top:0; left:0; right:0; padding:16px 3%; border-radius:0; }
  body .site-header.menu-ready.is-over-content { box-shadow:none; }
  .site-header .race-nav { position:static; }
  .site-header .main-nav > ul > li.race-nav:nth-child(2) { --summary-left: 24%; }
  .site-header .main-nav > ul > li.race-nav:nth-child(3) { --summary-left: 38%; }
  .site-header .main-nav > ul > li.race-nav:nth-child(4) { --summary-left: 52%; }
  .site-header .main-nav .race-nav__links {
    position:absolute;
    top:100%;
    left:0;
    right:0;
    width:100%;
    min-width:0;
    padding-top:20px;
    padding-bottom:28px;
    padding-left:var(--summary-left, 24%);
    padding-right:5%;
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:4px;
    max-height:calc(100dvh - 90px);
    overflow-y:auto;
    background:rgb(24 23 18 / 90%);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    box-shadow:0 12px 28px rgba(0, 0, 0, 0.4);
    border-radius:0;
  }
  .site-header .main-nav .race-nav__links::before {
    display:none;
  }
  .site-header:has(details[open]) {
    background:rgb(24 23 18 / 90%);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    color:#fff;
  }
}


/* Revisión 21/10: nodo móvil 2497:2574; conserva destinos disponibles. */
@media(max-width:1100px) {
 .menu-toggle__label { display:none; }
 .mobile-menu__brand { position:absolute; top:34px; left:32px; }
 .mobile-menu__brand img { width:130px; height:auto; }
 .mobile-menu__close { margin:24px 24px 60px; font:300 56px/1 sans-serif; width:56px; }
 .mobile-menu.menu-ready .main-nav.is-open { padding:16px 32px 32px; }
 .mobile-menu.menu-ready .main-nav > ul > li + li { border:0; }
 .mobile-menu.menu-ready .main-nav > ul { gap:18px; }
 .mobile-menu.menu-ready .main-nav > ul > li > a:not(.button), .mobile-menu.menu-ready .main-nav summary { font-size:28px; line-height:1.12; }
 .mobile-menu.menu-ready .main-nav .race-nav__links { padding-left:0; }
 .mobile-menu.menu-ready .race-nav__links a { font-size:22px; }
}

/* Revisión responsive 21/10/2026. */
@media(max-width:600px) {
 .footer-grid { grid-template-columns:1fr; gap:36px; }
 .footer-subscribe__brand { width:100%; max-width:320px; }
 .site-footer h2 { margin:0 0 16px; }
 .site-footer p,.site-footer address,.footer-links { font-size:14px; line-height:1.45; }
 .site-footer .footer-links a { padding:3px 0; }
 .footer-bottom { flex-direction:column; align-items:flex-start; gap:28px; margin-top:48px; }
 .legal-links { flex-wrap:wrap; gap:20px; }
}
@media(min-width:1601px) {
 body .mim-container,body .health-container,body .participation-container,body .about-container { max-width:none; }
 body .mim-intro,body .mim-description,body .participation-copy { max-width:none; }
}

@media(max-width:1100px) { .mobile-menu.menu-ready .main-nav>ul>li>button { font-size:28px; } }
