/* Estilos del Home de Verne (index.html) */
  * { box-sizing: border-box; }
  html { scroll-behavior: smooth; }
  body { margin:0; font-family:'Poppins',sans-serif; background:hsl(232 24% 8%); color:hsl(232 24% 19%); -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; overflow-x:hidden; }
  img { display:block; }
  input, textarea, select, button { font-family:inherit; }
  ::-webkit-scrollbar { width:10px; height:10px; }
  ::-webkit-scrollbar-thumb { background:hsl(263 45% 52% / .4); border-radius:8px; }

  @keyframes vMarquee { from { transform: translateX(0);} to { transform: translateX(-50%);} }
  @keyframes vSheen { 0%{background-position:0% center;} 100%{background-position:-200% center;} }
  @keyframes vBreathe { 0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.6;} 50%{transform:translate(-50%,-50%) scale(1.14);opacity:1;} }
  @keyframes vGradient { 0%{background-position:0% 0%;}25%{background-position:100% 50%;}50%{background-position:50% 100%;}75%{background-position:0% 50%;}100%{background-position:0% 0%;} }
  @keyframes vFloat { 0%,100%{transform:translateY(0);}50%{transform:translateY(-9px);} }
  @keyframes vReveal { from { opacity:0; transform: translateY(46px) scale(.985); filter: blur(4px);} to { opacity:1; transform: none; filter: blur(0);} }
  @keyframes heroFade { from { opacity:0; transform: translateY(10px);} to { opacity:1; transform: none;} }
  @keyframes vFadeIn { from { opacity:0; } to { opacity:1; } }
  @keyframes vScaleIn { from { opacity:0; transform: translateY(16px) scale(.97);} to { opacity:1; transform: none;} }
  @keyframes vToastIn { from { opacity:0; transform: translateY(20px);} to { opacity:1; transform: none;} }

  /* ── Motion tokens — a single physics language across the whole Home ──
     Type scale (editorial): eyebrow 11px mono · title clamp(38–58px)/-.03em · deck 19px/300 · body 15px/1.75 */
  :root { --v-ease: cubic-bezier(.22,.61,.36,1); --v-dur-hover: .4s; --v-dur-reveal: .85s; }

  /* Reveal — JS-driven CSS transitions (immune to transformed parallax ancestors that break view() timelines).
     Base stays visible as a fallback; the .js-reveal class (added only when JS + motion OK) arms the hidden state. */
  .reveal, .reveal-fade { opacity:1; }
  html.js-reveal .reveal { opacity:0; transform: translate3d(0,48px,0) scale(.985); filter: blur(5px); transition: opacity .85s cubic-bezier(.22,.61,.36,1), transform .85s cubic-bezier(.22,.61,.36,1), filter .85s cubic-bezier(.22,.61,.36,1); will-change: opacity, transform, filter; }
  html.js-reveal .reveal-fade { opacity:0; transition: opacity .95s cubic-bezier(.22,.61,.36,1); }
  html.js-reveal .reveal.in, html.js-reveal .reveal-fade.in { opacity:1; transform: none; filter: blur(0); }
  html.js-reveal .reveal-2 { transition-delay: .10s; }
  html.js-reveal .reveal-3 { transition-delay: .20s; }
  html.js-reveal .reveal-4 { transition-delay: .30s; }
  /* One-shot entrance for the hero — matches original framer-motion FadeIn (y:10, dur .7, staggered) */
  .reveal-load { opacity:0; animation: heroFade .7s cubic-bezier(.25,.46,.45,.94) .1s both; }
  .reveal-load-2 { opacity:0; animation: heroFade .7s cubic-bezier(.25,.46,.45,.94) .2s both; }
  .reveal-load-3 { opacity:0; animation: heroFade .7s cubic-bezier(.25,.46,.45,.94) .35s both; }
  .reveal-load-4 { opacity:0; animation: heroFade .7s cubic-bezier(.25,.46,.45,.94) .5s both; }

  /* Light sweep — authentic Verne brand: subtle blue-white shine across accent-colored text */
  @keyframes lightSweep { 0%{background-position:-220% center;} 20%{background-position:220% center;} 100%{background-position:220% center;} }
  .light-sweep { background-image:linear-gradient(105deg, transparent 0%, transparent 30%, hsla(195,60%,75%,.14) 40%, hsla(200,70%,80%,.24) 48%, hsla(210,50%,90%,.18) 52%, hsla(195,60%,75%,.10) 60%, transparent 70%, transparent 100%); background-size:250% 100%; -webkit-background-clip:text; background-clip:text; color:hsl(263 45% 52%); animation:lightSweep 18s ease-in-out infinite; animation-delay:4s; }

  /* Navbar scrolled overlay — driven by state attribute, immune to re-render */
  [data-nav-ov] { opacity:0; transition:opacity .35s ease; }
  nav[data-scrolled="true"] [data-nav-ov] { opacity:1; }

  /* ── Verne Consultoría — premium editorial card motion (AWSMD-inspired) ── */
  @keyframes vCardBreath { 0% { transform:scale(1.01); } 100% { transform:scale(1.04) translateY(-1.4%); } }
  .v-scard:hover .v-scta { transform: translateX(4px); color: hsl(263 45% 52%); }
  /* ── Verne Space — editorial photographic experience ── */
  .space-grid { display:grid; gap:64px; grid-template-columns:minmax(0,37%) minmax(0,1fr); grid-template-areas:"text photo" "cta photo"; align-items:center; }
  .space-text { grid-area:text; }
  .space-cta-wrap { grid-area:cta; align-self:start; }
  .space-photo { grid-area:photo; }
  .space-stage { position:relative; width:100%; aspect-ratio:3/2; border-radius:14px; overflow:hidden; background:hsl(232 24% 10%); }
  .space-stage img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transform:scale(1.02); transition:opacity 900ms cubic-bezier(.22,.61,.36,1), transform 1000ms cubic-bezier(.22,.61,.36,1); }
  .space-stage img[data-active="true"] { opacity:1; transform:scale(1); }
  .space-thumbs { display:flex; gap:12px; margin-top:16px; overflow-x:auto; scrollbar-width:none; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; padding-bottom:2px; }
  .space-thumbs::-webkit-scrollbar { display:none; }
  .space-thumb { position:relative; flex:0 0 auto; width:98px; height:66px; border:none; padding:0; border-radius:9px; overflow:hidden; cursor:pointer; background:none; opacity:.48; scroll-snap-align:start; transition:opacity .5s cubic-bezier(.22,.61,.36,1), transform .5s cubic-bezier(.22,.61,.36,1); }
  .space-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
  .space-thumb:hover { opacity:.82; }
  .space-thumb[aria-current="true"] { opacity:1; transform:translateY(-2px); }
  .space-thumb[aria-current="true"]::after { content:""; position:absolute; inset:0; border-radius:9px; box-shadow:inset 0 0 0 2px hsl(263 45% 52%); }
  .space-thumb:focus-visible { box-shadow:0 0 0 2px hsl(263 45% 52%); opacity:1; }
  .space-open { position:absolute; inset:0; z-index:3; display:flex; align-items:flex-start; justify-content:flex-end; padding:22px 24px; text-decoration:none; border:none; background:none; cursor:pointer; }
  .space-open-hint { display:inline-flex; align-items:center; gap:8px; font-size:12.5px; font-weight:500; color:#fff; padding:9px 15px; border-radius:999px; background:hsl(232 24% 8% / .6); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); box-shadow:inset 0 0 0 1px hsl(0 0% 100% / .16); opacity:0; transform:translateY(-4px); transition:opacity .45s ease, transform .45s cubic-bezier(.22,.61,.36,1); }
  .space-stage:hover .space-open-hint, .space-open:focus-visible .space-open-hint { opacity:1; transform:translateY(0); }
  .space-thumb-go { position:absolute; top:5px; right:5px; width:20px; height:20px; border-radius:999px; display:flex; align-items:center; justify-content:center; color:#fff; background:hsl(232 24% 8% / .68); opacity:0; transition:opacity .4s ease; }
  .space-thumb:hover .space-thumb-go { opacity:1; }
  .space-nav { position:absolute; top:50%; z-index:4; transform:translateY(-50%); width:44px; height:44px; display:flex; align-items:center; justify-content:center; border:none; border-radius:999px; cursor:pointer; color:#fff; background:hsl(232 24% 6% / .42); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); box-shadow:inset 0 0 0 1px hsl(0 0% 100% / .18); opacity:0; transition:opacity .4s cubic-bezier(.22,.61,.36,1), background .3s ease, transform .3s ease; }
  .space-stage:hover .space-nav, .space-nav:focus-visible { opacity:1; }
  .space-nav:hover { background:hsl(263 45% 52% / .85); }
  .space-nav-prev { left:16px; }
  .space-nav-prev:hover { transform:translateY(-50%) translateX(-2px); }
  .space-nav-next { right:16px; }
  .space-nav-next:hover { transform:translateY(-50%) translateX(2px); }
  @media (max-width:860px){ .space-nav { opacity:1; width:40px; height:40px; } }

  /* Semántica visible para buscadores y lectores de pantalla, no para el ojo */
  .v-sr { 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; }

  /* ── Consultoría — capítulo editorial en tres movimientos ── */
  .cs-wrap { max-width:1200px; margin:0 auto; padding:0 24px; }
  /* 1 · el desafío */
  .cs-eyebrow { display:block; font-size:11px; font-weight:500; text-transform:uppercase; color:hsl(232 24% 19% / .7); margin-bottom:56px; }
  .cs-claim { font-size:clamp(30px,4.4vw,56px); line-height:1.1; letter-spacing:0; margin:0; max-width:min(30ch, 82%); text-wrap:balance; }
  .cs-claim .a { display:block; font-weight:700; color:hsl(232 24% 19%); }
  .cs-claim .b { display:block; font-weight:600; color:hsl(232 24% 19%); margin-top:.24em; }
  .cs-deck { font-size:17px; line-height:1.72; font-weight:300; color:hsl(232 24% 19% / .74); max-width:min(72ch, 66%); margin:36px 0 0; }
  .v-deck { font-size:17px; line-height:1.7; font-weight:300; color:hsl(232 24% 19% / .74); max-width:min(94ch, 100%); margin:22px 0 0; text-wrap:balance; }
  .v-proof { display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; margin-top:18px; font-size:11px; font-weight:500; text-transform:uppercase; color:hsl(0 0% 100% / .6); }
  .v-proof span { display:inline-flex; align-items:center; gap:10px; }
  .v-proof span::before { content:""; width:4px; height:4px; border-radius:999px; background:hsl(263 45% 52%); }
  /* 2 · una sola columna editorial a todo el ancho, sin recurso visual */
  .cs-caps-title { font-size:clamp(38px,4.6vw,58px); font-weight:700; line-height:1.06; letter-spacing:0; color:#fff; margin:0 0 20px; }
  .cs-deck { font-size:17px; line-height:1.7; font-weight:300; color:hsl(0 0% 100% / .82); margin:0; }
  /* partículas de fondo: derivan muy despacio, solo en secciones oscuras */
  .pt-field { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
  .pt-field svg { position:absolute; inset:0; width:100%; height:100%; }
  .pt-field circle { fill:hsl(252 74% 82%); animation:drift linear infinite; will-change:transform, opacity; }
  @keyframes drift {
    0%   { transform:translate3d(0,14px,0); opacity:0; }
    22%  { opacity:.75; }
    72%  { opacity:.45; }
    100% { transform:translate3d(0,-58px,0); opacity:0; }
  }
  /* fuente de luz: una por sección oscura, desde una esquina */
  .lux { position:absolute; pointer-events:none; mix-blend-mode:screen; animation:breathe 20s ease-in-out infinite; }
  @keyframes breathe { 0%,100% { opacity:.5; } 50% { opacity:.95; } }
  /* filete entre columnas, rematado en punto luminoso */
  .rule { position:absolute; top:0; bottom:0; width:1px; background:linear-gradient(180deg, hsl(263 45% 52% / .62), hsl(252 74% 82% / .12) 68%, transparent); }
  .rule::after { content:""; position:absolute; left:50%; top:0; width:4px; height:4px; margin-left:-2px; border-radius:999px; background:hsl(252 74% 82%); box-shadow:0 0 8px 2px hsl(252 74% 82% / .5); animation:beat 9s ease-in-out infinite; }
  @keyframes beat { 0%,100% { opacity:.45; } 50% { opacity:1; } }
  /* tarjetas de servicio: imagen + título, misma lógica que Formación */
  .cs-caps { display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(26px,3vw,44px); align-items:stretch; }
  .cs-cap { position:relative; display:flex; flex-direction:column; text-decoration:none; }
  .cs-shot { position:relative; overflow:hidden; border-radius:20px; background:#1b1e2e; isolation:isolate; aspect-ratio:4/3; transform:translateZ(0); }
  .cs-shot img { width:100%; height:100%; object-fit:cover; object-position:center; display:block; border-radius:20px; filter:contrast(1.1) saturate(.72) brightness(.96); transition:transform .9s cubic-bezier(.22,.61,.36,1); }
  .cs-floor { position:absolute; inset:-1px; pointer-events:none; border-radius:20px; background:linear-gradient(180deg, #3a3f5e 0%, #25283D 100%); mix-blend-mode:multiply; opacity:.5; }
  .cs-grade { position:absolute; inset:-1px; pointer-events:none; border-radius:20px; mix-blend-mode:soft-light; background:radial-gradient(ellipse 70% 60% at 24% 22%, rgba(255,214,170,.5), transparent 62%), radial-gradient(ellipse 65% 70% at 88% 86%, rgba(109,74,190,.85), transparent 66%); }
  .cs-cap:hover .cs-shot img { transform:scale(1.035); }
  .cs-name { font-size:19px; font-weight:700; line-height:1.28; letter-spacing:0; color:#fff; margin:22px 0 12px; }
  .cs-desc { font-size:13.5px; line-height:1.7; font-weight:400; color:hsl(0 0% 100% / .82); margin:0 0 20px; }
  .cs-go { display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:500; color:#fff; align-self:flex-start; margin-top:auto; transition:gap .5s cubic-bezier(.22,.61,.36,1); }
  .cs-cap:hover .cs-go { gap:14px; }
  @media (max-width:900px){
    .cs-caps { grid-template-columns:1fr; gap:34px; }
  }
  @media (prefers-reduced-motion: reduce){
    .lux, .rule::after { animation:none; }
    .pt-field circle { animation:none; opacity:.5; }
    .cs-cap:hover .cs-shot img { transform:none; }
  }
  /* ── Conocimiento — publicación institucional: tres estudios de igual peso ── */
  /* piezas sin fotografía: placa tipográfica sobria, mismo formato */
  .kn-plate { position:absolute; inset:0; display:flex; align-items:flex-end; padding:18px; font-size:11px; font-weight:600; letter-spacing:0; text-transform:uppercase; color:hsl(252 74% 82%); background:linear-gradient(150deg, hsl(263 42% 30%), hsl(232 24% 19%)); }
  .kn-row { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:24px; }
  /* ── Contacto — cierre editorial: fotografía a sangre + formulario flotante ── */
  .cp-scene { position:relative; min-height:min(900px,104vh); display:grid; grid-template-columns:minmax(0,1fr) minmax(0,520px); gap:56px; align-items:center; }
  .cp-bg { position:absolute; left:50%; right:50%; top:0; bottom:0; width:100vw; margin-left:-50vw; background-image:url("../assets/home/fondo-contacto.png"); background-size:cover; background-position:center center; transform:scaleX(-1); }
  .cp-grade { position:absolute; left:50%; right:50%; top:0; bottom:0; width:100vw; margin-left:-50vw; pointer-events:none; background:linear-gradient(94deg, rgba(37,40,61,.97) 0%, rgba(37,40,61,.95) 30%, rgba(37,40,61,.86) 52%, rgba(37,40,61,.72) 72%, rgba(37,40,61,.58) 88%, rgba(37,40,61,.5) 100%), linear-gradient(180deg, rgba(37,40,61,.82) 0%, rgba(37,40,61,.3) 26%, rgba(37,40,61,.3) 74%, rgba(37,40,61,.72) 100%); }
  .cp-copy { position:relative; z-index:2; align-self:center; }
  .cp-copy h2 { font-size:clamp(38px,4.6vw,58px); font-weight:700; line-height:1.06; letter-spacing:0; color:#fff; margin:0 0 24px; max-width:18ch; }
  .cp-copy p { font-size:17px; line-height:1.75; font-weight:300; color:hsl(0 0% 100% / .76); margin:0; max-width:38ch; }
  .cp-float { position:relative; z-index:2; background:hsl(232 24% 12% / .72); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); border:1px solid hsl(0 0% 100% / .09); border-radius:28px; box-shadow:0 26px 70px -34px hsl(232 24% 3% / .6); }
  @media (max-width:960px){
    .cp-scene { grid-template-columns:1fr; gap:40px; min-height:0; padding-top:24px; }
    .cp-copy { padding-top:0; }
  }

  #contacto select option { background:hsl(232 24% 14%); color:hsl(0 0% 100% / .92); }
  #contacto input::placeholder, #contacto textarea::placeholder { color:hsl(0 0% 100% / .68); opacity:1; }
  .kn-piece { display:flex; flex-direction:row; text-decoration:none; background:#fff; border:1px solid hsl(232 24% 19% / .09); border-radius:14px; overflow:hidden; transition:transform .5s cubic-bezier(.22,.61,.36,1), box-shadow .5s cubic-bezier(.22,.61,.36,1), border-color .5s ease; }
  .kn-piece:hover { transform:translateY(-4px); box-shadow:0 18px 40px -18px hsl(232 24% 19% / .2); border-color:hsl(263 45% 52% / .2); }
  .kn-shot { position:relative; overflow:hidden; width:38%; flex:0 0 38%; background:#25283D; isolation:isolate; }
  .kn-shot img { width:100%; height:100%; object-fit:cover; object-position:var(--pos, center); display:block; transition:transform .9s cubic-bezier(.22,.61,.36,1); }
  .kn-grade { position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg, rgba(37,40,61,0) 0%, rgba(37,40,61,.42) 100%); }
  .kn-piece:hover .kn-shot img { transform:scale(1.05); }
  .kn-body { padding:24px 24px 22px; display:flex; flex-direction:column; flex:1; min-width:0; }
  .kn-cat { display:block; font-size:9.5px; font-weight:600; letter-spacing:0; text-transform:uppercase; color:hsl(263 45% 46%); margin-bottom:11px; }
  .kn-title { font-size:16px; font-weight:700; line-height:1.28; letter-spacing:0; color:hsl(232 24% 19%); margin:0 0 12px; }
  .kn-desc { font-size:12.5px; line-height:1.72; font-weight:300; color:hsl(232 24% 19% / .72); margin:0 0 18px; flex:1; }
  .kn-cta { display:inline-flex; align-items:center; gap:8px; font-size:12.5px; font-weight:500; color:hsl(263 45% 52%); text-decoration:none; align-self:flex-start; transition:gap .45s cubic-bezier(.22,.61,.36,1); }
  .kn-piece:hover .kn-cta, .kn-cta:hover { gap:15px; }
  .kn-all { display:inline-flex; align-items:center; gap:9px; margin-top:76px; font-size:14px; font-weight:500; color:#fff; padding:15px 30px; border-radius:999px; text-decoration:none; background:linear-gradient(90deg, hsl(263 45% 52%), hsl(232 24% 19%)); transition:transform .4s cubic-bezier(.22,.61,.36,1), box-shadow .4s cubic-bezier(.22,.61,.36,1), filter .4s; }
  .kn-all:hover { transform:translateY(-2px); box-shadow:0 14px 32px hsl(263 45% 52% / .5); filter:brightness(1.08); }
  @media (max-width:1040px){ .kn-row { grid-template-columns:repeat(2, minmax(0,1fr)); gap:22px; } }
  @media (max-width:620px){ .kn-row { grid-template-columns:1fr; gap:20px; } .kn-all { margin-top:56px; } }

  /* ── Testimonios — editorial two-column, one quote at a time, logos as selector ── */
  /* ── Brand Photo Treatment · escala S — EXCLUSIVO de las cards de Consultoría ──
     Mismo color #25283D, mismo ángulo 90°, misma lógica que el Hero; solo se desplaza
     la distribución hacia abajo para que la fotografía conserve su luminosidad. */
  /* ── Formación — piezas editoriales sin contenedor ── */
  .vr-shot { position:relative; overflow:hidden; border-radius:20px; background:#1b1e2e; isolation:isolate; aspect-ratio:4/3; }
  .vr-shot img { width:100%; height:100%; object-fit:cover; display:block; filter:contrast(1.1) saturate(.72) brightness(.96); transition:transform .9s cubic-bezier(.22,.61,.36,1); }
  /* sombras hacia el azul corporativo: actúa sobre los oscuros, no sobre las luces */
  .vr-floor { position:absolute; inset:0; pointer-events:none; background:linear-gradient(180deg, #3a3f5e 0%, #25283D 100%); mix-blend-mode:multiply; opacity:.5; }
  /* luz cálida sutil y acento violeta ambiental en una sola zona */
  .vr-grade { position:absolute; inset:0; pointer-events:none; mix-blend-mode:soft-light; background:radial-gradient(ellipse 70% 60% at 24% 22%, rgba(255,214,170,.5), transparent 62%), radial-gradient(ellipse 65% 70% at 88% 86%, rgba(109,74,190,.85), transparent 66%); }
  .vr-card { display:flex; flex-direction:column; text-decoration:none; }
  .vr-card:hover .vr-shot img { transform:scale(1.035); }
  .vr-title { font-size:clamp(17px,1.5vw,20px); font-weight:700; letter-spacing:0; line-height:1.22; color:hsl(232 24% 19%); margin:22px 0 14px; }
  .vr-body { display:flex; flex-direction:column; flex:1; }
  .vr-list { list-style:none; display:flex; flex-direction:column; gap:8px; margin:0 0 20px; padding:0; flex:1; }
  .vr-list li { font-size:13.5px; font-weight:300; line-height:1.5; color:hsl(232 24% 19% / .66); }
  .vr-cta { display:inline-flex; align-items:center; gap:9px; font-size:12.5px; font-weight:500; color:hsl(263 45% 52%); transition:gap .45s cubic-bezier(.22,.61,.36,1); }
  .vr-card:hover .vr-cta { gap:14px; }

  .tst-card { margin:0; }
  .tst-quote { font-size:clamp(20px,2.3vw,28px); font-weight:300; line-height:1.5; letter-spacing:0; color:hsl(0 0% 100% / .93); margin:0; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:4; overflow:hidden; min-height:calc(4 * 1.5em); }
  .tst-more { display:inline-flex; align-items:center; gap:7px; margin-top:20px; font-size:13px; font-weight:500; color:hsl(252 74% 82%); background:none; border:none; padding:0; cursor:pointer; transition:gap .3s ease, color .3s ease; }
  .tst-more:hover { gap:11px; color:hsl(252 74% 82%); }
  .tst-sign { display:flex; align-items:center; gap:18px; margin-top:34px; }
  .tst-portrait { flex:0 0 auto; width:92px; height:92px; border-radius:12px; overflow:hidden; background:linear-gradient(140deg, hsl(263 45% 52% / .5), hsl(232 24% 20%)); display:flex; align-items:center; justify-content:center; }
  .tst-portrait img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s cubic-bezier(.22,.61,.36,1); }
  .tst-card:hover .tst-portrait img { transform:scale(1.05); }
  .tst-portrait > span { font-family:'Poppins',sans-serif; font-size:30px; font-weight:600; color:hsl(252 74% 82%); letter-spacing:0; }
  .tst-namel { font-size:13px; color:hsl(0 0% 100% / .66); margin:0 0 6px; line-height:1.4; }
  .tst-company { display:flex; align-items:center; gap:10px; font-size:16px; font-weight:600; color:#fff; margin:0; line-height:1.2; }
  .tst-company-logo { display:inline-block; height:18px; width:54px; background-size:contain; background-repeat:no-repeat; background-position:left center; filter:brightness(0) invert(1); }
  .tst-fade { transition:opacity .65s cubic-bezier(.22,.61,.36,1), transform .65s cubic-bezier(.22,.61,.36,1); }
  .tst-fade.is-fading { opacity:0; transform:translateY(12px); }
  .tst-modal-ov { position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; padding:24px; background:hsl(232 24% 6% / .72); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
  .tst-modal { max-width:640px; width:100%; background:hsl(232 24% 14%); border:1px solid hsl(0 0% 100% / .1); border-radius:18px; padding:44px 40px 36px; position:relative; }
  .tst-modal-quote { font-size:19px; font-weight:300; line-height:1.65; color:hsl(0 0% 100% / .92); margin:0 0 28px; }
  .tst-modal-close { position:absolute; top:16px; right:16px; width:38px; height:38px; border-radius:999px; border:none; background:hsl(0 0% 100% / .08); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .25s ease; }
  .tst-modal-close:hover { background:hsl(0 0% 100% / .16); }
  @media (max-width:860px){ .tst-layout { grid-template-columns:1fr; gap:36px; } .tst-selector { flex-direction:row; flex-wrap:wrap; gap:24px; } .tst-intro-title { max-width:none; } }
  /* ── Testimonios — escena cinematográfica (foco central, laterales que insinúan) ── */
  .cv-scene { position:relative; overflow:hidden; }
  .cv-halo { position:absolute; left:50%; top:48%; transform:translate(-50%,-50%); width:min(720px,92%); height:470px; pointer-events:none; z-index:0; background:radial-gradient(ellipse 60% 56% at 50% 48%, hsl(263 45% 52% / .2), hsl(263 45% 52% / .06) 46%, transparent 72%); filter:blur(36px); }
  .cv-stage { position:relative; z-index:1; height:clamp(340px,42vh,420px); }
  .cv-card { position:absolute; top:50%; left:50%; width:min(430px,82vw); display:flex; flex-direction:column; border-radius:18px; padding:32px 30px 34px; background:hsl(232 24% 13%); transition:transform .85s cubic-bezier(.22,.61,.36,1), opacity .85s cubic-bezier(.22,.61,.36,1), filter .85s cubic-bezier(.22,.61,.36,1); will-change:transform, opacity, filter; }
  .cv-card[data-pos="center"] { transform:translate(-50%,-50%) scale(1); opacity:1; filter:none; z-index:3; box-shadow:0 40px 90px -46px hsl(263 45% 52% / .6); }
  .cv-card[data-pos="left"] { transform:translate(-160%,-50%) scale(.86); opacity:.5; filter:blur(1px); z-index:2; }
  .cv-card[data-pos="right"] { transform:translate(60%,-50%) scale(.86); opacity:.5; filter:blur(1px); z-index:2; }
  .cv-card[data-pos="hide"] { transform:translate(-50%,-50%) scale(.8); opacity:0; z-index:1; pointer-events:none; }
  .cv-head { display:flex; align-items:center; gap:16px; }
  .cv-avatar { flex:0 0 auto; width:64px; height:64px; border-radius:999px; overflow:hidden; display:flex; align-items:center; justify-content:center; }
  .cv-avatar:has(> span) { background:linear-gradient(150deg, hsl(263 45% 52% / .5), hsl(232 24% 20%)); }
  .cv-avatar img { width:100%; height:100%; object-fit:cover; display:block; }
  .cv-avatar > span { font-family:'Poppins',sans-serif; font-size:20px; font-weight:600; color:hsl(252 74% 82%); }
  .cv-name { font-size:18px; font-weight:600; color:#fff; margin:0; letter-spacing:0; line-height:1.25; }
  .cv-role { font-size:12.5px; color:hsl(0 0% 100% / .8); margin:5px 0 0; line-height:1.4; transition:opacity .5s ease; }
  .cv-role b { color:hsl(252 74% 82%); font-weight:500; }
  .cv-card[data-pos="left"] .cv-role, .cv-card[data-pos="right"] .cv-role { opacity:0; }
  .cv-extra { margin-top:24px; opacity:1; transition:opacity .55s ease; }
  .cv-card[data-pos="left"] .cv-extra, .cv-card[data-pos="right"] .cv-extra { opacity:0; }
  .cv-mark { display:block; color:hsl(263 45% 52%); opacity:.5; margin-bottom:10px; }
  .cv-quote { font-size:14px; line-height:1.68; color:hsl(0 0% 100% / .9); font-weight:400; margin:0; }
  .cv-arrow { position:absolute; top:44%; transform:translateY(-50%); z-index:5; width:44px; height:44px; border-radius:999px; background:hsl(232 24% 14% / .82); border:1px solid hsl(0 0% 100% / .14); color:#fff; cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .35s ease, border-color .35s ease, box-shadow .35s ease, transform .35s cubic-bezier(.22,.61,.36,1); }
  .cv-arrow-prev { left:2%; }
  .cv-arrow-next { right:2%; }
  .cv-arrow:hover { background:hsl(263 45% 52% / .55); border-color:hsl(263 45% 52% / .5); box-shadow:0 0 18px hsl(263 45% 52% / .38); }
  .cv-arrow-prev:hover { transform:translateY(-50%) translateX(-2px); }
  .cv-arrow-next:hover { transform:translateY(-50%) translateX(2px); }
  .cv-dots { display:flex; justify-content:center; gap:8px; margin-top:30px; }
  .cv-dot { height:7px; width:7px; border-radius:999px; border:none; padding:0; cursor:pointer; background:hsl(0 0% 100% / .22); transition:width .35s cubic-bezier(.22,.61,.36,1), background .35s ease; }
  .cv-dot.is-on { width:26px; background:hsl(263 45% 52%); }
  @media (max-width:620px){ .cv-card { width:80vw; } .cv-card[data-pos="left"] { transform:translate(-136%,-50%) scale(.84); } .cv-card[data-pos="right"] { transform:translate(36%,-50%) scale(.84); } .cv-arrow { display:none; } }

  /* (reglas del hero anterior retiradas: el hero modular tiene sus estilos en css/hero-modular.css) */
  @media (max-width:860px){ .space-grid { grid-template-columns:minmax(0,1fr); /* antes 1fr: la tira de 7 miniaturas ensanchaba la página en móvil */ grid-template-areas:"text" "photo" "cta"; gap:32px; } .space-stage { aspect-ratio:4/3; } }


  /* ── Organizaciones — franja de logos con flechas casi invisibles ── */
  .lg-track { display:flex; align-items:center; gap:clamp(48px,7vw,96px); overflow-x:auto; scroll-behavior:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; padding:6px 60px; }
  .lg-track::-webkit-scrollbar { display:none; }
  .lg-logo { flex:0 0 auto; height:34px; width:auto; max-width:140px; object-fit:contain; filter:grayscale(1); opacity:.55; transition:opacity .5s ease, filter .5s ease; }
  .lg-logo:hover { filter:grayscale(0); opacity:1; }
  /* compensación óptica: mismo peso visual pese a proporciones distintas */
  .lg-logo[data-s="lg"] { height:52px; max-width:180px; }
  .lg-logo[data-s="xl"] { height:62px; max-width:200px; }
  .lg-logo[data-s="md"] { height:44px; max-width:164px; }
  .lg-arrow { position:absolute; top:50%; transform:translateY(-50%); z-index:20; width:40px; height:40px; border-radius:999px; background:none; border:none; cursor:pointer; color:hsl(232 24% 19%); opacity:.12; display:flex; align-items:center; justify-content:center; transition:opacity .4s ease, transform .4s cubic-bezier(.22,.61,.36,1); }
  .lg-arrow:hover { opacity:.7; }
  .lg-arrow-prev { left:2px; }
  .lg-arrow-next { right:2px; }
  .lg-arrow-prev:hover { transform:translateY(-50%) translateX(-2px); }
  .lg-arrow-next:hover { transform:translateY(-50%) translateX(2px); }

  @media (prefers-reduced-motion: reduce){ *{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;} .reveal,.reveal-2,.reveal-3,.reveal-4,.reveal-load,.reveal-load-2,.reveal-load-3,.reveal-load-4{opacity:1!important;transform:none!important;filter:none!important;} }

/* ── Testimonios: carrusel editorial ──────────────────────────────────────────────────────
   Proporción: el ancho de la cita manda (~45 caracteres por línea). Las flechas van debajo, no a
   los lados, para que las tres piezas usen todo el contenedor. Retrato recortado al círculo real
   (ocupa el 81,5 % del PNG): mismo rostro, sin margen transparente que alargue la pieza.
   La pista es una rejilla y cada pieza usa subgrid: nombre/cargo y cita empiezan a la misma
   altura en todas, aunque un cargo ocupe dos líneas. 3 visibles ≥1025 px, 2 en tablet, 1 en móvil.
   Navegación manual (tvCarousel en js/home.js). */
.tv-scene { --tv-per:3; --tv-gap:32px; --tv-photo:176px; position:relative; outline:none; letter-spacing:0; }
.tv-viewport { overflow:hidden; padding-top:calc(var(--tv-photo) / 2); }
.tv-track { display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - (var(--tv-per) - 1) * var(--tv-gap)) / var(--tv-per)); grid-template-rows:auto 1fr; column-gap:var(--tv-gap); will-change:transform; transition:transform .7s cubic-bezier(.22,.61,.36,1); }
.tv-track.is-jump { transition:none; }
.tv-card { position:relative; grid-row:span 2; display:grid; grid-template-rows:subgrid; row-gap:0; margin:0; padding:calc(var(--tv-photo) / 2 + 22px) 32px 34px; border-radius:20px; background:hsl(232 24% 15%); border:1px solid hsl(0 0% 100% / .07); }
.tv-photo { position:absolute; top:calc(var(--tv-photo) / -2); left:50%; width:var(--tv-photo); height:var(--tv-photo); margin-left:calc(var(--tv-photo) / -2); border-radius:999px; overflow:hidden; background:hsl(263 45% 30%); box-shadow:0 0 0 6px hsl(232 24% 12%); }
.tv-photo img { position:absolute; width:122.8%; height:122.8%; left:-11.4%; top:-11.4%; max-width:none; display:block; }
.tv-photo > span { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:46px; font-weight:600; color:#C0B0F4; }
.tv-id { text-align:center; padding-bottom:24px; }
.tv-name { font-size:19px; font-weight:600; line-height:1.3; letter-spacing:0; color:#fff; margin:0; }
.tv-role { font-size:13.5px; line-height:1.45; color:hsl(0 0% 100% / .7); margin:6px 0 0; text-wrap:balance; }
.tv-company { font-size:13.5px; font-weight:500; line-height:1.45; color:#C0B0F4; margin:2px 0 0; }
.tv-body { position:relative; margin:0; padding-top:30px; border-top:1px solid hsl(0 0% 100% / .1); }
.tv-q { position:absolute; top:-21px; left:-6px; padding:0 6px; background:hsl(232 24% 15%); font-size:52px; font-weight:600; line-height:1; color:#C0B0F4; }
.tv-quote { font-size:15.5px; line-height:1.7; font-weight:400; color:hsl(0 0% 100% / .86); margin:0; text-align:left; hyphens:manual; }
.tv-controls { display:flex; justify-content:center; gap:12px; margin-top:40px; }
.tv-btn { width:44px; height:44px; border-radius:999px; background:none; border:1px solid hsl(0 0% 100% / .2); color:hsl(0 0% 100% / .86); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:background .3s ease, border-color .3s ease, color .3s ease; }
.tv-btn:hover { background:hsl(263 45% 52% / .35); border-color:hsl(263 45% 52% / .6); color:#fff; }
.tv-btn:focus-visible, .tv-scene:focus-visible .tv-btn { outline:2px solid #C0B0F4; outline-offset:3px; }
@media (prefers-reduced-motion: reduce){ .tv-track { transition:none; } }
@media (max-width:1024px){ .tv-scene { --tv-per:2; --tv-gap:24px; --tv-photo:168px; } }
@media (max-width:680px){
  .tv-scene { --tv-per:1; --tv-gap:16px; --tv-photo:160px; }
  .tv-card { padding-left:24px; padding-right:24px; }
  .tv-quote { font-size:15px; }
}
