/* =============================================================================
   Método Laura Margarit — Funnel VSL (retargeting)
   Sistema visual extraído del CSS en producción de metodo.logopedainfantil.com
   Los tokens son los valores REALES de la marca, no aproximaciones.
   ========================================================================== */

:root{
  --ink:#11162d;
  --ink-soft:#3d435d;
  --violet:#6f48e9;
  --violet-deep:#4d2abb;
  --violet-night:#211744;
  --lavender:#eee8fb;
  --blush:#eee0df;
  --cream:#fbf8f4;
  --paper:#fffdfb;
  --gold:#c9944d;
  --line:#30235624;
  /* superficies de las tarjetas de testimonio, de la propia paleta */
  --msg:#efeafb;                 /* lavanda, un punto por encima de --lavender */
  --msg-line:#4f32a21f;
  --msg-soft:#6d6786;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,Baskerville,Georgia,serif;
  --sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --shadow-soft:0 30px 80px #2b1c541a;
  --shadow-card:0 18px 50px #2b1c5417;
  --ease:cubic-bezier(.2,.8,.2,1);
}

/* --- reset mínimo ---------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{
  scroll-behavior:smooth;
  background:var(--cream);
  scroll-padding-top:24px;
  -webkit-text-size-adjust:100%;
}
body{
  margin:0;
  min-width:320px;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,p{margin-top:0}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
::selection{background:#6f48e938;color:var(--ink)}
:focus-visible{outline:3px solid #6f48e970;outline-offset:4px}

.skip-link{
  position:fixed;top:12px;left:12px;z-index:999;
  background:var(--ink);color:#fff;border-radius:99px;
  padding:10px 16px;font-size:13px;
  transform:translateY(-160%);transition:transform .18s;
}
.skip-link:focus{transform:translateY(0)}

/* --- primitivas de marca --------------------------------------------------- */
.shell{width:min(100% - 80px,1400px);margin-inline:auto}

.eyebrow{
  display:flex;align-items:center;gap:9px;
  margin-bottom:22px;
  color:var(--violet-deep);
  font-size:11px;font-weight:720;
  letter-spacing:.17em;text-transform:uppercase;
}
.eyebrow-center{justify-content:center}
.light-eyebrow{color:#bba4ff}

.spark{
  display:inline-flex;align-items:center;justify-content:center;
  color:var(--violet);font-size:23px;line-height:1;
  animation:spark-pulse 4s ease-in-out infinite;
}
.spark-small{font-size:15px}

.button{
  display:inline-flex;align-items:center;justify-content:center;gap:22px;
  min-height:58px;padding:0 27px 1px;
  border:0;border-radius:999px;cursor:pointer;
  font-size:15px;font-weight:560;line-height:1;letter-spacing:-.01em;
  transition:transform .22s var(--ease),box-shadow .22s,background .22s;
}
.button span:last-child{font-size:20px;transition:transform .22s}
.button:hover{transform:translateY(-3px)}
.button:hover span:last-child{transform:translate(3px,-2px)}
.button:active{transform:translateY(0)}

.button-primary{
  color:#fff;
  background:linear-gradient(135deg,#ffffff24,#0000 44%),linear-gradient(110deg,#7650ef,#5330c7);
  box-shadow:0 14px 30px #522ebf40,inset 0 1px #ffffff47;
}
.button-primary:hover{box-shadow:0 20px 40px #522ebf57,inset 0 1px #ffffff59}

.button-cream{
  min-height:62px;color:var(--violet-deep);background:#fffaf4;
  box-shadow:0 18px 35px #04021242;
}

.button-ghost{
  min-height:52px;padding:0 24px;gap:14px;
  color:var(--violet-deep);background:transparent;
  font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;
  box-shadow:inset 0 0 0 1px #4c31a642;
}
.button-ghost:hover{background:#fff;box-shadow:inset 0 0 0 1px #4c31a642,0 10px 24px #2e1f5517}

/* --- cabecera: sólo firma de marca, sin navegación ------------------------- */
.site-header{
  position:relative;z-index:25;
  display:flex;align-items:center;justify-content:center;
  width:min(100% - 80px,1400px);min-height:94px;margin-inline:auto;
}
.brand{
  display:inline-flex;align-items:center;gap:9px;width:max-content;line-height:1;
  padding-block:9px; /* área táctil de 44px sin alterar la firma visual */
}
.brand-mark{color:var(--violet);font-size:31px;line-height:1;transform:translateY(-1px)}
.brand>span:last-child{display:flex;flex-direction:column;gap:3px}
.brand b{font-family:var(--serif);font-size:17px;font-weight:600;letter-spacing:-.02em}
.brand small{
  color:var(--ink-soft);font-size:8px;font-weight:700;
  letter-spacing:.21em;text-transform:uppercase;
}

/* =============================================================================
   1. HERO + VSL
   ========================================================================== */
.stage{
  position:relative;isolation:isolate;
  width:min(100% - 48px,1500px);margin:0 auto;
  padding:clamp(28px,2.4vw,34px) clamp(24px,5vw,80px) clamp(48px,4.6vw,66px);
  border:1px solid #ffffffb8;border-radius:30px;
  background:
    radial-gradient(circle at 73% 14%,#dec8e094,#0000 29%),
    radial-gradient(circle at 90% 86%,#b9aae257,#0000 31%),
    linear-gradient(135deg,#fffdfb 0%,#f8f2f0 56%,#eee6f1 100%);
  text-align:center;
}
.stage::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background-image:linear-gradient(#2f1f6106 1px,#0000 1px),linear-gradient(90deg,#2f1f6106 1px,#0000 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(circle at 50% 30%,#000,#0000 72%);
          mask-image:radial-gradient(circle at 50% 30%,#000,#0000 72%);
}

.stage-copy{max-width:900px;margin:0 auto}
.stage-copy .eyebrow{justify-content:center;margin-bottom:20px}

.stage h1{
  margin:0 auto 20px;max-width:880px;
  font-family:var(--serif);font-weight:400;
  font-size:clamp(38px,3.5vw,58px);line-height:1.02;letter-spacing:-.05em;
  text-wrap:balance;
}
.stage h1 em{color:var(--violet-deep);font-weight:400}

.stage-lead{
  max-width:620px;margin:0 auto clamp(24px,2.2vw,28px);
  color:var(--ink-soft);font-size:17px;line-height:1.7;
  text-wrap:balance;
}

/* --- reproductor ----------------------------------------------------------- */
.vsl{width:min(100%,880px);margin:0 auto}

@media (width >= 981px){
  /* El vídeo cede altura antes que el CTA: en pantallas bajas se encoge
     hasta 620px de ancho para que la llamada a la acción entre sin scroll. */
  .vsl{
    width:min(100%, 880px, max(460px, calc((100svh - 510px) * 16 / 9)));
  }
  .stage{padding-top:clamp(24px,2vw,30px)}
  .stage h1{font-size:clamp(38px,3.3vw,54px)}
  .stage-lead{margin-bottom:clamp(20px,1.8vw,24px)}
}

.vsl-frame{
  position:relative;width:100%;
  aspect-ratio:var(--vsl-ratio,16/9);
  border-radius:22px;overflow:hidden;
  background:linear-gradient(150deg,#2b1c58,#181532);
  box-shadow:0 24px 54px #2517481f,0 0 0 1px #ffffffbd;
}
.vsl-frame::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  border-radius:inherit;box-shadow:inset 0 1px #ffffff2e;
}
.vsl-frame iframe,
.vsl-frame video{
  position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
  object-fit:cover;background:#181532;
}

/* fachada: póster + play, el vídeo no se descarga hasta el clic */
.vsl-facade{
  position:absolute;inset:0;width:100%;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;
  padding:24px;border:0;cursor:pointer;
  background:transparent;color:#fff;
}
.vsl-facade img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
}
.vsl-facade::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(#0f0a2340 0%,#0000 38%,#12092b73 100%);
}
.vsl-play{
  position:relative;z-index:2;
  display:inline-flex;align-items:center;justify-content:center;
  width:88px;height:88px;border-radius:50%;
  background:linear-gradient(135deg,#ffffff24,#0000 44%),linear-gradient(110deg,#7650ef,#5330c7);
  box-shadow:0 14px 34px #1a0f3d5c,inset 0 1px #ffffff47;
  transition:transform .3s var(--ease),box-shadow .3s;
}
.vsl-play::before{
  content:"";
  border-left:20px solid #fff;
  border-top:12px solid transparent;
  border-bottom:12px solid transparent;
  margin-left:5px;
}
.vsl-facade:hover .vsl-play{transform:scale(1.06);box-shadow:0 20px 44px #1a0f3d70,inset 0 1px #ffffff59}
.vsl-facade:active .vsl-play{transform:scale(1)}
.vsl-label{
  position:relative;z-index:2;
  color:#ffffffd6;font-size:10px;font-weight:700;
  letter-spacing:.19em;text-transform:uppercase;
}

/* =============================================================================
   VSL — interfaz propia sobre Vimeo
   El iframe sólo aporta la imagen; todo lo que se ve y se toca es nuestro.
   ========================================================================== */
.vsl-player{position:relative;isolation:isolate}

.vsl-stage{position:absolute;inset:0}
.vsl-stage iframe{
  position:absolute;inset:0;width:100%;height:100%;
  border:0;display:block;pointer-events:none;   /* la interacción es la nuestra */
}

.vsl-ui{position:absolute;inset:0;z-index:2}

/* --- capa de carga --------------------------------------------------------- */
.vsl-loader{
  position:absolute;inset:0;z-index:4;
  display:flex;align-items:center;justify-content:center;
  pointer-events:none;
}
.vsl-loader[hidden]{display:none}
.vsl-spinner{
  width:34px;height:34px;border-radius:50%;
  border:2px solid #ffffff2e;border-top-color:#c2aaff;
  animation:vsl-spin .8s linear infinite;
}
@keyframes vsl-spin{to{transform:rotate(360deg)}}

/* --- superficie de pausa / reanudar ---------------------------------------- */
.vsl-surface{
  position:absolute;inset:0;z-index:3;
  width:100%;height:100%;padding:0;border:0;
  background:transparent;cursor:pointer;
}
.vsl-surface[hidden]{display:none}
.vsl-surface:focus-visible{outline:3px solid #ffffffb8;outline-offset:-6px;border-radius:18px}

/* --- overlay principal: activar el sonido ---------------------------------- */
.vsl-overlay{
  position:absolute;inset:0;z-index:5;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
  width:100%;height:100%;padding:24px;border:0;cursor:pointer;
  background:linear-gradient(#160e2b3d,#160e2b5c);
  -webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px);
  transition:opacity .32s var(--ease);
}
.vsl-overlay[hidden]{display:none}
.vsl-overlay:focus-visible{outline:3px solid #ffffffd6;outline-offset:-8px;border-radius:20px}

.vsl-overlay-icon{
  position:relative;
  display:inline-flex;align-items:center;justify-content:center;
  width:78px;height:78px;border-radius:50%;
  background:#fffdfbf2;
  box-shadow:0 16px 40px #150c3059, inset 0 1px #fff;
  transition:transform .3s var(--ease);
}
/* altavoz con ondas, en el violeta de la marca */
.vsl-overlay-icon::before{
  content:"";width:34px;height:34px;background:var(--violet-deep);
  -webkit-mask:var(--icon-sound) center/contain no-repeat;
          mask:var(--icon-sound) center/contain no-repeat;
}
/* anillo que respira, muy contenido */
.vsl-overlay-icon::after{
  content:"";position:absolute;inset:-10px;border-radius:50%;
  border:1px solid #ffffff59;
  animation:vsl-breathe 3.4s ease-in-out infinite;
}
.vsl-overlay[data-mode="play"] .vsl-overlay-icon::before{
  -webkit-mask-image:var(--icon-play);mask-image:var(--icon-play);
  margin-left:4px;
}

.vsl-overlay-text{
  color:#fff;font-size:13px;font-weight:700;
  letter-spacing:.17em;text-transform:uppercase;text-align:center;
  text-shadow:0 2px 14px #160e2b8c;
}

@media (hover:hover){
  .vsl-overlay:hover .vsl-overlay-icon{transform:scale(1.05)}
}
.vsl-overlay:active .vsl-overlay-icon{transform:scale(.99)}

@keyframes vsl-breathe{
  0%,100%{transform:scale(1);opacity:.5}
  50%{transform:scale(1.09);opacity:0}
}

/* --- aviso momentáneo de play / pausa -------------------------------------- */
.vsl-feedback{
  position:absolute;top:50%;left:50%;z-index:6;
  display:flex;align-items:center;justify-content:center;
  width:74px;height:74px;border-radius:50%;
  background:#160e2b8c;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  transform:translate(-50%,-50%) scale(.9);
  opacity:0;pointer-events:none;
}
.vsl-feedback::before{
  content:"";width:28px;height:28px;background:#fff;
  -webkit-mask:var(--icon-play) center/contain no-repeat;
          mask:var(--icon-play) center/contain no-repeat;
  margin-left:3px;
}
.vsl-feedback[data-kind="pause"]::before{
  -webkit-mask-image:var(--icon-pause);mask-image:var(--icon-pause);margin-left:0;
}
.vsl-feedback.is-on{animation:vsl-flash .62s var(--ease) forwards}
@keyframes vsl-flash{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.86)}
  22%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  70%{opacity:1}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1.08)}
}

/* --- controles mínimos ------------------------------------------------------ */
.vsl-controls{
  position:absolute;right:14px;bottom:16px;z-index:7;
  display:flex;align-items:center;gap:8px;
}
.vsl-controls[hidden]{display:none}

.vsl-ctrl{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;padding:0;
  border:1px solid #ffffff3d;border-radius:50%;
  background:#160e2b6b;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  cursor:pointer;
  transition:background .22s,border-color .22s,transform .22s var(--ease);
}
.vsl-ctrl::before{
  content:"";width:19px;height:19px;background:#fff;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
}
@media (hover:hover){
  .vsl-ctrl:hover{background:#160e2b9e;border-color:#ffffff70;transform:translateY(-1px)}
}
.vsl-ctrl:focus-visible{outline:3px solid #ffffffd6;outline-offset:3px}

.vsl-mute::before{-webkit-mask-image:var(--icon-sound);mask-image:var(--icon-sound)}
.vsl-mute[data-muted="true"]::before{-webkit-mask-image:var(--icon-muted);mask-image:var(--icon-muted)}
.vsl-fs::before{-webkit-mask-image:var(--icon-fs);mask-image:var(--icon-fs)}

/* --- progreso: real, fino y no interactivo ---------------------------------- */
.vsl-progress{
  position:absolute;left:0;right:0;bottom:0;z-index:6;
  height:3px;background:#ffffff29;pointer-events:none;
}
.vsl-progress[hidden]{display:none}
.vsl-progress-fill{
  display:block;width:100%;height:100%;transform-origin:left;transform:scaleX(0);
  background:linear-gradient(90deg,#7650ef,#a98bed);
  transition:transform .18s linear;
}

/* --- ver de nuevo ------------------------------------------------------------ */
.vsl-replay{
  position:absolute;top:50%;left:50%;z-index:7;
  display:inline-flex;align-items:center;gap:11px;
  min-height:52px;padding:0 24px;border:0;border-radius:999px;
  background:#fffaf4;color:var(--violet-deep);
  font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  cursor:pointer;transform:translate(-50%,-50%);
  box-shadow:0 18px 35px #04021242;
  transition:transform .22s var(--ease);
}
.vsl-replay[hidden]{display:none}
.vsl-replay-icon{
  width:17px;height:17px;background:var(--violet-deep);flex:none;
  -webkit-mask:var(--icon-replay) center/contain no-repeat;
          mask:var(--icon-replay) center/contain no-repeat;
}
@media (hover:hover){.vsl-replay:hover{transform:translate(-50%,-50%) translateY(-2px)}}
.vsl-replay:focus-visible{outline:3px solid #ffffffd6;outline-offset:3px}

/* --- error ------------------------------------------------------------------- */
.vsl-error{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;
  padding:30px;text-align:center;
}
.vsl-error p{margin:0;color:#ffffffd1;font-size:15px}
.vsl-retry{min-height:48px;font-size:13px}

/* Iconos como máscaras: sin peticiones extra y heredan el color. */
.vsl-player,.vsl-feedback{
  --icon-sound:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M11 5 6 9H3v6h3l5 4z"/><path d="M15.4 8.6a4.8 4.8 0 0 1 0 6.8"/><path d="M18.6 5.4a9.3 9.3 0 0 1 0 13.2"/></svg>');
  --icon-muted:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="1.9" stroke-linecap="round" stroke-linejoin="round"><path d="M11 5 6 9H3v6h3l5 4z"/><path d="m16 9 5 6"/><path d="m21 9-5 6"/></svg>');
  --icon-play:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black"><path d="M7 4.5v15l13-7.5z"/></svg>');
  --icon-pause:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black"><rect x="6" y="4.5" width="4.2" height="15" rx="1.2"/><rect x="13.8" y="4.5" width="4.2" height="15" rx="1.2"/></svg>');
  --icon-fs:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 9V4h5"/><path d="M20 9V4h-5"/><path d="M4 15v5h5"/><path d="M20 15v5h-5"/></svg>');
  --icon-replay:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2.1" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 3-6.7"/><path d="M3 4v5h5"/></svg>');
}

@media (width <= 680px){
  .vsl-overlay{gap:14px}
  .vsl-overlay-icon{width:66px;height:66px}
  .vsl-overlay-icon::before{width:29px;height:29px}
  .vsl-overlay-text{font-size:11px;letter-spacing:.15em}
  .vsl-controls{right:10px;bottom:12px;gap:6px}
  .vsl-replay{min-height:48px;padding:0 20px;font-size:12px}
}

@media (prefers-reduced-motion:reduce){
  .vsl-overlay-icon::after{animation:none;opacity:.35}
  .vsl-progress-fill{transition:none}
}

/* estado sin vídeo cargado: escenario tipográfico, nunca una imagen inventada */
.vsl-empty{
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  padding:32px;text-align:center;color:#fff;
  background:
    radial-gradient(circle at 50% 8%,#9777e261,#0000 46%),
    linear-gradient(145deg,#2b1c58,#181532);
}
.vsl-empty .spark{color:#a990ec}
.vsl-empty b{
  font-family:var(--serif);font-weight:400;font-size:clamp(20px,2.4vw,27px);
  letter-spacing:-.03em;line-height:1.2;
}
.vsl-empty small{
  max-width:420px;color:#ffffff8a;font-size:11px;line-height:1.6;
  letter-spacing:.04em;
}

/* Aviso sanitario bajo el reproductor. Es la baza de autoridad del funnel,
   así que se le da presencia reutilizando el tratamiento de
   .hero-guarantees > span de la web de Laura. */
.vsl-note{
  display:flex;align-items:flex-start;gap:10px;
  width:min(100%,680px);margin:18px auto 0;padding:11px 16px;
  border:1px solid var(--line);border-radius:8px;
  background:#ffffff85;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  color:#485069;font-size:13px;line-height:1.45;text-align:left;
}
.vsl-note::before{
  content:"⚠";
  flex:none;color:var(--gold);font-size:15px;line-height:1.35;
}

/* =============================================================================
   2. PRUEBA SOCIAL
   ========================================================================== */
.proof{padding-top:clamp(110px,11vw,170px);padding-bottom:clamp(110px,11vw,170px)}

.proof-heading{max-width:850px;margin:0 auto 72px;text-align:center}
.proof-heading h2{
  margin:0;
  font-family:var(--serif);font-weight:400;
  font-size:clamp(40px,4.3vw,64px);line-height:1.02;letter-spacing:-.052em;
  text-wrap:balance;
}
.proof-heading h2 em{color:var(--violet-deep);font-weight:400}

.testimonial-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;
  list-style:none;margin:0;padding:0;
}
/* Con una o dos tarjetas, la rejilla de tres dejaría un hueco a la derecha.
   Sólo en escritorio: por debajo mandan los saltos de más abajo. */


.testimonial{
  display:flex;flex-direction:column;min-width:0;height:100%;
  border:1px solid #432e701f;border-radius:22px;overflow:hidden;
  background:radial-gradient(circle at 50% 0,#e6dbf08f,#0000 46%),#ffffff8a;
  box-shadow:0 16px 45px #3020550b;
  transition:transform .35s var(--ease),box-shadow .35s,border-color .35s;
}
@media (hover:hover){
  .testimonial:hover{
    transform:translateY(-2px);
    border-color:#5b38b43d;
    box-shadow:0 24px 55px #2f1e5a1c;
  }
}

.testimonial-media{
  position:relative;aspect-ratio:4/5;background:#e9e2f2;overflow:hidden;
}
.testimonial-media img{width:100%;height:100%;object-fit:cover;object-position:center 40%}
.testimonial-media--capture{aspect-ratio:auto;padding:18px;background:var(--lavender)}
.testimonial-media--capture img{height:auto;border-radius:12px;box-shadow:0 8px 20px #2b1c5417}

.testimonial-play{
  position:absolute;inset:0;width:100%;height:100%;
  display:flex;align-items:flex-end;justify-content:flex-start;
  padding:16px;border:0;cursor:pointer;background:transparent;
}
.testimonial-play::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(#0000 46%,#160e2b8c);
  transition:opacity .35s;
}
.testimonial-play i{
  position:relative;z-index:2;
  display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:50%;
  background:#fffdfbe6;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  box-shadow:0 8px 20px #1a0f3d38;
  transition:transform .3s var(--ease);
}
.testimonial-play i::after{
  content:"";
  border-left:12px solid var(--violet-deep);
  border-top:7px solid transparent;
  border-bottom:7px solid transparent;
  margin-left:3px;
}
@media (hover:hover){.testimonial-play:hover i{transform:scale(1.07)}}

.testimonial-body{
  display:flex;flex-direction:column;flex:1;
  padding:22px 20px 24px;
  border-top:1px solid var(--line);
}
.testimonial-body blockquote{
  margin:0 0 16px;
  font-family:var(--serif);font-weight:400;
  font-size:17px;line-height:1.42;letter-spacing:-.02em;
  color:var(--ink);
}
.testimonial-body blockquote p{margin:0 0 12px}
.testimonial-body blockquote p:last-child{margin-bottom:0}
.testimonial-meta{margin-top:auto;display:flex;flex-direction:column;gap:3px}

/* Testimonio sólo texto: se trata como una cita editorial, para que llene
   la tarjeta con criterio en lugar de dejar un hueco junto a las de foto. */
.testimonial--quote{background:radial-gradient(circle at 50% 0,#e6dbf0b5,#0000 60%),var(--lavender)}
.testimonial--quote .testimonial-body{
  justify-content:center;
  padding:34px 28px 30px;
  border-top:0;
}
.testimonial--quote .testimonial-meta{margin-top:18px}
.testimonial--quote blockquote{
  margin-bottom:22px;
  font-size:clamp(20px,1.6vw,25px);line-height:1.28;
}
.quote-mark{
  display:block;height:34px;margin-bottom:6px;
  color:#a990ec;font-family:var(--serif);font-size:60px;line-height:1;
}
.testimonial-meta b{font-family:var(--serif);font-size:15px;font-weight:400;font-style:italic}
.testimonial-meta small{
  color:#747788;font-size:9px;font-weight:700;
  letter-spacing:.12em;text-transform:uppercase;
}

/* --- testimonios en vídeo: vertical, centrados, con aire ------------------- */
.video-testimonials{
  display:grid;justify-content:center;
  grid-template-columns:repeat(auto-fit,minmax(0,358px));
  gap:24px;list-style:none;margin:0 0 52px;padding:0;
}
.video-testimonials[hidden]{display:none}
.video-testimonials .testimonial-media{aspect-ratio:var(--ratio,9/16)}
.video-testimonials .testimonial-body:empty{display:none}
/* En el testimonio en vídeo el play va centrado: es la invitación principal. */
.video-testimonials .testimonial-play{align-items:center;justify-content:center}
.video-testimonials .testimonial-play i{width:62px;height:62px}
.video-testimonials .testimonial-play i::after{
  border-left-width:16px;border-top-width:9px;border-bottom-width:9px;margin-left:4px;
}

/* el vídeo sustituye a la fachada dentro de la misma caja */
.testimonial-media video,
.testimonial-media iframe{
  position:absolute;inset:0;width:100%;height:100%;
  border:0;display:block;object-fit:cover;background:#181532;
}

/* --- rejilla de testimonios ------------------------------------------------
   Todas las tarjetas miden lo mismo: `grid-auto-rows:1fr` iguala las filas y
   el texto que no cabe se recorta y se abre en la ventana modal.            */
/* Una sola columna en todos los anchos: Michel quiere que el diseño de PC y
   el de móvil se parezcan. Altura natural, no uniforme: a una columna una
   tarjeta de alto fijo dejaría huecos enormes. */
.tgrid{
  display:grid;grid-template-columns:minmax(0,1fr);gap:20px;
  width:min(100%,720px);margin-inline:auto;
  list-style:none;padding:0;
}

/* el foco se marca en la tarjeta entera, no en el botón interior */
.tcard:has(:focus-visible){outline:3px solid #6f48e970;outline-offset:4px}
.tcard-open:focus-visible{outline:none}

.tcard{
  display:flex;flex-direction:column;min-width:0;
  border-radius:22px;overflow:hidden;
  transition:transform .35s var(--ease),box-shadow .35s,border-color .35s;
}
/* El mensaje largo se recorta a una altura cómoda y se abre en la ventana. */
.tcard--message .tcard-text{max-height:280px}

/* El CTA intercalado ocupa su propia fila, sin aspecto de tarjeta. */
.tcard-cta{list-style:none}
.tcard-cta .cta-inline{margin-top:6px;margin-bottom:6px}
@media (hover:hover){
  .tcard:hover{transform:translateY(-2px)}
}

/* --- tarjeta de vídeo: miniatura arriba, historia debajo ------------------- */
.tcard--video{
  border:1px solid var(--msg-line);
  background:radial-gradient(circle at 50% 0,#e6dbf07a,#0000 58%),var(--paper);
  box-shadow:0 16px 45px #3020550b;
}
.tcard-open{
  display:flex;flex-direction:column;width:100%;height:100%;
  padding:0;border:0;cursor:pointer;background:0 0;text-align:left;color:inherit;
}

.tcard-thumb{
  position:relative;display:block;flex:none;
  width:100%;aspect-ratio:16/9;overflow:hidden;
  background:#2b1c58;border-radius:21px 21px 0 0;
}
.tcard-thumb img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
  transition:transform .6s var(--ease);
}
/* apoyo mínimo bajo el play, sin apagar la cara */
.tcard-thumb::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(circle at 50% 50%,#1d123c2e,#1d123c00 34%);
}
@media (hover:hover){
  .tcard--video:hover .tcard-thumb img{transform:scale(1.035)}
}

.tcard-play{
  position:absolute;top:50%;left:50%;z-index:2;
  display:flex;align-items:center;justify-content:center;
  width:60px;height:60px;border-radius:50%;
  transform:translate(-50%,-50%);
  background:linear-gradient(135deg,#ffffff24,#0000 44%),linear-gradient(110deg,#7650ef,#5330c7);
  box-shadow:0 12px 30px #1a0f3d5c,inset 0 1px #ffffff47;
  transition:transform .3s var(--ease),box-shadow .3s;
}
.tcard-play::after{
  content:"";
  border-left:17px solid #fff;
  border-top:10px solid transparent;border-bottom:10px solid transparent;
  margin-left:4px;
}
@media (hover:hover){
  .tcard--video:hover .tcard-play{
    transform:translate(-50%,-50%) scale(1.08);
    box-shadow:0 18px 40px #1a0f3d70,inset 0 1px #ffffff59;
  }
}

.tcard-info{
  display:flex;flex-direction:column;flex:1;gap:7px;
  padding:20px 22px 22px;
}
.tcard-name{
  color:var(--violet-deep);font-size:10px;font-weight:800;
  letter-spacing:.19em;text-transform:uppercase;
}
.tcard-story{
  font-family:var(--serif);font-weight:400;
  font-size:19px;line-height:1.26;letter-spacing:-.03em;
  color:var(--ink);text-wrap:balance;
}
.tcard-context{
  margin-top:auto;
  color:var(--msg-soft);font-size:9px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;
}

/* --- cabecera del caso: situación de partida y cambio ----------------------
   Michel: la persona tiene que entender el caso de un vistazo. Dos líneas por
   bloque, nada de párrafos. Sólo aparece si el testimonio real aporta el dato. */
.case-head{padding:20px 22px 0}
.tcard--message .case-head{padding:22px 22px 0}

.case-tag{
  margin:0 0 16px;
  font-family:var(--serif);font-weight:400;
  font-size:clamp(18px,1.7vw,21px);line-height:1.24;letter-spacing:-.03em;
  color:var(--ink);text-wrap:balance;
}

.case-ba{display:grid;gap:12px}
@media (width >= 681px){
  /* el antes y el ahora se leen mejor enfrentados */
  .case-ba{grid-template-columns:1fr 1fr;gap:18px}
}

.case-step{padding-left:13px;border-left:2px solid var(--line)}
.case-step--after{border-left-color:var(--violet)}
.case-step span{
  display:block;margin-bottom:4px;
  font-size:9px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--msg-soft);
}
.case-step--after span{color:var(--violet-deep)}
.case-step p{margin:0;color:#5b6076;font-size:14.5px;line-height:1.55}

/* la portada del vídeo/audio deja de redondear abajo: sigue la cabecera */
.tcard--video .case-head,
.tcard--audio .case-head{padding-bottom:2px}

/* --- historia destacada -----------------------------------------------------
   Un punto más de presencia, sin etiquetas ni copy inventado. */
.tcard--destacado{
  border-color:#5b38b43d;
  box-shadow:0 22px 55px #2f1e5a1f;
}

/* --- tarjeta de nota de voz ------------------------------------------------
   Sin foto de quien habla: la portada es un motivo de marca, no una imagen
   inventada. Las barras son decorativas y estáticas, no simulan progreso. */
.tcard--audio{
  border:1px solid var(--msg-line);
  background:radial-gradient(circle at 50% 0,#e6dbf07a,#0000 58%),var(--paper);
  box-shadow:0 16px 45px #3020550b;
}
.tcard-audio-art{
  position:relative;display:flex;align-items:center;justify-content:center;
  width:100%;aspect-ratio:16/9;flex:none;
  border-radius:21px 21px 0 0;overflow:hidden;
  background:radial-gradient(circle at 50% 30%,#9777e252,#0000 55%),
             linear-gradient(150deg,#2b1c58,#181532);
}
.tcard-wave{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;gap:4px;
  padding:0 26px;
  -webkit-mask-image:linear-gradient(90deg,#0000,#000 18%,#000 82%,#0000);
          mask-image:linear-gradient(90deg,#0000,#000 18%,#000 82%,#0000);
}
.tcard-wave i{
  flex:1;min-width:2px;max-width:4px;border-radius:99px;
  background:#c2aaff6b;
}
/* alturas fijas: dibujan una onda, no miden nada */
.tcard-wave i:nth-child(3n){height:34%}
.tcard-wave i:nth-child(3n+1){height:58%}
.tcard-wave i:nth-child(3n+2){height:20%}
.tcard-wave i:nth-child(5n){height:72%}
.tcard-wave i:nth-child(7n){height:46%}

.tcard--audio .tcard-play{position:relative;top:auto;left:auto;transform:none}
@media (hover:hover){
  .tcard--audio:hover .tcard-play{transform:scale(1.08)}
}

/* --- audio dentro de la ventana -------------------------------------------- */
.modal--audio{--modal-max:520px}
.modal-audio{width:100%;margin-top:4px;display:block}

/* --- tarjeta de mensaje ---------------------------------------------------- */
.tcard--message{
  padding:26px 26px 20px;
  border:1px solid var(--msg-line);
  background:var(--msg);color:var(--ink);
}
.tcard-text{position:relative;flex:1;min-height:0;overflow:hidden}
.tcard-text p{
  margin:0 0 14px;
  font-size:15px;line-height:1.62;letter-spacing:-.005em;
}
.tcard-text p:last-child{margin-bottom:0}

/* el texto se desvanece de verdad, sin dejar media línea legible debajo */
.is-clipped .tcard-text{
  -webkit-mask-image:linear-gradient(#000 62%,#0000 94%);
          mask-image:linear-gradient(#000 62%,#0000 94%);
}
.tcard-more{
  align-self:flex-start;margin-top:0;
  padding:13px 4px 13px 0;          /* área táctil de 45px */
  border:0;background:0 0;cursor:pointer;
  color:var(--violet-deep);font-size:12px;font-weight:700;
  letter-spacing:.04em;text-decoration:underline;text-underline-offset:3px;
}
.tcard-more:hover{color:var(--violet)}

.tcard-foot{
  display:flex;align-items:flex-end;justify-content:space-between;gap:14px;
  margin-top:16px;
}
.tcard-sign{display:flex;flex-direction:column;gap:2px}
.tcard-sign b{font-family:var(--serif);font-size:16px;font-weight:400;font-style:italic}
.tcard-sign small,
.tcard-source{
  color:var(--msg-soft);font-size:9px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;
}
.tcard-time{color:var(--msg-soft);font-size:12px;opacity:.8;margin-left:auto}

/* --- ventana modal --------------------------------------------------------- */
.modal{
  /* La anchura sale de dos variables, así el formato y el margen móvil no
     compiten por especificidad. */
  width:min(100% - var(--modal-gutter,32px), var(--modal-max,760px));
  max-height:88svh;padding:0;
  border:1px solid #ffffffb8;border-radius:26px;
  background:var(--paper);color:var(--ink);
  box-shadow:var(--shadow-soft);overflow:visible;
}
.modal--portrait{--modal-max:420px}
.modal--landscape{--modal-max:880px}
.modal--text{--modal-max:620px}

.modal::backdrop{
  background:#170f2ec4;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.modal[open]{animation:modal-in .32s var(--ease) both}
.modal[open]::backdrop{animation:fade-in .32s both}

.modal-inner{padding:30px clamp(22px,3vw,38px) 34px;max-height:88svh;overflow-y:auto;border-radius:26px}
.modal-title{
  margin:0 0 20px;
  font-family:var(--serif);font-weight:400;font-size:24px;letter-spacing:-.03em;
}
.modal-title:empty{display:none}

.modal-video{
  position:relative;width:100%;aspect-ratio:var(--ratio,16/9);
  max-height:64svh;margin-inline:auto;
  border-radius:16px;overflow:hidden;background:#181532;
}
.modal-video video,
.modal-video iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
  object-fit:contain;background:#181532;
}

.modal-text blockquote{margin:0;font-size:15.5px;line-height:1.7}
.modal-text blockquote p{margin:0 0 16px}
.modal-text blockquote p:last-child{margin-bottom:0}
.modal-time{margin:18px 0 0;color:var(--msg-soft);font-size:12px;text-align:right}

.modal-close{
  position:absolute;top:-14px;right:-14px;z-index:3;
  display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;border:1px solid var(--line);border-radius:50%;
  background:var(--paper);color:var(--ink);cursor:pointer;
  font-size:26px;line-height:1;
  box-shadow:var(--shadow-card);
  transition:transform .22s var(--ease),background .22s;
}
.modal-close:hover{transform:scale(1.06);background:#fff}

@keyframes modal-in{
  from{opacity:0;transform:translateY(12px) scale(.985)}
  to{opacity:1;transform:none}
}
@keyframes fade-in{from{opacity:0}to{opacity:1}}

/* --- CTA repetido ---------------------------------------------------------- */
.cta-inline{
  display:flex;flex-direction:column;align-items:center;gap:12px;
  margin-top:clamp(26px,2.6vw,34px);
}
.cta-inline--proof{margin-top:clamp(56px,6vw,84px)}
.cta-note{
  margin:0;color:#747787;font-size:10px;font-weight:650;
  letter-spacing:.13em;text-transform:uppercase;text-align:center;
}

/* huecos de maqueta: sin nombres, sin citas, sin imágenes inventadas */
.testimonial--slot{
  background:#ffffff5c;
  border-style:dashed;border-color:#4f32a233;
  box-shadow:none;
}
.testimonial--slot .testimonial-media{
  display:flex;align-items:center;justify-content:center;
  background:repeating-linear-gradient(135deg,#f3eefa,#f3eefa 12px,#ece5f7 12px,#ece5f7 24px);
}
.testimonial--slot .testimonial-media .spark{color:#b7a6e3;font-size:28px;animation:none}
.testimonial--slot .testimonial-body{gap:10px}
.testimonial--slot p{
  margin:0;color:#8b8ea0;font-size:11px;line-height:1.55;
}
.testimonial--slot b{
  color:#5f5a78;font-size:10px;font-weight:700;
  letter-spacing:.13em;text-transform:uppercase;
}

.proof-pending{
  max-width:640px;margin:36px auto 0;padding:22px 26px;
  border:1px dashed #4f32a24d;border-radius:16px;background:#ffffff70;
  text-align:center;color:#6c7080;font-size:12px;line-height:1.65;
}
.proof-pending b{color:var(--violet-deep);font-weight:700}

.proof-more{display:flex;justify-content:center;margin-top:44px}
.proof-more[hidden]{display:none}

/* =============================================================================
   3. CTA FINAL
   ========================================================================== */
.closing{
  position:relative;isolation:isolate;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  min-height:570px;padding:90px 30px;text-align:center;color:#fff;
  background:
    radial-gradient(circle at 50% 115%,#885de8bd,#0000 39%),
    linear-gradient(145deg,#251a4b,#14132c);
}
.closing::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background-image:linear-gradient(#ffffff09 1px,#0000 1px),linear-gradient(90deg,#ffffff09 1px,#0000 1px);
  background-size:72px 72px;
  -webkit-mask-image:radial-gradient(circle,#000,#0000 70%);
          mask-image:radial-gradient(circle,#000,#0000 70%);
}
.closing-glow{
  position:absolute;top:50%;left:50%;z-index:-1;
  width:min(80vw,900px);height:min(80vw,900px);
  border:1px solid #ffffff14;border-radius:50%;
  transform:translate(-50%,-30%);
  box-shadow:0 0 0 80px #ffffff05,0 0 0 160px #ffffff03;
}
.closing .eyebrow{margin-bottom:25px}
.closing h2{
  margin:0 0 25px;
  font-family:var(--serif);font-weight:400;
  font-size:clamp(48px,6vw,86px);line-height:.96;letter-spacing:-.06em;
  text-wrap:balance;
}
.closing h2 em{color:#c2aaff;font-weight:400}
.closing>p{max-width:560px;margin:0 0 30px;color:#ffffff9e;font-size:14px}
.closing>small{
  margin-top:17px;color:#ffffff9c;font-size:10px;
  letter-spacing:.08em;text-transform:uppercase;
}
.closing-spark{position:absolute;color:#a98bed;animation:spark-pulse 4s ease-in-out infinite}
.spark-one{top:17%;left:7%;font-size:38px}
.spark-two{bottom:21%;right:8%;font-size:26px;animation-delay:-2s}

/* --- pie ------------------------------------------------------------------- */
.site-footer{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  width:min(100% - 80px,1400px);min-height:130px;margin-inline:auto;
}
.site-footer p{margin:0;color:#7b7e8c;font-family:var(--serif);font-size:14px;font-style:italic}

/* =============================================================================
   MOVIMIENTO
   ========================================================================== */
@keyframes spark-pulse{
  0%,100%{opacity:.5;transform:scale(.85) rotate(0)}
  50%{opacity:1;transform:scale(1.08) rotate(10deg)}
}

.reveal{
  opacity:0;transform:translateY(18px);
  transition:opacity .7s var(--ease),transform .7s var(--ease);
  transition-delay:var(--delay,0s);
}
.reveal.is-in{opacity:1;transform:none}

/* el vídeo entra con un movimiento casi imperceptible */
.reveal-vsl{
  opacity:0;transform:translateY(10px) scale(.985);
  transition:opacity .6s var(--ease),transform .6s var(--ease);
}
.reveal-vsl.is-in{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
  .reveal,.reveal-vsl{opacity:1;transform:none}
}

/* =============================================================================
   RESPONSIVE
   ========================================================================== */

/* tablet: 2 columnas de testimonios */
@media (width <= 980px){
  .stage h1{font-size:clamp(40px,6vw,54px)}
}

@media (width <= 960px){
  .shell,.site-header,.site-footer{width:calc(100% - 40px)}
  .tgrid{gap:16px}
  .tcard--message .tcard-text{max-height:240px}
  .tcard--message{padding:22px 20px 18px}
  .modal{--modal-gutter:24px;border-radius:22px}
  .modal-inner{padding:26px 20px 28px;border-radius:22px}
  .modal-close{top:-12px;right:-6px}
  .modal-video{max-height:58svh}
  .site-header{min-height:76px}
  .brand-mark{font-size:27px}
  .brand b{font-size:15px}

  .stage{
    width:calc(100% - 20px);
    padding:36px 20px 46px;
    border-radius:24px;
  }
  .stage::before{background-image:none}
  .stage h1{
    margin-bottom:16px;
    font-size:clamp(34px,9.2vw,48px);line-height:1.02;
  }
  .stage-lead{margin-bottom:26px;font-size:15px;line-height:1.62}
  .vsl-frame{border-radius:18px}
  .vsl-play{width:70px;height:70px}
  .vsl-play::before{border-left-width:17px;border-top-width:10px;border-bottom-width:10px}

  .proof{padding-top:90px;padding-bottom:100px}
  .proof-heading{margin-bottom:44px}
  .proof-heading h2{font-size:clamp(34px,9.4vw,48px)}
  .proof-more{margin-top:34px}

  .closing{min-height:600px;padding:82px 22px}
  .closing h2{font-size:clamp(42px,12.4vw,62px)}
  .closing .button{width:100%;max-width:390px;padding-inline:19px;font-size:14px}
  .spark-one{top:14%;left:8%}
  .spark-two{bottom:18%;right:8%}

  .site-footer{
    flex-direction:column;align-items:flex-start;gap:18px;
    min-height:170px;padding-block:34px;
  }
}

/* móvil: 1 columna */
@media (width <= 680px){
}

@media (width <= 385px){
  .shell,.site-header,.site-footer{width:calc(100% - 34px)}
  .stage{padding-inline:17px}
  .stage h1{font-size:clamp(34px,10.6vw,44px)}
}
