/* ============================================================
   PulseUP — sistema de estilos para páginas nuevas
   Reutiliza los tokens y las fuentes reales del template Framer.
   Las fuentes se sirven desde el mismo dominio (mismo origen).
   ============================================================ */

/* ---------- fuentes reales del sitio ---------- */
@font-face{font-family:"Clash Grotesk";src:url("/framerusercontent.com/third-party-assets/fontshare/wf/SINQ57HHHPFVR2H2M32ZNEFSVLE2LFD2/7IAKEQYNYVZZQGJW7R4Y7C5IZ7XHSFQO/DKSXVIDJANOLWNE4OACLWSGITSUTBGB3.woff2");font-display:swap;font-style:normal;font-weight:300}
@font-face{font-family:"Clash Grotesk";src:url("/framerusercontent.com/third-party-assets/fontshare/wf/O462VY6O6FTQCS72XVMTQHXAM4NN5CY3/TWF57ITZORMJ3MEWLQQIVO6BMXIB6FUR/MJQFMMOTEGNXDVM7HBBDTQHTVB2M7Y6G.woff2");font-display:swap;font-style:normal;font-weight:400}
@font-face{font-family:"Clash Grotesk";src:url("/framerusercontent.com/third-party-assets/fontshare/wf/2SAK53YLUN7RMYJU4MYLSBV6SSSJEJZB/RXS4DPGJRKOUFZMF5X5BVUGNNKJT65XZ/DJS4RYGIUYUXJQOHY5VCZPKSTXUSHTSP.woff2");font-display:swap;font-style:normal;font-weight:500}
@font-face{font-family:"Clash Grotesk";src:url("/framerusercontent.com/third-party-assets/fontshare/wf/MKEEQN57GWBZOSYWCRODNJOOZNPLMAKN/5SPTSZGHEACWWLF34DQ4WAA4OGU6PQIF/KN7DX4F6PXB74R6L2K2Y4NH3CB7FC53Q.woff2");font-display:swap;font-style:normal;font-weight:600}
@font-face{font-family:"Inter";src:url("/app.framerstatic.com/Inter-Regular.latin-JLQMKCHE.woff2");font-display:swap;font-style:normal;font-weight:400}
@font-face{font-family:"Inter";src:url("/app.framerstatic.com/Inter-Light.latin-EKF76FXR.woff2");font-display:swap;font-style:normal;font-weight:300}

/* ---------- tokens extraídos del template ---------- */
:root{
  --bg:#020202;
  --ink:#ffffff;
  --ink-soft:rgb(213,212,214);
  --ink-faint:rgba(213,212,214,.62);
  --violet:rgb(97,63,231);
  --cyan:rgb(51,194,255);
  --blue:rgb(0,119,255);
  --line:rgba(255,255,255,.12);
  --glass:rgba(164,178,237,.12);
  --grad:linear-gradient(270deg, rgb(51,194,255) 0%, rgb(0,119,255) 100%);
  --display:"Clash Grotesk","Clash Grotesk Placeholder",sans-serif;
  --body:Inter,"Inter Placeholder",system-ui,sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;background:var(--bg);color:var(--ink-soft);
  font-family:var(--body);font-size:17px;line-height:1.75;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--cyan);text-decoration:none}
a:hover{text-decoration:underline}
a:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;border-radius:2px}
img{max-width:100%}

/* ---------- navegación ---------- */
.nav{
  position:sticky;top:0;z-index:100;width:100%;
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 30px;border-bottom:1px solid rgba(0,0,0,.1);
  background:rgba(0,0,0,.3);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.hero + hr.rule{display:none}
.nav img{height:34px;width:auto;display:block}
.nav-links{display:flex;gap:26px;align-items:center}
.nav-links a{color:#fff;font-size:15px;letter-spacing:-.01em;line-height:2em}
.nav-links a:hover{color:var(--cyan);text-decoration:none}
@media (max-width:809px){.nav{padding:12px 18px}.nav-links{display:none}}

/* ---------- menú móvil ---------- */
.pu-hamburger{
  display:none;position:fixed;top:18px;right:20px;z-index:2147483000;
  width:44px;height:44px;align-items:center;justify-content:center;
  background:rgba(0,0,0,.55);border:1px solid rgba(255,255,255,.25);
  border-radius:6px;cursor:pointer;padding:0;
}
.pu-hamburger span,.pu-hamburger span:before,.pu-hamburger span:after{
  content:"";display:block;width:20px;height:2px;background:#fff;position:relative;
  transition:transform .2s,opacity .2s;
}
.pu-hamburger span:before{position:absolute;top:-6px}
.pu-hamburger span:after{position:absolute;top:6px}
.pu-hamburger.is-open span{background:transparent}
.pu-hamburger.is-open span:before{transform:translateY(6px) rotate(45deg)}
.pu-hamburger.is-open span:after{transform:translateY(-6px) rotate(-45deg)}
.pu-mobile-drawer{
  display:none;position:fixed;inset:0;z-index:2147482000;background:rgba(3,3,6,.97);
  flex-direction:column;align-items:center;justify-content:center;gap:28px;
}
.pu-mobile-drawer.is-open{display:flex}
.pu-mobile-drawer a{color:#fff;font-family:var(--display);font-size:28px}
.pu-mobile-drawer a:hover{text-decoration:none}
@media (max-width:809px){.pu-hamburger{display:flex}}
@media (prefers-reduced-motion:reduce){
  .pu-hamburger span,.pu-hamburger span:before,.pu-hamburger span:after{transition:none}
}

/* ---------- estructura ---------- */
.wrap{max-width:1120px;margin:0 auto;padding:0 30px}
.narrow{max-width:760px}
@media (max-width:809px){.wrap{padding:0 20px}}

.eyebrow{
  font-size:16px;font-weight:500;letter-spacing:.02em;margin:0 0 18px;
  background-image:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;
}

/* ---------- hero ----------
   Fondo capturado del shader del home y servido como imagen estática.
   Se desvanece a negro por abajo para empalmar con el resto de la página. */
.hero{
  position:relative;padding:150px 0 132px;margin-top:-62px;
  isolation:isolate;overflow:hidden;
}
.hero::before{
  content:"";position:absolute;inset:0;z-index:-2;
  background-image:image-set(
    url("/framerusercontent.com/bg/hero-bg.jpg") 1x,
    url("/framerusercontent.com/bg/hero-bg.jpg") 2x);
  background-image:url("/framerusercontent.com/bg/hero-bg.jpg");
  background-size:cover;background-position:center;
}
.hero::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(
    to bottom,
    rgba(2,2,2,.34) 0%,
    rgba(2,2,2,.20) 40%,
    rgba(2,2,2,.62) 78%,
    rgb(2,2,2) 100%);
}
@media (max-width:809px){
  .hero{padding:118px 0 86px}
  .hero::before{background-image:url("/framerusercontent.com/bg/hero-bg-sm.jpg")}
}
.hero h1{
  font-family:var(--display);font-weight:300;
  font-size:clamp(38px,5.6vw,59px);line-height:1.05;letter-spacing:-.01em;
  color:#fff;margin:0 0 24px;max-width:16ch;text-wrap:balance;
  text-shadow:0 2px 24px rgba(0,0,0,.5);
}
.hero .lede{
  font-size:20px;line-height:1.6;max-width:60ch;margin:0;color:#fff;
  text-shadow:0 1px 14px rgba(0,0,0,.55);
}
.hero .eyebrow{text-shadow:0 1px 12px rgba(0,0,0,.6)}
@media (max-width:809px){.hero .lede{font-size:18px}}

/* ---------- secciones ---------- */
section{padding:64px 0}
@media (max-width:809px){section{padding:44px 0}}
.sec-title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(27px,3.6vw,40px);line-height:1.15;letter-spacing:-.01em;
  color:#fff;margin:0 0 22px;text-wrap:balance;
}
.sec-label{
  font-family:var(--body);font-size:13px;font-weight:400;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-faint);margin:0 0 14px;
}
p{margin:0 0 18px;max-width:68ch}
.lead-body{font-size:18px;line-height:1.72}
strong{color:#fff;font-weight:400;font-family:var(--display)}
hr.rule{border:0;border-top:1px solid var(--line);margin:0}

/* ---------- tarjetas de vidrio ---------- */
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
@media (max-width:809px){.grid-2{grid-template-columns:1fr}}
.card{
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:12px;padding:30px 32px;
}
@media (max-width:809px){.card{padding:24px 22px}}
.card h3{
  font-family:var(--display);font-weight:500;font-size:21px;line-height:1.25;
  color:#fff;margin:0 0 12px;
}
.card p{margin:0;font-size:16px;line-height:1.65}

/* ---------- tarjeta de caso ---------- */
.case{
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:12px;padding:30px 32px;
  display:flex;flex-direction:column;gap:14px;
}
@media (max-width:809px){.case{padding:24px 22px}}
.case .client{
  font-family:var(--display);font-weight:500;font-size:19px;color:#fff;margin:0;
}
.case .metric{
  font-family:var(--display);font-weight:400;
  font-size:clamp(30px,4vw,42px);line-height:1.05;letter-spacing:-.02em;margin:0;
  background-image:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;
  font-variant-numeric:tabular-nums;
}
.case .desc{margin:0;font-size:16px;line-height:1.65;color:var(--ink-soft)}

/* ---------- para quién ---------- */
.audience{
  border-left:2px solid transparent;
  border-image:var(--grad) 1;
  padding-left:26px;
}
.audience p{font-size:19px;line-height:1.65;color:#fff;margin:0;max-width:56ch}
@media (max-width:809px){.audience{padding-left:18px}.audience p{font-size:17px}}

/* ---------- CTA ---------- */
.cta-band{
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:16px;padding:52px 44px;
  display:flex;flex-wrap:wrap;gap:26px;align-items:center;justify-content:space-between;
}
@media (max-width:809px){.cta-band{padding:34px 24px;flex-direction:column;align-items:flex-start}}
.cta-band h2{
  font-family:var(--display);font-weight:400;font-size:clamp(24px,3.2vw,34px);
  line-height:1.2;color:#fff;margin:0;max-width:20ch;text-wrap:balance;
}
.btn{
  display:inline-block;background:var(--violet);color:#fff;
  font-family:var(--body);font-size:16px;font-weight:400;
  padding:15px 30px;border-radius:58px;white-space:nowrap;
  transition:background .18s ease,transform .18s ease;
}
.btn:hover{background:rgb(112,80,240);text-decoration:none;transform:translateY(-1px)}
.btn-ghost{
  background:transparent;border:1.6px solid rgba(255,255,255,.85);color:#fff;
}
.btn-ghost:hover{background:rgba(255,255,255,.1);transform:translateY(-1px)}
@media (prefers-reduced-motion:reduce){.btn{transition:none}.btn:hover{transform:none}}

/* ---------- pie ---------- */
.foot{
  border-top:1px solid var(--line);margin-top:40px;padding:34px 30px 44px;
}
.foot-in{
  max-width:1120px;margin:0 auto;display:flex;flex-wrap:wrap;
  gap:14px 30px;align-items:center;justify-content:space-between;
}
.foot p{margin:0;font-size:14px;color:var(--ink-faint)}
.foot-links{display:flex;gap:22px;flex-wrap:wrap}
.foot-links a{color:var(--ink-faint);font-size:14px}
.foot-links a:hover{color:var(--cyan)}

/* ---------- WhatsApp ---------- */
.pu-wa{
  position:fixed;right:20px;bottom:20px;z-index:2147482500;
  width:56px;height:56px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;background:#25D366;
  box-shadow:0 4px 14px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.12) inset;
  transition:transform .18s ease;
}
.pu-wa:hover{transform:scale(1.06);text-decoration:none}
.pu-wa svg{width:30px;height:30px;display:block}
@media (max-width:809px){.pu-wa{right:16px;bottom:16px;width:52px;height:52px}}
@media (prefers-reduced-motion:reduce){.pu-wa{transition:none}.pu-wa:hover{transform:none}}

/* ---------- aparición al hacer scroll ---------- */
.reveal{opacity:0;transform:translateY(24px);filter:blur(6px);
  transition:opacity .7s ease,transform .7s ease,filter .7s ease}
.reveal.is-in{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;filter:none;transition:none}
}

/* ---------- revelado letra por letra ----------
   Replica el efecto del template: cada carácter entra con opacidad,
   desenfoque y desplazamiento vertical, escalonado.
   Las palabras no se parten: cada una es un bloque nowrap. */
.pu-word{display:inline-block;white-space:nowrap}
.pu-char{
  display:inline-block;opacity:.001;filter:blur(10px);
  transform:translateY(10px);
  transition:opacity .5s ease,filter .5s ease,transform .5s ease;
}
.pu-char.is-in{opacity:1;filter:blur(0);transform:none}
@media (prefers-reduced-motion:reduce){
  .pu-char{opacity:1;filter:none;transform:none;transition:none}
}

/* ---------- carrusel de logos ---------- */
.trust{padding:56px 0 64px}
.trust p.trust-label{
  text-align:center;font-size:16px;color:var(--ink-soft);margin:0 0 30px;
}
.ticker-mask{
  width:100%;overflow:hidden;
  -webkit-mask-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,1) 12.5%,rgba(0,0,0,1) 87.5%,rgba(0,0,0,0) 100%);
  mask-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,1) 12.5%,rgba(0,0,0,1) 87.5%,rgba(0,0,0,0) 100%);
}
.ticker-track{
  display:flex;align-items:center;gap:68px;width:max-content;
  animation:pu-ticker 34s linear infinite;
}
.ticker-track img{height:36px;width:auto;flex-shrink:0;opacity:.75}
@keyframes pu-ticker{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .ticker-track{animation:none;flex-wrap:wrap;justify-content:center;gap:40px}
}
/* Con pocos logos el desplazamiento infinito se ve vacío: fila centrada fija. */
.ticker-mask.is-static{-webkit-mask-image:none;mask-image:none}
.ticker-track.is-static{
  animation:none;width:auto;flex-wrap:wrap;justify-content:center;gap:56px;
}
@media (max-width:809px){.ticker-track.is-static{gap:34px}}

/* ---------- resumen de casos ---------- */
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media (max-width:1024px){.grid-3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.grid-3{grid-template-columns:1fr}}
.mini{
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:12px;padding:24px 24px;
  display:flex;flex-direction:column;gap:9px;
}
.mini-client{
  font-family:var(--display);font-weight:500;font-size:16px;color:#fff;margin:0;
}
.mini-metric{
  font-family:var(--display);font-weight:400;font-size:22px;line-height:1.15;
  letter-spacing:-.01em;margin:0;font-variant-numeric:tabular-nums;
  background-image:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.mini-desc{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-soft)}

/* ---------- tarjetas de credencial ---------- */
.stat{
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);border-radius:12px;padding:26px 24px;
  display:flex;flex-direction:column;gap:8px;
}
.stat-num{
  font-family:var(--display);font-weight:400;
  font-size:clamp(34px,4.4vw,48px);line-height:1;letter-spacing:-.02em;margin:0;
  font-variant-numeric:tabular-nums;
  background-image:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.stat-label{font-family:var(--display);font-weight:500;font-size:16px;color:#fff;margin:0;line-height:1.3}
.stat-src{margin:0;font-size:13.5px;line-height:1.55;color:var(--ink-faint)}

/* ---------- retrato del founder ---------- */
.founder-split{
  display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);
  gap:48px;align-items:start;
}
@media (max-width:900px){
  .founder-split{grid-template-columns:1fr;gap:30px}
}
.portrait{
  position:relative;border-radius:14px;overflow:hidden;
  border:1px solid var(--line);background:var(--glass);
}
.portrait img{
  display:block;width:100%;height:auto;
  /* desvanecido lateral: oculta los recortes del fondo original */
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 9%,#000 91%,transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 9%,#000 91%,transparent 100%);
}
@media (max-width:900px){
  .portrait{max-width:300px}
}
.bio p{font-size:18px;line-height:1.72;max-width:62ch}

/* ---------- logos de medios ---------- */
.media-logos{
  display:flex;flex-wrap:wrap;align-items:center;gap:26px 56px;margin:0 0 26px;
}
.media-logos img{height:30px;width:auto;opacity:.85}
@media (max-width:809px){
  .media-logos{gap:22px 34px}
  .media-logos img{height:24px}
}

/* ---------- franja de medios ---------- */
.media-row{
  display:flex;flex-wrap:wrap;gap:14px 12px;align-items:center;list-style:none;padding:0;margin:0;
}
.media-row li{
  font-family:var(--body);font-size:14px;letter-spacing:.03em;color:var(--ink-soft);
  border:1px solid var(--line);border-radius:40px;padding:8px 18px;
  background:var(--glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
}
.media-row li::before{display:none}

/* ---------- relleno de hover en botones ----------
   Igual que el "Hover Fill" del template: una capa que crece desde el centro. */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;
  background:linear-gradient(270deg, rgb(51,194,255) 0%, rgb(0,119,255) 100%);
  transform:scaleX(0);transform-origin:center;
  transition:transform .34s cubic-bezier(.4,0,.2,1);
}
.btn:hover::before,.btn:focus-visible::before{transform:scaleX(1)}
.btn-ghost::before{background:rgba(255,255,255,.14)}
@media (prefers-reduced-motion:reduce){
  .btn::before{transition:none}
}
