/* =========================================================
   TURBINAS-IS — Sistema de diseño
   Paleta: acero industrial + acento ámbar (energía/turbina)
   Tipografía: Barlow Condensed (titulares técnicos) + Work Sans (cuerpo)
   ========================================================= */

:root{
  --grafito-950: #12161c;
  --grafito-900: #171c23;
  --acero-800:   #232b36;
  --acero-700:   #313c4a;
  --acero-600:   #4a5766;
  --ceniza-400:  #889197;
  --ceniza-300:  #a7afb6;
  --hueso-100:   #f3f1ec;
  --hueso-050:   #faf9f6;
  --rojo-500:    #e5231f;
  --rojo-600:    #b81a1a;
  --rojo-700:    #931515;
  --rojo-100:    #fbdede;
  --azul-700:    #00309c;
  --azul-800:    #002478;
  --azul-100:    #dde6fa;
  --linea:       rgba(255,255,255,0.09);
  --linea-osc:   rgba(18,22,28,0.12);

  --f-titular: 'Barlow Condensed', sans-serif;
  --f-cuerpo:  'Work Sans', sans-serif;

  --radio: 3px;
  --maxw: 1180px;
  --dur: 480ms;
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *,*::before,*::after{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}

body{
  margin:0;
  font-family: var(--f-cuerpo);
  color: var(--grafito-900);
  background: var(--hueso-050);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

img{ max-width:100%; display:block; }
a{ color: inherit; text-decoration: none; }
ul{ margin:0; padding:0; list-style:none; }
button{ font-family: inherit; }

h1,h2,h3,h4{
  font-family: var(--f-titular);
  font-weight: 600;
  line-height: 1.05;
  margin: 0 0 0.5em;
  letter-spacing: 0.2px;
}
h1{ font-size: clamp(2.6rem, 5.5vw, 4.6rem); font-weight: 700; }
h2{ font-size: clamp(1.9rem, 3.4vw, 2.9rem); }
h3{ font-size: clamp(1.3rem, 2vw, 1.6rem); }

p{ margin: 0 0 1em; max-width: 62ch; }

.contenedor{
  width: 100%;
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 24px;
}

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

/* Enfoque de teclado visible */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible{
  outline: 2px solid var(--rojo-500);
  outline-offset: 3px;
}

/* ---------- Encabezado técnico reutilizable ---------- */
.rotulo{
  font-family: var(--f-titular);
  font-size: 0.95rem;
  letter-spacing: 0.14em;
  color: var(--rojo-600);
  border-left: 3px solid var(--rojo-500);
  padding-left: 10px;
  display: inline-block;
  margin-bottom: 14px;
}
.rotulo.claro{ color: var(--rojo-500); }

/* ================= HEADER / NAV ================= */
.site-header{
  position: sticky; top:0; z-index: 60;
  background: var(--grafito-900);
  border-bottom: 1px solid var(--linea);
}
.site-header::after{
  content:""; display:block; height:3px;
  background: linear-gradient(90deg, var(--rojo-500) 0%, var(--rojo-500) 55%, var(--azul-700) 100%);
}
.nav-wrap{
  display:flex; align-items:center; justify-content: space-between;
  padding: 14px 24px;
  max-width: var(--maxw); margin: 0 auto;
}
.marca{
  display:flex; align-items:center; gap:12px;
  color: var(--hueso-100);
}
.marca__logo{
  height: 45px; width:auto; display:block;
}
@media (max-width:420px){ .marca__logo{ height: 26px; } }

.nav-toggle{
  display:none;
  background:none; border:1px solid var(--linea); border-radius: var(--radio);
  width: 42px; height: 38px;
  position: relative; cursor:pointer;
}
.nav-toggle span,
.nav-toggle span::before,
.nav-toggle span::after{
  content:""; position:absolute; left:9px; right:9px; height:2px; background: var(--hueso-100);
  transition: transform var(--dur) var(--ease), opacity var(--dur) var(--ease);
}
.nav-toggle span{ top:50%; transform: translateY(-50%); }
.nav-toggle span::before{ top:-8px; }
.nav-toggle span::after{ top:8px; }
.nav-toggle[aria-expanded="true"] span{ background: transparent; }
.nav-toggle[aria-expanded="true"] span::before{ transform: rotate(45deg) translate(-1px,-1px); top:0; }
.nav-toggle[aria-expanded="true"] span::after{ transform: rotate(-45deg) translate(-1px,1px); top:0; }

.nav-menu{
  display:flex; align-items:center; gap: 6px;
}
.nav-menu a{
  color: var(--ceniza-300);
  font-family: var(--f-titular);
  font-size: 1.05rem;
  letter-spacing: 0.03em;
  padding: 10px 16px;
  border-radius: var(--radio);
  transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
}
.nav-menu a:hover{ color: var(--hueso-100); background: rgba(255,255,255,0.05); }
.nav-menu a.activo{ color: var(--rojo-500); }
.nav-menu .btn-contacto{
  color: var(--grafito-950);
  background: var(--rojo-500);
  margin-left: 6px;
}
.nav-menu .btn-contacto:hover{ background: var(--rojo-600); color:#fff; }

@media (max-width: 860px){
  .nav-toggle{ display:block; }
  .nav-menu{
    position: absolute; top: 100%; left:0; right:0;
    flex-direction: column; align-items: stretch;
    background: var(--grafito-900);
    border-bottom: 1px solid var(--linea);
    padding: 8px 24px 20px;
    gap: 2px;
    max-height: 0; overflow: hidden;
    transition: max-height var(--dur) var(--ease);
  }
  .nav-menu.abierto{ max-height: 420px; }
  .nav-menu a{ padding: 12px 8px; }
  .nav-menu .btn-contacto{ margin-left:0; margin-top:8px; text-align:center; }
}

/* ================= HERO / SLIDER ================= */
.hero-slider{
  position: relative;
  height: min(92vh, 720px);
  min-height: 480px;
  overflow: hidden;
  background: var(--grafito-950);
}
.hero-slide{
  position:absolute; inset:0;
  opacity:0; visibility:hidden;
  transition: opacity 900ms var(--ease);
}
.hero-slide.activa{ opacity:1; visibility: visible; }
.hero-slide__img{
  position:absolute; inset:0; width:100%; height:100%; object-fit: cover;
  filter: saturate(0.9) contrast(1.05);
}
.hero-slide__veladura{
  position:absolute; inset:0;
  background:
    linear-gradient(90deg, rgba(18,22,28,0.92) 0%, rgba(18,22,28,0.72) 42%, rgba(18,22,28,0.35) 75%),
    linear-gradient(0deg, rgba(18,22,28,0.75) 0%, rgba(18,22,28,0.1) 40%);
}
.hero-slide__contenido{
  position: relative; z-index: 2;
  height:100%;
  display:flex; flex-direction: column; justify-content: center;
  max-width: var(--maxw); margin:0 auto; padding: 0 24px;
  color: var(--hueso-050);
}
.hero-slide__dato{
  font-family: var(--f-titular);
  font-size: 0.85rem; letter-spacing: 0.16em; color: var(--rojo-500);
  margin-bottom: 14px;
}
.hero-slide__titulo{
  max-width: 14ch;
  margin-bottom: 0.3em;
}
.hero-slide__texto{
  max-width: 46ch; color: var(--ceniza-300); font-size: 1.08rem;
}
.hero-slide__acciones{
  display:flex; gap:14px; margin-top: 22px; flex-wrap: wrap;
}

.hero-slider__controles{
  position:absolute; z-index:3; bottom: 26px; left:0; right:0;
  display:flex; align-items:center; justify-content:center; gap: 22px;
}
.hero-slider__flecha{
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.25);
  color: var(--hueso-100);
  width: 42px; height:42px; border-radius: 50%;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer; transition: background var(--dur) var(--ease);
}
.hero-slider__flecha:hover{ background: var(--rojo-500); border-color: var(--rojo-500); color:var(--grafito-950); }
.hero-slider__puntos{ display:flex; gap:9px; }
.hero-slider__punto{
  width: 9px; height:9px; border-radius:50%;
  background: rgba(255,255,255,0.35);
  border:none; cursor:pointer; padding:0;
  transition: background var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.hero-slider__punto.activo{ background: var(--rojo-500); transform: scale(1.25); }

/* Barra de datos técnicos bajo el hero */
.franja-datos{
  background: var(--acero-800);
  border-bottom: 1px solid var(--linea);
}
.franja-datos .contenedor{
  display:grid; grid-template-columns: repeat(4,1fr);
}
.franja-datos__item{
  padding: 22px 20px;
  border-left: 1px solid var(--linea);
  text-align:center;
  color: var(--hueso-100);
}
.franja-datos__item:first-child{ border-left:none; }
.franja-datos__num{
  font-family: var(--f-titular);
  font-size: clamp(1.8rem,3vw,2.4rem);
  color: var(--rojo-500);
  font-weight:700;
}
.franja-datos__lbl{
  font-size: 0.78rem; color: var(--ceniza-300); letter-spacing: 0.04em;
}
@media (max-width: 760px){
  .franja-datos .contenedor{ grid-template-columns: repeat(2,1fr); }
  .franja-datos__item:nth-child(3){ border-left:none; }
}

/* ================= BOTONES ================= */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding: 13px 26px;
  font-family: var(--f-titular);
  font-size: 1.05rem; letter-spacing: 0.03em;
  border-radius: var(--radio);
  border: 1px solid transparent;
  cursor:pointer;
  transition: background var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), transform 220ms var(--ease);
}
.btn:hover{ transform: translateY(-1px); }
.btn-primario{ background: var(--rojo-500); color: var(--grafito-950); }
.btn-primario:hover{ background: var(--rojo-600); }
.btn-fantasma{ border-color: rgba(255,255,255,0.4); color: var(--hueso-100); }
.btn-fantasma:hover{ border-color: var(--hueso-100); background: rgba(255,255,255,0.06); }
.btn-oscuro{ background: var(--grafito-900); color: var(--hueso-100); }
.btn-oscuro:hover{ background: var(--grafito-950); }

/* ================= SECCIONES GENERALES ================= */
section{ padding: 88px 0; }
.seccion-clara{ background: var(--hueso-050); }
.seccion-alt{ background: var(--hueso-100); }
.seccion-oscura{
  background: var(--grafito-900); color: var(--hueso-100);
}
.seccion-oscura p{ color: var(--ceniza-300); }
.seccion-oscura .rotulo{ color: var(--rojo-500); }

.encabezado-seccion{
  max-width: 680px;
  margin-bottom: 48px;
}

/* Encabezado de página interior (empresa/servicios/contacto) */
.pagina-hero{
  background: var(--grafito-900);
  color: var(--hueso-100);
  padding: 64px 0 46px;
  position: relative;
  overflow:hidden;
  border-bottom: 1px solid var(--linea);
}
.pagina-hero::after{
  content:"";
  position:absolute; right:-60px; top:-60px;
  width: 340px; height: 340px;
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 50%;
}
.pagina-hero__migas{
  font-size: 0.85rem; color: var(--ceniza-300); margin-bottom: 18px;
}
.pagina-hero__migas a:hover{ color: var(--rojo-500); }
.pagina-hero h1{ margin-bottom: 10px; }
.pagina-hero p{ color: var(--ceniza-300); font-size: 1.08rem; }

/* ================= GRID DE SERVICIOS (home) ================= */
.grid-servicios{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--linea-osc);
  border: 1px solid var(--linea-osc);
}
.tarjeta-servicio{
  background: var(--hueso-050);
  padding: 34px 30px;
  display:flex; flex-direction:column;
  transition: background var(--dur) var(--ease);
}
.tarjeta-servicio:hover{ background: #fff; }
.tarjeta-servicio__num{
  font-family: var(--f-titular);
  font-size: 0.85rem; letter-spacing: 0.1em; color: var(--rojo-600);
  margin-bottom: 14px;
}
.tarjeta-servicio h3{ margin-bottom: 10px; }
.tarjeta-servicio p{ font-size: 0.96rem; color: var(--acero-600); flex:1; margin-bottom: 16px; }
.tarjeta-servicio__link{
  font-family: var(--f-titular); font-size: 0.98rem; color: var(--grafito-900);
  display:inline-flex; align-items:center; gap:6px;
}
.tarjeta-servicio__link .flecha{ transition: transform var(--dur) var(--ease); }
.tarjeta-servicio:hover .flecha{ transform: translateX(4px); }

@media (max-width: 940px){ .grid-servicios{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 640px){ .grid-servicios{ grid-template-columns: 1fr; } }

/* ================= PRESENTACIÓN / DOS COLUMNAS ================= */
.dos-col{
  display:grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items:center;
}
@media (max-width: 860px){ .dos-col{ grid-template-columns: 1fr; gap: 34px; } }
.dos-col.invertida{ direction: rtl; }
.dos-col.invertida > *{ direction: ltr; }

.imagen-marco{
  position: relative;
  aspect-ratio: 4/3;
  overflow:hidden;
  border-radius: var(--radio);
}
.imagen-marco img{ width:100%; height:100%; object-fit:cover; }
.imagen-marco__cinta{
  position:absolute; left:0; right:0; bottom:0;
  background: rgba(18,22,28,0.82);
  color: var(--hueso-100);
  font-family: var(--f-titular);
  font-size: 0.82rem; letter-spacing: 0.06em;
  padding: 10px 16px;
}

.lista-check{ margin: 18px 0 0; }
.lista-check li{
  display:flex; gap:12px; align-items:flex-start;
  padding: 10px 0; border-top: 1px solid var(--linea-osc);
}
.lista-check li:first-child{ border-top:none; }
.lista-check svg{ flex:none; margin-top:3px; color: var(--rojo-600); }

/* ================= FRANJA DE MARCAS / CERTIFICACIONES ================= */
.franja-marcas{
  background: var(--hueso-100);
  padding: 34px 0;
  border-top: 1px solid var(--linea-osc);
  border-bottom: 1px solid var(--linea-osc);
}
.franja-marcas__lista{
  display:flex; flex-wrap:wrap; gap: 14px 34px; align-items:center; justify-content:center;
  font-family: var(--f-titular);
  color: var(--acero-600);
  letter-spacing: 0.03em;
}

/* ================= TABLA (proveedor aprobado) ================= */
.tabla-wrap{ overflow-x:auto; border: 1px solid var(--linea-osc); border-radius: var(--radio); }
table.tabla-datos{
  width:100%; border-collapse: collapse; min-width: 480px;
  font-size: 0.96rem;
}
table.tabla-datos th, table.tabla-datos td{
  text-align:left; padding: 13px 18px; border-bottom: 1px solid var(--linea-osc);
}
table.tabla-datos th{
  font-family: var(--f-titular); letter-spacing:0.04em; background: var(--hueso-100);
}
table.tabla-datos tr:last-child td{ border-bottom:none; }
table.tabla-datos tr:hover td{ background: rgba(232,149,44,0.06); }

/* ================= INFRAESTRUCTURA (lista técnica) ================= */
.grid-infra{
  display:grid; grid-template-columns: repeat(2,1fr); gap: 0;
  border-top: 1px solid var(--linea-osc);
}
.grid-infra div{
  padding: 16px 4px;
  border-bottom: 1px solid var(--linea-osc);
  display:flex; align-items:baseline; gap:10px;
}
.grid-infra div span.n{
  font-family: var(--f-titular); color: var(--rojo-600); font-size:0.85rem;
}
@media (max-width:640px){ .grid-infra{ grid-template-columns: 1fr; } }

/* ================= LÍNEA DE TIEMPO (historial de proyectos) ================= */
.linea-tiempo{ position: relative; margin-top: 20px; }
.linea-tiempo::before{
  content:""; position:absolute; left: 9px; top:6px; bottom:6px; width:1px;
  background: var(--linea-osc);
}
.evento{
  position:relative; padding: 0 0 40px 40px;
}
.evento:last-child{ padding-bottom:0; }
.evento::before{
  content:""; position:absolute; left:2px; top:4px; width:16px; height:16px;
  border-radius:50%; background: var(--hueso-050); border: 3px solid var(--rojo-500);
}
.evento__fecha{
  font-family: var(--f-titular); color: var(--rojo-600); font-size:0.95rem; letter-spacing:0.04em;
}
.evento__lugar{ font-weight:600; margin: 2px 0 6px; }
.evento p{ font-size: 0.96rem; color: var(--acero-600); }

/* ================= SERVICIOS (página) ================= */
.bloque-servicio{
  display:grid; grid-template-columns: 340px 1fr; gap: 50px;
  padding: 54px 0; border-bottom: 1px solid var(--linea-osc);
}
.bloque-servicio:last-child{ border-bottom:none; }
.bloque-servicio__marco{
  aspect-ratio: 1/1; border-radius: var(--radio); overflow:hidden;
}
.bloque-servicio__marco img{ width:100%; height:100%; object-fit:cover; }
.bloque-servicio__num{
  font-family: var(--f-titular); font-size:1rem; color: var(--rojo-600); letter-spacing:0.08em;
}
.bloque-servicio ul.detalle{
  margin-top:18px; display:grid; grid-template-columns: 1fr 1fr; gap: 6px 26px;
}
.bloque-servicio ul.detalle li{
  font-size: 0.95rem; padding: 7px 0 7px 18px; position:relative; color: var(--acero-600);
}
.bloque-servicio ul.detalle li::before{
  content:""; position:absolute; left:0; top:15px; width:8px; height:2px; background: var(--rojo-500);
}
@media (max-width: 860px){
  .bloque-servicio{ grid-template-columns: 1fr; gap: 24px; }
  .bloque-servicio__marco{ aspect-ratio: 16/9; }
  .bloque-servicio ul.detalle{ grid-template-columns: 1fr; }
}

/* ================= CONTACTO ================= */
.grid-contacto{
  display:grid; grid-template-columns: 1fr 1fr; gap: 64px;
}
@media (max-width: 900px){ .grid-contacto{ grid-template-columns: 1fr; gap: 40px; } }

.tarjeta-contacto{
  display:flex; gap: 16px; padding: 20px 0; border-top: 1px solid var(--linea-osc);
}
.tarjeta-contacto:first-child{ border-top:none; }
.tarjeta-contacto__icono{
  flex:none; width:44px; height:44px; border-radius:50%;
  background: var(--azul-100); color: var(--azul-700);
  display:flex; align-items:center; justify-content:center;
}
.tarjeta-contacto h3{ font-size: 1.1rem; margin-bottom: 4px; }
.tarjeta-contacto a{ color: var(--acero-600); }
.tarjeta-contacto a:hover{ color: var(--rojo-600); }

.campo{ margin-bottom: 18px; }
.campo label{
  display:block; font-family: var(--f-titular); letter-spacing:0.03em; margin-bottom: 6px; font-size: 1.02rem;
}
.campo input, .campo select, .campo textarea{
  width:100%; padding: 12px 14px;
  border: 1px solid var(--acero-700);
  background: var(--hueso-050);
  border-radius: var(--radio);
  font-family: var(--f-cuerpo); font-size: 1rem; color: var(--grafito-900);
  transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);
}
.campo input:focus, .campo select:focus, .campo textarea:focus{
  outline:none; border-color: var(--rojo-500); box-shadow: 0 0 0 3px rgba(232,149,44,0.18);
}
.campo textarea{ resize: vertical; min-height: 130px; }
.campo-fila{ display:grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width:560px){ .campo-fila{ grid-template-columns:1fr; } }
.campo-error{ color:#c0392b; font-size:0.85rem; margin-top:4px; display:none; }
.campo.tiene-error input, .campo.tiene-error textarea{ border-color:#c0392b; }
.campo.tiene-error .campo-error{ display:block; }

/* honeypot oculto */
.campo-trampa{ position:absolute; left:-9999px; top:-9999px; }

.alerta{
  padding: 14px 18px; border-radius: var(--radio); margin-bottom: 22px;
  font-size: 0.96rem;
}
.alerta-exito{ background:#e6f4ea; color:#256b3b; border:1px solid #b6e0c3; }
.alerta-error{ background:#fbeaea; color:#a33636; border:1px solid #f0c4c4; }

.mapa-marco{
  aspect-ratio: 4/3; border-radius: var(--radio); overflow:hidden; border: 1px solid var(--linea-osc);
}
.mapa-marco iframe{ width:100%; height:100%; border:0; }

/* ================= FOOTER ================= */
.site-footer{
  background: var(--grafito-950); color: var(--ceniza-300);
  padding: 56px 0 26px;
  border-top: 3px solid;
  border-image: linear-gradient(90deg, var(--azul-700) 0%, var(--azul-700) 45%, var(--rojo-500) 100%) 1;
}
.footer-grid{
  display:grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 40px;
  padding-bottom: 36px; border-bottom: 1px solid var(--linea);
}
@media (max-width:760px){ .footer-grid{ grid-template-columns: 1fr; gap: 30px; } }
.footer-grid h4{
  color: var(--hueso-100); font-size: 1.05rem; margin-bottom: 14px;
}
.footer-grid ul li{ padding: 5px 0; }
.footer-grid a:hover{ color: var(--rojo-500); }
.footer-marca{ display:flex; gap:12px; align-items:center; margin-bottom: 14px; }
.footer-marca__logo{ height: 45px; width:auto; }
.footer-base{
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;
  padding-top: 22px; font-size: 0.85rem;
}

/* ================= ANIMACIONES AL HACER SCROLL ================= */
[data-reveal]{
  opacity: 0;
  transition: opacity 700ms var(--ease), transform 700ms var(--ease);
}
[data-reveal="subir"]{ transform: translateY(26px); }
[data-reveal="izquierda"]{ transform: translateX(-28px); }
[data-reveal="derecha"]{ transform: translateX(28px); }
[data-reveal="escala"]{ transform: scale(0.94); }
[data-reveal].visible{
  opacity: 1; transform: none;
}
/* stagger para grupos (hijos directos con data-reveal-grupo) */
[data-reveal-grupo] > [data-reveal]{ transition-delay: calc(var(--indice, 0) * 90ms); }

/* Barra de progreso de página (detalle de scroll, no invasivo) */
.barra-progreso{
  position: fixed; top:0; left:0; height:3px; background: var(--rojo-500);
  width:0%; z-index: 90; transition: width 100ms linear;
}

/* ================= CARGADOR ENTRE PÁGINAS ================= */
.cargando-overlay{
  position: fixed; inset: 0; z-index: 999;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap: 18px;
  background:
    radial-gradient(circle at 50% 40%, rgba(229,35,31,0.14), transparent 55%),
    linear-gradient(160deg, var(--grafito-950), var(--grafito-900));
  transform: translateY(0);
  /* Respaldo 100% en CSS: aunque el JS fallara, esta animación oculta el
     cargador sola tras cargar la página, así nunca se queda bloqueando la vista. */
  animation: cargador-entrada 1.05s cubic-bezier(.65,0,.35,1) forwards;
}
@keyframes cargador-entrada{
  0%   { transform: translateY(0);       pointer-events: auto; }
  55%  { transform: translateY(0);       pointer-events: auto; }
  56%  { pointer-events: none; }
  100% { transform: translateY(-100%);   pointer-events: none; }
}
/* El JS usa esta clase para volver a mostrarlo, ya sin animación automática,
   justo antes de navegar a otra página. */
.cargando-overlay.reaparecer{
  animation: none;
  transform: translateY(0);
  transition: transform 380ms var(--ease);
  pointer-events: auto;
}
.cargando-overlay__rotor{
  width: 84px; height: 84px;
  animation: girar-rotor 1.05s linear infinite;
  filter: drop-shadow(0 0 18px rgba(229,35,31,0.45));
}
@keyframes girar-rotor{ to{ transform: rotate(360deg); } }
.cargando-overlay__texto{
  color: var(--hueso-100);
  font-family: var(--f-titular);
  font-size: 0.82rem;
  letter-spacing: 0.22em;
}
.cargando-overlay__barra{
  width: 130px; height: 2px; background: rgba(255,255,255,0.12);
  overflow:hidden; border-radius: 2px;
}
.cargando-overlay__barra::after{
  content:""; display:block; width:40%; height:100%;
  background: linear-gradient(90deg, var(--azul-700), var(--rojo-500));
  animation: avance-barra 900ms ease-in-out infinite;
}
@keyframes avance-barra{
  0%{ transform: translateX(-100%); }
  100%{ transform: translateX(350%); }
}
@media (prefers-reduced-motion: reduce){
  .cargando-overlay{ display:none; }
}

/* ================= BOTÓN SUBIR ARRIBA ================= */
.btn-arriba{
  position: fixed; right: 22px; bottom: 22px; z-index: 70;
  width: 46px; height: 46px; border-radius: 50%;
  background: var(--rojo-500); color: #fff;
  border: none; cursor: pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow: 0 6px 18px rgba(18,22,28,0.35);
  opacity: 0; visibility: hidden; transform: translateY(10px);
  transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), background var(--dur) var(--ease), visibility var(--dur);
}
.btn-arriba.visible{ opacity:1; visibility: visible; transform: translateY(0); }
.btn-arriba:hover{ background: var(--rojo-600); }

/* ================= DOCUMENTO LEGAL (Aviso de Privacidad) ================= */
.documento-legal{ max-width: 780px; }
.documento-legal p{ max-width: none; color: var(--acero-600); }
.documento-legal h2{ font-size: 1.5rem; margin-top: 2em; }
.documento-legal h2:first-child{ margin-top: 0; }
.documento-legal ol,
.documento-legal ul.legal{ padding-left: 22px; margin: 0 0 1.2em; color: var(--acero-600); }
.documento-legal ol li, .documento-legal ul.legal li{ padding: 4px 0; }
.documento-legal .datos-responsable{
  background: var(--hueso-100);
  border-left: 3px solid var(--azul-700);
  padding: 18px 22px;
  border-radius: var(--radio);
  margin: 1.4em 0;
}
.documento-legal .datos-responsable p{ margin-bottom: 0.4em; }
.documento-legal .fecha-actualizacion{
  font-family: var(--f-titular); letter-spacing: 0.04em; color: var(--rojo-600);
  margin-top: 2.2em;
}
