/* Renovalidos — maqueta inspirada en vistaenergy.com, con la marca de Renovalidos:
 * el morado de Vista pasa a ser el dorado del logotipo y su azul noche, una tinta cálida.
 * Para cambiar la paleta basta con tocar las variables de :root. */

:root {
  --tinta: #16110c;
  --tinta-2: #211910;
  --tinta-3: #2e2416;
  --oro: #bf903a;
  --oro-vivo: #d9a94c;
  --oro-claro: #efe3c8;
  --oro-humo: rgba(191, 144, 58, 0.35);
  --papel: #ffffff;
  --papel-2: #faf7f1;
  --texto: #1b1616;
  --gris: #5f5850;
  --gris-claro: #e7e1d6;
  --blanco-70: rgba(255, 255, 255, 0.7);
  --blanco-40: rgba(255, 255, 255, 0.4);
  --blanco-15: rgba(255, 255, 255, 0.15);

  --letra: "Alan Sans", "Segoe UI", system-ui, sans-serif;
  --letra-rotulo: "Geist", "Helvetica Neue", Arial, sans-serif;

  --margen: clamp(20px, 5.6vw, 80px);
  /* Ancho de la columna de contenido. Todo se alinea a ella: cabecera,
     portada, secciones y pie. En pantallas estrechas manda el margen mínimo. */
  --ancho: 1460px;
  --lateral: max(var(--margen), calc((100vw - var(--ancho)) / 2));
  --curva: cubic-bezier(0.22, 1, 0.36, 1);
}

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

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* La tira de fotos y los haces de luz se salen del ancho a propósito;
     «clip» los recorta sin crear otro contenedor de scroll (no rompe sticky). */
  overflow-x: clip;
}

body {
  margin: 0;
  background: var(--papel);
  color: var(--texto);
  font-family: var(--letra);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.5;
  letter-spacing: -0.2px;
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}

img,
video,
svg {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}

h1,
h2,
h3,
p {
  margin: 0;
}

button {
  font: inherit;
  color: inherit;
}

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

.solo-lector {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

.saltar {
  position: absolute;
  left: 12px;
  top: -60px;
  z-index: 100;
  padding: 10px 16px;
  background: var(--oro);
  color: var(--tinta);
  font-weight: 600;
}
.saltar:focus {
  top: 12px;
}

.contenedor {
  width: 100%;
  padding: 0 var(--lateral);
}

/* ── Rótulo: el cuadradito y las mayúsculas espaciadas de Vista ─────────── */
.rotulo {
  display: flex;
  align-items: center;
  gap: 18px;
  font-family: var(--letra-rotulo);
  font-size: 11px;
  font-weight: 400;
  letter-spacing: 3.5px;
  text-transform: uppercase;
  color: var(--gris);
}
.rotulo::before {
  content: "";
  width: 6px;
  height: 6px;
  flex: none;
  background: var(--oro);
}
.oscuro .rotulo {
  color: var(--blanco-70);
}

/* ── Titulares finos y grandes ─────────────────────────────────────────── */
.titular-xl {
  font-weight: 300;
  font-size: clamp(48px, 7.4vw, 112px);
  line-height: 0.98;
  letter-spacing: clamp(-1px, -0.18vw, -2.5px);
}
.titular {
  font-weight: 300;
  font-size: clamp(36px, 5vw, 72px);
  line-height: 1.04;
  letter-spacing: clamp(-1px, -0.12vw, -2px);
  color: var(--tinta);
}
.oscuro .titular {
  color: var(--papel);
}
.entradilla {
  font-size: clamp(17px, 1.35vw, 19px);
  line-height: 1.55;
  color: var(--gris);
  max-width: 34em;
}
.oscuro .entradilla {
  color: var(--blanco-70);
}

/* ── Botones: etiqueta + caja con flechas, en cristal ─────────────────── */
/* Fondo translúcido con desenfoque de lo que hay detrás, borde fino y un
   brillo en el canto de arriba. Sobre fondo claro el cristal es dorado con
   texto oscuro; sobre fotos y bloques oscuros, claro con texto blanco. */
.boton {
  display: inline-flex;
  align-items: stretch;
  gap: 4px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.2px;
  text-transform: uppercase;
  cursor: pointer;
  border: 0;
  background: none;
  padding: 0;
}
.boton > span,
.boton > i {
  border-radius: 4px;
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  backdrop-filter: blur(14px) saturate(140%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35),
    0 8px 24px -14px rgba(22, 17, 12, 0.45);
  transition: background 0.3s var(--curva), border-color 0.3s var(--curva),
    transform 0.35s var(--curva);
}
.boton > span {
  display: inline-flex;
  align-items: center;
  padding: 11px 20px;
  background: rgba(191, 144, 58, 0.2);
  border: 1px solid rgba(191, 144, 58, 0.55);
  color: var(--tinta);
}
.boton > i {
  display: inline-grid;
  place-items: center;
  width: 40px;
  font-style: normal;
  background: rgba(22, 17, 12, 0.06);
  border: 1px solid rgba(22, 17, 12, 0.18);
  color: #85601d;
}
.boton:hover > span {
  background: rgba(191, 144, 58, 0.32);
  border-color: rgba(191, 144, 58, 0.8);
}
.boton:hover > i {
  transform: translateX(4px);
}
.boton--blanco > span {
  background: rgba(255, 255, 255, 0.55);
  border-color: rgba(22, 17, 12, 0.14);
}
.boton--tinta > span {
  background: rgba(22, 17, 12, 0.78);
  border-color: rgba(22, 17, 12, 0.9);
  color: var(--papel);
}

/* Sobre fotos y bloques oscuros. */
:is(.portada, .oscuro, .cabeza-pagina, .tira__tarjeta, .menu) .boton > span {
  background: rgba(191, 144, 58, 0.34);
  border-color: rgba(217, 169, 76, 0.7);
  color: var(--papel);
}
:is(.portada, .oscuro, .cabeza-pagina, .tira__tarjeta, .menu) .boton--blanco > span {
  background: rgba(255, 255, 255, 0.14);
  border-color: rgba(255, 255, 255, 0.5);
}
:is(.portada, .oscuro, .cabeza-pagina, .tira__tarjeta, .menu) .boton > i {
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(255, 255, 255, 0.35);
  /* Blancas: en dorado se perdían sobre las zonas claras de las fotos. */
  color: var(--papel);
}
:is(.portada, .oscuro, .cabeza-pagina, .tira__tarjeta, .menu) .boton:hover > span {
  background: rgba(191, 144, 58, 0.5);
}
:is(.portada, .oscuro, .cabeza-pagina, .tira__tarjeta, .menu) .boton--blanco:hover > span {
  background: rgba(255, 255, 255, 0.24);
}

/* ── Cabecera ──────────────────────────────────────────────────────────── */
.cabecera {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 50;
  color: var(--papel);
  transition: background 0.4s var(--curva), transform 0.4s var(--curva),
    box-shadow 0.4s var(--curva);
}
.cabecera__fila {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  height: 92px;
  /* La cabecera va de borde a borde, como en Vista; no sigue la columna. */
  padding: 0 24px;
}
.cabecera__logo img {
  height: 30px;
  width: auto;
}
.cabecera__nav {
  display: flex;
  gap: clamp(24px, 3.4vw, 52px);
  font-size: 12.5px;
  text-transform: uppercase;
  letter-spacing: 0.2px;
}
.cabecera__nav a {
  position: relative;
  padding: 6px 0;
  opacity: 0.88;
  transition: opacity 0.2s;
}
.cabecera__nav a:hover,
.cabecera__nav a[aria-current="page"] {
  opacity: 1;
}
.cabecera__nav a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s var(--curva);
}
.cabecera__nav a:hover::after,
.cabecera__nav a[aria-current="page"]::after {
  transform: scaleX(1);
}
.cabecera__acciones {
  display: flex;
  align-items: center;
  gap: 26px;
}
.cabecera__contacto {
  font-size: 12.5px;
  font-weight: 600;
  text-transform: uppercase;
}
.hamburguesa {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 0;
  background: var(--oro);
  cursor: pointer;
  transition: background 0.3s;
}
.hamburguesa:hover {
  background: var(--oro-vivo);
}
.hamburguesa span {
  display: block;
  width: 14px;
  height: 1.5px;
  background: var(--tinta);
  box-shadow: 0 -4px 0 var(--tinta);
  margin-top: 4px;
}
.hamburguesa span::after {
  content: "";
  display: block;
  width: 9px;
  height: 1.5px;
  margin: 4px 0 0 5px;
  background: var(--tinta);
}
.cabecera.con-fondo {
  background: rgba(22, 17, 12, 0.88);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  box-shadow: 0 1px 0 var(--blanco-15);
}
.cabecera.escondida {
  transform: translateY(-100%);
}

/* ── Menú a pantalla completa ──────────────────────────────────────────── */
.menu {
  position: fixed;
  inset: 0;
  z-index: 60;
  display: grid;
  grid-template-columns: 1fr minmax(280px, 420px);
  background: var(--tinta);
  color: var(--papel);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.45s var(--curva), visibility 0s linear 0.45s;
}
.menu.abierto {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.45s var(--curva);
}
.menu__principal {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 120px var(--lateral) 60px;
  background: radial-gradient(
      ellipse 60% 70% at 85% 100%,
      rgba(191, 144, 58, 0.22),
      transparent 70%
    ),
    var(--tinta);
}
.menu__principal ol {
  list-style: none;
  margin: 0;
  padding: 0;
  counter-reset: menu;
}
.menu__principal li {
  counter-increment: menu;
  overflow: hidden;
}
.menu__principal a {
  display: flex;
  align-items: baseline;
  gap: 22px;
  font-size: clamp(40px, 6.4vw, 92px);
  font-weight: 200;
  line-height: 1.12;
  letter-spacing: -2px;
  transform: translateY(105%);
  transition: transform 0.7s var(--curva), color 0.25s;
}
.menu__principal a::before {
  content: "0" counter(menu);
  font-family: var(--letra-rotulo);
  font-size: 12px;
  letter-spacing: 2px;
  color: var(--oro);
}
.menu__principal a:hover {
  color: var(--oro-vivo);
}
.menu.abierto .menu__principal a {
  transform: none;
}
.menu.abierto li:nth-child(2) a {
  transition-delay: 0.06s;
}
.menu.abierto li:nth-child(3) a {
  transition-delay: 0.12s;
}
.menu__lateral {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 36px;
  padding: 120px 48px 60px;
  border-left: 1px solid var(--blanco-15);
  font-size: 14px;
  color: var(--blanco-70);
}
.menu__lateral a:hover {
  color: var(--papel);
}
.menu__cerrar {
  position: absolute;
  top: 24px;
  right: 24px;
  width: 44px;
  height: 44px;
  border: 0;
  background: var(--oro);
  color: var(--tinta);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}

/* ── Portada con vídeo ─────────────────────────────────────────────────── */
.portada {
  position: relative;
  min-height: 100svh;
  color: var(--papel);
  overflow: hidden;
  background: var(--tinta);
}

/* ── Paso de la portada al bloque oscuro, como en Vista ────────────────────
   La portada se queda quieta (sticky) mientras un velo del color del bloque
   la va oscureciendo; el bloque sube por encima con un degradado de 30vh en
   el borde, así que no se ve dónde acaba una y empieza el otro. El velo y el
   desplazamiento lento del titular y del vídeo los mueve sitio.js. */
.transicion {
  position: relative;
}
.transicion > .portada {
  position: sticky;
  top: 0;
  z-index: 0;
}
.portada__velo {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: var(--tinta);
  opacity: var(--velo, 0);
  pointer-events: none;
}
.portada__medio video,
.portada__medio img {
  transform: translateY(var(--medio-y, 0px)) scale(1.04);
  will-change: transform;
}
.portada__contenido {
  transform: translateY(var(--texto-y, 0px));
  opacity: var(--texto-o, 1);
  will-change: transform, opacity;
}
.fundido {
  position: relative;
  z-index: 2;
  height: 30vh;
  margin-top: -30vh;
  background: linear-gradient(180deg, rgba(22, 17, 12, 0), var(--tinta));
  pointer-events: none;
}
.transicion > .presentacion {
  z-index: 2;
}
/* El haz de luz del bloque arranca difuminado: si no, su borde superior se
   ve como una línea recta en medio del fundido. */
.transicion > .presentacion .oscuro__luz {
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 45vh);
  mask-image: linear-gradient(180deg, transparent 0, #000 45vh);
}
.portada__medio,
.portada__medio video,
.portada__medio img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.portada__medio::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
      180deg,
      rgba(22, 17, 12, 0.45) 0%,
      rgba(22, 17, 12, 0.05) 35%,
      rgba(22, 17, 12, 0.15) 65%,
      rgba(22, 17, 12, 0.7) 100%
    ),
    linear-gradient(90deg, rgba(22, 17, 12, 0.35), transparent 60%);
}
.portada__linea {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 65.3%;
  width: 1px;
  background: linear-gradient(
    180deg,
    transparent,
    rgba(255, 255, 255, 0.28) 20%,
    rgba(255, 255, 255, 0.28) 85%,
    transparent
  );
}
.portada__contenido {
  position: relative;
  z-index: 2;
  display: grid;
  min-height: 100svh;
  grid-template-rows: auto 1fr auto;
  padding: 128px var(--lateral) 72px;
}
/* El titular y sus botones, más abajo que en Vista: 180 px por debajo de
   donde caerían (en móvil, menos, para que no empujen el resto fuera). */
.portada__contenido > div:first-child {
  margin-top: 180px;
}
@media (max-width: 760px) {
  .portada__contenido > div:first-child {
    margin-top: 60px;
  }
}
.portada__titulo {
  max-width: 11.5em;
  text-shadow: 0 2px 30px rgba(0, 0, 0, 0.18);
}
.portada__botones {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 40px;
}
.portada__pie {
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
}
.portada__bloque {
  width: min(320px, 100%);
  margin-right: max(0px, calc((100vw - var(--margen) * 2) * 0.03));
}
.portada__bloque .rotulo {
  color: var(--papel);
  font-weight: 500;
  font-size: 10.5px;
  letter-spacing: 1px;
  margin-bottom: 40px;
}
.portada__bloque .rotulo::before {
  display: none;
}
.portada__bloque p {
  font-size: 16px;
  line-height: 1.4;
}
.explorar {
  position: absolute;
  left: max(20px, calc(var(--lateral) - 28px));
  bottom: 96px;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--letra-rotulo);
  font-size: 8px;
  letter-spacing: 3.5px;
  text-transform: uppercase;
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  color: var(--blanco-70);
}
.explorar::before {
  content: "‹‹";
  font-size: 12px;
  letter-spacing: 0;
  transform: rotate(90deg);
}
.pausa {
  position: absolute;
  right: 24px;
  bottom: 24px;
  z-index: 3;
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border: 1px solid var(--blanco-40);
  background: rgba(22, 17, 12, 0.35);
  color: var(--papel);
  font-size: 11px;
  cursor: pointer;
}

/* ── Bloque oscuro con corte en diagonal ───────────────────────────────── */
.oscuro {
  position: relative;
  color: var(--papel);
  background: var(--tinta);
  overflow: hidden;
}
/* El símbolo del logotipo, grande y casi transparente, asomando por la
   derecha de los bloques oscuros. El tenue va dentro del propio SVG. */
.oscuro,
.cabeza-pagina.cabeza-pagina--corta {
  background-image: url(/medios/simbolo-fondo.svg);
  background-repeat: no-repeat;
  background-size: min(60vw, 860px) auto;
  background-position: right -10vw center;
}
.oscuro--corte-abajo {
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 6vw));
  padding-bottom: 6vw;
}
.oscuro--corte-arriba {
  clip-path: polygon(0 0, 100% 5.4vw, 100% 100%, 0 100%);
  padding-top: 5.4vw;
}
/* Los haces de luz de Vista: planos inclinados con un brillo dorado. */
.oscuro__luz {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
/* Un plano algo más claro a la derecha y un haz de luz en diagonal, con los
 * bordes difuminados: así no se ven las cajas. */
.oscuro__luz::before {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 64%;
  right: 0;
  background: linear-gradient(
    180deg,
    rgba(191, 144, 58, 0.03) 0%,
    rgba(191, 144, 58, 0.1) 55%,
    rgba(191, 144, 58, 0.02) 100%
  );
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 18%);
  mask-image: linear-gradient(90deg, transparent, #000 18%);
}
.oscuro__luz::after {
  content: "";
  position: absolute;
  width: 110vw;
  height: 34vw;
  right: -42vw;
  top: 38%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(217, 169, 76, 0.32) 45%,
    rgba(191, 144, 58, 0.12) 70%,
    transparent 100%
  );
  transform: rotate(-26deg);
  filter: blur(38px);
  opacity: 0.85;
}

.presentacion {
  padding: clamp(140px, 22vw, 320px) 0 clamp(120px, 12vw, 180px);
}
.presentacion .rotulo {
  margin-bottom: 40px;
}
.texto-que-aparece {
  max-width: 15.5em;
  font-size: clamp(32px, 4.3vw, 60px);
  font-weight: 300;
  line-height: 1.1;
  letter-spacing: -1.2px;
}
.texto-que-aparece .palabra {
  color: rgba(239, 227, 200, 0.22);
  transition: color 0.35s linear;
}
.texto-que-aparece .palabra.vista {
  color: var(--oro-claro);
}
.texto-que-aparece .palabra.encendida {
  color: var(--oro-vivo);
}
.presentacion__parrafos {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 40px clamp(32px, 6vw, 96px);
  max-width: 1000px;
  margin-top: clamp(64px, 8vw, 120px);
  /* Alineado a la izquierda con el rótulo y el titular. */
  margin-left: 0;
  font-size: 17px;
  line-height: 1.6;
  color: var(--blanco-70);
}
.presentacion__parrafos strong {
  display: block;
  grid-column: 1 / -1;
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 300;
  line-height: 1.3;
  color: var(--papel);
}

/* ── Indicadores con cifras gigantes ───────────────────────────────────── */
.indicadores {
  padding: clamp(80px, 9vw, 140px) 0 clamp(60px, 7vw, 120px);
}
.indicadores .rotulo {
  margin-bottom: 36px;
}
.indicadores__lista {
  margin-top: clamp(48px, 6vw, 96px);
  border-top: 1px solid var(--gris-claro);
}
.indicador {
  display: grid;
  grid-template-columns: 60px minmax(0, 1fr) auto;
  align-items: center;
  gap: 32px;
  padding: clamp(22px, 2.6vw, 40px) var(--lateral);
  margin: 0 calc(var(--lateral) * -1);
  border-bottom: 1px solid var(--gris-claro);
}
.indicador svg {
  width: 32px;
  height: 32px;
  color: var(--tinta);
}
.indicador p {
  font-size: 16px;
  color: var(--gris);
  max-width: 26em;
}
.indicador__cifra {
  font-weight: 200;
  font-size: clamp(64px, 10vw, 150px);
  line-height: 0.9;
  letter-spacing: clamp(-2px, -0.35vw, -6px);
  color: var(--texto);
  white-space: nowrap;
}
.indicador__cifra small {
  font-size: 0.5em;
  letter-spacing: -1px;
  margin-left: 0.08em;
}

/* ── Tira de fotos que se abre en tarjeta ──────────────────────────────── */
.tira {
  position: relative;
  height: 260vh;
}
.tira__fija {
  position: sticky;
  top: 0;
  height: 100svh;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.tira__fotos {
  position: relative;
  width: 100%;
  height: 100%;
}
.tira__foto {
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--w, 27.6vw);
  height: var(--h, 55vh);
  margin: 0;
  border-radius: 6px;
  overflow: hidden;
  transform: translate(calc(-50% + var(--x, 0px)), -50%);
  will-change: transform, width, height;
}
.tira__foto img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.tira__tarjeta {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0 clamp(28px, 6vw, 90px);
  color: var(--papel);
  background: linear-gradient(
    90deg,
    rgba(22, 17, 12, 0.82) 0%,
    rgba(22, 17, 12, 0.6) 38%,
    rgba(22, 17, 12, 0.15) 62%,
    transparent 80%
  );
  opacity: var(--texto-o, 0);
}
.tira__tarjeta .rotulo {
  color: var(--blanco-70);
  margin-bottom: 36px;
}
.tira__tarjeta .titular {
  color: var(--papel);
  max-width: 9.5em;
}
.tira__tarjeta p {
  max-width: 24em;
  margin: 28px 0 44px;
  color: rgba(255, 255, 255, 0.86);
  line-height: 1.5;
}

/* ── Servicios con el mapa de puntos ───────────────────────────────────── */
.servicios {
  overflow-x: clip;
  padding: clamp(80px, 9vw, 140px) 0 clamp(60px, 7vw, 100px);
}
.servicios__cabeza {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: 48px;
  align-items: end;
}
.servicios__cabeza .rotulo {
  margin-bottom: 36px;
}
.servicios__cabeza .titular {
  max-width: 9em;
}
.servicios__cabeza .boton {
  margin-top: 44px;
}
.servicios__cuerpo {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: 48px;
  align-items: center;
  margin-top: clamp(40px, 5vw, 80px);
}
.datos-linea {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.dato-linea {
  position: relative;
  padding: 80px 20px 90px;
  border-left: 1px solid var(--gris-claro);
}
.dato-linea::before {
  content: "";
  position: absolute;
  left: -1px;
  top: 80px;
  height: 176px;
  width: 1px;
  background: var(--oro);
}
.dato-linea__cifra {
  font-weight: 200;
  font-size: clamp(56px, 6.6vw, 100px);
  line-height: 1;
  letter-spacing: -3px;
  color: var(--oro);
  white-space: nowrap;
}
.dato-linea__cifra small {
  font-size: 0.42em;
  letter-spacing: -1px;
}
.dato-linea p {
  margin-top: 44px;
  font-size: 16px;
}
.dato-linea p b {
  font-weight: 400;
  color: var(--oro);
}
.servicios__texto {
  max-width: 30em;
  margin-top: 8px;
  color: var(--gris);
  font-size: 17px;
  line-height: 1.6;
}
.mapa {
  position: relative;
}
.mapa::before {
  content: "";
  position: absolute;
  inset: -12% -30% -12% -6%;
  border-radius: 50%;
  background: radial-gradient(
    closest-side,
    rgba(191, 144, 58, 0.07),
    transparent
  );
}
.mapa svg {
  position: relative;
  width: 100%;
  height: auto;
}
.mapa-puntos circle {
  fill: #c9b48a;
}
.mapa-vecino circle {
  fill: #ece6da;
}
.mapa-recuadro {
  stroke: var(--gris-claro);
  stroke-width: 1.5;
}
.mapa-sede rect {
  fill: var(--tinta);
}
.mapa-sede .mapa-anillo {
  fill: var(--papel);
  stroke: var(--tinta);
  stroke-width: 9;
}
.mapa-sede .mapa-halo {
  fill: rgba(191, 144, 58, 0.22);
  transform-box: fill-box;
  transform-origin: center;
  animation: halo 2.8s var(--curva) infinite;
}
@keyframes halo {
  0% {
    transform: scale(0.5);
    opacity: 0.9;
  }
  100% {
    transform: scale(1.5);
    opacity: 0;
  }
}
.mapa__leyenda {
  position: absolute;
  left: 57.5%;
  top: 55.5%;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 14px;
  font-size: 14px;
  background: rgba(255, 255, 255, 0.92);
  border-left: 2px solid var(--oro);
  box-shadow: 0 10px 30px -18px rgba(22, 17, 12, 0.45);
}
.mapa__leyenda b {
  font-weight: 600;
}
.mapa__leyenda span {
  color: var(--gris);
}

/* ── El modelo CEE ─────────────────────────────────────────────────────── */
.modelo {
  padding: clamp(60px, 7vw, 110px) 0 clamp(140px, 14vw, 220px);
}
.modelo__cabeza {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 40px;
  flex-wrap: wrap;
}
.modelo__cabeza .rotulo {
  margin-bottom: 36px;
}
.modelo__cabeza .titular {
  max-width: 11em;
}
.modelo__lista {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-top: clamp(56px, 7vw, 110px);
  border-top: 1px solid var(--gris-claro);
}
.razon {
  position: relative;
  padding: 44px clamp(20px, 2.6vw, 40px) 20px 0;
}
.razon + .razon {
  padding-left: clamp(20px, 2.6vw, 40px);
  border-left: 1px solid var(--gris-claro);
}
.razon::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 0;
  height: 2px;
  width: var(--avance, 0%);
  background: var(--oro);
  transition: width 1.2s var(--curva);
}
.razon.visible {
  --avance: 100%;
}
.razon__num {
  font-weight: 200;
  font-size: clamp(64px, 7vw, 108px);
  line-height: 1;
  letter-spacing: -4px;
  color: var(--oro);
}
.razon h3 {
  margin-top: 30px;
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.5px;
  color: var(--tinta);
}
.razon p {
  margin-top: 14px;
  color: var(--gris);
  max-width: 22em;
}

/* ── Llamada final (oscuro, corte arriba) ──────────────────────────────── */
.llamada {
  padding-bottom: clamp(100px, 10vw, 160px);
}
.llamada__rejilla {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
  gap: 48px;
  align-items: end;
  padding-top: clamp(100px, 12vw, 180px);
}
.llamada .rotulo {
  margin-bottom: 36px;
}
.llamada .titular {
  max-width: 10em;
  font-size: clamp(40px, 6vw, 92px);
}
.llamada .boton {
  margin-top: clamp(56px, 8vw, 140px);
}
.llamada__texto {
  max-width: 21em;
  color: var(--papel);
  font-size: 15px;
  line-height: 1.5;
}

/* ── Pie ───────────────────────────────────────────────────────────────── */
.pie {
  position: relative;
  color: var(--papel);
  background: radial-gradient(
      ellipse 70% 60% at 72% 112%,
      rgba(217, 169, 76, 0.55),
      rgba(191, 144, 58, 0.16) 45%,
      transparent 75%
    ),
    linear-gradient(180deg, var(--tinta) 0%, var(--tinta-2) 100%);
  padding: clamp(64px, 7vw, 96px) 0 40px;
  font-size: 13px;
}
/* El pie también ocupa todo el ancho, con el margen normal a los lados. */
.pie > .contenedor {
  padding: 0 var(--margen);
}
.pie__arriba {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr));
  gap: 40px;
}
.pie__logo img {
  height: 34px;
  width: auto;
}
.pie__dato h3 {
  font-weight: 300;
  font-size: 22px;
  color: var(--oro-claro);
}
.pie__dato a,
.pie__dato p {
  display: block;
  margin-top: 10px;
  font-size: 20px;
  font-weight: 300;
}
.pie__dato small {
  display: block;
  margin-top: 16px;
  font-size: 13px;
  color: var(--blanco-70);
  max-width: 18em;
}
.pie__separador {
  height: 1px;
  margin: clamp(56px, 6vw, 84px) 0;
  background-image: radial-gradient(
    circle,
    rgba(255, 255, 255, 0.5) 1px,
    transparent 1.2px
  );
  background-size: 13px 1px;
}
.pie__abajo {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) repeat(3, minmax(0, 1fr));
  gap: 40px;
}
.pie__columna .rotulo {
  color: var(--papel);
  margin-bottom: 26px;
}
.pie__columna .rotulo::before {
  background: var(--papel);
}
.pie__columna ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 11px;
  text-transform: uppercase;
  font-size: 12px;
}
.pie__columna a:hover {
  color: var(--oro-claro);
}
.pie__fondos {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 18px 28px;
}
.pie__fondos img {
  height: 40px;
  width: auto;
  padding: 8px 12px;
  background: var(--papel);
  border-radius: 3px;
}
.pie__final {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  flex-wrap: wrap;
  margin-top: clamp(56px, 7vw, 110px);
  font-size: 12px;
  color: var(--blanco-70);
}

/* ── Páginas interiores ───────────────────────────────────────────────── */
.cabeza-pagina {
  position: relative;
  min-height: 86svh;
  display: flex;
  align-items: flex-end;
  color: var(--papel);
  background: var(--tinta);
  overflow: hidden;
}
.cabeza-pagina > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(var(--zoom, 1.06));
  transition: transform 0.2s linear;
}
.cabeza-pagina::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
      180deg,
      rgba(22, 17, 12, 0.55),
      rgba(22, 17, 12, 0.2) 40%,
      rgba(22, 17, 12, 0.85)
    ),
    linear-gradient(90deg, rgba(22, 17, 12, 0.45), transparent 70%);
}
.cabeza-pagina .contenedor {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 48px;
  align-items: end;
  padding-top: 160px;
  padding-bottom: clamp(64px, 7vw, 110px);
}
.cabeza-pagina .rotulo {
  color: var(--papel);
  margin-bottom: 32px;
}
.cabeza-pagina .rotulo::before {
  background: var(--oro);
}
.cabeza-pagina .entradilla {
  color: rgba(255, 255, 255, 0.85);
}
.cabeza-pagina .entradilla + .entradilla {
  margin-top: 16px;
}
.cabeza-pagina--corta {
  min-height: 56svh;
}

.seccion {
  padding: clamp(90px, 10vw, 150px) 0;
}
.seccion--papel {
  background: var(--papel-2);
}
.dos-columnas {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(40px, 7vw, 110px);
  align-items: center;
}
.dos-columnas .rotulo {
  margin-bottom: 32px;
}
.dos-columnas p + p {
  margin-top: 18px;
}
.foto-recortada {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: 6px;
}
.foto-recortada img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.08) translateY(var(--desplaza, 0px));
}
/* La foto entra por debajo del corte diagonal de la sección oscura anterior,
   como en Vista: sin franja blanca entre las dos. */
.oscuro--corte-abajo {
  z-index: 1;
}
.oscuro--corte-abajo + .foto-ancha {
  margin-top: -6vw;
}
.foto-ancha {
  height: clamp(320px, 52vw, 720px);
  overflow: hidden;
}
.foto-ancha img {
  width: 100%;
  height: 120%;
  object-fit: cover;
  transform: translateY(var(--desplaza, 0px));
}

.publicos {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  margin-top: clamp(48px, 6vw, 90px);
}
.publico {
  display: flex;
  flex-direction: column;
  background: var(--papel);
  border: 1px solid var(--gris-claro);
  border-radius: 6px;
  overflow: hidden;
  transition: transform 0.5s var(--curva), box-shadow 0.5s var(--curva);
}
.publico:hover {
  transform: translateY(-6px);
  box-shadow: 0 24px 50px -30px rgba(22, 17, 12, 0.45);
}
.publico img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  /* Las fotos del equipo son verticales: el encuadre sube hacia las caras. */
  object-position: 50% 28%;
}
.publico div {
  padding: 30px 28px 36px;
}
.publico h3 {
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.5px;
  color: var(--tinta);
}
.publico p {
  margin-top: 14px;
  color: var(--gris);
}

.motivos {
  margin-top: clamp(48px, 6vw, 90px);
  border-top: 1px solid var(--blanco-15);
}
.motivo {
  display: grid;
  grid-template-columns: 110px minmax(0, 0.9fr) minmax(0, 1.2fr);
  gap: 32px;
  padding: clamp(32px, 4vw, 56px) 0;
  border-bottom: 1px solid var(--blanco-15);
}
.motivo span {
  font-family: var(--letra-rotulo);
  font-size: 12px;
  letter-spacing: 3px;
  color: var(--oro);
}
.motivo h3 {
  font-weight: 300;
  font-size: clamp(26px, 2.6vw, 38px);
  line-height: 1.12;
  letter-spacing: -0.8px;
}
.motivo p {
  color: var(--blanco-70);
  font-size: 16.5px;
  line-height: 1.65;
}

.preguntas {
  margin-top: clamp(40px, 5vw, 72px);
  border-top: 1px solid var(--gris-claro);
}
.pregunta {
  border-bottom: 1px solid var(--gris-claro);
}
.pregunta summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding: 28px 0;
  font-size: clamp(21px, 2vw, 28px);
  font-weight: 300;
  letter-spacing: -0.4px;
  color: var(--tinta);
  cursor: pointer;
  list-style: none;
}
.pregunta summary::-webkit-details-marker {
  display: none;
}
.pregunta summary::after {
  content: "+";
  display: grid;
  place-items: center;
  flex: none;
  width: 38px;
  height: 38px;
  background: var(--tinta);
  color: var(--oro-vivo);
  font-size: 20px;
  font-weight: 300;
  transition: transform 0.4s var(--curva);
}
.pregunta[open] summary::after {
  content: "−";
}
.pregunta p {
  max-width: 44em;
  padding: 0 0 30px;
  color: var(--gris);
  font-size: 17px;
  line-height: 1.6;
}

/* ── Equipo ──────────────────────────────────────────────────────────── */
.oro {
  font-style: normal;
  color: var(--oro-vivo);
}
.equipo {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 22px;
  margin-top: clamp(48px, 6vw, 90px);
}
.persona {
  display: flex;
  flex-direction: column;
  padding: 34px 32px 38px;
  background: var(--papel);
  border: 1px solid var(--gris-claro);
  border-radius: 6px;
  transition: transform 0.5s var(--curva), box-shadow 0.5s var(--curva);
}
.persona:hover {
  transform: translateY(-6px);
  box-shadow: 0 24px 50px -30px rgba(22, 17, 12, 0.45);
}
.persona__cabeza {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 26px;
}
.avatar {
  display: grid;
  place-items: center;
  width: 76px;
  height: 76px;
  border-radius: 50%;
  font-size: 24px;
  font-weight: 500;
  letter-spacing: 0.5px;
}
/* Fondo y tinta emparejados para que las iniciales se lean (contraste ≥ 4,5:1). */
.avatar--0 {
  background: var(--tinta);
  color: var(--oro-vivo);
}
.avatar--1 {
  background: var(--oro);
  color: var(--tinta);
}
.avatar--2 {
  background: var(--tinta-3);
  color: var(--oro-claro);
}
.avatar--3 {
  background: var(--oro-claro);
  color: var(--tinta);
}
.chip {
  padding: 5px 12px;
  border-radius: 999px;
  font-family: var(--letra-rotulo);
  font-size: 10.5px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
}
.chip--oficina {
  border: 1px solid var(--gris-claro);
  color: var(--gris);
}
.chip--campo {
  background: rgba(191, 144, 58, 0.16);
  color: #6e4f12;
}
.persona h3 {
  font-weight: 400;
  font-size: 26px;
  letter-spacing: -0.5px;
  color: var(--tinta);
}
.persona__rol {
  margin-top: 4px;
  font-size: 14px;
  /* El dorado de marca sobre blanco no llega a 4,5:1 en letra pequeña. */
  color: #85601d;
}
.persona p:last-child {
  margin-top: 16px;
  color: var(--gris);
  font-size: 15.5px;
  line-height: 1.6;
}
.aviso-ejemplo {
  margin-top: 64px;
  font-size: 12px;
  color: var(--blanco-40);
  text-align: center;
}

/* ── Formulario ────────────────────────────────────────────────────────── */
.formulario {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 34px 28px;
}
.campo {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.campo--ancho {
  grid-column: 1 / -1;
}
.campo label {
  font-family: var(--letra-rotulo);
  font-size: 11px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--gris);
}
.campo input,
.campo textarea {
  width: 100%;
  padding: 12px 0;
  border: 0;
  border-bottom: 1px solid #cfc6b6;
  border-radius: 0;
  background: transparent;
  font: inherit;
  font-size: 18px;
  color: var(--tinta);
  transition: border-color 0.3s;
}
.campo textarea {
  min-height: 130px;
  resize: vertical;
}
.campo input:focus,
.campo textarea:focus {
  outline: none;
  border-bottom-color: var(--oro);
  box-shadow: 0 1px 0 var(--oro);
}
.campo--trampa {
  position: absolute;
  left: -9999px;
}
.consentimiento {
  grid-column: 1 / -1;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  font-size: 14px;
  color: var(--gris);
}
.consentimiento input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--oro);
}
.consentimiento a {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.formulario__envio {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 22px;
}
.aviso {
  font-size: 15px;
}
.aviso--bien {
  color: #3f6b2a;
}
.aviso--mal {
  color: #a23a1f;
}
.correo-grande {
  display: inline-block;
  margin-top: 32px;
  font-size: clamp(24px, 2.6vw, 36px);
  font-weight: 300;
  color: var(--oro);
  border-bottom: 1px solid var(--oro-humo);
}
.correo-grande:hover {
  border-bottom-color: var(--oro);
}

/* ── Textos legales ────────────────────────────────────────────────────── */
.legal {
  max-width: 820px;
  padding: clamp(70px, 8vw, 120px) var(--margen);
  margin: 0 auto;
  font-size: 16.5px;
  line-height: 1.7;
  color: #39322b;
}
.legal h2 {
  margin: 48px 0 14px;
  font-family: var(--letra-rotulo);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--tinta);
}
.legal p + p {
  margin-top: 14px;
}
.legal a {
  color: var(--oro);
  text-decoration: underline;
}

/* ── Aparición al hacer scroll ─────────────────────────────────────────── */
.aparece {
  opacity: 0;
  transform: translateY(36px);
  transition: opacity 1s var(--curva), transform 1s var(--curva);
}
.aparece.visible {
  opacity: 1;
  transform: none;
}
.aparece[data-retraso="1"] {
  transition-delay: 0.1s;
}
.aparece[data-retraso="2"] {
  transition-delay: 0.2s;
}
.aparece[data-retraso="3"] {
  transition-delay: 0.3s;
}
.titular-linea {
  display: block;
  overflow: hidden;
}
.titular-linea > span {
  display: block;
  transform: translateY(105%);
  transition: transform 1.1s var(--curva);
}
.visible .titular-linea > span,
.titular-linea.visible > span {
  transform: none;
}
.titular-linea:nth-child(2) > span {
  transition-delay: 0.08s;
}
.titular-linea:nth-child(3) > span {
  transition-delay: 0.16s;
}

/* Sin JavaScript todo se ve; con él, se anima. */
.sin-js .aparece,
.sin-js .titular-linea > span {
  opacity: 1;
  transform: none;
}

/* ── Móvil y tableta ───────────────────────────────────────────────────── */
@media (max-width: 1080px) {
  .cabecera__nav {
    display: none;
  }
  .equipo {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .servicios__cabeza,
  .servicios__cuerpo,
  .llamada__rejilla,
  .cabeza-pagina .contenedor,
  .dos-columnas {
    grid-template-columns: minmax(0, 1fr);
  }
  .pie__arriba,
  .pie__abajo {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .motivo {
    grid-template-columns: 70px minmax(0, 1fr);
  }
  .motivo p {
    grid-column: 2;
  }
  .menu {
    grid-template-columns: minmax(0, 1fr);
  }
  .menu__lateral {
    display: none;
  }
}
@media (max-width: 760px) {
  /* En móvil los titulares fluyen: partirlos por líneas fijas deja palabras
     sueltas en una línea. */
  .titular-linea,
  .titular-linea > span {
    display: inline;
  }
  .titular-linea + .titular-linea::before {
    content: " ";
  }
  .cabecera__fila {
    height: 72px;
    padding: 0 16px;
  }
  .cabecera__logo img {
    height: 24px;
  }
  .cabecera__contacto {
    display: none;
  }
  .portada__linea,
  .explorar {
    display: none;
  }
  .portada__contenido {
    padding-top: 112px;
    padding-bottom: 88px;
  }
  .portada__pie {
    justify-content: flex-start;
  }
  .presentacion__parrafos,
  .modelo__lista,
  .publicos,
  .equipo,
  .formulario {
    grid-template-columns: minmax(0, 1fr);
  }
  .razon + .razon {
    padding-left: 0;
    border-left: 0;
    border-top: 1px solid var(--gris-claro);
  }
  .indicador {
    grid-template-columns: 40px minmax(0, 1fr);
    gap: 14px 18px;
  }
  .indicador__cifra {
    grid-column: 1 / -1;
  }
  .datos-linea {
    grid-template-columns: minmax(0, 1fr);
  }
  .dato-linea {
    padding: 36px 20px 40px;
  }
  .dato-linea::before {
    top: 36px;
    height: 120px;
  }
  .dato-linea p {
    margin-top: 20px;
  }
  .tira {
    height: auto;
  }
  .tira__fija {
    position: relative;
    height: auto;
    display: block;
    padding: 0 16px 64px;
  }
  .tira__fotos {
    height: auto;
  }
  .tira__foto {
    display: none;
  }
  .tira__foto--centro {
    display: block;
    position: relative;
    top: auto;
    left: auto;
    width: 100%;
    height: 78svh;
    transform: none;
  }
  .tira__tarjeta {
    opacity: 1;
    background: linear-gradient(
      0deg,
      rgba(22, 17, 12, 0.85) 0%,
      rgba(22, 17, 12, 0.45) 60%,
      rgba(22, 17, 12, 0.2)
    );
    justify-content: flex-end;
    padding-bottom: 36px;
  }
  .pie__arriba,
  .pie__abajo {
    grid-template-columns: minmax(0, 1fr);
  }
  .mapa__leyenda {
    position: static;
    margin-top: 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation: none !important;
  }
  .aparece,
  .titular-linea > span {
    opacity: 1;
    transform: none;
  }
  .texto-que-aparece .palabra {
    color: var(--oro-claro);
  }
}
