/* ==========================================================================
   KLIBRA · Estilos de la landing
   Depende de klibra.css (sistema de diseño de marca). No lo sustituye.
   Pensado primero para móvil.
   ========================================================================== */

/* ---------- Accesibilidad ---------- */
.skip-link {
  position: absolute; left: var(--s-4); top: -100px; z-index: 200;
  background: var(--k-blanco); color: var(--color-primary);
  padding: .75em 1.25em; border-radius: var(--radius-sm);
  font-family: var(--font-display); font-weight: 600; text-decoration: none;
  box-shadow: var(--shadow); transition: top .2s var(--ease);
}
.skip-link:focus { top: var(--s-4); }

/* ==========================================================================
   Cabecera
   ========================================================================== */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(38,47,56,.94);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(255,255,255,.06);
}
.site-header .container {
  display: flex; align-items: center; justify-content: space-between;
  height: 72px; transition: height .3s var(--ease);
}
.site-header.is-compacta .container { height: 60px; }
.site-header .logo img { height: 34px; width: auto; transition: height .3s var(--ease); }
.site-header.is-compacta .logo img { height: 29px; }

.nav { display: flex; align-items: center; gap: var(--s-6); }
.nav a:not(.btn) {
  color: #C9D1D8; text-decoration: none;
  font-size: .9375rem; font-weight: 500;
  transition: color .2s var(--ease);
}
.nav a:not(.btn):hover { color: #fff; }
.nav .btn { padding: .65em 1.2em; white-space: nowrap; }

.menu-toggle {
  display: block; background: none; border: 0; color: #fff;
  padding: .5rem; margin-right: -.5rem; cursor: pointer; line-height: 0;
}

@media (max-width: 960px) {
  .nav {
    position: absolute; inset: 72px 0 auto 0;
    flex-direction: column; align-items: stretch; gap: 0;
    padding: var(--s-4) var(--gutter) var(--s-6);
    background: var(--k-grafito);
    border-bottom: 1px solid rgba(255,255,255,.08);
    display: none;
  }
  .nav.is-abierto { display: flex; }
  .nav a:not(.btn) {
    padding: .9em 0; font-size: 1.0625rem;
    border-bottom: 1px solid rgba(255,255,255,.07);
  }
  .nav .btn { margin-top: var(--s-5); justify-content: center; }
}
@media (min-width: 961px) {
  .menu-toggle { display: none; }
}

/* El punto del antetítulo se alinea con la primera línea, no con el bloque */
.overline::before { align-self: flex-start; margin-top: .5em; flex: 0 0 auto; }

/* ==========================================================================
   1 · Portada
   ========================================================================== */
.hero {
  position: relative; overflow: hidden;
  background: var(--k-grafito); color: #fff;
  padding-block: clamp(4rem, 3rem + 10vw, 9rem);
}
.hero::after {
  content: ""; position: absolute; inset: -30% -20% auto auto;
  width: 70vw; height: 70vw; max-width: 900px; max-height: 900px;
  background: radial-gradient(closest-side, rgba(21,94,107,.55), transparent);
  pointer-events: none;
}
.hero__mark {
  position: absolute; right: -10%; top: 50%;
  width: min(48vw, 560px); height: auto;
  opacity: .06; pointer-events: none; z-index: 1;
  transform: translateY(-50%);
  will-change: transform;
}
.hero .container { position: relative; z-index: 2; }
.hero h1 { max-width: 22ch; margin-bottom: var(--s-5); }
.hero h1 em { font-style: normal; color: var(--k-agua-claro); }
.hero .overline { color: var(--k-agua-claro); }
.hero__lead { color: #B9C3CC; margin-bottom: var(--s-7); max-width: 54ch; }
.hero__actions { display: flex; flex-wrap: wrap; gap: var(--s-4); }
.hero__firma {
  margin: var(--s-7) 0 0; padding-top: var(--s-5);
  border-top: 1px solid rgba(255,255,255,.1);
  font-size: var(--fs-small); color: var(--k-niebla);
  max-width: 60ch;
}
@media (max-width: 700px) { .hero__mark { display: none; } }
@media (max-width: 420px) { .hero__actions .btn { width: 100%; justify-content: center; } }

/* Revelado de titular por líneas (máscara).
   Las líneas las calcula script.js según el ancho real de la pantalla. */
.reveal-lines .line { display: block; overflow: hidden; }
/* La máscara mide lo mismo que el texto (tildes y descendentes incluidas) y el
   espacio entre líneas se recupera solapando las máscaras, no recortándolas. */
.reveal-lines .line > span { display: block; padding-block: .16em; }
.reveal-lines .line + .line { margin-top: -.32em; }
.reveal-lines .palabra { display: inline-block; }
/* Evita el parpadeo entre el texto plano y el texto ya dividido en líneas */
.js .reveal-lines { opacity: 0; }
.js .reveal-lines.is-dividido { opacity: 1; }

/* RED DE SEGURIDAD
   Si script.js no llegara a cargar o fallara, el contenido se muestra solo
   pasado un segundo y medio. Nunca se queda una sección en blanco.
   En cuanto el JavaScript hace su trabajo, este rescate se desactiva. */
@keyframes k-rescate { to { opacity: 1; transform: none; } }
.js .reveal, .js .reveal-lines { animation: k-rescate 0s 1.5s forwards; }
.js .reveal.is-visible,
.js .reveal-lines.is-dividido,
.js-ok .reveal { animation: none; }

/* ==========================================================================
   2 · El problema
   ========================================================================== */
.problemas { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.problema {
  position: relative;
  font-family: var(--font-display); font-weight: 500;
  font-size: clamp(1.125rem, 1rem + 1.1vw, 1.5rem);
  line-height: 1.4; letter-spacing: var(--tracking-display);
  color: var(--color-text);
  padding: var(--s-5) 0 var(--s-5) var(--s-6);
  border-bottom: 1px solid var(--color-border);
}
.problemas .problema:first-child { border-top: 1px solid var(--color-border); }
/* El punto de la marca */
.problema::before {
  content: ""; position: absolute; left: 0; top: calc(var(--s-5) + .55em);
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--color-accent);
}

/* ==========================================================================
   3 · Servicios
   ========================================================================== */
.section-head { max-width: 680px; margin-bottom: var(--s-8); }

.grid-servicios { display: grid; gap: var(--s-5); grid-template-columns: 1fr; }
@media (min-width: 760px) { .grid-servicios { grid-template-columns: repeat(2, 1fr); gap: var(--s-6); } }

.servicio { display: flex; flex-direction: column; }
.servicio h3 { font-size: var(--fs-h3); margin-bottom: var(--s-3); }
.servicio p { color: var(--color-text-muted); }
.servicio__claim {
  color: var(--color-text) !important;
  font-weight: 500;
}
.servicio__llevas {
  margin-top: auto; padding-top: var(--s-5);
  border-top: 1px solid var(--color-border);
}

/* Tarjeta de servicio destacada (la formación) */
.servicio--destacado {
  background: var(--k-agua-50);
  border-color: transparent;
  box-shadow: inset 3px 0 0 var(--color-accent);
}
.servicio--destacado .card__icon { background: var(--k-blanco); }
.servicio--destacado .servicio__llevas { border-top-color: rgba(21, 94, 107, .18); }
.servicio__etiqueta {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--fs-overline); letter-spacing: var(--tracking-overline);
  text-transform: uppercase; color: var(--color-primary);
  margin: 0 0 var(--s-4);
}
.servicio__llevas h4 {
  font-size: var(--fs-overline); letter-spacing: var(--tracking-overline);
  text-transform: uppercase; color: var(--color-primary);
  margin-bottom: var(--s-2);
}
.servicio__llevas p { margin: 0; font-size: var(--fs-small); }

/* ==========================================================================
   4 · Cómo trabajo
   ========================================================================== */
.pasos {
  position: relative; list-style: none; margin: 0 0 var(--s-9); padding: 0;
  display: grid; gap: var(--s-6); grid-template-columns: 1fr;
}
/* Raíl: "el pilar" de la marca */
.pasos__rail {
  position: absolute; left: 0; top: .4em; bottom: .4em; width: 2px;
  background: rgba(255,255,255,.14);
}
.pasos__progreso {
  display: block; width: 100%; height: 100%;
  background: var(--color-accent);
  transform: scaleY(var(--progreso, 0)); transform-origin: top;
  transition: transform .15s linear;
}
.paso { padding-left: var(--s-6); }
.paso__n {
  font-family: var(--font-display); font-weight: 600;
  color: var(--k-agua-claro); letter-spacing: .18em;
  font-size: var(--fs-small); margin: 0 0 var(--s-2);
}
.paso h3 { font-size: var(--fs-h4); margin-bottom: var(--s-2); }
.paso p { color: var(--k-niebla); margin: 0; }
.paso--clave h3 { color: var(--k-agua-claro); }

@media (min-width: 860px) {
  .pasos { grid-template-columns: repeat(4, 1fr); gap: var(--s-6); padding-top: var(--s-6); }
  .pasos__rail { left: 0; right: 0; top: 0; bottom: auto; width: auto; height: 2px; }
  .pasos__progreso { transform: scaleX(var(--progreso, 0)); transform-origin: left; }
  .paso { padding-left: 0; padding-right: var(--s-4); }
}

/* Bloque diferencial */
.garantia {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.1);
  border-left: 4px solid var(--color-accent);
  border-radius: var(--radius);
  padding: clamp(1.5rem, 1rem + 3vw, 3rem);
  display: grid; gap: var(--s-6);
}
@media (min-width: 900px) { .garantia { grid-template-columns: 1fr 1.15fr; gap: var(--s-8); align-items: start; } }
.garantia__head h3 { font-size: var(--fs-h2); margin-bottom: var(--s-3); }
.garantia__head p { color: var(--k-niebla); margin: 0; }
.garantia__lista { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--s-5); }
.garantia__lista li { display: grid; grid-template-columns: auto 1fr; gap: var(--s-4); align-items: start; }
.garantia__lista svg { color: var(--k-agua-claro); margin-top: .15em; }
.garantia__lista span { color: var(--k-niebla); }
.garantia__lista strong { color: #fff; font-weight: 600; }

/* ==========================================================================
   5 · Casos
   ========================================================================== */
.grid-casos { display: grid; gap: var(--s-5); grid-template-columns: 1fr; }
@media (min-width: 760px) { .grid-casos { grid-template-columns: repeat(2, 1fr); gap: var(--s-6); } }

.caso__sector {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--fs-overline); letter-spacing: var(--tracking-overline);
  text-transform: uppercase; color: var(--color-primary);
  margin-bottom: var(--s-3);
}
.caso h3 { font-size: var(--fs-h4); margin-bottom: var(--s-4); }
.caso p:not(.caso__sector):not(.caso__dato) { color: var(--color-text-muted); margin: 0; }
.caso--cifra { background: var(--k-agua-50); border-color: transparent; }

.caso__dato {
  display: flex; align-items: center; flex-wrap: wrap; gap: var(--s-4);
  margin: 0 0 var(--s-4); padding-bottom: var(--s-4);
  border-bottom: 1px solid rgba(21,94,107,.18);
}
.caso__antes {
  font-family: var(--font-display); font-size: var(--fs-small);
  color: var(--color-text-muted); text-decoration: line-through;
  text-decoration-thickness: 1px;
}
.caso__flecha { color: var(--color-accent); line-height: 0; }
.caso__flecha .chev { width: .8em; height: .8em; }
.caso__cifra { display: flex; align-items: baseline; gap: .35em; }
.caso__cifra .js-contador {
  font-family: var(--font-display); font-weight: 700;
  font-size: clamp(2.5rem, 2rem + 3vw, 3.75rem);
  line-height: 1; color: var(--color-primary);
  font-variant-numeric: tabular-nums;
}
.caso__unidad {
  font-family: var(--font-display); font-weight: 600;
  font-size: var(--fs-h4); color: var(--color-primary);
}

/* ==========================================================================
   6 · Sobre mí
   ========================================================================== */
.sobre-mi { display: grid; gap: var(--s-7); grid-template-columns: 1fr; align-items: start; }
@media (min-width: 860px) { .sobre-mi { grid-template-columns: 420px 1fr; gap: var(--s-9); } }

.sobre-mi__foto img {
  width: 100%; height: auto; border-radius: var(--radius);
  background: var(--k-linea);
}
.sobre-mi__foto { position: relative; }
/* Barra de acento: el pilar */
.sobre-mi__foto::before {
  content: ""; position: absolute; left: -10px; top: var(--s-6); bottom: var(--s-6);
  width: 4px; background: var(--color-accent); border-radius: 2px;
}
@media (max-width: 859px) { .sobre-mi__foto { max-width: 340px; } .sobre-mi__foto::before { left: -8px; } }

.sobre-mi__texto p { color: var(--color-text-muted); }
.sobre-mi__texto .lead { color: var(--color-text); font-weight: 500; }

.credenciales {
  list-style: none; margin: var(--s-6) 0; padding: 0;
  display: grid; gap: var(--s-3);
}
.credenciales li {
  position: relative; padding-left: var(--s-5);
  font-size: var(--fs-small); color: var(--color-text);
}
.credenciales li::before {
  content: ""; position: absolute; left: 0; top: .55em;
  width: 8px; height: 8px; border-radius: 50%; background: var(--color-accent);
}

.enlace-flecha {
  display: inline-flex; align-items: center; gap: .5em;
  font-family: var(--font-display); font-weight: 600;
  text-decoration: none; font-size: .9375rem;
}
.enlace-flecha:hover { text-decoration: underline; }
.enlace-flecha .chev { width: .65em; height: .65em; transition: transform .2s var(--ease); }
.enlace-flecha:hover .chev { transform: translateX(3px); }

/* Marcador de dato pendiente */
.pendiente {
  background: #FFF3CD; color: #6B4E00;
  padding: .15em .5em; border-radius: var(--radius-sm);
  font-size: .9em; font-weight: 600;
}

/* ==========================================================================
   7 · Contacto
   ========================================================================== */
.contacto { max-width: 760px; }
.contacto h2 { margin-bottom: var(--s-4); }
.contacto__accion { margin: var(--s-7) 0 var(--s-4); }
.btn--grande { font-size: 1.0625rem; padding: 1.1em 2em; }
@media (max-width: 420px) { .btn--grande { width: 100%; justify-content: center; } }

.aviso-pendiente {
  font-size: var(--fs-small); color: var(--color-text-muted);
  background: var(--k-nube); border: 1px dashed var(--color-border);
  border-radius: var(--radius-sm); padding: var(--s-4);
  max-width: 62ch;
}
.aviso-pendiente code {
  font-size: .95em; background: #fff; padding: .1em .4em;
  border: 1px solid var(--color-border); border-radius: 3px;
}

.contacto__datos {
  list-style: none; margin: var(--s-7) 0 0; padding: var(--s-6) 0 0;
  border-top: 1px solid var(--color-border);
  display: grid; gap: var(--s-4);
}
.contacto__datos li { display: grid; grid-template-columns: auto 1fr; gap: var(--s-4); align-items: center; }
.contacto__datos svg { color: var(--color-accent); }
.contacto__datos a { text-decoration: none; font-weight: 500; }
.contacto__datos a:hover { text-decoration: underline; }

/* ==========================================================================
   8 · Pie
   ========================================================================== */
.site-footer {
  background: var(--k-noche); color: var(--k-niebla);
  padding-block: var(--s-8) var(--s-6); font-size: var(--fs-small);
}
.site-footer a { color: #C9D1D8; text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; }
.footer-logo { height: 40px; width: auto; margin-bottom: var(--s-5); }
.footer-grid {
  display: grid; gap: var(--s-7); grid-template-columns: 1fr;
  padding-bottom: var(--s-7); border-bottom: 1px solid rgba(255,255,255,.08);
}
@media (min-width: 760px) { .footer-grid { grid-template-columns: 2fr 1fr 1fr; gap: var(--s-6); } }
.footer-grid p { max-width: 34ch; margin: 0; }
.footer-grid h2 {
  color: #fff; font-size: var(--fs-overline);
  letter-spacing: var(--tracking-overline); text-transform: uppercase;
  margin-bottom: var(--s-4);
}
.footer-grid ul { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--s-2); }
.footer-legal {
  padding-top: var(--s-5); display: flex; flex-wrap: wrap;
  justify-content: space-between; gap: var(--s-3);
}
.footer-legal__enlaces { line-height: 2; }

/* ==========================================================================
   Banner de cookies
   ========================================================================== */
.cookies {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 100;
  padding: var(--gutter);
}
.cookies[hidden] { display: none; }
.cookies__caja {
  max-width: 560px; margin-inline: auto;
  background: var(--k-blanco); color: var(--color-text);
  border: 1px solid var(--color-border); border-radius: var(--radius);
  box-shadow: var(--shadow-lg); padding: var(--s-5);
}
.cookies__caja h2 { font-size: var(--fs-h4); margin-bottom: var(--s-2); }
.cookies__caja p { font-size: var(--fs-small); color: var(--color-text-muted); margin-bottom: var(--s-5); }
.cookies__botones { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-3); }
.cookies__botones .btn { flex: 1 1 auto; justify-content: center; padding: .75em 1.25em; }
.cookies__enlace { font-size: var(--fs-small); flex: 1 1 100%; text-align: center; }
@media (min-width: 560px) {
  .cookies__botones .btn { flex: 0 0 auto; }
  .cookies__enlace { flex: 0 0 auto; margin-left: auto; text-align: right; }
}

/* ==========================================================================
   Animaciones de entrada (solo si hay JS y el usuario no pide menos movimiento)
   ========================================================================== */
@media (prefers-reduced-motion: no-preference) {
  .js .reveal {
    opacity: 0; transform: translateY(18px);
    transition: opacity .7s var(--ease), transform .7s var(--ease);
    transition-delay: var(--retraso, 0ms);
  }
  .js .reveal.is-visible { opacity: 1; transform: none; }

  .js .reveal-lines .line > span {
    transform: translateY(105%);
    transition: transform .9s var(--ease);
    transition-delay: var(--retraso, 0ms);
  }
  .js .reveal-lines.is-visible .line > span { transform: none; }
}

/* Si el usuario pide menos movimiento, todo aparece sin animación */
@media (prefers-reduced-motion: reduce) {
  .pasos__progreso { transition: none; }
  .hero__mark { transform: translateY(-50%) !important; }
}

/* ---------- Impresión ---------- */
@media print {
  .site-header, .cookies, .hero__mark, .menu-toggle { display: none !important; }
  .hero { background: #fff !important; color: #000 !important; }
  .js .reveal, .js .reveal-lines, .js .reveal-lines .line > span { opacity: 1 !important; transform: none !important; }
}

/* ==========================================================================
   Páginas legales (aviso legal, privacidad, cookies)
   ========================================================================== */
.legal-hero {
  background: var(--k-grafito); color: #fff;
  padding-block: clamp(3rem, 2rem + 6vw, 6rem);
}
.legal-hero h1 { max-width: 20ch; margin-bottom: var(--s-3); }
.legal-hero p { color: var(--k-niebla); margin: 0; font-size: var(--fs-small); }

.legal { max-width: 760px; }
.legal h2 {
  font-size: var(--fs-h3); margin-top: var(--s-8); margin-bottom: var(--s-4);
  padding-top: var(--s-5); border-top: 1px solid var(--color-border);
}
.legal h2:first-of-type { margin-top: 0; padding-top: 0; border-top: 0; }
.legal h3 { font-size: var(--fs-h4); margin-top: var(--s-6); }
.legal p, .legal li { color: var(--color-text-muted); }
.legal ul, .legal ol { padding-left: 1.25rem; display: grid; gap: var(--s-2); margin-bottom: var(--s-4); }
.legal strong { color: var(--color-text); }

.datos-identificativos {
  list-style: none; padding: var(--s-5); margin: 0 0 var(--s-5);
  background: var(--k-nube); border-left: 4px solid var(--color-accent);
  border-radius: var(--radius-sm); display: grid; gap: var(--s-2);
}
.datos-identificativos li { color: var(--color-text); }

.tabla-cookies { width: 100%; border-collapse: collapse; margin-bottom: var(--s-5); font-size: var(--fs-small); }
.tabla-cookies th, .tabla-cookies td {
  text-align: left; padding: var(--s-3); border-bottom: 1px solid var(--color-border);
  vertical-align: top;
}
.tabla-cookies th { font-family: var(--font-display); color: var(--color-text); font-weight: 600; }
.tabla-cookies td { color: var(--color-text-muted); }
.tabla-envoltorio { overflow-x: auto; }

.volver { margin-top: var(--s-8); }

/* Texto solo para lectores de pantalla */
.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

/* Navegación reducida de las páginas legales: siempre visible, también en móvil */
@media (max-width: 960px) {
  .nav--simple {
    position: static; flex-direction: row; align-items: center;
    gap: var(--s-4); padding: 0; background: none; border: 0; display: flex;
  }
  .nav--simple a:not(.btn) { padding: 0; border: 0; font-size: .9375rem; }
  .nav--simple .btn { margin-top: 0; }
}
@media (max-width: 520px) {
  .nav--simple a:not(.btn) { display: none; }
}
