/* =====================================================================
   base.css — Sistema de diseño 4HOME (Fase 0)
   Tokens + paletas por sección + componentes compartidos.
   Regla de oro: los colores SOLO salen de estos tokens (var(--accent), etc.).
   El azul de marca (--brand) se extrajo del logo real (images/logo.webp) = #0080D0.
   Los acentos están ajustados para cumplir contraste WCAG AA.
   ===================================================================== */

/* ---------- 0. Fuentes self-hosted (subset latino, variables) ---------- */
@font-face{
  font-family:'Bricolage Grotesque';
  font-style:normal;
  font-weight:600 800;
  font-display:swap;
  src:url('/fonts/bricolage-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2018-201A,U+201C-201E,U+2022,U+2039-203A,U+20AC,U+2212;
}
@font-face{
  font-family:'Public Sans';
  font-style:normal;
  font-weight:400 700;
  font-display:swap;
  src:url('/fonts/publicsans-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2018-201A,U+201C-201E,U+2022,U+2039-203A,U+20AC,U+2212;
}

/* ---------- 1. Tokens ---------- */
:root{
  /* Tipografía */
  --font-display:'Bricolage Grotesque', system-ui, sans-serif;
  --font-body:'Public Sans', 'Inter', system-ui, sans-serif;

  /* Neutros compartidos (IGUALES en todo el sitio) */
  --ink:#12181F;         /* texto principal */
  --muted:#5B6673;       /* texto secundario */
  --surface:#FFFFFF;     /* fondo base */
  --surface-2:#F5F7FA;   /* secciones alternas */
  --line:#E3E8EE;        /* bordes / hairlines */
  --ok:#1A7F37;
  --err:#B3261E;

  /* Color de MARCA exacto (logo). Solo identidad / fills decorativos grandes
     (cumple AA-large 3:1; no usar como fondo de texto pequeño). */
  --brand:#0080D0;

  /* ENERGÍA — amarillo de marca (guantes/uniforme). Vibra el sitio.
     SIEMPRE con texto oscuro (--on-energy). Nunca texto blanco sobre amarillo. */
  --energy:#FFD400;
  --energy-2:#FFC400;
  --on-energy:#12181F;

  /* Secciones oscuras (navy). Texto blanco + acentos amarillo/vivid encima. */
  --dark:#0A1F44;
  --on-dark:#FFFFFF;
  /* Tinte del banner por sección (triplete RGB para rgb(var(--hero-c)/alfa)).
     Versión profunda y saturada del matiz de cada sección → cada banner se ve distinto. */
  --hero-c:8 27 66;   /* Home: azul profundo de marca */

  /* Espaciado */
  --sp-1:.25rem; --sp-2:.5rem; --sp-3:.75rem; --sp-4:1rem; --sp-6:1.5rem;
  --sp-8:2rem; --sp-12:3rem; --sp-16:4rem; --sp-24:6rem;

  /* Radios y sombras */
  --r-sm:8px; --r-md:14px; --r-lg:22px; --r-full:999px;
  --shadow-sm:0 1px 2px rgba(18,24,31,.06);
  --shadow-md:0 8px 24px rgba(18,24,31,.10);
  --shadow-lg:0 18px 48px rgba(18,24,31,.14);

  /* Anchos */
  --maxw:1160px;

  /* Acento por defecto = Home (azul de marca AA-safe). Se sobreescribe por [data-section]. */
  --accent:#0873B7;
  --accent-strong:#005E9E;
  --accent-soft:#E3F1FB;
  --accent-contrast:#FFFFFF;   /* texto sobre el acento */
  --accent-vivid:#0EA5E9;      /* versión neón para decoración (blobs, bordes, highlights); NO para texto */
}

/* Paletas por sección — mismo ADN, distinto matiz. Se activan con <body data-section="…">.
   Cada --accent pasa AA con --accent-contrast; cada --accent-strong pasa AA como texto sobre blanco. */
[data-section="conjuntos"]{ --accent:#0B8457; --accent-strong:#076B46; --accent-soft:#E4F6EE; --accent-contrast:#FFFFFF; --accent-vivid:#12D08A; --hero-c:5 54 37; } /* verde esmeralda vibrante */
[data-section="edificios"]{ --accent:#F2B300; --accent-strong:#8A6300; --accent-soft:#FCF3D5; --accent-contrast:#12181F; --accent-vivid:#FFCE1F; --hero-c:44 32 4; } /* amarillo dorado: texto oscuro */
[data-section="empresas"] { --accent:#7C3AED; --accent-strong:#6D28D9; --accent-soft:#F1EBFE; --accent-contrast:#FFFFFF; --accent-vivid:#A780FF; --hero-c:26 12 60; } /* morado violeta vibrante */
[data-section="empleos"]  { --accent:#FB5607; --accent-strong:#C2410C; --accent-soft:#FEE7DA; --accent-contrast:#12181F; --accent-vivid:#FF7A2E; --hero-c:42 18 6; } /* naranja vivo: texto oscuro */
[data-section="4train"]   { --accent:#6D4AA6; --accent-strong:#533682; --accent-soft:#F0EAF8; --accent-contrast:#FFFFFF; --accent-vivid:#9B6BF0; --hero-c:30 17 56; }
[data-section="tienda"]   { --accent:#0055CC; --accent-strong:#003B8E; --accent-soft:#E3EFFF; --accent-contrast:#FFFFFF; --accent-vivid:#0070FF; --hero-c:0 31 77; } /* azul Blue Clean */

/* ---------- 2. Reset mínimo ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:92px;}
@media (max-width:600px){ html{scroll-padding-top:78px;} }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--ink);
  background:var(--surface);
  line-height:1.6;
  font-size:1rem;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,svg,video{max-width:100%;height:auto;display:block;}
a{color:var(--accent-strong);text-decoration:none;}
a:hover{text-decoration:underline;}
button{font-family:inherit;}
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.12;color:var(--ink);margin:0 0 var(--sp-4);font-weight:700;letter-spacing:-.01em;}
h1{font-size:clamp(2.1rem,6vw,3.6rem);}
h2{font-size:clamp(1.6rem,4vw,2.5rem);}
h3{font-size:clamp(1.2rem,2.5vw,1.5rem);}
p{margin:0 0 var(--sp-4);}
ul{margin:0 0 var(--sp-4);padding-left:1.2em;}

/* Accesibilidad: foco visible y skip-link */
:focus-visible{outline:3px solid var(--accent-strong);outline-offset:2px;border-radius:4px;}
/* Sobre fondos oscuros el foco va en blanco (alto contraste; algunos acentos no llegan a 3:1 sobre navy) */
.hero--photo :focus-visible,.section--dark :focus-visible,.cta-band--dark :focus-visible{outline-color:var(--on-dark);}
.skip-link{position:absolute;left:-9999px;top:0;background:var(--accent);color:var(--accent-contrast);
  padding:var(--sp-2) var(--sp-4);z-index:1000;border-radius:0 0 var(--r-sm) 0;}
.skip-link:focus{left:0;text-decoration:none;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0;}

/* ---------- 3. Layout ---------- */
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--sp-4);}
.section{padding-block:var(--sp-16);}
.section--alt{background:var(--surface-2);}
.stack>*+*{margin-top:var(--sp-4);}
.center{text-align:center;}
.eyebrow{display:inline-flex;align-items:center;gap:.55em;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  font-size:.8rem;color:var(--accent-strong);margin-bottom:var(--sp-3);}
.eyebrow::before{content:"";width:1.6em;height:.32em;border-radius:var(--r-full);
  background:var(--energy);flex:none;}

/* ---------- 4. Botones ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-weight:700;font-size:1rem;line-height:1;padding:.85em 1.4em;border-radius:var(--r-full);
  border:2px solid transparent;cursor:pointer;transition:transform .14s ease,background .18s ease,box-shadow .18s ease,border-color .18s ease;
  text-decoration:none;white-space:nowrap;}
.btn:hover{text-decoration:none;transform:translateY(-2px);}
.btn:active{transform:translateY(0);}
.btn-primary{background:var(--accent);color:var(--accent-contrast);box-shadow:var(--shadow-sm);}
.btn-primary:hover{background:var(--accent-strong);color:var(--accent-contrast);box-shadow:var(--shadow-md);}
.btn-ghost{background:transparent;color:var(--accent-strong);border-color:var(--line);}
.btn-ghost:hover{border-color:var(--accent);background:var(--accent-soft);}
/* Botón ENERGÍA — amarillo de marca, texto oscuro. CTA de alto impacto (regla AA: nunca texto blanco). */
.btn-energy{background:var(--energy);color:var(--on-energy);box-shadow:var(--shadow-sm);}
.btn-energy:hover{background:var(--energy-2);color:var(--on-energy);box-shadow:0 10px 26px rgba(255,196,0,.38);}
/* Cotizar — CTA de conversión. Amarillo energía CONSTANTE en toda sección: siempre resalta. */
.btn-cotiza{background:var(--energy);color:var(--on-energy);font-weight:800;box-shadow:0 6px 20px rgba(255,196,0,.45);}
.btn-cotiza:hover{background:var(--energy-2);color:var(--on-energy);box-shadow:0 12px 30px rgba(255,196,0,.6);transform:translateY(-2px);}
.btn-lg{padding:1.05em 1.8em;font-size:1.08rem;}
.btn-block{width:100%;}

/* ---------- 5. Header / nav sticky ---------- */
.site-header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);
  backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line);
  box-shadow:0 1px 0 rgba(18,24,31,.02);}
/* Filo de energía superior (identidad amarilla, decorativo) */
.site-header::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--energy),var(--energy-2));}
.nav{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
  max-width:var(--maxw);margin-inline:auto;padding:var(--sp-3) var(--sp-4);}
.nav__brand{display:flex;align-items:center;gap:.5em;flex-shrink:0;}
.nav__brand img{height:54px;width:auto;}
@media (max-width:600px){ .nav__brand img{height:46px;} }
.nav__links{display:flex;align-items:center;gap:var(--sp-2);list-style:none;margin:0;padding:0;}
.nav__links a{color:var(--ink);font-weight:600;padding:.5em .7em;border-radius:var(--r-sm);font-size:.98rem;}
.nav__links a:hover{color:var(--accent-strong);background:var(--accent-soft);text-decoration:none;}
.nav__links a[aria-current="page"]{color:var(--accent-strong);}
/* Sub-etiqueta inline ("Tienda empleados") en una sola línea → centrado vertical igual que los demás ítems */
.nav__links a .nav__sub{font-size:.72em;font-weight:600;opacity:.6;}
.nav__cta{margin-left:var(--sp-2);}
.nav__mobile{display:flex;align-items:center;gap:var(--sp-1);}
.nav__toggle{display:none;background:none;border:0;cursor:pointer;padding:.4em;border-radius:var(--r-sm);}
.nav__toggle svg{width:28px;height:28px;stroke:var(--ink);}
/* CTA de WhatsApp visible en el header móvil (persistente sin abrir el menú) */
.nav__wa{display:none;width:40px;height:40px;border-radius:var(--r-full);background:#25D366;
  align-items:center;justify-content:center;flex:none;}
.nav__wa svg{width:22px;height:22px;fill:#fff;}
.nav__wa:hover{text-decoration:none;filter:brightness(.95);}

/* Móvil: menú colapsable */
@media (max-width:900px){
  .nav__toggle{display:inline-flex;}
  .nav__wa{display:inline-flex;}
  /* Anclado al header (position:sticky crea el contexto), sin valor mágico de top. */
  .nav__menu{position:absolute;top:100%;left:0;right:0;background:var(--surface);
    border-bottom:1px solid var(--line);box-shadow:var(--shadow-md);
    max-height:0;overflow:hidden;visibility:hidden;
    transition:max-height .28s ease, visibility 0s linear .28s;}
  .nav__menu[data-open="true"]{max-height:80vh;visibility:visible;transition:max-height .28s ease, visibility 0s;}
  .nav__links{flex-direction:column;align-items:stretch;padding:var(--sp-4);gap:var(--sp-1);}
  .nav__links a{padding:.8em 1em;font-size:1.05rem;}
  .nav__cta{margin:var(--sp-2) 0 0;}
  .nav__cta .btn{width:100%;}
}

/* ---------- 6. Hero ---------- */
.hero{position:relative;padding-block:var(--sp-24) var(--sp-16);overflow:hidden;}
.hero__blob{position:absolute;z-index:0;inset:auto auto -20% -10%;width:min(60vw,620px);aspect-ratio:1;
  background:var(--accent-soft);border-radius:42% 58% 60% 40%/55% 45% 55% 45%;filter:blur(2px);}
/* Segundo blob decorativo vibrante (solo color, sin texto encima) */
.hero__blob::after{content:"";position:absolute;inset:14% auto auto 40%;width:42%;aspect-ratio:1;
  background:var(--accent-vivid);opacity:.14;border-radius:58% 42% 45% 55%/50% 55% 45% 50%;filter:blur(4px);}
/* Punto de energía (amarillo) suelto detrás del titular. Solo en el hero de marca
   (una columna); en heros split hay foto/formulario a la derecha y estorbaría. */
.hero:not(.hero--split):not(.hero--photo)::before{content:"";position:absolute;z-index:0;top:10%;right:8%;width:min(20vw,140px);aspect-ratio:1;
  background:radial-gradient(circle at 50% 50%,var(--energy) 0 40%,transparent 62%);opacity:.45;
  border-radius:50%;pointer-events:none;}
.hero__inner{position:relative;z-index:1;max-width:720px;}
.hero h1{margin-bottom:var(--sp-4);}
.hero__lead{font-size:clamp(1.05rem,2.2vw,1.3rem);color:var(--muted);margin-bottom:var(--sp-6);}
.hero__actions{display:flex;flex-wrap:wrap;gap:var(--sp-3);}

/* ---------- Hero con FOTO a pantalla completa (banner cohesivo) ----------
   La foto va de fondo; encima un degradado navy de marca (lado izquierdo oscuro
   para el texto) para que se lea como UNA sola pieza. La foto se fija por página con
   style="--hero-img:url('/assets/img/hero-xxx.webp')". */
.hero--photo{min-height:clamp(460px,72vh,620px);display:flex;align-items:center;
  color:var(--on-dark);background:var(--dark);padding-block:var(--sp-16);isolation:isolate;overflow:hidden;}
/* Foto del hero como <img> real (LCP): el navegador la prioriza con fetchpriority=high.
   Anclada en 28% para no cortar cabezas al recortar en pantallas anchas. */
.hero--photo .hero__bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:var(--hero-pos,center 28%);z-index:-2;}
/* Degradado con el COLOR de la sección (rgb var(--hero-c)); lado izquierdo fuerte para el texto. */
.hero--photo::after{content:"";position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(95deg, rgb(var(--hero-c)/.95) 0%, rgb(var(--hero-c)/.88) 30%, rgb(var(--hero-c)/.58) 60%, rgb(var(--hero-c)/.16) 100%),
    linear-gradient(0deg, rgb(var(--hero-c)/.5), rgb(var(--hero-c)/0) 48%);}
.hero--photo .container{width:100%;}
.hero--photo .hero__inner{position:relative;max-width:600px;margin:0;text-align:left;}
.hero--photo h1,.hero--photo .hero__lead{color:var(--on-dark);}
.hero--photo .hero__lead{color:rgba(255,255,255,.9);}
.hero--photo .eyebrow{color:var(--energy);}
.hero--photo .eyebrow::before{background:var(--energy);}
.hero--photo .hl{background:var(--energy);color:var(--on-energy);padding:.04em .2em;border-radius:.16em;
  -webkit-box-decoration-break:clone;box-decoration-break:clone;}
.hero--photo .hl::before{display:none;}
.hero--photo .chip{background:rgba(255,255,255,.12);color:var(--on-dark);border-color:rgba(255,255,255,.2);}
.hero--photo .chip::before{background:var(--energy);}
.hero--photo .btn-ghost{border-color:rgba(255,255,255,.55);color:var(--on-dark);}
.hero--photo .btn-ghost:hover{border-color:var(--energy);background:rgba(255,255,255,.1);color:var(--on-dark);}

/* ---------- 7. Cards ---------- */
.grid{display:grid;gap:var(--sp-6);}
.grid--3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:var(--sp-6);box-shadow:var(--shadow-sm);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;}
.card--accent{border-top:4px solid var(--accent);}
.card h3{margin-bottom:var(--sp-2);}
/* Cards enlazadas (selector de segmento, "por qué"): elevación al hover */
a.card:hover,.card--link:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);
  border-color:var(--accent);text-decoration:none;}
a.card:hover .card__more{gap:.9em;color:var(--accent-strong);}
.card__more{display:inline-flex;align-items:center;gap:.4em;font-weight:700;color:var(--accent-strong);
  margin-top:var(--sp-4);transition:gap .18s ease,color .18s ease;}

/* ---------- 8. Formularios ---------- */
.field{margin-bottom:var(--sp-4);}
.field label{display:block;font-weight:600;margin-bottom:var(--sp-2);font-size:.95rem;}
.field input,.field select,.field textarea{width:100%;padding:.8em 1em;font:inherit;color:var(--ink);
  background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-md);transition:border-color .15s ease;}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-strong);outline:none;
  box-shadow:0 0 0 3px var(--accent-soft);}
.form-msg{margin-top:var(--sp-3);font-weight:600;}
.form-msg.ok{color:var(--ok);}
.form-msg.err{color:var(--err);}
/* Honeypot: oculto para humanos */
.hp-field{position:absolute;left:-9999px;height:0;width:0;overflow:hidden;}

/* ---------- 9. Bloque Blue Clean (venta cruzada) ---------- */
.blueclean{position:relative;background:var(--accent-soft);border-radius:var(--r-lg);padding:var(--sp-12) var(--sp-8);
  display:grid;gap:var(--sp-6);grid-template-columns:1fr;align-items:center;overflow:hidden;}
/* Forma orgánica vibrante decorativa (sin texto encima) */
.blueclean::before{content:"";position:absolute;z-index:0;inset:auto -8% -40% auto;width:min(46%,360px);aspect-ratio:1;
  background:var(--accent-vivid);opacity:.12;border-radius:48% 52% 55% 45%/52% 48% 52% 48%;pointer-events:none;}
.blueclean>*{position:relative;z-index:1;}
.blueclean__title{color:var(--accent-strong);}
.blueclean__items{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-3);}
.bc-prod{display:flex;flex-direction:column;gap:var(--sp-2);text-decoration:none;color:var(--ink);
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-3);
  transition:transform .14s ease,box-shadow .18s ease;}
.bc-prod:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);text-decoration:none;}
.bc-prod img,.bc-prod .img-slot{border-radius:var(--r-sm);}
.bc-prod span{font-size:.8rem;font-weight:700;color:var(--accent-strong);text-align:center;}
@media (min-width:760px){.blueclean{grid-template-columns:1.2fr 1fr;}}

/* ---------- 10. Footer ---------- */
.site-footer{background:var(--ink);color:#C7D0DA;padding-block:var(--sp-16) var(--sp-8);margin-top:var(--sp-16);}
.site-footer a{color:#EAF0F6;}
.footer__grid{display:grid;gap:var(--sp-8);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.footer__brand img{height:44px;margin-bottom:var(--sp-4);}
.footer__col h4{color:#FFF;font-size:1rem;margin-bottom:var(--sp-4);padding-bottom:var(--sp-2);
  position:relative;display:inline-block;}
.footer__col h4::after{content:"";position:absolute;left:0;bottom:0;width:2em;height:3px;
  border-radius:var(--r-full);background:var(--energy);}
.footer__col ul{list-style:none;padding:0;margin:0;}
.footer__col li{margin-bottom:var(--sp-2);}
.site-footer a{transition:color .15s ease;}
.site-footer .footer__col a:hover{color:var(--energy);text-decoration:none;}
.footer__legal{border-top:1px solid rgba(255,255,255,.12);margin-top:var(--sp-8);padding-top:var(--sp-6);
  font-size:.88rem;color:#9AA6B2;display:flex;flex-wrap:wrap;gap:var(--sp-4);justify-content:space-between;}

/* ---------- 11. WhatsApp flotante ---------- */
.wa-float{position:fixed;right:16px;bottom:16px;z-index:90;width:56px;height:56px;border-radius:var(--r-full);
  background:#25D366;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);}
.wa-float svg{width:32px;height:32px;fill:#fff;}
.wa-float:hover{text-decoration:none;transform:scale(1.05);}

/* ---------- 11b. Prose (texto legal / artículos) ---------- */
.prose{max-width:72ch;}
.prose h2{margin-top:var(--sp-8);}
.prose h3{margin-top:var(--sp-6);}
.prose p,.prose li{color:var(--ink);}
.prose ul{padding-left:1.4em;}
.prose li{margin-bottom:var(--sp-2);}
.prose a{color:var(--accent-strong);text-decoration:underline;}
.prose .updated{color:var(--muted);font-size:.9rem;}

/* ---------- 12. Placeholder marcado (contenido que aporta JP) ---------- */
.placeholder{outline:2px dashed var(--accent);background:var(--accent-soft);
  padding:var(--sp-4);border-radius:var(--r-md);font-size:.9rem;color:var(--accent-strong);}
.placeholder::before{content:"⚠ PENDIENTE JP: ";font-weight:700;}

/* ===================================================================
   COMPONENTES DE LANDING (Fase 3)
   =================================================================== */

/* Encabezado de sección */
.section__head{max-width:60ch;margin-bottom:var(--sp-8);}
.section__head.center{margin-inline:auto;}

/* Hero a dos columnas (landings) */
.hero--split .hero__inner{max-width:none;}
.hero__grid{display:grid;gap:var(--sp-8);align-items:center;grid-template-columns:1fr;}
.hero__media{position:relative;}
.hero__media img{width:100%;border-radius:var(--r-lg);box-shadow:var(--shadow-lg);object-fit:cover;position:relative;z-index:1;}
/* Marco vibrante detrás de la foto del hero (decorativo) */
.hero__media::before{content:"";position:absolute;z-index:0;inset:auto -14px -14px auto;width:60%;height:70%;
  border:3px solid var(--accent-vivid);border-radius:var(--r-lg);opacity:.5;pointer-events:none;}
.hero__media::after{content:"";position:absolute;z-index:0;top:-16px;left:-14px;width:74px;height:74px;
  background:radial-gradient(circle,var(--energy) 0 46%,transparent 62%);opacity:.55;pointer-events:none;}
@media (min-width:860px){ .hero__grid{grid-template-columns:1.05fr .95fr;} }

/* Cifras / stats */
.stats{display:grid;gap:var(--sp-6);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));}
.stat{text-align:center;}
.stat__num{font-family:var(--font-display);font-weight:800;font-size:clamp(2.6rem,7vw,3.8rem);
  color:var(--accent-strong);line-height:1;letter-spacing:-.02em;}
.stat__label{color:var(--muted);font-weight:600;margin-top:var(--sp-3);}
/* Stats sobre fondo oscuro (navy): números en amarillo energía, etiqueta clara */
.section--dark .stat__num{color:var(--energy);}
.section--dark .stat__label{color:rgba(255,255,255,.82);}

/* Marquee de servicios (movimiento sutil; se detiene con reduce-motion) */
.marquee{overflow:hidden;background:var(--dark);color:var(--on-dark);padding-block:var(--sp-4);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);}
.marquee__track{display:inline-flex;gap:var(--sp-8);white-space:nowrap;will-change:transform;
  animation:marquee 30s linear infinite;}
.marquee__track span{font-family:var(--font-display);font-weight:700;font-size:1.2rem;color:var(--on-dark);
  display:inline-flex;align-items:center;gap:var(--sp-8);}
.marquee__track span::after{content:"";width:.5em;height:.5em;border-radius:50%;background:var(--energy);flex:none;}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Dolores / puntos de dolor -> solución */
.dolores{display:grid;gap:var(--sp-6);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.dolor{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--accent);
  border-radius:var(--r-md);padding:var(--sp-6);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;}
.dolor:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-left-color:var(--accent-vivid);}
.dolor h3{font-size:1.1rem;margin-bottom:var(--sp-2);}
.dolor p{margin:0;color:var(--muted);}

/* Lista de servicios con check */
.checklist{list-style:none;padding:0;display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.checklist li{position:relative;padding-left:2.3em;font-weight:600;min-height:1.55em;}
/* Disco de color (base del check) */
.checklist li::before{content:"";position:absolute;left:0;top:-.05em;width:1.55em;height:1.55em;border-radius:50%;
  background:var(--accent-soft);box-shadow:0 4px 10px rgba(18,24,31,.08);}
/* Palomita en color de acento, sobre el disco */
.checklist li::after{content:"";position:absolute;left:0;top:-.05em;width:1.55em;height:1.55em;background:var(--accent);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/1em no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/1em no-repeat;}

/* Sellos de confianza */
.sellos{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.sello{display:flex;gap:var(--sp-4);align-items:flex-start;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-4) var(--sp-4) var(--sp-3);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;}
.sello:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--accent);}
/* Icono en "chip" de color de sección para más punch */
.sello svg{width:26px;height:26px;flex-shrink:0;fill:var(--accent);box-sizing:content-box;
  padding:.5em;background:var(--accent-soft);border-radius:var(--r-md);}
.sello strong{display:block;margin-bottom:2px;}
.sello span{color:var(--muted);font-size:.9rem;}

/* FAQ acordeón (details/summary: funciona sin JS y es accesible) */
.faq-item{border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:var(--sp-3);background:var(--surface);
  transition:border-color .18s ease,box-shadow .18s ease;}
.faq-item:hover{border-color:var(--accent);}
.faq-item[open]{border-color:var(--accent);box-shadow:var(--shadow-sm);}
.faq-item summary{cursor:pointer;list-style:none;padding:var(--sp-4) var(--sp-6);font-weight:700;font-family:var(--font-display);
  display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"+";font-size:1.5rem;color:var(--accent-strong);transition:transform .2s ease;}
.faq-item[open] summary::after{transform:rotate(45deg);}
.faq-item__body{padding:0 var(--sp-6) var(--sp-6);color:var(--muted);}

/* Testimonios */
.testimonials{display:grid;gap:var(--sp-6);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));}
.testimonial{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--sp-6);}
.testimonial__quote{font-size:1.05rem;}
.testimonial__author{display:flex;gap:var(--sp-3);align-items:center;margin-top:var(--sp-4);}
.testimonial__author img{width:44px;height:44px;border-radius:50%;object-fit:cover;}

/* Breadcrumbs */
.breadcrumbs{font-size:.88rem;color:var(--muted);padding-block:var(--sp-4);}
.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:.4em;padding:0;margin:0;}
.breadcrumbs li::after{content:"/";margin-left:.4em;color:var(--line);}
.breadcrumbs li:last-child::after{content:"";}

/* Banda CTA final */
.cta-band{position:relative;overflow:hidden;background:var(--accent);color:var(--accent-contrast);border-radius:var(--r-lg);
  padding:var(--sp-16) var(--sp-8);text-align:center;}
.cta-band h2{color:var(--accent-contrast);}
.cta-band>*{position:relative;z-index:1;}
.cta-band .btn-primary{background:#fff;color:var(--accent-strong);}
.cta-band .btn-primary:hover{background:var(--surface-2);color:var(--accent-strong);}
.cta-band .btn-ghost{border-color:var(--accent-contrast);color:var(--accent-contrast);background:transparent;}
.cta-band .btn-ghost:hover{background:rgba(255,255,255,.16);color:var(--accent-contrast);border-color:var(--accent-contrast);}
.cta-band__actions{display:flex;gap:var(--sp-3);justify-content:center;flex-wrap:wrap;margin-top:var(--sp-6);}
/* Refuerzo del gancho bajo el H2 de cierre. Hereda el color del texto de la banda (no lo
   apaga con opacidad): en las dos variantes la banda ya es de alto contraste y esta línea
   es la que cierra la venta — tiene que leerse igual de bien que el titular. */
.cta-band__note{margin-top:var(--sp-3);font-weight:600;color:inherit;}

/* Enlaces internos entre landings de servicio. Llevan la keyword entera, así que se deja
   caer el white-space:nowrap de .btn — pero SOLO aquí: en un CTA corto el nowrap es lo
   correcto y partir "Cotizar / ahora" en dos líneas quedaría peor. */
.otros-serv .btn{white-space:normal;line-height:1.25;max-width:100%;}
/* Variante NAVY de la banda (alto contraste, "wow"). Números/acentos en energía. */
.cta-band--dark{background:var(--dark);color:var(--on-dark);}
.cta-band--dark h2{color:var(--on-dark);}
.cta-band--dark::before{content:"";position:absolute;inset:auto -6% -60% auto;width:min(50%,420px);aspect-ratio:1;
  background:var(--accent-vivid);opacity:.16;border-radius:50%;pointer-events:none;}
.cta-band--dark::after{content:"";position:absolute;top:-30%;left:-8%;width:min(38%,300px);aspect-ratio:1;
  background:radial-gradient(circle,var(--energy) 0 42%,transparent 60%);opacity:.22;pointer-events:none;}
.cta-band--dark .btn-primary{background:var(--energy);color:var(--on-energy);}
.cta-band--dark .btn-primary:hover{background:var(--energy-2);color:var(--on-energy);}
/* En banda navy, el botón fantasma va con borde/tinte claro (se define inline en markup) */
.cta-band--dark .btn-ghost{border-color:rgba(255,255,255,.55);color:var(--on-dark);}
.cta-band--dark .btn-ghost:hover{border-color:var(--energy);background:rgba(255,255,255,.08);color:var(--on-dark);}

/* Barra CTA fija en móvil (llamar / WhatsApp / cotizar) */
.mobile-cta{position:fixed;left:0;right:0;bottom:0;z-index:95;display:none;
  background:var(--surface);border-top:1px solid var(--line);box-shadow:0 -4px 16px rgba(18,24,31,.08);
  padding:var(--sp-2);gap:var(--sp-2);}
.mobile-cta a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  font-size:.72rem;font-weight:700;color:var(--ink);padding:.4em;border-radius:var(--r-sm);text-decoration:none;}
.mobile-cta a svg{width:22px;height:22px;fill:var(--accent-strong);}
.mobile-cta a.is-primary{background:var(--energy);color:var(--on-energy);font-weight:800;}
.mobile-cta a.is-primary svg{fill:var(--on-energy);}
@media (max-width:760px){
  .mobile-cta{display:flex;}
  /* Si la barra CTA está presente, ocultamos el WhatsApp flotante (evita CTA duplicado). */
  .mobile-cta ~ .wa-float{display:none;}
  body{padding-bottom:72px;}
}

@media (prefers-reduced-motion:reduce){ .marquee__track{animation:none;} }

/* ===================================================================
   COMPONENTES DE ENERGÍA (elevación visual) — highlights, secciones
   navy, slots de foto, titulares display. Solo colores desde tokens.
   =================================================================== */

/* --- Highlight tipo marcador amarillo sobre una palabra clave del titular ---
   Uso: <h1>Espacios <span class="hl">impecables</span></h1>  (o <mark class="hl">).
   El trazo es amarillo (--energy); el texto queda oscuro/heredado -> AA seguro. */
.hl{position:relative;white-space:nowrap;color:inherit;background:transparent;isolation:isolate;}
.hl::before{content:"";position:absolute;z-index:-1;left:-.12em;right:-.12em;bottom:.02em;height:.42em;
  background:var(--energy);border-radius:.15em;transform:skewX(-6deg);opacity:.92;}
mark.hl{background:transparent;color:inherit;}
/* Sobre fondo navy usamos un "chip" amarillo SÓLIDO detrás de toda la palabra,
   con texto oscuro (--on-energy) -> el texto blanco de la sección nunca queda sobre amarillo. */
/* Sobre navy: fondo amarillo DIRECTO en el elemento (no ::before), para que siempre
   se pinte el chip y el texto oscuro nunca quede sobre el navy. box-decoration-break
   mantiene el chip parejo si el resaltado abarca dos líneas. */
.section--dark .hl,.cta-band--dark .hl{background:var(--energy);color:var(--on-energy);
  padding:.04em .22em;border-radius:.18em;-webkit-box-decoration-break:clone;box-decoration-break:clone;}
.section--dark .hl::before,.cta-band--dark .hl::before{display:none;}

/* Titular display extra grande (para heros y CTA de impacto) */
.display{font-size:clamp(2.4rem,7.5vw,4.4rem);line-height:1.04;letter-spacing:-.02em;}

/* --- Sección OSCURA (navy) reutilizable: ritmo alternado de alto contraste --- */
.section--dark{position:relative;background:var(--dark);color:var(--on-dark);overflow:hidden;}
.section--dark h1,.section--dark h2,.section--dark h3,.section--dark h4{color:var(--on-dark);}
.section--dark .eyebrow{color:var(--energy);}
.section--dark .eyebrow::before{background:var(--energy);}
.section--dark p{color:rgba(255,255,255,.84);}
.section--dark a:not(.btn){color:#EAF3FF;}
/* Blobs decorativos dentro de la sección navy (opcional, con .has-blobs) */
.section--dark.has-blobs::before{content:"";position:absolute;inset:-20% auto auto -10%;width:min(48vw,460px);aspect-ratio:1;
  background:var(--accent-vivid);opacity:.14;border-radius:50%;filter:blur(6px);pointer-events:none;}
.section--dark.has-blobs::after{content:"";position:absolute;right:-6%;bottom:-30%;width:min(38vw,340px);aspect-ratio:1;
  background:radial-gradient(circle,var(--energy) 0 40%,transparent 62%);opacity:.14;pointer-events:none;}
.section--dark .container{position:relative;z-index:1;}
/* Card sobre navy: superficie translúcida con borde suave */
.section--dark .card,.section--dark .dolor{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14);color:var(--on-dark);}
.section--dark .card h3,.section--dark .dolor h3{color:var(--on-dark);}
.section--dark .card p,.section--dark .dolor p,.section--dark .card span{color:rgba(255,255,255,.80);}
.section--dark .card strong{color:var(--on-dark);}

/* --- SLOT de foto: placeholder elegante para las fotos reales (evita CLS) ---
   Uso: <div class="img-slot" style="--ar:4/3"><span>FOTO: ...</span></div> */
.img-slot{position:relative;aspect-ratio:var(--ar,4/3);width:100%;border-radius:var(--r-lg);
  background:
    repeating-linear-gradient(45deg,transparent 0 22px,rgba(255,255,255,.35) 22px 24px),
    var(--accent-soft);
  border:2px dashed var(--accent);display:flex;align-items:center;justify-content:center;
  text-align:center;padding:var(--sp-6);overflow:hidden;}
.img-slot span{position:relative;font-weight:700;color:var(--accent-strong);font-size:.95rem;line-height:1.35;
  max-width:26ch;}
.img-slot span::before{content:"";display:block;width:34px;height:34px;margin:0 auto var(--sp-3);
  background:var(--accent);opacity:.7;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M21 5H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm-1 11-4.5-6-3.5 4.5-2.5-3L5 16V7h15v9zM8.5 11A1.5 1.5 0 1 0 7 9.5 1.5 1.5 0 0 0 8.5 11z'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M21 5H3a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1zm-1 11-4.5-6-3.5 4.5-2.5-3L5 16V7h15v9zM8.5 11A1.5 1.5 0 1 0 7 9.5 1.5 1.5 0 0 0 8.5 11z'/%3E%3C/svg%3E") center/contain no-repeat;}
/* Slot con proporción retrato para columnas laterales */
.img-slot--portrait{aspect-ratio:var(--ar,3/4);}

/* Foto real (galería, secciones): redondeada con sombra, sin CLS */
.photo{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-lg);box-shadow:var(--shadow-md);}

/* --- Chip / etiqueta de dato (usada en heros para reforzar confianza) --- */
.chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-6);}
.chip{display:inline-flex;align-items:center;gap:.45em;font-size:.86rem;font-weight:700;
  padding:.5em .9em;border-radius:var(--r-full);background:var(--accent-soft);color:var(--accent-strong);
  border:1px solid transparent;}
.chip::before{content:"";width:.5em;height:.5em;border-radius:50%;background:var(--accent);flex:none;}
.section--dark .chip{background:rgba(255,255,255,.08);color:var(--on-dark);border-color:rgba(255,255,255,.16);}
.section--dark .chip::before{background:var(--energy);}

/* --- Ribbon del gancho (hero de home + 3 landings de servicio) ---
   Reversión de riesgo pegada a los CTA. Píldora BLANCA con texto navy (~14:1 de contraste),
   no amarilla: el botón "Cotizar" ya es amarillo y, apilados, los dos se fundían en una sola
   mancha amarilla — el CTA perdía su trabajo de ser "lo que se pulsa". Blanco lo separa del
   botón y a la vez lo levanta por encima de los .chip translúcidos de abajo, que son
   reaseguro de fondo. El ✓ sí va en energy: ata el ribbon a la paleta sin repintarlo entero.
   El blanco es sólido a propósito (nada de rgba): el degradado del hero se aclara mucho hacia
   la derecha y una píldora translúcida se perdería justo ahí. */
.ribbon-gancho{display:inline-flex;align-items:center;gap:.5em;margin-top:var(--sp-4);
  padding:.5em 1em;border-radius:var(--r-full);background:#fff;color:var(--dark);
  font-weight:800;font-size:.9rem;line-height:1.35;box-shadow:var(--shadow-sm);}
.ribbon-gancho::before{content:"✓";font-weight:900;flex:none;color:var(--energy-2);
  -webkit-text-stroke:.4px var(--dark);}
@media (max-width:480px){.ribbon-gancho{font-size:.82rem;align-items:flex-start;}
  .ribbon-gancho::before{margin-top:.05em;}}

/* --- Testimonios: cita con comilla decorativa --- */
.testimonial{position:relative;}
.testimonial__quote{margin:var(--sp-2) 0 var(--sp-4);}
.testimonial__quote::before{content:"\201C";font-family:var(--font-display);font-size:2.6rem;line-height:0;
  color:var(--accent-vivid);vertical-align:-.35em;margin-right:.08em;opacity:.65;}
.stars{color:var(--energy-2);letter-spacing:.06em;font-size:1.05rem;
  -webkit-text-stroke:.4px var(--muted);}

/* --- Entrada suave al hacer scroll ---
   El estado oculto SOLO aplica si hay JS (html.js) y el usuario no pidió reduce-motion.
   Así, sin JS o con reduce-motion, el contenido siempre se ve (no se oculta nunca). */
@media (prefers-reduced-motion:no-preference){
  .marquee__track{animation:marquee 30s linear infinite;}
  .btn-energy:hover{animation:energy-pulse .5s ease;}
  .btn-cotiza{animation:cotiza-pulse 2.8s ease-in-out infinite;}
  .btn-cotiza:hover{animation:none;}
  html.js .reveal{opacity:0;transform:translateY(18px);
    transition:opacity .7s cubic-bezier(.2,.6,.2,1),transform .7s cubic-bezier(.2,.6,.2,1);}
  html.js .reveal.is-visible{opacity:1;transform:none;}
  html.js .reveal.d1{transition-delay:.08s;} html.js .reveal.d2{transition-delay:.16s;}
  html.js .reveal.d3{transition-delay:.24s;}
}
@keyframes energy-pulse{0%{transform:translateY(-2px) scale(1)}50%{transform:translateY(-2px) scale(1.02)}100%{transform:translateY(-2px) scale(1)}}
@keyframes cotiza-pulse{0%,100%{box-shadow:0 6px 20px rgba(255,196,0,.42)}50%{box-shadow:0 8px 28px rgba(255,196,0,.72)}}

/* --- Foto-recorte (PNG sin fondo) en heros: persona sobre disco de acento --- */
.hero__cutout{position:relative;display:flex;justify-content:center;align-items:flex-end;min-height:100%;}
.hero__cutout::before{content:"";position:absolute;z-index:0;bottom:6%;left:50%;transform:translateX(-50%);
  width:min(78%,340px);aspect-ratio:1;border-radius:50%;background:var(--accent-soft);}
.hero__cutout::after{content:"";position:absolute;z-index:0;top:8%;right:12%;width:56px;height:56px;
  border-radius:50%;background:var(--energy);opacity:.9;}
.hero__cutout img{position:relative;z-index:1;width:auto;max-height:440px;max-width:100%;
  filter:drop-shadow(0 22px 30px rgba(18,24,31,.22));object-fit:contain;}
@media (max-width:860px){ .hero__cutout img{max-height:320px;} }

/* ---------- Plataforma 4TRAIN (pasos, visor, quiz) ---------- */
.t4-step{width:44px;height:44px;border-radius:var(--r-full);background:var(--accent);color:var(--accent-contrast);
  display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:800;
  font-size:1.3rem;margin-bottom:var(--sp-3);}
.t4-overlay{position:fixed;inset:0;z-index:1000;background:var(--dark);display:flex;flex-direction:column;}
.t4-overlay[hidden]{display:none;}
.t4-overlay--pad{overflow-y:auto;padding:var(--sp-8) var(--sp-4);align-items:center;justify-content:flex-start;
  background:rgba(10,31,68,.94);backdrop-filter:blur(4px);}
.t4-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);
  padding:var(--sp-3) var(--sp-4);background:var(--surface);border-bottom:1px solid var(--line);flex:none;}
.t4-bar__title{font-family:var(--font-display);font-size:1.05rem;color:var(--ink);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.t4-bar__actions{display:flex;align-items:center;gap:var(--sp-3);flex:none;}
.t4-close{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-full);
  width:40px;height:40px;font-size:1.1rem;cursor:pointer;color:var(--ink);flex:none;}
.t4-close:hover{background:var(--line);}
#t4-frame{flex:1;width:100%;border:0;background:#fff;}
/* Lector interactivo de curso */
.t4-course{background:var(--surface-2);}
.t4-progress{height:6px;background:var(--line);border-radius:var(--r-full);margin-top:6px;overflow:hidden;max-width:360px;}
.t4-progress-bar{display:block;height:100%;width:0;background:var(--accent);border-radius:var(--r-full);transition:width .45s ease;}
.t4-step-label{font-weight:700;color:var(--muted);white-space:nowrap;font-size:.9rem;}
.t4-course-body{flex:1;overflow-y:auto;padding:var(--sp-8) var(--sp-4);outline:none;}
.t4-course-nav{flex:none;display:flex;justify-content:space-between;gap:var(--sp-3);
  padding:var(--sp-3) var(--sp-4);background:var(--surface);border-top:1px solid var(--line);}
.t4-course-nav .btn{min-width:150px;}
.t4-mod{max-width:760px;margin:0 auto;}
.t4-mod-head{display:flex;gap:var(--sp-4);align-items:center;margin-bottom:var(--sp-6);}
.t4-mod-icon{width:56px;height:56px;flex:none;border-radius:var(--r-lg);background:var(--accent-soft);
  display:flex;align-items:center;justify-content:center;}
.t4-mod-icon svg{width:30px;height:30px;fill:var(--accent);}
.t4-mod-head h2{margin:0;}
.t4-lesson{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:var(--sp-6);margin-bottom:var(--sp-4);box-shadow:var(--shadow-sm);}
.t4-lesson h3{margin-bottom:var(--sp-2);}
.t4-cards{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:var(--sp-4);}
.t4-card{border:1px solid var(--line);border-left:5px solid var(--c,var(--accent));border-radius:var(--r-md);
  padding:var(--sp-4);background:var(--surface);}
.t4-card strong{display:block;margin-bottom:2px;}
.t4-card span{color:var(--muted);font-size:.92rem;}
.t4-tip{background:var(--accent-soft);border-left:4px solid var(--energy);border-radius:var(--r-md);
  padding:var(--sp-3) var(--sp-4);margin-top:var(--sp-4);font-size:.95rem;color:var(--ink);}
.t4-lesson p{margin:var(--sp-2) 0;}
.t4-lesson>*:first-child{margin-top:0;}
.t4-subhead{font-family:var(--font-display);font-size:1.02rem;font-weight:700;color:var(--accent-strong);
  margin:var(--sp-4) 0 var(--sp-2);padding-left:.6em;border-left:3px solid var(--accent);}
.t4-steps{list-style:none;counter-reset:s;margin:var(--sp-3) 0 0;padding:0;display:grid;gap:var(--sp-2);}
.t4-steps li{counter-increment:s;position:relative;padding:.55em .8em .55em 2.6em;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-md);}
.t4-steps li::before{content:counter(s);position:absolute;left:.55em;top:50%;transform:translateY(-50%);
  width:1.7em;height:1.7em;display:flex;align-items:center;justify-content:center;border-radius:var(--r-full);
  background:var(--accent);color:var(--accent-contrast);font-weight:700;font-size:.85rem;font-family:var(--font-display);}
.t4-compare{display:grid;gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:var(--sp-4);}
.t4-compare__col{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4);background:var(--surface);}
.t4-compare__col.is-si{border-top:4px solid var(--ok);}
.t4-compare__col.is-no{border-top:4px solid var(--err);}
.t4-compare__h{display:block;font-weight:700;font-family:var(--font-display);margin-bottom:var(--sp-2);}
.t4-compare__col.is-si .t4-compare__h{color:var(--ok);}
.t4-compare__col.is-no .t4-compare__h{color:var(--err);}
.t4-compare ul{list-style:none;margin:0;padding:0;display:grid;gap:.35em;}
.t4-compare li{position:relative;padding-left:1.2em;font-size:.94rem;color:var(--ink);}
.t4-compare li::before{position:absolute;left:0;top:0;}
.t4-compare .is-si li::before{content:"✓";color:var(--ok);font-weight:700;}
.t4-compare .is-no li::before{content:"✗";color:var(--err);font-weight:700;}
.t4-dato{display:flex;align-items:center;gap:var(--sp-4);margin-top:var(--sp-4);padding:var(--sp-4) var(--sp-5);
  background:linear-gradient(120deg,var(--accent),var(--accent-strong));color:var(--accent-contrast);border-radius:var(--r-lg);}
.t4-dato__v{font-family:var(--font-display);font-weight:800;font-size:1.9rem;line-height:1;flex:none;}
.t4-dato__t{font-size:.96rem;font-weight:600;opacity:.95;}
.t4-checkpoint{background:var(--accent-soft);border-radius:var(--r-lg);padding:var(--sp-6);margin-top:var(--sp-6);}
.t4-cp-q{font-family:var(--font-display);font-weight:700;font-size:1.1rem;margin:var(--sp-2) 0 var(--sp-4);}
.t4-cp-opts{display:grid;gap:var(--sp-2);}
.t4-cp-opt{text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-md);
  padding:.8em 1em;font:inherit;cursor:pointer;transition:border-color .15s ease,background .15s ease;}
.t4-cp-opt:hover:not(:disabled){border-color:var(--accent);}
.t4-cp-opt:disabled{cursor:default;}
.t4-cp-opt.is-correct{border-color:var(--ok);background:#eaf6ee;font-weight:700;}
.t4-cp-opt.is-wrong{border-color:var(--err);background:#fbeceb;}
.t4-cp-fb{margin-top:var(--sp-3);font-weight:600;}
.t4-cp-fb.ok{color:var(--ok);} .t4-cp-fb.err{color:var(--err);}
.t4-badge{display:inline-block;align-self:flex-start;background:var(--energy);color:var(--on-energy);
  font-weight:700;font-size:.75rem;padding:.25em .7em;border-radius:var(--r-full);margin-bottom:var(--sp-2);}

/* ---------- Gamificación e interactividad del lector ---------- */
.t4-xp{display:inline-flex;align-items:center;gap:.3em;background:var(--accent-soft);color:var(--accent-strong);
  font-weight:800;font-size:.82rem;padding:.28em .7em;border-radius:var(--r-full);white-space:nowrap;}
.t4-xp b{font-variant-numeric:tabular-nums;}
@media (prefers-reduced-motion:no-preference){
  .t4-reveal{opacity:0;transform:translateY(14px);animation:t4-rise .5s cubic-bezier(.2,.7,.3,1) forwards;animation-delay:calc(var(--ri,0)*65ms);}
}
@keyframes t4-rise{to{opacity:1;transform:none;}}
.t4-shake{animation:t4-shake .42s;}
@keyframes t4-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
.t4-cp-opt.is-correct{animation:t4-pop .35s;}
@keyframes t4-pop{0%{transform:scale(1)}50%{transform:scale(1.03)}100%{transform:scale(1)}}
/* Flashcard (flip) */
.t4-flip{perspective:1000px;margin-top:var(--sp-4);cursor:pointer;min-height:130px;}
.t4-flip:focus-visible{outline:3px solid var(--accent-strong);outline-offset:3px;border-radius:var(--r-lg);}
.t4-flip__inner{position:relative;min-height:130px;transition:transform .55s cubic-bezier(.2,.7,.3,1);transform-style:preserve-3d;}
.t4-flip.is-flipped .t4-flip__inner{transform:rotateY(180deg);}
.t4-flip__face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--r-lg);
  padding:var(--sp-5);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:.45em;}
.t4-flip__front{background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:var(--accent-contrast);}
.t4-flip__back{background:var(--surface);border:2px solid var(--accent);color:var(--ink);transform:rotateY(180deg);}
.t4-flip__hint{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;opacity:.85;font-weight:700;}
.t4-flip strong{font-family:var(--font-display);font-size:1.15rem;}
@media (prefers-reduced-motion:reduce){ .t4-flip__inner{transition:none;} }
/* Elige (mini-quiz inline) */
.t4-elige{background:var(--accent-soft);border-radius:var(--r-lg);padding:var(--sp-5);margin-top:var(--sp-4);}
.t4-elige__q{font-weight:700;font-family:var(--font-display);margin:0 0 var(--sp-3);}
/* Acordeón (dudas / profundiza) */
.t4-acordeon{margin-top:var(--sp-4);display:grid;gap:var(--sp-2);}
.t4-acc__item{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);overflow:hidden;}
.t4-acc__item summary{cursor:pointer;padding:.8em 1em;font-weight:700;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:1em;}
.t4-acc__item summary::-webkit-details-marker{display:none;}
.t4-acc__item summary::after{content:"+";font-size:1.3em;line-height:1;color:var(--accent);flex:none;}
.t4-acc__item[open] summary::after{content:"–";}
.t4-acc__body{padding:0 1em 1em;color:var(--ink);}
/* Ordena (juego de secuencia) */
.t4-ordena{margin-top:var(--sp-4);}
.t4-ordena__t{font-weight:700;font-family:var(--font-display);margin:0 0 var(--sp-3);}
.t4-ordena__hint{font-weight:600;color:var(--muted);font-size:.85rem;}
.t4-ord__chips{display:grid;gap:var(--sp-2);}
.t4-ord__chip{position:relative;text-align:left;background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-md);
  padding:.7em 1em .7em 2.7em;font:inherit;cursor:pointer;transition:border-color .15s ease,background .15s ease;}
.t4-ord__chip::before{content:"≡";position:absolute;left:1em;top:50%;transform:translateY(-50%);color:var(--muted);}
.t4-ord__chip:hover:not(.is-done){border-color:var(--accent);}
.t4-ord__chip.is-done{border-color:var(--ok);background:#eaf6ee;cursor:default;}
.t4-ord__chip.is-done::before{content:attr(data-order);width:1.6em;height:1.6em;left:.6em;
  display:flex;align-items:center;justify-content:center;border-radius:var(--r-full);background:var(--ok);color:#fff;font-size:.8rem;font-weight:700;}
/* Toast + confeti */
.t4-toast{position:absolute;left:50%;bottom:92px;transform:translate(-50%,10px);background:var(--accent);color:var(--accent-contrast);
  font-weight:800;font-size:.9rem;padding:.5em 1.1em;border-radius:var(--r-full);box-shadow:var(--shadow-lg);
  opacity:0;transition:opacity .25s ease,transform .25s ease;z-index:6;pointer-events:none;white-space:nowrap;}
.t4-toast.is-in{opacity:1;transform:translate(-50%,0);}
.t4-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:5;}
.t4-confetti i{position:absolute;top:-14px;width:9px;height:14px;border-radius:2px;animation:t4-fall 1.3s ease-in forwards;}
@keyframes t4-fall{to{transform:translateY(115vh) rotate(var(--rot,360deg));opacity:.15;}}

.t4-bar .btn.is-ready{box-shadow:0 0 0 0 rgba(255,196,0,.55);}
@media (prefers-reduced-motion:no-preference){ .t4-bar .btn.is-ready{animation:t4pulse 1.6s ease-out infinite;} }
@keyframes t4pulse{0%{box-shadow:0 0 0 0 rgba(255,196,0,.55)}70%{box-shadow:0 0 0 12px rgba(255,196,0,0)}100%{box-shadow:0 0 0 0 rgba(255,196,0,0)}}
.t4-quiz-card{position:relative;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);
  padding:var(--sp-8);width:100%;max-width:640px;margin:auto;}
.t4-q{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--sp-4) var(--sp-6);margin:0 0 var(--sp-4);}
.t4-q legend{font-weight:700;font-family:var(--font-display);padding:0 var(--sp-2);}
.t4-opt{display:flex;align-items:flex-start;gap:.6em;padding:.5em .2em;cursor:pointer;font-size:.98rem;}
.t4-opt input{margin-top:.2em;accent-color:var(--accent);}
@media (max-width:560px){ .t4-bar__title{font-size:.9rem;} .t4-bar .btn{padding:.6em .9em;font-size:.9rem;} .t4-quiz-card{padding:var(--sp-6);} }

/* ---------- 13. Banner de cookies ---------- */
.cookie-banner{position:fixed;left:16px;right:16px;bottom:16px;z-index:120;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:var(--shadow-lg);padding:var(--sp-4) var(--sp-6);
  display:flex;flex-wrap:wrap;gap:var(--sp-4);align-items:center;justify-content:space-between;}
.cookie-banner[hidden]{display:none;}
.cookie-banner__txt{margin:0;font-size:.92rem;max-width:60ch;}
.cookie-banner__actions{display:flex;gap:var(--sp-3);flex-shrink:0;}
.cookie-banner .btn{padding:.6em 1.1em;}
@media (max-width:560px){
  .cookie-banner{left:8px;right:8px;bottom:8px;padding:var(--sp-4);}
  .cookie-banner__actions{width:100%;}
  .cookie-banner__actions .btn{flex:1;}
}

/* ---------- 14. Movimiento reducido ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;
    transition-duration:.001ms !important;scroll-behavior:auto !important;}
}

/* Píldora destacada del footer → Calculadoras 4HOME (verde billete, brief calculadoras §10.1) */
.footer-pill-calc{display:inline-block;background:#0B7A4B;color:#fff !important;font-weight:800;
  padding:.45em 1em;border-radius:999px;margin-top:.35em;}
.footer-pill-calc:hover{background:#0a6a41;text-decoration:none;}
