

/* Tipografía */
@font-face{
  font-family:'Outfit';
  src:url('../fonts/outfit-var.woff2?v=20260909') format('woff2-variations'),
      url('../fonts/outfit-var.woff2?v=20260909') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}

:root{
  /* Color */
  --rojo:#E51B23;
  --rojo-accion:#E51B23;          
  --carbon:#2D2D2D;
  --claro:#DAD5CE;
  --blanco:#FFFFFF;

  --gris:#5D5D5D;
  --gris-cl:#DAD5CE;

  --fuente:'Outfit',system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;

  --mono:'Outfit',system-ui,Segoe UI,Helvetica,Arial,sans-serif;

  --e1:14px; --e2:18px; --e3:28px; --e4:40px; --e5:72px;
  --lateral:clamp(24px,5vw,72px);
  --nav-alto:clamp(72px,8vw,96px);

  /* Escala tipográfica */
  --t-xs:0.8125rem;    
  --t-sm:0.875rem;     
  --t-base:1rem;       
  --t-md:1.0625rem;    
  --t-lg:1.3125rem;    

  --t-h1:clamp(2rem,1.05rem + 3.90vw,4.75rem);       
  --t-h2:clamp(1.6875rem,1.10rem + 1.75vw,2.875rem); 
  --t-sub:clamp(1rem,0.92rem + 0.34vw,1.25rem);      

  --lh-display:1.03;
  --lh-titulo:1.2;
  --lh-ui:1.45;
  --lh-lectura:1.65;

  --radio:8px;

  --radio-img:12px;
}

*,*::before,*::after{box-sizing:border-box}

/* Pantalla de carga */
.cargador{display:none}
.cargando .cargador{
  display:grid;place-items:center;
  position:fixed;inset:0;z-index:9999;
  background:var(--carbon);

  animation:carga-rendicion 4s linear forwards;
}
@keyframes carga-rendicion{
  0%,92%{opacity:1;visibility:visible}
  100%{opacity:0;visibility:hidden}
}

.cargador__icono{width:min(17vw,104px);height:auto;overflow:visible}

.cargador__trazo{
  fill:rgba(229,27,35,0);          
  fill-rule:evenodd;               
  stroke:var(--rojo);
  stroke-width:1.4;
  stroke-linejoin:round;
  stroke-dasharray:598;stroke-dashoffset:598;

  animation:carga-trazo .62s cubic-bezier(.65,0,.35,1) forwards,
            carga-relleno .28s ease-out .58s forwards;
}

@keyframes carga-trazo{to{stroke-dashoffset:0}}

@keyframes carga-relleno{to{fill:rgba(229,27,35,1);stroke-width:.4}}

.cargando--fuera .cargador{
  animation:carga-salida .5s cubic-bezier(.4,0,.2,1) forwards;
  pointer-events:none;
}
@keyframes carga-salida{to{opacity:0}}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  font-family:var(--fuente);
  color:var(--carbon);
  background:var(--blanco);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

img,picture{max-width:100%;display:block}
a{color:inherit;text-decoration:none}

.skip{
  position:absolute;left:-9999px;top:0;z-index:100;
  background:var(--rojo);color:#fff;padding:12px 20px;font-size:var(--t-sm);font-weight:600;
}
.skip:focus{left:0}

:focus-visible{outline:2px solid var(--rojo);outline-offset:3px}

/* Cabecera */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:20;
  transition:background-color .3s ease,border-color .3s ease;
  border-bottom:1px solid transparent;
  height:var(--nav-alto);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 var(--lateral);
}

.nav::before{
  content:'';position:absolute;left:0;right:0;top:0;
  height:170%;pointer-events:none;z-index:-1;
  background:linear-gradient(180deg,rgba(45,45,45,.84) 0%,rgba(45,45,45,.39) 46%,rgba(45,45,45,0) 100%);
  transition:opacity .3s ease;
}
.nav--solido::before{opacity:0}

/* Sin backdrop-filter: convierte .nav en bloque contenedor de sus hijos fijos
   y colapsa el menú móvil (medido: 844px → 71px en iPhone). */
.nav--solido{
  background:rgba(45,45,45,.94);
  border-bottom-color:rgba(218,213,206,.14);
}

.nav__logo{display:inline-flex;align-items:center;padding-block:6px}

.nav__logo img{
  width:clamp(126px,14vw,168px);height:auto;
  /* Sin filter: el manual prohíbe efectos sobre el logotipo. Para fondo oscuro,
   la versión en negativo. */
}

.nav__menu{display:flex;align-items:center;gap:6px}
.nav__menu a{
  font-size:var(--t-sm);font-weight:500;
  color:var(--blanco);
  padding:9px 15px;
  border:1px solid transparent;

  border-radius:var(--radio);
  text-shadow:0 1px 10px rgba(45,45,45,.6);
  transition:color .22s ease,border-color .22s ease,background-color .22s ease;
line-height:var(--lh-ui)}

.nav__menu a:hover,
.nav__menu a:focus-visible{
  color:var(--rojo-accion);
  background:var(--blanco);
  border-color:var(--blanco);
  text-shadow:none;
}

.nav__menu a[aria-current="page"]{border-color:rgba(218,213,206,.34)}
.nav--solido .nav__menu a{text-shadow:none}

.nav__toggle{
  display:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;
  width:44px;height:44px;margin-right:-10px;
  background:none;border:0;padding:0;cursor:pointer;
}
.nav__toggle span{display:block;width:24px;height:1.5px;background:var(--claro);transition:transform .3s ease,opacity .3s ease}
.nav__toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(3.75px) rotate(45deg)}
.nav__toggle[aria-expanded="true"] span:nth-child(2){transform:translateY(-3.75px) rotate(-45deg)}

/* Hero */
.hero{
  position:relative;
  min-height:100svh;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  padding-top:calc(var(--nav-alto) + 24px);
  background:var(--carbon);
  overflow:hidden;
  isolation:isolate;
}

.hero__fondo{position:absolute;inset:-7% 0;z-index:-2}
.hero__media,
.hero__video{position:absolute;inset:0;width:100%;height:100%}
.hero__media img,
.hero__video{width:100%;height:100%;object-fit:cover}

.hero__video{
  z-index:1;
  opacity:0;
  transition:opacity 1s ease;
}
.hero--video .hero__video{opacity:1}

/* Velo del hero */
.hero__veil{
  position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:

    linear-gradient(180deg,rgba(45,45,45,0) 86%,rgba(45,45,45,.30) 100%),

    linear-gradient(90deg,rgba(45,45,45,.92) 0%,rgba(45,45,45,.74) 54%,rgba(45,45,45,.20) 74%,rgba(45,45,45,0) 100%);
}

.hero__veil::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(180deg,
    rgba(45,45,45,.62) 0%,
    rgba(45,45,45,.30) 22%,
    rgba(45,45,45,.46) 50%,
    rgba(45,45,45,.48) 100%);
  -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 50%,rgba(0,0,0,0) 92%);
          mask-image:linear-gradient(90deg,#000 0%,#000 50%,rgba(0,0,0,0) 92%);
}

.hero__body{
  width:100%;
  padding:0 var(--lateral) clamp(40px,6vh,72px);
}

.hero__eyebrow{
  display:flex;align-items:center;gap:clamp(10px,1.2vw,14px);
  width:max-content;max-width:100%;
  margin:0 0 clamp(18px,2.6vw,28px);
  font-size:clamp(0.8125rem,1.1vw,0.75rem);font-weight:600;
  letter-spacing:.24em;text-transform:uppercase;color:var(--blanco);

  text-shadow:0 1px 16px rgba(45,45,45,.6);
line-height:var(--lh-ui)}

.hero__rule{width:clamp(20px,2.4vw,28px);height:2px;background:var(--rojo);flex:none}

.hero__titulo{
  margin:0;
  font-size:var(--t-h1);

  line-height:1.08;font-weight:600;letter-spacing:-.032em;

  color:var(--blanco);max-width:22ch;
  text-wrap:balance;

  text-shadow:0 1px 32px rgba(45,45,45,.42);
}

.hero__sub{
  margin:clamp(22px,3.2vw,40px) 0 0;
  font-size:var(--t-sub);line-height:1.6;font-weight:400;
  color:var(--claro);opacity:.9;max-width:52ch;
  text-shadow:0 1px 20px rgba(45,45,45,.5);
}

.hero__acciones{
  display:flex;align-items:center;flex-wrap:wrap;
  gap:var(--e3);
  margin-top:clamp(28px,3.6vw,40px);
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;
  height:clamp(56px,5.5vw,62px);padding:0 clamp(28px,3.4vw,38px);
  background:var(--rojo-accion);color:var(--blanco);
  font-size:clamp(1rem,1.4vw,1.0625rem);font-weight:600;
  transition:background .25s ease;
line-height:var(--lh-ui)}
.btn:hover,.btn:focus-visible{background:var(--rojo)}

.enlace-wa{
  display:inline-flex;align-items:center;gap:9px;min-height:44px;
  font-size:clamp(0.9375rem,1.3vw,1rem);font-weight:500;
  color:var(--claro);opacity:.9;
  border-bottom:1px solid rgba(218,213,206,.34);
  transition:opacity .25s ease,border-color .25s ease;
}
.enlace-wa:hover,.enlace-wa:focus-visible{opacity:1;border-color:var(--claro)}
.enlace-wa svg{width:18px;height:18px;flex:none;fill:currentColor}

.hero__trust{
  flex:none;
  min-height:76px;
  display:flex;align-items:center;flex-wrap:wrap;
  gap:clamp(12px,2.2vw,28px);
  padding:14px var(--lateral);
  background:linear-gradient(180deg,rgba(45,45,45,.62) 0%,rgba(45,45,45,.96) 100%);
  border-top:1px solid rgba(218,213,206,.22);
}
.hero__trust span{
  font-size:clamp(0.8125rem,1.1vw,0.8125rem);font-weight:500;
  color:var(--claro);opacity:.86;
line-height:var(--lh-ui)}

.hero__trust i{width:1px;height:14px;background:rgba(218,213,206,.3);flex:none}
.hero__lugar{
  margin-left:auto;
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.16em;

  text-transform:uppercase;opacity:.72 !important;
line-height:var(--lh-ui)}

/* Pausa del video */
.hero__pausa{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;margin:-9px -10px -9px 18px;
  background:none;border:0;padding:0;cursor:pointer;
  color:var(--claro);opacity:.68;
  transition:opacity .25s ease;
}
.hero__pausa:hover,.hero__pausa:focus-visible{opacity:1}
.hero__pausa svg{width:11px;height:11px;fill:currentColor}
.hero__pausa .ic-play{display:none}
.hero__pausa[aria-pressed="true"] .ic-pausa{display:none}
.hero__pausa[aria-pressed="true"] .ic-play{display:block}
.hero__pausa-txt{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;
}

@media (min-width:861px) and (max-height:820px){
  .hero__titulo{font-size:clamp(2.375rem,4.4vw,3.625rem)}
  .hero__sub{font-size:var(--t-md);margin-top:24px}
  .hero__eyebrow{margin-bottom:16px}
  .hero__acciones{margin-top:26px}
  .hero__body{padding-bottom:clamp(28px,4vh,44px)}
  .btn{height:54px}
}

/* Portada interna */
.portada{
  position:relative;background:var(--carbon);color:var(--claro);
  padding:calc(var(--nav-alto) + clamp(56px,8vw,104px)) 0 clamp(56px,8vw,96px);
  overflow:hidden;isolation:isolate;
}
.portada::after{
  content:'';position:absolute;left:0;right:0;bottom:0;height:1px;
  background:rgba(218,213,206,.16);
}
.portada__eyebrow{
  display:flex;align-items:center;gap:12px;margin:0 0 var(--e2);
  font-size:clamp(0.8125rem,1.1vw,0.75rem);font-weight:600;
  letter-spacing:.24em;text-transform:uppercase;color:var(--blanco);
}
.portada__eyebrow::before{content:'';width:24px;height:2px;background:var(--rojo);flex:none}
.portada h1{
  margin:0;font-size:var(--t-h1);line-height:1.06;font-weight:600;
  letter-spacing:-.026em;color:var(--blanco);max-width:20ch;text-wrap:balance;
}
.portada__bajada{
  margin:clamp(18px,2.6vw,26px) 0 0;font-size:var(--t-sub);line-height:1.6;
  color:var(--claro);opacity:.86;max-width:56ch;
}

/* Secciones */
.seccion{padding:clamp(64px,9vw,120px) 0}
.contenedor{max-width:1180px;margin:0 auto;padding:0 var(--lateral)}

.etiqueta{
  margin:0 0 var(--e2);
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.16em;
  text-transform:uppercase;color:var(--gris);
line-height:var(--lh-ui)}

.titulo-2{
  margin:0 0 clamp(40px,5vw,64px);
  font-size:var(--t-h2);line-height:1.16;
  font-weight:600;letter-spacing:-.02em;max-width:24ch;
  text-wrap:balance;
}

.cuadricula{
  display:grid;gap:clamp(28px,3.4vw,48px);
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
}

.tarjeta{border-top:2px solid var(--carbon);padding-top:var(--e3)}

.tarjeta .tarjeta__num{
  margin:0 0 var(--e1);
  font-family:var(--mono);font-size:var(--t-xs);font-weight:500;letter-spacing:.14em;
  color:var(--rojo);
}
.tarjeta h3{margin:0 0 var(--e1);font-size:clamp(1.125rem,1.8vw,1.3125rem);font-weight:600;line-height:1.3}
.tarjeta p{margin:0;font-size:var(--t-base);line-height:1.65;color:var(--gris)}

.seccion--claro{background:var(--claro)}

/* Textura de esquina */
.seccion--textura{position:relative;overflow:clip}
.seccion--textura > *{position:relative}
.seccion--textura::before{
  content:'';position:absolute;pointer-events:none;z-index:0;
  right:0;bottom:0;
  width:min(58vw,560px);
  /* Siempre menor que el relleno inferior de .seccion: es la única franja vacía
   a cualquier ancho. Con un cuadrado en la esquina el texto caía a 3,51:1. */
  height:clamp(48px,7vw,100px);
  background:url('../img/textura-roja.webp?v=20260924f') no-repeat right bottom/cover;
  opacity:.58;

  -webkit-mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.55) 46%,#000 100%);
  mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.55) 46%,#000 100%);
}

/* Sección con fondo fotográfico */
.seccion--foto{position:relative;isolation:isolate}
.seccion__fondo{
  position:absolute;inset:0;overflow:hidden;z-index:-2;
  pointer-events:none;
}

.seccion--foto::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:rgba(45,45,45,.25);
}
.seccion__fondo img{width:100%;height:100%;object-fit:cover;object-position:left center;display:block}

.seccion--carbon{background:var(--carbon);color:var(--claro)}
.seccion--carbon .titulo-2{color:var(--blanco)}
.seccion--carbon .etiqueta{color:var(--gris-cl)}

/* Texto sobre fondo oscuro */
.seccion--carbon p,
.seccion--carbon .prosa p,
.seccion--carbon .dato p,
.seccion--carbon .paso p,
.seccion--carbon .nota p,
.seccion--carbon .bloque p,
.seccion--carbon .bloque li,
.seccion--carbon .faq details p{color:var(--gris-cl)}

.seccion--carbon .dato .dato__cifra{color:var(--blanco)}

/* El rojo de marca no llega a 4,5:1 sobre carbón. Como texto va en claro; el
   rojo queda para filetes y acentos. */
.seccion--carbon .tarjeta__enlace{
  color:var(--blanco);
  border-bottom-color:var(--rojo);
line-height:var(--lh-ui)}
.seccion--carbon .tarjeta__enlace:hover,
.seccion--carbon .tarjeta__enlace:focus-visible{border-bottom-color:var(--blanco)}

.seccion--carbon .paso::before{color:var(--gris-cl)}
.seccion--carbon .nota{border-left-color:var(--rojo)}

.prosa{max-width:62ch}
.prosa p{margin:0 0 var(--e2);font-size:var(--t-md);line-height:1.7;color:var(--gris)}
.prosa p:last-child{margin-bottom:0}
.prosa strong{color:var(--carbon);font-weight:600}
.seccion--carbon .prosa strong{color:var(--blanco)}

.bloque{
  display:grid;gap:clamp(20px,3vw,56px);
  grid-template-columns:minmax(0,1fr);
  padding:clamp(36px,4.5vw,56px) 0;
  border-top:1px solid rgba(101,102,101,.26);
}
.bloque:first-of-type{border-top:0;padding-top:0}
.bloque__id{
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.14em;color:var(--rojo-accion);
  margin:0 0 10px;
line-height:var(--lh-ui)}
.bloque h3{margin:0 0 var(--e1);font-size:clamp(1.25rem,2.2vw,1.625rem);font-weight:600;line-height:1.24}
.bloque p{margin:0;font-size:var(--t-base);line-height:1.68;color:var(--gris);max-width:62ch}
.bloque ul{margin:var(--e2) 0 0;padding:0;list-style:none}
.bloque li{
  position:relative;padding-left:20px;margin-bottom:8px;
  font-size:var(--t-base);line-height:1.6;color:var(--gris);
}
.bloque li::before{
  content:'';position:absolute;left:0;top:9px;width:7px;height:1px;background:var(--rojo-accion);
}

@media (min-width:900px){
  .bloque{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start}
}

.pasos{counter-reset:paso;display:grid;gap:0}
.paso{
  counter-increment:paso;position:relative;
  padding:var(--e3) 0 var(--e3) clamp(48px,6vw,76px);
  border-top:1px solid rgba(101,102,101,.26);
}
.paso::before{
  content:counter(paso,decimal-leading-zero);
  position:absolute;left:0;top:var(--e3);
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.1em;color:var(--rojo-accion);
}
.paso h3{margin:0 0 8px;font-size:clamp(1.125rem,1.8vw,1.3125rem);font-weight:600}
.paso p{margin:0;font-size:var(--t-base);line-height:1.66;color:var(--gris);max-width:60ch}
.seccion--carbon .paso{border-color:rgba(218,213,206,.18)}
.seccion--carbon .paso h3{color:var(--blanco)}

.datos{display:grid;gap:var(--e3);grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.dato__cifra{
  margin:0;font-size:clamp(1.875rem,3.6vw,2.75rem);font-weight:600;
  letter-spacing:-.02em;line-height:1;color:var(--carbon);

  font-variant-numeric:tabular-nums;
  font-feature-settings:'tnum' 1;
}
.seccion--carbon .dato__cifra{color:var(--blanco)}
.dato p{margin:8px 0 0;font-size:var(--t-sm);line-height:1.5;color:var(--gris)}

.nota{
  border-left:2px solid var(--rojo-accion);
  padding:var(--e2) 0 var(--e2) var(--e3);
  margin:var(--e4) 0 0;max-width:62ch;
}
.nota p{margin:0;font-size:var(--t-base);line-height:1.65;color:var(--gris)}

/* Banda a sangre */

.banda{
  position:relative;overflow:hidden;background:var(--carbon);
  height:clamp(260px,44vh,480px);
  margin:0;
}

.banda__media{
  position:absolute;inset:0;
}
@media (min-width:1025px){
  .banda__media{inset:-35% 0}
}
/* El <picture> necesita alto propio: height:100% de la imagen se resuelve
   contra él, y sin esto se queda en su alto natural (144px de 371). */
.banda__media picture{display:block;width:100%;height:100%}
.banda__media img{
  width:100%;height:100%;object-fit:cover;
}
.banda__velo{
  position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(45,45,45,.30) 0%,rgba(45,45,45,.06) 40%,rgba(45,45,45,.72) 100%);
}
.banda__pie{
  position:absolute;left:var(--lateral);right:var(--lateral);
  bottom:clamp(20px,3vw,34px);
  display:flex;align-items:center;gap:12px;
  font-family:var(--mono);font-size:var(--t-xs);letter-spacing:.13em;
  text-transform:uppercase;color:var(--claro);opacity:.86;
line-height:var(--lh-ui)}
.banda__pie::before{content:'';width:22px;height:1px;background:var(--rojo);flex:none}

/* El rojo es el subrayado, no el texto: sobre greige da 3,2:1. Además el
   enlace no se distingue sólo por color (1.4.1). */
.tarjeta__enlace{
  display:inline-block;margin-top:var(--e2);
  font-size:var(--t-sm);font-weight:600;
  color:var(--carbon);
  border-bottom:2px solid var(--rojo);
  padding-bottom:2px;
  transition:border-color .2s ease,color .2s ease;
  line-height:var(--lh-ui);
}
.tarjeta__enlace:hover,.tarjeta__enlace:focus-visible{
  color:var(--rojo);border-color:var(--carbon);
}

.lugares{
  display:flex;flex-wrap:wrap;gap:10px 12px;margin:0;padding:0;list-style:none;
}
.lugares li{
  font-size:var(--t-base);color:var(--gris);
  border:1px solid rgba(101,102,101,.34);padding:8px 15px;
line-height:var(--lh-ui)}
.seccion--carbon .lugares li{color:var(--gris-cl);border-color:rgba(218,213,206,.24)}

.faq{max-width:66ch}
.faq details{border-top:1px solid rgba(101,102,101,.26)}
.faq details:last-of-type{border-bottom:1px solid rgba(101,102,101,.26)}

.faq summary{
  display:flex;align-items:flex-start;gap:var(--e2);
  padding:var(--e3) 4px var(--e3) 0;cursor:pointer;list-style:none;
}
.faq summary::-webkit-details-marker{display:none}
/* Tipo oración: anula el .par h3 que en la portada las ponía en versalitas. */
.faq summary h3{
  margin:0;flex:1;font-size:clamp(1.0312rem,1.6vw,1.1875rem);
  font-weight:600;line-height:1.4;
  text-transform:none;letter-spacing:normal;color:var(--carbon);
}
.seccion--carbon .faq summary h3{color:var(--claro)}
.faq summary::after{
  content:'';flex:none;width:13px;height:13px;margin-top:5px;
  border-right:1.5px solid var(--rojo-accion);border-bottom:1.5px solid var(--rojo-accion);
  transform:rotate(45deg);transition:transform .25s ease;
}
.faq details[open] summary::after{transform:rotate(-135deg);margin-top:9px}
/* Durante el cierre el <details> conserva `open`, así que la flecha se
   devuelve con .cerrando. Misma especificidad, gana por ir después. */
.faq details.cerrando summary::after{transform:rotate(45deg);margin-top:5px}
/* overflow:hidden crea el contexto de bloque sin el cual el margen inferior
   del párrafo queda fuera y la medida sale 28px corta. */
.faq__cuerpo{overflow:hidden}
.faq details p{
  margin:0 0 var(--e3);padding-right:36px;
  font-size:var(--t-base);line-height:1.68;color:var(--gris);
}

/* Ritmo asimétrico */

.enc-partido{
  display:grid;gap:clamp(20px,4vw,64px);
  align-items:end;
  margin-bottom:clamp(36px,5vw,64px);
}
@media (min-width:900px){
  .enc-partido{grid-template-columns:minmax(0,6fr) minmax(0,5fr)}
  .enc-partido .titulo-2{margin-bottom:0}
}
.enc-partido .prosa{max-width:46ch}

.contenedor--estrecho{max-width:860px}

.contenedor--ancho{max-width:1420px}

/* Tarjeta de servicio */
.servicios-img{
  display:grid;gap:clamp(16px,2vw,26px);
  grid-auto-rows:1fr;
}
@media (min-width:700px){.servicios-img{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1100px){.servicios-img{grid-template-columns:repeat(3,minmax(0,1fr))}}

.servicio{
  position:relative;display:block;overflow:hidden;isolation:isolate;
  border-radius:var(--radio-img);
  background:var(--carbon);
  color:var(--blanco);
  min-height:clamp(260px,26vw,330px);
  text-decoration:none;
}
.servicio img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;z-index:-2;
  transition:transform .6s cubic-bezier(.22,1,.36,1),filter .4s ease;
}

.servicio::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(45,45,45,0)   22%,
    rgba(45,45,45,.25) 38%,
    rgba(45,45,45,.68) 52%,
    rgba(45,45,45,.93) 100%);
  transition:opacity .4s ease;
}
.servicio::after{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:rgba(45,45,45,.72);
  opacity:0;transition:opacity .4s ease;
}
.servicio:hover::after,
.servicio:focus-within::after,
.servicio:focus-visible::after{opacity:1}
.servicio:hover img,
.servicio:focus-visible img{transform:scale(1.05)}

.servicio__cuerpo{
  position:relative;height:100%;
  display:flex;flex-direction:column;justify-content:flex-end;
  align-items:flex-start;
  padding:clamp(20px,2.2vw,28px);
}
.servicio__num{
  margin:0 0 6px;font-size:var(--t-xs);font-weight:600;letter-spacing:.14em;
  line-height:var(--lh-ui);color:var(--blanco);
}
.servicio h3{
  margin:0;font-size:var(--t-lg);font-weight:600;
  line-height:var(--lh-titulo);color:var(--blanco);
  text-shadow:0 1px 18px rgba(45,45,45,.6);
}

.servicio__mas{
  display:grid;grid-template-rows:0fr;
  opacity:0;
  transition:grid-template-rows .45s cubic-bezier(.22,1,.36,1),opacity .35s ease;
}
.servicio__mas > div{overflow:hidden;min-height:0}
.servicio:hover .servicio__mas,
.servicio:focus-within .servicio__mas,
.servicio:focus-visible .servicio__mas{grid-template-rows:1fr;opacity:1}

.servicio__mas p{
  margin:0;padding-top:10px;
  font-size:var(--t-sm);line-height:var(--lh-lectura);
  color:var(--blanco);max-width:38ch;
}

.servicio__cta{
  display:inline-flex;align-items:center;gap:9px;
  margin-top:14px;padding:7px 15px;
  border:2px solid var(--blanco);border-radius:999px;
  background:transparent;
  font-size:var(--t-sm);font-weight:600;line-height:var(--lh-ui);
  color:var(--blanco);
  transition:background-color .28s ease,border-color .28s ease;
}
.servicio__cta svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2.2;
  transition:transform .28s cubic-bezier(.22,1,.36,1)}

.servicio:hover .servicio__cta,
.servicio:focus-within .servicio__cta,
.servicio:focus-visible .servicio__cta{background:var(--rojo)}
.servicio:hover .servicio__cta svg{transform:translateX(3px)}

.servicio:active .servicio__cta{background:#B71119;border-color:#B71119}

.servicio:focus-visible{
  outline:3px solid var(--blanco);
  outline-offset:3px;
  box-shadow:0 0 0 6px var(--rojo);
}

@media (hover:none),(max-width:699px){
  .servicio__mas{grid-template-rows:1fr;opacity:1}
  .servicio::before{
    background:linear-gradient(180deg,
      rgba(45,45,45,.68) 0%,
      rgba(45,45,45,.72) 14%,
      rgba(45,45,45,.93) 100%);
  }
  .servicio::after{opacity:0}
  .servicio{min-height:300px}
}

.destacada{
  display:grid;
  gap:clamp(20px,2.6vw,36px);
  grid-auto-rows:1fr;
}
@media (min-width:700px){.destacada{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1040px){.destacada{grid-template-columns:repeat(3,minmax(0,1fr))}}

.destacada .tarjeta{display:flex;flex-direction:column}
.destacada .tarjeta__enlace{margin-top:auto;align-self:flex-start}

.destacada .tarjeta p:not(.tarjeta__num){margin-bottom:var(--e2)}

.par{display:grid;gap:clamp(32px,5vw,72px)}
@media (min-width:820px){.par{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}
.par h3{
  margin:0 0 var(--e2);font-size:var(--t-xs);font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gris);
line-height:var(--lh-ui)}
.seccion--carbon .par h3{color:var(--gris-cl)}

.cifras{display:grid;gap:clamp(28px,4vw,56px)}
@media (min-width:700px){.cifras{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Rojo por decisión del cliente, no del manual. */
.cifra-gr{
  font-size:clamp(3.25rem,7vw,6.5rem);font-weight:600;line-height:.92;
  letter-spacing:-.04em;margin:0;
  font-variant-numeric:tabular-nums;font-feature-settings:'tnum' 1;
}
/* Con «.cifra-gr» a secas no llega: «.seccion--carbon p» tiene más peso. */
.seccion--carbon .cifra-gr{color:#E51823}

.cifra-gr + p{
  margin:var(--e2) 0 0;font-size:var(--t-base);line-height:1.5;
  color:var(--gris-cl);max-width:26ch;
}

@media (min-width:1100px){
  .sangra-dcha{margin-right:calc(50% - 50vw + var(--lateral))}
  .sangra-izq{margin-left:calc(50% - 50vw + var(--lateral))}
}

.foto--banda{margin:0 0 clamp(32px,4vw,56px)}
.foto--banda img{aspect-ratio:21/9}
@media (max-width:700px){.foto--banda img{aspect-ratio:16/9}}

/* Fotografía de obra */
.galeria{
  display:grid;gap:clamp(12px,1.6vw,20px);
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
}

.galeria--lado{grid-template-columns:1fr;align-content:start}

.galeria--equipo{
  --sobrante:clamp(0px, calc((100vw - 2 * var(--lateral) - 1036px) / 2), 130px);
  margin-left:calc(-1 * var(--sobrante));
  margin-right:calc(-1 * var(--sobrante));
}

@media (max-width:1150px){
  .galeria--equipo{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:660px){
  .galeria--equipo{grid-template-columns:minmax(0,1fr)}
}

.foto{
  position:relative;margin:0;overflow:hidden;
  background:var(--gris-cl);      
  border-radius:var(--radio-img);
  /* Safari deja escapar las esquinas al transformar dentro de overflow:hidden
   con radio; aislar la capa lo corrige. */
  isolation:isolate;
}
.foto img{
  display:block;width:100%;height:auto;
  /* La proporción también en CSS: reserva el hueco antes de cargar la imagen. */
  aspect-ratio:3/2;object-fit:cover;
  border-radius:inherit;
  transition:transform .6s cubic-bezier(.22,1,.36,1);
}
.foto:hover img{transform:scale(1.04)}

.foto::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  border:1px solid rgba(45,45,45,.14);
  border-radius:inherit;
  transition:border-color .3s ease;
}
.foto:hover::after{border-color:var(--rojo)}

.seccion--carbon .foto{background:rgba(218,213,206,.1)}
.seccion--carbon .foto::after{border-color:rgba(218,213,206,.18)}

/* Rejilla de obra con parallax */
.obras{
  display:grid;
  gap:clamp(28px,3.6vw,56px);
}
@media (min-width:900px){
  .obras{
    grid-template-columns:repeat(2,minmax(0,1fr));
    column-gap:clamp(32px,4vw,72px);
  }

  .obras > *:nth-child(even){margin-top:clamp(56px,9vw,150px)}
}

.obra{margin:0}

/* Proporciones apaisadas por nitidez, no por gusto: en vertical la foto se
   escala más y pierde definición. */
.obra__marco{
  display:block;position:relative;overflow:hidden;
  border-radius:var(--radio-img);
  background:var(--carbon);
  isolation:isolate;                 
  aspect-ratio:5/4;
}
.obra--ancha .obra__marco{aspect-ratio:4/3}

/* El sobrante decide dos cosas opuestas: más recorrido de parallax, menos
   foto visible. 260px es el punto de equilibrio medido. */
.obra__capa{
  --sobra:260px;
  position:absolute;left:0;right:0;
  top:calc(var(--sobra) / -2);
  height:calc(100% + var(--sobra));
}
.obra__capa img{
  display:block;width:100%;height:100%;
  object-fit:cover;
}

.obra__marco::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  border:1px solid rgba(45,45,45,.14);
  border-radius:inherit;
  transition:border-color .3s ease;
}
a.obra__marco:hover::after,
a.obra__marco:focus-visible::after{border-color:var(--rojo)}
a.obra__marco:focus-visible{outline:3px solid var(--carbon);outline-offset:3px}

.obra__pie{
  display:flex;align-items:baseline;justify-content:space-between;
  gap:var(--e2);margin-top:14px;
}
.obra__pie h3{
  margin:0;font-size:var(--t-md);font-weight:600;
  line-height:var(--lh-titulo);color:var(--carbon);
}
.obra__etiqueta{
  flex:none;
  font-size:var(--t-xs);line-height:var(--lh-ui);color:var(--gris);
  border:1px solid rgba(45,45,45,.22);border-radius:999px;
  padding:3px 11px;
}
.seccion--carbon .obra__pie h3{color:var(--blanco)}
.seccion--carbon .obra__etiqueta{color:var(--gris-cl);border-color:rgba(218,213,206,.3)}

@media (max-width:1024px){
  .obra__capa{--sobra:0px}
}

/* Formulario */
.formulario{display:grid;gap:var(--e2);max-width:34rem}
.campo{display:flex;flex-direction:column;gap:7px}
.campo label{font-size:var(--t-sm);font-weight:500;color:var(--carbon);line-height:var(--lh-ui)}
.campo input,.campo textarea{
  font-family:inherit;font-size:var(--t-base);color:var(--carbon);
  padding:13px 15px;background:var(--blanco);
  border:1px solid rgba(101,102,101,.42);border-radius:0;
  transition:border-color .2s ease;
}
.campo input:focus,.campo textarea:focus{outline:0;border-color:var(--carbon)}
.campo textarea{min-height:130px;resize:vertical}

.consentimiento{
  display:flex;align-items:flex-start;gap:11px;
  font-size:var(--t-sm);line-height:1.55;color:var(--gris);
}
.consentimiento input{margin:2px 0 0;width:18px;height:18px;flex:none;accent-color:var(--rojo-accion)}
.consentimiento a{color:var(--rojo-accion);text-decoration:underline;text-underline-offset:2px}

.oculto{position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden}

/* Pie */
.pie{background:var(--carbon);color:var(--gris-cl);padding:clamp(56px,7vw,88px) 0 var(--e3)}
.pie__grid{
  display:grid;gap:clamp(32px,4vw,56px);
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
}
.pie__marca img{width:150px;height:auto;margin-bottom:var(--e2)}
.pie__marca p{margin:0;font-size:var(--t-sm);line-height:1.65;color:var(--gris-cl);opacity:.8;max-width:44ch}
.pie h2{margin:0 0 var(--e2);font-size:var(--t-xs);font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--blanco);line-height:var(--lh-ui)}
.pie ul{margin:0;padding:0;list-style:none}

.pie li{margin-bottom:5px}
.pie a{
  display:inline-block;padding-block:4px;
  font-size:var(--t-sm);color:var(--gris-cl);opacity:.82;
  transition:opacity .2s ease;line-height:var(--lh-ui);
}
.pie a:hover{opacity:1}
.pie__legal{
  display:flex;flex-wrap:wrap;gap:var(--e1) var(--e3);align-items:center;
  margin-top:clamp(40px,5vw,64px);padding-top:var(--e3);
  border-top:1px solid rgba(218,213,206,.16);
  font-size:var(--t-xs);color:var(--gris-cl);opacity:.7;
line-height:var(--lh-ui)}
.pie__legal a{font-size:var(--t-xs)}

/* Móvil */
@media (max-width:860px){
  .nav__toggle{display:flex}

  /* El botón y el logotipo por encima del panel: .nav crea contexto de
   apilamiento y el panel, posicionado, tapaba al botón. No había forma de
   cerrar el menú. */
  .nav__toggle{position:relative;z-index:16}
  .nav__logo{position:relative;z-index:16}

  .nav__menu{
    position:fixed;inset:0;z-index:15;
    flex-direction:column;justify-content:center;align-items:center;
    gap:var(--e3);
    background:var(--carbon);
    transform:translateY(-100%);
    transition:transform .4s cubic-bezier(.4,0,.2,1);
  }
  .nav__menu.abierto{transform:translateY(0)}
  .nav__menu a{font-size:1.375rem;opacity:1}

  /* Velo móvil recalibrado para la foto en color: con el anterior el titular
   caía a 1,67:1. Meseta de .70 donde va el texto. Peor caso: 4,78:1. */
  .hero__veil{
    background:linear-gradient(180deg,
      rgba(45,45,45,.86) 0%,
      rgba(45,45,45,.70) 10%,
      rgba(45,45,45,.70) 55%,
      rgba(45,45,45,.86) 78%,
      rgba(45,45,45,.95) 100%);
  }

  .hero__trust{gap:6px 12px;padding:12px var(--lateral) 18px;min-height:0}
  .hero__trust span{font-size:var(--t-xs)}
  .hero__trust .ext{display:none}
  .hero__lugar{flex-basis:100%;margin-left:0;margin-top:2px}

  .hero__acciones{gap:var(--e2);flex-direction:column;align-items:stretch}
  .btn{width:100%}
  .enlace-wa{align-self:flex-start}
}

/* SplitText recorta los descendentes: su máscara mide la caja de línea (82px)
   y no la de contenido (96px). El relleno la agranda y el margen negativo lo
   descuenta. */
.linea{display:block;padding-bottom:.12em}
.linea-mask{margin-bottom:-.12em}

/* Animación */

/* El titular arranca oculto sólo si hay JavaScript, y con red de seguridad. */
.js-titular .hero__titulo,
.js-titular .portada h1{visibility:hidden}

@media (prefers-reduced-motion:reduce){
  html:not(.forzar-anim) *:not(.cargador):not(.cargador__trazo):not(.cargador__icono),
  html:not(.forzar-anim) *::before,
  html:not(.forzar-anim) *::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    /* «transition:none», no «transition-duration:.01ms»: lo segundo crea una
   transición en TODAS las propiedades, y en una pestaña de fondo se queda
   clavada en el valor inicial. Con opacidad, eso es contenido invisible. */
    transition:none !important;
    scroll-behavior:auto !important;
  }
  [data-anim]{opacity:1 !important;transform:none !important;will-change:auto}

}

/* A quién servimos */

.seccion--servimos{position:relative;overflow:hidden}

.etiqueta__filete{
  display:inline-block;width:22px;height:1px;
  background:var(--rojo);vertical-align:middle;
  margin-right:12px;margin-bottom:3px;
}

.servimos{
  display:grid;gap:clamp(36px,5vw,72px);
  margin-top:clamp(36px,4.5vw,60px);
  align-items:start;
}
@media (min-width:1000px){
  .servimos{grid-template-columns:minmax(0,1fr) minmax(420px,520px)}
}

.rotulo{
  margin:0 0 var(--e2);
  font-family:var(--mono);font-size:var(--t-xs);font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;
  line-height:var(--lh-ui);color:var(--gris-cl);
}

.sectores{margin:0;padding:0;list-style:none}
.sectores li{
  display:flex;align-items:center;gap:14px;
  padding:9px 0;
  font-size:var(--t-md);line-height:var(--lh-ui);color:var(--claro);
}
.sector__icono{
  flex:none;width:22px;height:22px;
  fill:none;stroke:var(--rojo);stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round;
}

.lugares-linea{
  margin:0;padding:0;list-style:none;
  display:flex;flex-wrap:wrap;
  font-size:var(--t-md);line-height:1.9;color:var(--claro);
}
.lugares-linea li{display:inline-flex;align-items:center}
.lugares-linea li:not(:last-child)::after{
  content:'';width:4px;height:4px;border-radius:50%;
  background:var(--rojo);margin:0 12px;opacity:.9;
}

/* Mapa */
.servimos__mapa{position:relative;margin:0;width:100%}

.servimos__mapa img{display:block;width:100%;height:auto}

/* Tira de obra */
.tira-obra{
  display:grid;grid-template-columns:repeat(6,1fr);gap:2px;
  margin-top:clamp(40px,5vw,72px);

  -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 55%);
          mask-image:linear-gradient(180deg,transparent 0%,#000 55%);
}
.tira-obra img{
  width:100%;height:clamp(96px,11vw,150px);object-fit:cover;display:block;
  opacity:.38;
}
@media (max-width:699px){
  .tira-obra{grid-template-columns:repeat(3,1fr)}
  .tira-obra img:nth-child(n+4){display:none}
}

/* Se oculta con clip-path, no con display:none: así lo sigue leyendo un
   lector de pantalla. */
.solo-lectores{
  position:absolute;width:1px;height:1px;overflow:hidden;
  clip-path:inset(50%);white-space:nowrap;
  margin:-1px;padding:0;border:0;
}

.lugares-linea{margin-bottom:var(--e3)}

/* Logotipos de cliente */
/* Flexbox y no rejilla: 17 logotipos en 5 columnas dejan 2 sueltos al final,
   y con justify-content la fila incompleta se centra sola. */
.clientes{
  --hueco:clamp(12px,1.4vw,20px);
  --columnas:5;
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:var(--hueco);
  margin:clamp(40px,5vw,64px) 0 0;
  padding:0;list-style:none;
}
.cliente{
  --pad:clamp(12px,1.3vw,20px);
  flex:0 0 calc((100% - (var(--columnas) - 1) * var(--hueco)) / var(--columnas));
  position:relative;
  display:flex;align-items:center;justify-content:center;
  aspect-ratio:16/9;
  padding:var(--pad);
}
/* Cada logotipo trae su --escala en el HTML. Sin ella el mayor ocupa 3,3 veces
   el área del menor: un escudo cuadrado llena el alto, una marca apaisada no. */
.cliente img{
  width:100%;height:100%;
  object-fit:contain;
  display:block;
  transform:scale(var(--escala,1));
}

/* Logotipos: color al pasar el cursor */
@media (hover:hover) and (pointer:fine){
  /* La URL de cada logotipo se declara en el HTML, no aquí. Chrome resuelve el
   url() de una variable contra la hoja que la USA, no contra quien la declara:
   pedía /assets/css/assets/img/… y devolvía 404. */
  .cliente::before{
    content:'';position:absolute;inset:var(--pad);
    background-position:center;
    background-size:contain;
    background-repeat:no-repeat;
    transform:scale(var(--escala,1));
    opacity:0;transition:opacity .28s ease;
  }
  .cliente img{position:relative;transition:opacity .28s ease}

  /* La placa blanca es obligatoria: 15 de los 17 logotipos bajan de 3:1 sobre
   carbón. Con #DAD5CE fallan dos; sólo el blanco los deja a todos por encima. */
  .cliente{
    border-radius:var(--radio-img);
    transition:background-color .28s ease;
  }
  .cliente:hover{background-color:#fff}
  .cliente:hover::before{opacity:1}
  .cliente:hover img{opacity:0}
}

@media (max-width:1000px){ .clientes{--columnas:4} }
@media (max-width:760px){ .clientes{--columnas:3} }

@media (max-width:560px){
  .clientes{--columnas:2;--hueco:10px}
  .cliente{padding:14px;aspect-ratio:4/3}
}

#la-empresa .titulo-2{color:var(--rojo)}

#la-empresa .titulo-2 .en-carbon{color:var(--carbon) !important}

/* Botón flotante de WhatsApp */
.wa-flotante{
  position:fixed;z-index:12;
  right:clamp(14px,2.2vw,28px);
  bottom:calc(clamp(14px,2.2vw,28px) + env(safe-area-inset-bottom,0px));
  display:inline-flex;align-items:center;gap:10px;
  min-height:52px;padding:0 20px 0 16px;
  background:var(--rojo-accion);color:var(--blanco);
  font-size:0.9375rem;font-weight:600;line-height:var(--lh-ui);
  border-radius:999px;

  box-shadow:0 0 0 2px var(--claro), 0 6px 22px rgba(45,45,45,.30), 0 1px 3px rgba(45,45,45,.24);
  transition:background .25s ease, transform .25s ease, box-shadow .25s ease;
}
.wa-flotante svg{width:21px;height:21px;flex:none;fill:currentColor}
.wa-flotante:hover,.wa-flotante:focus-visible{
  background:#B71119;
  transform:translateY(-2px);
  box-shadow:0 0 0 2px var(--claro), 0 10px 28px rgba(45,45,45,.36), 0 1px 3px rgba(45,45,45,.24);
}
.wa-flotante:focus-visible{outline:3px solid var(--blanco);outline-offset:3px}
.wa-flotante:active{transform:translateY(0)}

/* Sin animación de entrada: con fill-mode backwards y retardo, el botón se
   queda invisible si el navegador aplaza las animaciones. */

.menu-abierto .wa-flotante{opacity:0;pointer-events:none;transition:opacity .2s ease}

@media (max-width:420px){
  .wa-flotante{min-height:48px;padding:0 17px 0 14px;font-size:0.875rem;gap:8px}
  .wa-flotante svg{width:19px;height:19px}
}
@media (prefers-reduced-motion:reduce){
  .wa-flotante,.wa-flotante:hover,.wa-flotante:focus-visible{transform:none}
}

/* Documento legal */
.legal{max-width:68ch;counter-reset:apartado}
.legal > p,.legal li{font-size:var(--t-base);line-height:1.72;color:var(--gris)}
.legal > p{margin:0 0 var(--e2)}
.legal strong{color:var(--carbon);font-weight:600}

.legal h2{
  counter-increment:apartado;
  margin:var(--e5,56px) 0 var(--e2);
  font-size:clamp(1.125rem,1.9vw,1.375rem);font-weight:600;
  line-height:1.3;color:var(--carbon);
  scroll-margin-top:96px;
}
.legal h2::before{
  content:counter(apartado) ". ";
  color:var(--rojo-accion);
}
.legal h2:first-child{margin-top:0}
.legal h3{
  margin:var(--e3) 0 var(--e1);
  font-size:1rem;font-weight:600;color:var(--carbon);line-height:1.4;
}

.legal ul{margin:0 0 var(--e2);padding:0;list-style:none}
.legal li{position:relative;padding-left:22px;margin-bottom:8px}
.legal li::before{
  content:'';position:absolute;left:0;top:.72em;
  width:9px;height:1.5px;background:var(--rojo-accion);
}
.legal a{color:var(--rojo-accion);border-bottom:1px solid rgba(229,27,35,.35)}
.legal a:hover,.legal a:focus-visible{border-bottom-color:var(--rojo-accion)}

.legal dl{margin:0 0 var(--e2);display:grid;gap:4px 20px}
.legal dt{font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--gris);line-height:var(--lh-ui)}
.legal dd{margin:0 0 10px;font-size:var(--t-base);line-height:1.6;color:var(--carbon)}
@media (min-width:560px){
  .legal dl{grid-template-columns:minmax(0,180px) minmax(0,1fr)}
  .legal dt{padding-top:3px}
  .legal dd{margin-bottom:6px}
}

.legal__resumen{
  border-left:2px solid var(--rojo-accion);
  padding:var(--e2) 0 var(--e2) var(--e3);
  margin:0 0 var(--e4);
}
.legal__resumen p{margin:0 0 10px;font-size:var(--t-base);line-height:1.65;color:var(--gris)}
.legal__resumen p:last-child{margin-bottom:0}

.legal__indice{
  margin:0 0 var(--e4);padding:0;list-style:none;
  counter-reset:enlace;
}
.legal__indice li{padding-left:0;margin:0 0 6px}
.legal__indice li::before{content:none}
.legal__indice a{
  display:inline-block;min-height:28px;
  font-size:var(--t-base);color:var(--gris);
  border-bottom:0;
}
.legal__indice a::before{
  counter-increment:enlace;content:counter(enlace) ". ";
  color:var(--rojo-accion);
}
.legal__indice a:hover,.legal__indice a:focus-visible{color:var(--carbon)}
@media (min-width:700px){
  .legal__indice{columns:2;column-gap:clamp(24px,4vw,56px)}
  .legal__indice li{break-inside:avoid}
}

.legal__fecha{
  margin:var(--e4) 0 0;padding-top:var(--e3);
  border-top:1px solid rgba(101,102,101,.26);
  font-size:var(--t-xs);color:var(--gris);line-height:var(--lh-ui);
}

/* Mapa de cobertura animado */
.mapa-cob{display:block;width:100%;height:auto;overflow:visible}
.mapa-cob image{image-rendering:auto}

.mapa-cob__lineas path{
  fill:none;stroke:var(--rojo-accion);stroke-width:2.6;stroke-linecap:round;
}
.mapa-cob__puntos circle{fill:var(--carbon);stroke:var(--rojo-accion);stroke-width:3}

.mapa-cob__etiquetas text{
  /* 35 unidades de viewBox: a escala 0,374 son 13px. A 27 salían a 10. */
  font-family:var(--fuente,inherit);font-size:35px;font-weight:600;
  letter-spacing:.04em;fill:var(--claro);

  stroke:var(--carbon);stroke-width:6px;paint-order:stroke fill;
}

.mapa-cob__galapagos rect{fill:none;stroke:rgba(218,213,206,.34);stroke-width:2;stroke-dasharray:7 7}
.mapa-cob__galapagos circle{fill:rgba(218,213,206,.55)}
.mapa-cob__galapagos text{
  font-family:var(--fuente,inherit);font-size:30px;font-weight:600;
  letter-spacing:.08em;fill:rgba(218,213,206,.72);
}

.mapa-cob__pulso{fill:none;stroke:var(--rojo-accion);stroke-width:3}
.mapa-cob__sede-aro{fill:var(--carbon);stroke:var(--claro);stroke-width:4}
.mapa-cob__sede-nucleo{fill:var(--rojo-accion)}
.mapa-cob__sede-txt{
  font-family:var(--fuente,inherit);font-size:46px;font-weight:600;
  letter-spacing:.06em;fill:var(--blanco);
  stroke:var(--carbon);stroke-width:7px;paint-order:stroke fill;
}
.mapa-cob__sede-sub{
  font-family:var(--fuente,inherit);font-size:28px;font-weight:500;
  letter-spacing:.1em;fill:rgba(255,255,255,.82);
  stroke:var(--carbon);stroke-width:6px;paint-order:stroke fill;
}

/* Animación del mapa */
@keyframes mc-traza{from{stroke-dashoffset:var(--l)}to{stroke-dashoffset:0}}
@keyframes mc-brota{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}
@keyframes mc-entra{from{opacity:0}to{opacity:1}}
/* El pulso para a las tres repeticiones: una animación infinita exigiría
   control de pausa (2.2.2). */
@keyframes mc-pulso{0%{r:16;opacity:.55}70%{r:42;opacity:0}100%{r:42;opacity:0}}

.mapa-cob--anima .mapa-cob__lineas path{
  stroke-dasharray:var(--l);
  animation:mc-traza 1s cubic-bezier(.4,0,.2,1) var(--r) backwards;
}
.mapa-cob--anima .mapa-cob__puntos circle{
  transform-box:fill-box;transform-origin:center;
  animation:mc-brota .42s cubic-bezier(.34,1.3,.64,1) var(--r) backwards;
}
.mapa-cob--anima .mapa-cob__etiquetas text{
  animation:mc-entra .45s ease var(--r) backwards;
}
.mapa-cob--anima .mapa-cob__pulso{animation:mc-pulso 2.6s ease-out 3}
.mapa-cob:not(.mapa-cob--anima) .mapa-cob__pulso{opacity:0}

/* Veintidós rótulos por debajo de 760px se solapan. Los nombres siguen en la
   descripción del SVG y en la lista de al lado. */
@media (max-width:760px){
  .mapa-cob__etiquetas,.mapa-cob__galapagos text{display:none}
  .mapa-cob__sede-txt{font-size:58px}
  .mapa-cob__sede-sub{font-size:34px}
  .mapa-cob__lineas path{stroke-width:3.4}
  .mapa-cob__puntos circle{stroke-width:4}
}
@media (prefers-reduced-motion:reduce){
  .mapa-cob--anima .mapa-cob__lineas path,
  .mapa-cob--anima .mapa-cob__puntos circle,
  .mapa-cob--anima .mapa-cob__etiquetas text{animation:none}
  .mapa-cob--anima .mapa-cob__pulso{animation:none;opacity:.5}
}

/* Aviso del formulario */
.aviso-envio{margin:var(--e2) 0 0;font-size:var(--t-base);line-height:1.6}
.aviso-envio:empty{display:none}
.aviso-envio:focus{outline:none}

.aviso-envio--bien,
.aviso-envio--mal{
  padding:12px 0 12px var(--e3);
  border-left:2px solid currentColor;
}
.aviso-envio--bien{color:#1F7A3D}
.aviso-envio--mal{color:#B71119}
.aviso-envio--bien::before{content:'✓ ';font-weight:700}
.aviso-envio--mal::before{content:'! ';font-weight:700}

.btn:disabled{opacity:.72;cursor:progress}
