/* Landing pública de PsicoWorld (index.php). Mobile-first, sin dependencias. */
*,*::before,*::after{box-sizing:border-box;}
:root{
  --violet:oklch(46% 0.13 292);
  --violet-dark:oklch(34% 0.11 292);
  --violet-soft:oklch(93% 0.03 292);
  --green:oklch(60% 0.135 152);
  --green-dark:oklch(44% 0.12 152);
  --green-soft:oklch(94% 0.045 152);
  --orange:oklch(73% 0.15 55);
  --orange-dark:oklch(50% 0.13 50);
  --orange-soft:oklch(95% 0.05 70);
  --ink:oklch(26% 0.025 280);
  --ink-soft:oklch(46% 0.02 280);
  --paper:oklch(97% 0.008 95);
  --canvas:oklch(94.5% 0.012 95);
  --card:oklch(99.5% 0.002 95);
  --border:oklch(90% 0.01 95);
  --red:oklch(52% 0.15 25);
  --radius:20px;
  --shadow:0 18px 40px -28px oklch(26% 0.03 280 / 0.35);
  --focus:0 0 0 3px var(--paper),0 0 0 5px var(--violet);
}
html{scroll-behavior:smooth;scroll-padding-top:90px;-webkit-text-size-adjust:100%;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Nunito',system-ui,-apple-system,'Segoe UI',sans-serif;font-size:16px;line-height:1.55;overflow-x:hidden;}
h1,h2,h3{font-family:'Quicksand','Nunito',sans-serif;font-weight:700;margin:0;line-height:1.2;text-wrap:balance;}
p{margin:0;}
a{color:var(--violet);}
img,svg{display:block;max-width:100%;}
ul,ol{margin:0;padding:0;}
:focus-visible{outline:none;box-shadow:var(--focus);border-radius:8px;}
.ico{width:22px;height:22px;flex-shrink:0;}

.wrap{max-width:1140px;margin:0 auto;padding:0 16px;}
.wrap-narrow{max-width:780px;}
@media (min-width:640px){.wrap{padding:0 24px;}}
.section{padding:64px 0;}
.section-sm{padding:32px 0;}
@media (min-width:900px){.section{padding:96px 0;}}

.skip-link{position:absolute;left:12px;top:-60px;z-index:100;background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;font-weight:700;}
.skip-link:focus{top:12px;}

/* ---- Botones ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:'Quicksand',sans-serif;font-weight:700;font-size:15px;line-height:1.2;padding:13px 22px;min-height:46px;border-radius:14px;cursor:pointer;border:1.5px solid transparent;text-decoration:none;text-align:center;transition:transform .15s ease,box-shadow .25s ease,background-color .2s ease;}
.btn:hover{transform:translateY(-1px);}
.btn-primary{position:relative;overflow:hidden;background:linear-gradient(120deg,var(--green),var(--green-dark));color:#fff;box-shadow:0 12px 22px -10px oklch(55% 0.13 152 / 0.5);}
.btn-primary:hover{box-shadow:0 18px 32px -10px oklch(55% 0.13 152 / 0.68);}
.btn-primary::before{content:"";position:absolute;top:0;left:-60%;width:35%;height:100%;background:linear-gradient(115deg,transparent,oklch(100% 0 0 / 0.5),transparent);transform:skewX(-18deg);transition:left .65s cubic-bezier(.2,.7,.3,1);pointer-events:none;}
.btn-primary:hover::before{left:130%;}
.btn-ghost{background:var(--card);color:var(--ink);border-color:var(--border);}
.btn-ghost:hover{border-color:var(--violet);}
.btn-light{background:#fff;color:var(--violet-dark);}
.btn-outline-light{background:transparent;color:#fff;border-color:oklch(100% 0 0 / 0.55);}
.btn-outline-light:hover{background:oklch(100% 0 0 / 0.1);}
.btn-small{padding:9px 16px;min-height:40px;font-size:14px;border-radius:12px;}
.btn-lg{padding:15px 26px;font-size:16px;}
.btn-block{width:100%;}

/* ---- Etiquetas ---- */
.tag-pronto{display:inline-block;vertical-align:middle;margin-left:4px;padding:2px 9px;border-radius:999px;background:var(--orange-soft);color:var(--orange-dark);font-family:'Nunito',sans-serif;font-size:11.5px;font-weight:800;letter-spacing:.2px;white-space:nowrap;line-height:1.5;}
.tag-plan{display:inline-block;margin-top:14px;padding:3px 10px;border-radius:999px;background:var(--violet-soft);color:var(--violet);font-size:12.5px;font-weight:800;}
.kicker{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--green-dark);}
.kicker .ico{width:18px;height:18px;}
.kicker-light{color:oklch(88% 0.08 152);}
.kicker-orange{color:var(--orange-dark);}

/* ---- Header ---- */
.site-header{position:sticky;top:0;z-index:40;padding:10px 12px 0;transition:transform .35s cubic-bezier(.2,.7,.3,1);}
.site-header.is-hidden{transform:translateY(calc(-100% - 12px));}
.header-inner{max-width:1140px;margin:0 auto;padding:8px 8px 8px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:oklch(99% 0.004 95 / 0.8);backdrop-filter:blur(16px) saturate(160%);-webkit-backdrop-filter:blur(16px) saturate(160%);border:1px solid oklch(100% 0 0 / 0.6);border-radius:999px;box-shadow:0 10px 28px -18px oklch(26% 0.025 280 / 0.3);transition:box-shadow .3s ease,background-color .3s ease;}
.site-header.is-scrolled .header-inner{background:oklch(99% 0.004 95 / 0.95);box-shadow:0 16px 34px -16px oklch(26% 0.025 280 / 0.34);}
.brand{display:flex;align-items:center;gap:8px;font-family:'Quicksand',sans-serif;font-weight:700;font-size:18px;color:var(--ink);text-decoration:none;}
.brand .accent{color:var(--green-dark);}
.brand img{width:30px;height:30px;}
.site-nav{display:none;gap:24px;font-size:14.5px;font-weight:700;}
.site-nav a{position:relative;color:var(--ink-soft);text-decoration:none;padding:4px 1px;}
.site-nav a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--green),var(--violet));transform:scaleX(0);transform-origin:left;transition:transform .25s cubic-bezier(.2,.7,.3,1);}
.site-nav a:hover{color:var(--ink);}
.site-nav a:hover::after{transform:scaleX(1);}
.header-actions{display:flex;align-items:center;gap:8px;}
.hide-xs{display:none;}
.menu-toggle{display:flex;width:40px;height:40px;flex-shrink:0;border-radius:50%;border:1.5px solid var(--border);background:var(--card);align-items:center;justify-content:center;flex-direction:column;gap:4px;padding:0;cursor:pointer;}
.burger-line{width:16px;height:2px;border-radius:2px;background:var(--ink);transition:transform .25s ease,opacity .2s ease;}
.menu-toggle[aria-expanded="true"] .burger-line:nth-child(1){transform:translateY(6px) rotate(45deg);}
.menu-toggle[aria-expanded="true"] .burger-line:nth-child(2){opacity:0;}
.menu-toggle[aria-expanded="true"] .burger-line:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
/* Menú móvil: capa de pantalla completa blanca translúcida (se ve la página desenfocada detrás),
   opciones centradas y la X abajo al centro. */
.mobile-menu{position:fixed;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:calc(env(safe-area-inset-top) + 32px) 24px calc(env(safe-area-inset-bottom) + 24px);overflow-y:auto;background:oklch(99% 0.005 95 / 0.78);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);text-align:center;animation:menu-fade .3s ease;}
.mobile-menu[hidden]{display:none;}
.mobile-menu::before,.mobile-menu::after{content:"";position:fixed;z-index:-1;border-radius:50%;pointer-events:none;animation:menu-glow 6s ease-in-out infinite alternate;}
.mobile-menu::before{width:340px;height:340px;left:-140px;top:8%;background:radial-gradient(circle,oklch(78% 0.12 152 / 0.4),transparent 70%);}
.mobile-menu::after{width:320px;height:320px;right:-130px;bottom:10%;background:radial-gradient(circle,oklch(72% 0.11 292 / 0.35),transparent 70%);animation-delay:-3s;}
.mobile-menu-brand{display:flex;flex-direction:column;align-items:center;gap:8px;font-family:'Quicksand',sans-serif;font-weight:700;font-size:20px;color:var(--ink);opacity:0;animation:menu-item .45s cubic-bezier(.2,.7,.3,1) forwards;}
.mobile-menu-brand img{width:44px;height:44px;filter:drop-shadow(0 8px 16px oklch(55% 0.13 152 / 0.35));}
.mobile-menu-brand .accent{color:var(--green-dark);}
.mobile-menu nav{display:flex;flex-direction:column;align-items:center;gap:4px;margin-top:auto;}
.mobile-menu nav a{padding:10px 18px;color:var(--ink-soft);font-family:'Quicksand',sans-serif;font-weight:600;font-size:20px;line-height:1.3;text-decoration:none;opacity:0;animation:menu-item .45s cubic-bezier(.2,.7,.3,1) forwards;transition:color .2s ease,transform .2s ease;}
.mobile-menu nav a:hover,.mobile-menu nav a:active{color:var(--green-dark);transform:scale(1.06);}
.mobile-menu nav a:first-child{font-weight:700;font-size:24px;background:linear-gradient(90deg,var(--green-dark),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent;}
.mobile-menu nav a{position:relative;}
.mobile-menu nav a::after{content:"";position:absolute;left:30%;right:30%;bottom:4px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--green),var(--violet));transform:scaleX(0);transition:transform .25s cubic-bezier(.2,.7,.3,1);}
.mobile-menu nav a:hover::after,.mobile-menu nav a:active::after,.mobile-menu nav a:first-child::after{transform:scaleX(1);}
.mobile-menu nav a.menu-destacado{color:var(--violet);font-weight:700;}
.mobile-menu nav a:nth-child(1){animation-delay:.04s;}
.mobile-menu nav a:nth-child(2){animation-delay:.08s;}
.mobile-menu nav a:nth-child(3){animation-delay:.12s;}
.mobile-menu nav a:nth-child(4){animation-delay:.16s;}
.mobile-menu nav a:nth-child(5){animation-delay:.2s;}
.mobile-menu nav a:nth-child(6){animation-delay:.24s;}
.mobile-menu-actions{display:flex;flex-direction:column;gap:10px;width:100%;max-width:300px;opacity:0;animation:menu-item .45s cubic-bezier(.2,.7,.3,1) .28s forwards;}
.mobile-menu-actions .btn{border-radius:999px;}
.mobile-menu-close{margin-top:auto;flex-shrink:0;width:56px;height:56px;display:flex;align-items:center;justify-content:center;border:2px solid transparent;border-radius:50%;background:linear-gradient(var(--card),var(--card)) padding-box,linear-gradient(135deg,var(--green),var(--violet)) border-box;color:var(--ink);box-shadow:0 12px 26px -12px oklch(46% 0.13 292 / 0.45);cursor:pointer;opacity:0;animation:menu-close .4s cubic-bezier(.2,.7,.3,1) .15s forwards;transition:background-color .2s ease,transform .25s ease;}
.mobile-menu-close:hover{transform:rotate(90deg);}
.mobile-menu-close svg{width:24px;height:24px;}
html.menu-abierto{overflow:hidden;}
@keyframes menu-item{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
@keyframes menu-close{from{opacity:0;transform:scale(.6) rotate(-90deg);}to{opacity:1;transform:none;}}
@keyframes menu-fade{from{opacity:0;}to{opacity:1;}}
@keyframes menu-glow{from{transform:translate(0,0) scale(1);}to{transform:translate(30px,-20px) scale(1.12);}}
@media (prefers-reduced-motion:reduce){
  .site-header,.mobile-menu,.mobile-menu::before,.mobile-menu::after,.mobile-menu-brand,.mobile-menu nav a,.mobile-menu-actions,.mobile-menu-close{animation:none;transition:none;}
  .mobile-menu-brand,.mobile-menu nav a,.mobile-menu-actions,.mobile-menu-close{opacity:1;}
}
@media (min-width:480px){.hide-xs{display:inline-flex;}}
@media (min-width:920px){
  .site-nav{display:flex;}
  .menu-toggle,.mobile-menu{display:none !important;}
  .site-header{padding:14px 20px 0;}
  .header-inner{padding:10px 10px 10px 22px;}
}

/* ---- Hero ---- */
.hero{position:relative;overflow:hidden;padding:40px 0 56px;background:
  radial-gradient(ellipse 75% 55% at 10% -10%,oklch(90% 0.06 292 / 0.55),transparent 62%),
  radial-gradient(ellipse 60% 50% at 95% 0%,oklch(93% 0.06 70 / 0.5),transparent 60%),
  radial-gradient(ellipse 60% 50% at 50% 115%,oklch(92% 0.07 152 / 0.45),transparent 60%);}
.hero-inner{display:grid;gap:44px;align-items:center;}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:800;color:var(--green-dark);background:var(--green-soft);padding:6px 14px;border-radius:999px;}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--green-dark);}
.hero h1{font-size:clamp(32px,8.4vw,54px);line-height:1.1;margin:18px 0 16px;letter-spacing:-.5px;}
.hero h1 .hl{background:linear-gradient(100deg,var(--violet),var(--green-dark));-webkit-background-clip:text;background-clip:text;color:transparent;}
.lead{font-size:clamp(16.5px,2.2vw,19px);color:var(--ink-soft);max-width:560px;}
.hero-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px;}
.hero-ctas .btn{flex:1 1 220px;}
@media (min-width:640px){.hero-ctas .btn{flex:0 0 auto;}}
.hero-trust{list-style:none;display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:20px;font-size:14px;font-weight:700;color:var(--ink-soft);}
.hero-trust li{display:flex;align-items:center;gap:6px;}
.hero-trust .ico{width:18px;height:18px;color:var(--green-dark);}
@media (min-width:980px){.hero{padding:64px 0 88px;}.hero-inner{grid-template-columns:1.05fr 1fr;gap:56px;}}

/* Mockup de la app, hecho en HTML/CSS */
.hero-visual{position:relative;max-width:480px;width:100%;margin:0 auto;}
.mock-window{background:var(--card);border:1px solid var(--border);border-radius:22px;box-shadow:0 40px 70px -40px oklch(30% 0.05 285 / 0.45);overflow:hidden;}
.mock-bar{display:flex;align-items:center;gap:6px;padding:11px 14px;background:var(--canvas);border-bottom:1px solid var(--border);}
.mock-bar span{width:9px;height:9px;border-radius:50%;background:oklch(85% 0.02 280);}
.mock-bar em{margin-left:8px;font-style:normal;font-size:12.5px;font-weight:700;color:var(--ink-soft);}
.mock-body{padding:16px;}
.mock-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px;}
.mock-kicker{font-size:12px;font-weight:700;color:var(--ink-soft);}
.mock-title{font-family:'Quicksand',sans-serif;font-weight:700;font-size:19px;}
.mock-list{list-style:none;display:grid;gap:8px;}
.mock-list li{display:grid;grid-template-columns:auto auto 1fr auto;align-items:center;gap:10px;padding:10px;border-radius:14px;background:var(--paper);border:1px solid var(--border);}
.mock-list li.is-now{background:var(--violet-soft);border-color:oklch(85% 0.05 292);}
.mock-time{font-weight:800;font-size:13px;color:var(--ink-soft);width:38px;}
.mock-list li{gap:8px;}
@media (min-width:400px){.mock-list li{gap:10px;}}
.mock-avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;color:#fff;}
.av-v{background:var(--violet);}
.av-g{background:var(--green-dark);}
.av-o{background:var(--orange-dark);}
.mock-name{font-weight:800;font-size:14px;line-height:1.25;min-width:0;}
.mock-name small{display:block;font-weight:600;font-size:12px;color:var(--ink-soft);}
.mock-chip{font-size:11.5px;font-weight:800;padding:3px 9px;border-radius:999px;background:var(--canvas);color:var(--ink-soft);white-space:nowrap;}
.mock-chip-green{background:var(--green-soft);color:var(--green-dark);}
.mock-chip-violet{background:var(--violet);color:#fff;}
.mock-note{position:relative;margin:-10px -4px 0 auto;width:min(270px,82%);background:var(--card);border:1px solid var(--border);border-radius:18px;padding:14px;box-shadow:0 30px 50px -28px oklch(30% 0.05 285 / 0.5);}
.mock-note-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.mock-note-head strong{display:block;font-size:14px;}
.mock-note-head small{display:block;font-size:12px;font-weight:700;color:var(--green-dark);}
.mock-lock{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--green-soft);color:var(--green-dark);}
.mock-lock .ico{width:19px;height:19px;}
.mock-lines{display:grid;gap:6px;margin-bottom:12px;}
.mock-lines span{height:8px;border-radius:6px;background:linear-gradient(90deg,oklch(88% 0.02 280),oklch(92% 0.015 280));filter:blur(.4px);}
.mock-lines span.short{width:60%;}
.mock-score{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:12px;background:var(--violet-soft);font-size:13px;font-weight:800;color:var(--violet);}
.mock-score strong{font-size:18px;}
.mock-score em{font-style:normal;margin-left:auto;padding:2px 8px;border-radius:999px;background:#fff;}
@media (min-width:980px){.hero-visual{padding-bottom:90px;}.mock-note{position:absolute;margin:0;right:-28px;bottom:0;}}

/* ---- Encabezados de sección ---- */
.section-head{max-width:720px;margin:0 auto 36px;text-align:center;}
.section-head h2{font-size:clamp(26px,5.5vw,38px);margin:10px 0 12px;}
.section-head p{color:var(--ink-soft);font-size:17px;}
.h-small{font-size:17px;margin:24px 0 10px;}

/* ---- Tarjetas y grillas ---- */
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);}
.card h3{font-size:18.5px;margin:14px 0 8px;}
.card p{color:var(--ink-soft);}
.grid-3,.grid-4{display:grid;gap:16px;}
@media (min-width:700px){.grid-3{grid-template-columns:repeat(3,1fr);}.grid-4{grid-template-columns:repeat(2,1fr);}}
@media (min-width:1040px){.grid-4{grid-template-columns:repeat(4,1fr);}}
.ico-wrap{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--violet-soft);color:var(--violet);flex-shrink:0;}
.ico-orange{background:var(--orange-soft);color:var(--orange-dark);}
.ico-green{background:var(--green-soft);color:var(--green-dark);}
.ico-violet{background:var(--violet-soft);color:var(--violet);}
.ico-dark{background:oklch(100% 0 0 / 0.12);color:#fff;}

.problema{background:var(--canvas);}
.card-extra{border-style:dashed;border-color:oklch(80% 0.06 152);background:linear-gradient(180deg,var(--card),var(--green-soft));}

/* ---- Pasos ---- */
.steps{list-style:none;display:grid;gap:16px;counter-reset:none;}
.steps li{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px 22px 22px 82px;box-shadow:var(--shadow);}
.steps h3{font-size:18.5px;margin-bottom:6px;}
.steps p{color:var(--ink-soft);}
.step-num{position:absolute;left:20px;top:20px;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-family:'Quicksand',sans-serif;font-weight:700;font-size:20px;color:#fff;background:linear-gradient(135deg,var(--violet),var(--green-dark));}
@media (min-width:860px){
  .steps{grid-template-columns:repeat(3,1fr);}
  .steps li{padding:76px 22px 24px;}
}
.center-cta{display:flex;justify-content:center;margin-top:32px;}

/* ---- Seguridad ---- */
.seguridad{background:linear-gradient(150deg,var(--violet-dark),oklch(28% 0.07 285));color:#fff;}
.seguridad-inner{display:grid;gap:36px;}
.seguridad h2{font-size:clamp(26px,5.5vw,38px);margin:10px 0 14px;}
.seguridad-copy p{color:oklch(90% 0.02 285);font-size:17px;max-width:460px;}
.seguridad-list{list-style:none;display:grid;gap:14px;}
.seguridad-list li{display:flex;gap:14px;padding:18px;border-radius:18px;background:oklch(100% 0 0 / 0.07);border:1px solid oklch(100% 0 0 / 0.12);}
.seguridad-list h3{font-size:17px;margin-bottom:4px;}
.seguridad-list p{color:oklch(88% 0.02 285);font-size:15px;}
.seguridad-list a{color:#fff;font-weight:700;}
@media (min-width:900px){.seguridad-inner{grid-template-columns:.85fr 1.15fr;align-items:center;}.seguridad-list{grid-template-columns:1fr 1fr;}}

/* ---- Precios ---- */
.billing-toggle{display:flex;width:max-content;max-width:100%;margin:0 auto 28px;padding:5px;border-radius:999px;background:var(--canvas);border:1px solid var(--border);}
.billing-toggle[hidden]{display:none;}
.billing-toggle button{font:inherit;font-weight:800;font-size:14.5px;color:var(--ink-soft);background:transparent;border:0;border-radius:999px;padding:9px 18px;cursor:pointer;display:flex;align-items:center;gap:6px;}
.billing-toggle button[aria-pressed="true"]{background:var(--card);color:var(--ink);box-shadow:0 4px 12px -6px oklch(26% 0.03 280 / 0.35);}
.billing-toggle .save{font-size:11.5px;padding:2px 7px;border-radius:999px;background:var(--green-soft);color:var(--green-dark);}
.plans{display:grid;gap:18px;align-items:stretch;}
@media (min-width:900px){.plans{grid-template-columns:repeat(3,1fr);}}
.plan{position:relative;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:24px;padding:26px 22px;box-shadow:var(--shadow);}
.plan.is-featured{border:2px solid var(--green);box-shadow:0 30px 60px -36px oklch(45% 0.12 152 / 0.6);}
.plan-badge{position:absolute;top:-13px;left:22px;padding:4px 12px;border-radius:999px;background:var(--green-dark);color:#fff;font-size:12.5px;font-weight:800;}
.plan h3{font-size:22px;}
.plan-bajada{color:var(--ink-soft);margin:6px 0 16px;min-height:3em;}
.plan-price{display:flex;align-items:baseline;gap:4px;}
.plan-price .amount{font-family:'Quicksand',sans-serif;font-weight:700;font-size:40px;letter-spacing:-1px;}
.plan-price .per{color:var(--ink-soft);font-weight:700;}
.plan-note{font-size:13.5px;color:var(--ink-soft);margin:2px 0 18px;min-height:1.5em;}
.plan-list{list-style:none;display:grid;gap:10px;margin-top:20px;font-size:15px;}
.plan-list li{display:flex;gap:9px;align-items:flex-start;}
.plan-list .ico{width:19px;height:19px;margin-top:2px;color:var(--green-dark);}
.anchor-note{max-width:680px;margin:28px auto 0;text-align:center;padding:14px 18px;border-radius:16px;background:var(--orange-soft);color:var(--ink);font-size:15px;}
.precios-fallback{max-width:560px;margin:0 auto;text-align:center;display:grid;gap:16px;justify-items:center;}

/* ---- Egresados ---- */
.egresados{background:linear-gradient(180deg,var(--paper),var(--orange-soft));}
.egresados-inner{display:grid;gap:28px;align-items:start;}
.egresados h2{font-size:clamp(25px,5.2vw,36px);margin:10px 0 12px;}
.egresados-copy>p{color:var(--ink-soft);}
.lead-sm{font-size:17px;}
.promo-box{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:22px 0 16px;}
.promo-item{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:16px;}
.promo-item strong{display:block;font-family:'Quicksand',sans-serif;font-size:clamp(24px,6vw,30px);line-height:1.1;color:var(--orange-dark);}
.promo-item strong small{font-size:15px;color:var(--ink-soft);}
.promo-item span{font-size:14px;font-weight:700;color:var(--ink-soft);}
.unis{list-style:none;display:grid;gap:10px;}
.unis li{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:14px;background:var(--card);border:1px solid var(--border);}
.unis .ico{color:var(--orange-dark);margin-top:2px;}
.unis strong{display:block;font-size:15px;}
.unis small{font-size:13.5px;color:var(--ink-soft);}
.fine{font-size:13.5px;color:var(--ink-soft);margin-top:10px;}
.mini-steps{padding-left:22px;display:grid;gap:6px;margin-bottom:22px;color:var(--ink-soft);}
.form{display:grid;gap:6px;margin-top:16px;}
.form label{font-weight:800;font-size:14px;margin-top:8px;}
.form input,.form select{width:100%;font:inherit;font-size:16px;padding:12px 14px;border-radius:12px;border:1.5px solid var(--border);background:var(--paper);color:var(--ink);}
.form input:focus-visible,.form select:focus-visible{border-color:var(--violet);border-radius:12px;}
.form .btn{margin-top:14px;}
.form-msg{margin-top:12px;padding:10px 14px;border-radius:12px;font-weight:700;font-size:14.5px;}
.form-msg.ok{background:var(--green-soft);color:var(--green-dark);}
.form-msg.error{background:oklch(95% 0.03 25);color:var(--red);}
@media (min-width:900px){.egresados-inner{grid-template-columns:1.2fr .8fr;gap:48px;}.egresados-lado{position:sticky;top:100px;}}
/* Foto de egresados con la insignia del plan encima. */
.egresados-lado{display:grid;gap:18px;}
.egresados-foto{position:relative;margin:0;border-radius:28px;overflow:hidden;aspect-ratio:4/3;box-shadow:0 30px 60px -30px oklch(50% 0.13 50 / .55);}
.egresados-foto img{width:100%;height:100%;object-fit:cover;object-position:50% 62%;}
.egresados-badge{position:absolute;left:14px;right:14px;bottom:14px;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:18px;background:oklch(99% 0.005 95 / .9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 12px 28px -14px oklch(26% 0.03 280 / .45);}
.egresados-badge .ico{width:30px;height:30px;padding:6px;border-radius:10px;background:var(--orange-soft);color:var(--orange-dark);}
.egresados-badge strong{display:block;font-family:'Quicksand',sans-serif;font-size:15px;}
.egresados-badge small{font-size:13px;font-weight:700;color:var(--ink-soft);}
@media (min-width:900px){.egresados-foto{aspect-ratio:5/4;}}

/* ---- Así cambia tu semana: bloques foto + texto ---- */
.historias{background:linear-gradient(180deg,var(--paper),var(--canvas) 55%,var(--paper));overflow:hidden;}
.historia{display:grid;gap:26px;align-items:center;margin-top:48px;}
.historia:first-of-type{margin-top:8px;}
.historia-foto{position:relative;margin:0 6px;}
.historia-foto::before{content:"";position:absolute;inset:-14px -10px 18px 22px;z-index:0;border-radius:34px;background:linear-gradient(135deg,oklch(88% 0.07 152 / .7),oklch(86% 0.06 292 / .6));transform:rotate(-3deg);}
.historia.is-reverse .historia-foto::before{inset:-14px 22px 18px -10px;transform:rotate(3deg);background:linear-gradient(135deg,oklch(86% 0.06 292 / .6),oklch(92% 0.06 70 / .8));}
.historia-foto picture{position:relative;z-index:1;display:block;border-radius:26px;overflow:hidden;aspect-ratio:4/3;box-shadow:0 30px 50px -30px oklch(26% 0.03 280 / .5);}
.historia-foto img{width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.2,.7,.3,1);}
.historia:hover .historia-foto img{transform:scale(1.03);}
.historia-chip{position:absolute;z-index:2;left:-4px;bottom:-18px;display:flex;align-items:center;gap:10px;max-width:calc(100% - 24px);padding:10px 14px 10px 10px;border-radius:18px;background:oklch(99.5% 0.003 95 / .94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid oklch(100% 0 0 / .7);box-shadow:0 18px 36px -16px oklch(26% 0.03 280 / .45);animation:historia-flotar 5s ease-in-out infinite;}
.historia.is-reverse .historia-chip{left:auto;right:-4px;animation-delay:-2.5s;}
.historia-chip-ico{width:38px;height:38px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:12px;background:var(--green-soft);color:var(--green-dark);}
.historia-chip-ico .ico{width:20px;height:20px;}
.historia-chip strong{display:block;font-family:'Quicksand',sans-serif;font-size:14.5px;line-height:1.2;color:var(--ink);}
.historia-chip small{display:block;font-size:12.5px;font-weight:700;color:var(--ink-soft);}
.historia-texto{padding-top:14px;}
.historia-kicker{display:inline-block;padding:4px 12px;border-radius:999px;background:var(--violet-soft);color:var(--violet);font-size:12.5px;font-weight:800;letter-spacing:.3px;}
.historia-texto h3{margin:12px 0 10px;font-size:clamp(23px,5vw,32px);letter-spacing:-.3px;}
.historia-texto>p{color:var(--ink-soft);font-size:16.5px;}
.historia-lista{list-style:none;display:grid;gap:10px;margin-top:18px;}
.historia-lista li{display:flex;gap:10px;align-items:flex-start;font-weight:700;}
.historia-lista .ico{width:22px;height:22px;padding:3px;border-radius:50%;background:var(--green-soft);color:var(--green-dark);flex-shrink:0;margin-top:1px;}
.historias .center-cta{margin-top:56px;flex-direction:column;align-items:center;}
.historias-nota{margin-top:10px;font-size:14px;font-weight:700;color:var(--ink-soft);text-align:center;}
@keyframes historia-flotar{0%,100%{transform:translateY(0);}50%{transform:translateY(-6px);}}
@media (min-width:900px){
  .historia{grid-template-columns:1.05fr 1fr;gap:64px;margin-top:84px;}
  .historia.is-reverse .historia-foto{order:2;}
  .historia-chip{left:-22px;bottom:28px;}
  .historia.is-reverse .historia-chip{right:-22px;}
  .historia-texto{padding-top:0;}
}
@media (prefers-reduced-motion:reduce){.historia-chip{animation:none;}.historia-foto img{transition:none;}}

/* ---- Pacientes ---- */
.pacientes{background:linear-gradient(180deg,var(--paper),var(--violet-soft));}
.kicker-violet{color:var(--violet);}
.card-paciente h3{font-size:17.5px;}
.pacientes-card{display:grid;gap:16px;align-items:center;margin-top:24px;border-color:oklch(85% 0.05 292);}
.pacientes-card h3{font-size:19px;margin:0 0 4px;}
.hero-paciente{margin-top:18px;font-size:15px;font-weight:700;color:var(--ink-soft);}
.site-nav a.nav-paciente{color:var(--violet);font-weight:800;}
.pacientes-ctas{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;}
.link-arrow{font-weight:800;text-decoration:none;}
.link-arrow::after{content:" →";}
.link-arrow:hover{text-decoration:underline;}
@media (min-width:860px){.pacientes-card{grid-template-columns:auto 1fr auto;gap:22px;padding:26px 30px;}}

/* ---- FAQ ---- */
.faq-list{display:grid;gap:10px;}
.faq-item{background:var(--card);border:1px solid var(--border);border-radius:16px;}
.faq-item summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;cursor:pointer;font-family:'Quicksand',sans-serif;font-weight:700;font-size:16.5px;border-radius:16px;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-icon{position:relative;width:14px;height:14px;flex-shrink:0;}
.faq-icon::before,.faq-icon::after{content:"";position:absolute;left:0;top:6px;width:14px;height:2px;border-radius:2px;background:var(--violet);transition:transform .25s ease;}
.faq-icon::after{transform:rotate(90deg);}
.faq-item[open] .faq-icon::after{transform:rotate(0);}
.faq-a{padding:0 18px 18px;color:var(--ink-soft);}
.faq-more{text-align:center;margin-top:22px;color:var(--ink-soft);}
.faq-more a{font-weight:800;}

/* ---- CTA final ---- */
.cta-box{text-align:center;padding:40px 20px;border-radius:28px;color:#fff;background:linear-gradient(130deg,var(--violet),var(--green-dark));}
.cta-box h2{font-size:clamp(25px,5.5vw,36px);margin-bottom:8px;}
.cta-box p{color:oklch(95% 0.02 280);font-size:17px;}
.cta-box .hero-ctas{justify-content:center;}
.cta-final{padding-bottom:64px;}

/* ---- Footer ---- */
.site-footer{background:var(--canvas);border-top:1px solid var(--border);padding:44px 0 24px;font-size:15px;}
.footer-inner{display:grid;gap:28px;}
.footer-brand p{color:var(--ink-soft);margin-top:10px;max-width:280px;}
.footer-nav{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:22px;}
.footer-nav h3{font-size:14px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);margin-bottom:8px;}
.footer-nav a{display:block;padding:4px 0;color:var(--ink);text-decoration:none;font-weight:600;}
.footer-nav a:hover{color:var(--violet);text-decoration:underline;}
.footer-bottom{margin-top:30px;padding-top:18px;border-top:1px solid var(--border);color:var(--ink-soft);font-size:13.5px;}
@media (min-width:800px){.footer-inner{grid-template-columns:1fr 1.6fr;}}

/* =====================================================================
   Movimiento. Todo lo que oculta o anima contenido cuelga de html.anim,
   que landing.js pone solo si hay JS y el sistema no pide menos movimiento:
   sin JS (o con "reducir movimiento") la página se ve completa y quieta.
   ===================================================================== */

/* ---- Elementos que existen siempre ---- */
.live-dot{position:relative;display:inline-block;width:7px;height:7px;margin-right:6px;border-radius:50%;background:currentColor;vertical-align:middle;}
.mock-progress{grid-column:1 / -1;height:3px;margin-top:2px;border-radius:3px;background:oklch(85% 0.05 292);overflow:hidden;position:relative;}
.mock-progress::after{content:"";position:absolute;inset:0;width:62%;border-radius:3px;background:linear-gradient(90deg,var(--violet),var(--green));}
.mock-toast{position:absolute;z-index:3;left:-6px;top:-18px;display:flex;align-items:center;gap:10px;padding:10px 14px 10px 10px;border-radius:16px;background:var(--card);border:1px solid var(--border);box-shadow:0 22px 40px -22px oklch(30% 0.05 285 / 0.55);max-width:260px;}
.mock-toast-ico{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:oklch(64% 0.15 150);color:#fff;flex-shrink:0;}
.mock-toast-ico .ico{width:19px;height:19px;}
.mock-toast-text strong{display:block;font-size:13.5px;line-height:1.25;}
.mock-toast-text small{display:block;font-size:12px;font-weight:700;color:var(--ink-soft);}
@media (min-width:980px){.mock-toast{left:-60px;top:-66px;}}

.ticker{overflow:hidden;border-block:1px solid var(--border);background:var(--card);padding:14px 0;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);}
.ticker-track{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 30px;padding:0 16px;}
.ticker-item{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;font-family:'Quicksand',sans-serif;font-weight:700;font-size:15px;color:var(--ink-soft);}
.ticker-item .ico{width:19px;height:19px;color:var(--violet);}
.ticker-item:nth-child(n+9){display:none;} /* sin animación se muestra una sola vuelta */

.scroll-progress{position:fixed;top:0;left:0;right:0;z-index:60;height:3px;transform-origin:0 50%;transform:scaleX(0);background:linear-gradient(90deg,var(--violet),var(--green));pointer-events:none;}

.sticky-cta{position:fixed;z-index:50;left:10px;right:10px;bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 10px 10px 16px;border-radius:18px;background:oklch(99% 0.004 95 / 0.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border);box-shadow:0 18px 40px -18px oklch(26% 0.03 280 / 0.45);transform:translateY(140%);opacity:0;visibility:hidden;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .3s ease,visibility 0s linear .45s;}
.sticky-cta strong{display:block;font-family:'Quicksand',sans-serif;font-size:15px;}
.sticky-cta small{display:block;font-size:12.5px;color:var(--ink-soft);font-weight:700;}
.sticky-cta.is-visible{transform:none;opacity:1;visibility:visible;transition:transform .45s cubic-bezier(.2,.8,.2,1),opacity .3s ease;}
@media (min-width:920px){.sticky-cta{display:none;}}

/* Tarjetas: elevación al pasar el mouse (solo con puntero real). */
@media (hover:hover){
  .card,.plan,.steps li,.seguridad-list li,.unis li,.promo-item{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease,border-color .3s ease;}
  .card:hover,.steps li:hover,.unis li:hover,.promo-item:hover{transform:translateY(-6px);box-shadow:0 30px 50px -30px oklch(30% 0.05 285 / 0.45);}
  .plan:hover{transform:translateY(-8px);}
  .seguridad-list li:hover{transform:translateY(-4px);background:oklch(100% 0 0 / 0.11);}
  .card:hover .ico-wrap{animation:icoPop .6s cubic-bezier(.2,.8,.2,1);}
  .faq-item{transition:border-color .25s ease,box-shadow .25s ease;}
  .faq-item:hover{border-color:oklch(80% 0.05 292);}
}
.faq-item[open]{box-shadow:0 16px 34px -26px oklch(30% 0.05 285 / 0.5);border-color:oklch(80% 0.05 292);}
@keyframes icoPop{0%{transform:scale(1) rotate(0);}40%{transform:scale(1.14) rotate(-8deg);}70%{transform:scale(.96) rotate(4deg);}100%{transform:scale(1) rotate(0);}}

/* ---- Solo con html.anim ---- */
.anim .ticker-item:nth-child(n+9){display:inline-flex;}
.anim .ticker-track{flex-wrap:nowrap;justify-content:flex-start;width:max-content;gap:0 34px;padding:0;animation:ticker 38s linear infinite;}
.anim .ticker:hover .ticker-track{animation-play-state:paused;}
@keyframes ticker{to{transform:translateX(calc(-50% - 17px));}}

/* Entrada del hero, escalonada. */
.anim .hero-copy>*{opacity:0;animation:riseIn .8s cubic-bezier(.2,.8,.2,1) forwards;}
.anim .hero-copy>*:nth-child(1){animation-delay:.05s;}
.anim .hero-copy>*:nth-child(2){animation-delay:.15s;}
.anim .hero-copy>*:nth-child(3){animation-delay:.28s;}
.anim .hero-copy>*:nth-child(4){animation-delay:.4s;}
.anim .hero-copy>*:nth-child(5){animation-delay:.52s;}
.anim .hero-copy>*:nth-child(6){animation-delay:.64s;}
.anim .mock-window{opacity:0;animation:windowIn 1s cubic-bezier(.2,.8,.2,1) .25s forwards;}
.anim .mock-note{opacity:0;animation:riseIn .9s cubic-bezier(.2,.8,.2,1) .75s forwards,floatY 6s ease-in-out 1.7s infinite;}
.anim .mock-list li{opacity:0;animation:slideIn .6s cubic-bezier(.2,.8,.2,1) forwards;}
.anim .mock-list li:nth-child(1){animation-delay:.6s;}
.anim .mock-list li:nth-child(2){animation-delay:.72s;}
.anim .mock-list li:nth-child(3){animation-delay:.84s;}
.anim .mock-list li:nth-child(4){animation-delay:.96s;}
@keyframes riseIn{from{opacity:0;transform:translateY(22px);}to{opacity:1;transform:none;}}
@keyframes windowIn{from{opacity:0;transform:translateY(40px) scale(.96);}to{opacity:1;transform:none;}}
@keyframes slideIn{from{opacity:0;transform:translateX(18px);}to{opacity:1;transform:none;}}
@keyframes floatY{0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);}}

/* Degradado del título que "respira" y punto vivo del eyebrow. */
.anim .hero h1 .hl{background-size:220% 100%;animation:hlShift 6s ease-in-out infinite alternate;}
@keyframes hlShift{from{background-position:0% 50%;}to{background-position:100% 50%;}}
.anim .eyebrow .dot,.anim .live-dot{position:relative;}
.anim .eyebrow .dot::after,.anim .live-dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;background:inherit;opacity:.5;animation:ping 1.8s cubic-bezier(.2,.7,.3,1) infinite;}
@keyframes ping{0%{transform:scale(.6);opacity:.55;}100%{transform:scale(2.2);opacity:0;}}

/* Fondo del hero con manchas de color que se mueven lento. */
.anim .hero::before,.anim .hero::after{content:"";position:absolute;z-index:0;width:420px;height:420px;border-radius:50%;filter:blur(60px);opacity:.45;pointer-events:none;}
.anim .hero::before{left:-120px;top:-140px;background:oklch(86% 0.08 292);animation:blobA 16s ease-in-out infinite alternate;}
.anim .hero::after{right:-140px;bottom:-160px;background:oklch(88% 0.09 152);animation:blobB 19s ease-in-out infinite alternate;}
.hero-inner{position:relative;z-index:1;}
@keyframes blobA{to{transform:translate(120px,80px) scale(1.15);}}
@keyframes blobB{to{transform:translate(-110px,-60px) scale(1.2);}}

/* Mockup "vivo" (clases que alterna landing.js). */
.anim .mock-progress::after{animation:progress 9s linear infinite;}
@keyframes progress{from{width:8%;}to{width:96%;}}
.anim .mock-lines span{transform-origin:left;transform:scaleX(0);transition:transform .9s cubic-bezier(.2,.8,.2,1);}
.anim .mock-note.is-writing .mock-lines span{transform:scaleX(1);}
.anim .mock-note.is-writing .mock-lines span:nth-child(2){transition-delay:.35s;}
.anim .mock-note.is-writing .mock-lines span:nth-child(3){transition-delay:.7s;}
.anim .mock-lock{transition:transform .3s ease,background-color .3s ease;}
.anim .mock-note.is-locked .mock-lock{animation:lockClick .6s cubic-bezier(.2,.8,.2,1);background:var(--green);color:#fff;}
@keyframes lockClick{0%{transform:scale(1);}35%{transform:scale(1.25) rotate(-8deg);}70%{transform:scale(.95);}100%{transform:scale(1);}}
.anim .mock-toast{opacity:0;transform:translateY(-12px) scale(.94);transition:opacity .45s ease,transform .5s cubic-bezier(.2,.8,.2,1);}
.anim .mock-toast.is-visible{opacity:1;transform:none;}
.anim .mock-toast.is-confirmed .mock-toast-ico{background:var(--violet);}
.mock-carla{transition:background-color .5s ease,border-color .5s ease;}
.mock-carla.is-confirmed{background:var(--green-soft);border-color:oklch(84% 0.07 152);}
.mock-carla .mock-chip{transition:background-color .4s ease,color .4s ease;}
.mock-carla.is-confirmed .mock-chip{background:var(--green-dark);color:#fff;animation:chipPop .5s cubic-bezier(.2,.8,.2,1);}
@keyframes chipPop{0%{transform:scale(.7);}60%{transform:scale(1.12);}100%{transform:scale(1);}}

/* Aparición al scrollear (landing.js agrega data-reveal y .is-in). */
.anim [data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .8s cubic-bezier(.2,.8,.2,1),transform .8s cubic-bezier(.2,.8,.2,1);transition-delay:var(--d,0s);}
.anim [data-reveal="left"]{transform:translateX(-40px);}
.anim [data-reveal="right"]{transform:translateX(40px);}
.anim [data-reveal="zoom"]{transform:scale(.92);}
.anim [data-reveal].is-in{opacity:1;transform:none;}
/* Lo que entra desde un costado no debe generar scroll horizontal mientras espera. */
.anim .seguridad,.anim .egresados{overflow-x:clip;}
/* Una vez visibles, las tarjetas vuelven a su transición normal de hover. */
.anim [data-reveal].is-done{transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s ease,border-color .3s ease;transition-delay:0s;}

/* Pasos: el número "late" al aparecer. */
.anim .steps li.is-in .step-num{animation:stepPop .7s cubic-bezier(.2,.8,.2,1) calc(var(--d,0s) + .25s) both;}
@keyframes stepPop{0%{transform:scale(.4) rotate(-20deg);}70%{transform:scale(1.12);}100%{transform:none;}}

/* Plan destacado: borde con brillo que gira. */
.anim .plan.is-featured{border-color:transparent;background:linear-gradient(var(--card),var(--card)) padding-box,conic-gradient(from var(--ang,0deg),var(--green),var(--violet),var(--orange),var(--green)) border-box;animation:spinBorder 6s linear infinite;}
@property --ang{syntax:'<angle>';inherits:false;initial-value:0deg;}
@keyframes spinBorder{to{--ang:360deg;}}
.anim .plan-badge{animation:badgeBob 2.8s ease-in-out infinite;}
@keyframes badgeBob{0%,100%{transform:translateY(0);}50%{transform:translateY(-3px);}}
.plan-price .amount.is-flipping{animation:flip .45s cubic-bezier(.2,.8,.2,1);}
@keyframes flip{0%{opacity:0;transform:translateY(-12px);}100%{opacity:1;transform:none;}}

/* Botón principal del hero y del CTA final: destello periódico que invita al clic. */
.anim .hero-ctas .btn-primary::before{animation:shine 4.5s ease-in-out 2s infinite;}
@keyframes shine{0%,70%{left:-60%;}90%,100%{left:130%;}}
.anim .cta-box{background-size:200% 200%;animation:ctaBg 10s ease-in-out infinite alternate;}
@keyframes ctaBg{from{background-position:0% 50%;}to{background-position:100% 50%;}}

/* Inclinación 3D del mockup con el mouse (landing.js escribe --rx/--ry). */
@media (hover:hover) and (min-width:980px){
  .anim .hero-visual{transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .5s cubic-bezier(.2,.8,.2,1);will-change:transform;}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{transition:none !important;animation:none !important;}
  .btn:hover{transform:none;}
}
