@font-face{font-family:Poppins;src:url(/fonts/poppins-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:Poppins;src:url(/fonts/poppins-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:Poppins;src:url(/fonts/poppins-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Plex Mono";src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}

/* =====================================================================
   TEMA «AURORA» — oscuro, animado, con efectos al pasar el ratón
   Tres paletas (Aurora / Fuego / Matrix) que cambian con un clic.
   ===================================================================== */
@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}
:root{
  --bg:#04060c;--bg2:#090e1b;--card:rgba(255,255,255,.045);--card2:rgba(255,255,255,.075);--line:rgba(255,255,255,.1);
  --txt:#eef2fb;--mut:#a3afc4;--dim:#74819a;
  --a1:#22d3ee;--a2:#8b5cf6;--a3:#f472b6;--glow:34,211,238;--glow2:139,92,246;--glow3:244,114,182;
  --grad:linear-gradient(110deg,var(--a1),var(--a2) 55%,var(--a3));
  --radio:22px;--ease:cubic-bezier(.2,.7,.2,1);
}
html[data-tema=fuego]{--a1:#fb923c;--a2:#f43f5e;--a3:#fbbf24;--glow:251,146,60;--glow2:244,63,94;--glow3:251,191,36}
html[data-tema=matrix]{--a1:#34d399;--a2:#22d3ee;--a3:#a3e635;--glow:52,211,153;--glow2:34,211,238;--glow3:163,230,53}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px;background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--txt);font:400 16.5px/1.65 Poppins,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden;position:relative}
.mono{font-family:"Plex Mono",ui-monospace,Consolas,monospace}
img{display:block;max-width:100%}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
h1,h2,h3{font-weight:700;letter-spacing:-.025em;margin:0;color:var(--txt)}
p{margin:0 0 1em}ul,ol{margin:0;padding:0;list-style:none}figure{margin:0}
::selection{background:rgba(var(--glow),.45);color:#fff}
.env{max-width:1240px;margin:0 auto;padding:0 32px}
@media (max-width:560px){.env{padding:0 20px}}

/* fondo vivo: aurora + rejilla */
body::before{content:"";position:fixed;inset:-25vmax;z-index:-2;pointer-events:none;
  background:radial-gradient(38vmax 38vmax at 18% 22%,rgba(var(--glow),.24),transparent 62%),radial-gradient(42vmax 42vmax at 84% 14%,rgba(var(--glow2),.22),transparent 62%),radial-gradient(40vmax 40vmax at 62% 92%,rgba(var(--glow3),.16),transparent 62%);
  animation:aurora 26s ease-in-out infinite alternate;will-change:transform}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:58px 58px;
  -webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 25%,#000 10%,transparent 78%);mask-image:radial-gradient(ellipse 80% 60% at 50% 25%,#000 10%,transparent 78%);animation:rejilla 40s linear infinite}
@keyframes aurora{0%{transform:translate3d(0,0,0) rotate(0) scale(1)}50%{transform:translate3d(3%,-2%,0) rotate(8deg) scale(1.06)}100%{transform:translate3d(-3%,3%,0) rotate(-6deg) scale(1.1)}}
@keyframes rejilla{to{background-position:58px 58px,58px 58px}}
.progreso{position:fixed;left:0;top:0;height:3px;width:100%;z-index:120;transform-origin:0 50%;transform:scaleX(var(--p,0));background:var(--grad);box-shadow:0 0 14px rgba(var(--glow),.8)}
.cursor-fx{position:fixed;left:0;top:0;width:560px;height:560px;margin:-280px 0 0 -280px;border-radius:50%;pointer-events:none;z-index:1;opacity:0;transition:opacity .5s;transform:translate3d(var(--cx,-999px),var(--cy,-999px),0);background:radial-gradient(circle,rgba(var(--glow),.13),transparent 62%);mix-blend-mode:screen}
.cursor-fx.on{opacity:1}
@media (hover:none){.cursor-fx{display:none}}

/* ---------- barra superior ---------- */
.barra-sup{position:fixed;inset:0 0 auto;z-index:100;background:rgba(4,6,12,.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5);border-bottom:1px solid transparent;transition:background .3s,border-color .3s,box-shadow .3s}
.barra-sup.solida{background:rgba(4,6,12,.78);border-color:var(--line);box-shadow:0 18px 40px -24px #000}
.barra-sup .env{display:flex;align-items:center;gap:14px;height:72px;max-width:1700px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;white-space:nowrap}
.logo img{width:36px;height:auto;filter:invert(1);transition:transform .5s var(--ease),filter .3s}
.logo:hover img{transform:rotate(-8deg) scale(1.12);filter:invert(1) drop-shadow(0 0 10px rgba(var(--glow),.9))}
.logo span{transition:letter-spacing .35s var(--ease)}.logo:hover span{letter-spacing:.02em}
.menu{display:flex;gap:2px;margin-left:auto;font-size:14px;font-weight:600}
.menu a{position:relative;text-decoration:none;color:var(--mut);padding:8px 11px;white-space:nowrap;transition:color .25s}
.menu a::after{content:"";position:absolute;left:11px;right:11px;bottom:2px;height:2px;border-radius:2px;background:var(--grad);transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease)}
.menu a:hover,.menu a:focus-visible{color:#fff}.menu a:hover::after,.menu a:focus-visible::after{transform:scaleX(1);transform-origin:left}
.langs{display:flex;flex:none;border:1px solid var(--line);border-radius:999px;overflow:hidden;font-size:12px;background:rgba(255,255,255,.04)}
.langs a{text-decoration:none;padding:10px 12px;color:var(--mut);transition:background .25s,color .25s}
.langs a:hover{color:#fff;background:rgba(255,255,255,.08)}
.langs a[aria-current]{background:var(--grad);color:#04060c;font-weight:700}
.tema-bt{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.04);cursor:pointer;display:grid;place-items:center;padding:0;transition:transform .5s var(--ease),border-color .3s}
.tema-bt span{width:20px;height:20px;border-radius:50%;background:conic-gradient(var(--a1),var(--a2),var(--a3),var(--a1));box-shadow:0 0 14px rgba(var(--glow),.7)}
.tema-bt:hover{transform:rotate(180deg) scale(1.12);border-color:rgba(var(--glow),.7)}
.bot-wa{display:inline-flex;flex:none;align-items:center;gap:8px;position:relative;overflow:hidden;background:var(--grad);color:#04060c;text-decoration:none;font-size:14px;font-weight:700;padding:11px 18px;border-radius:999px;transition:transform .25s var(--ease),box-shadow .3s;box-shadow:0 10px 30px -12px rgba(var(--glow),.9)}
.bot-wa svg{width:18px;height:18px;fill:currentColor}
.bot-wa:hover{transform:translateY(-2px);box-shadow:0 16px 36px -10px rgba(var(--glow),1)}
.burger{display:none;flex:none;width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:rgba(255,255,255,.04);cursor:pointer;padding:0;position:relative}
.burger span{position:absolute;left:12px;right:12px;height:2px;border-radius:2px;background:#fff;transition:transform .35s var(--ease),opacity .2s,top .35s var(--ease)}
.burger span:nth-child(1){top:15px}.burger span:nth-child(2){top:21px}.burger span:nth-child(3){top:27px}
.menu-abierto .burger span:nth-child(1){top:21px;transform:rotate(45deg)}.menu-abierto .burger span:nth-child(2){opacity:0}.menu-abierto .burger span:nth-child(3){top:21px;transform:rotate(-45deg)}
@media (max-width:1180px){
 .burger{display:block;margin-left:0}
 .barra-sup .env{gap:10px}.langs{margin-left:auto}
 .menu{position:fixed;inset:72px 0 auto 0;margin:0;flex-direction:column;gap:0;padding:14px 20px 28px;background:rgba(4,6,12,.96);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--line);transform:translateY(-14px);opacity:0;visibility:hidden;transition:transform .4s var(--ease),opacity .3s,visibility .3s;max-height:calc(100vh - 72px);overflow:auto}
 .menu-abierto .menu{transform:none;opacity:1;visibility:visible}
 .menu a{font-size:1.25rem;padding:14px 4px;border-bottom:1px solid var(--line);color:#fff;opacity:0;transform:translateX(-18px);transition:opacity .4s var(--ease),transform .4s var(--ease),color .25s}
 .menu-abierto .menu a{opacity:1;transform:none;transition-delay:calc(var(--i,0) * 55ms)}
 .menu a::after{display:none}
}
@media (max-width:560px){.logo span,.bot-wa span{display:none}.bot-wa{padding:11px 13px}}

/* ---------- botones ---------- */
.bot,.boton{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 26px;border-radius:999px;border:1px solid transparent;text-decoration:none;font:600 15px/1 Poppins,sans-serif;cursor:pointer;transition:transform .25s var(--ease),box-shadow .3s,border-color .3s,background .3s,color .3s;transform:translate(var(--tx,0),var(--ty,0))}
.bot svg{width:20px;height:20px;fill:currentColor}
.bot.azul,.boton{background:var(--grad);background-size:160% 100%;color:#04060c;box-shadow:0 14px 34px -14px rgba(var(--glow),.95)}
.bot.azul:hover,.boton:hover{background-position:100% 0;box-shadow:0 20px 44px -12px rgba(var(--glow),1);transform:translate(var(--tx,0),calc(var(--ty,0px) - 3px))}
.bot.claro{background:rgba(255,255,255,.05);border-color:var(--line);color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.bot.claro:hover{border-color:rgba(var(--glow),.8);background:rgba(var(--glow),.12);box-shadow:0 0 0 4px rgba(var(--glow),.12);transform:translate(var(--tx,0),calc(var(--ty,0px) - 3px))}
.bot:active,.boton:active{transform:scale(.97)}
.bot::after,.boton::after,.bot-wa::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-130%);transition:transform .8s var(--ease);pointer-events:none}
.bot:hover::after,.boton:hover::after,.bot-wa:hover::after{transform:translateX(130%)}
.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.55);transform:scale(0);animation:ripple .7s ease-out forwards;pointer-events:none}
@keyframes ripple{to{transform:scale(4);opacity:0}}
.bot .in{width:20px;height:20px;border-radius:4px;display:grid;place-items:center;background:#0a66c2;color:#fff;font-size:12px}

/* ---------- portada ---------- */
.portada{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:120px 0 64px;overflow:hidden}
.red-fx{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
.portada .env{position:relative;z-index:2;width:100%}
.portada-in{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}
.rotulo{display:inline-flex;align-items:center;gap:10px;font-size:13px;font-weight:600;color:var(--txt);background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:999px;padding:7px 16px 7px 12px;margin-bottom:26px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.rotulo i{width:9px;height:9px;border-radius:50%;background:#22c55e;animation:pulso 2s infinite}
@keyframes pulso{0%{box-shadow:0 0 0 0 rgba(34,197,94,.7)}70%{box-shadow:0 0 0 12px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.portada h1{font-size:clamp(2.7rem,6.4vw,5.6rem);line-height:1.02;letter-spacing:-.04em}
.portada h1 span,.seccion h2 span,.bib-hero h1 span{background:var(--grad);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:brilla 7s ease-in-out infinite alternate}
@keyframes brilla{to{background-position:100% 0}}
.rotador{margin:22px 0 0;font-size:clamp(1rem,2vw,1.3rem);color:var(--a1);min-height:1.7em}
.rot-c{display:inline-block;width:.6em;height:1.1em;margin-left:3px;vertical-align:-.2em;background:var(--a1);animation:parpadeo 1s steps(2) infinite}
@keyframes parpadeo{50%{opacity:0}}
.cargo{margin:18px 0 12px}.cargo strong{display:block;font-size:1.1rem}.cargo small{color:var(--mut);font-size:14.5px}
.lead{font-size:1.1rem;color:var(--mut);max-width:37rem;margin-bottom:30px}
.acciones{display:flex;flex-wrap:wrap;gap:14px}
.contacto-rapido{margin:20px 0 0;font-size:14px;color:var(--dim)}
.contacto-rapido a{color:var(--mut);text-decoration-color:rgba(255,255,255,.25);transition:color .25s}.contacto-rapido a:hover{color:var(--a1)}
.foto-fusion{position:relative;justify-self:center;width:100%;max-width:480px}
.foto-fusion::before{content:"";position:absolute;left:50%;top:50%;width:112%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:conic-gradient(from var(--ang),var(--a1),var(--a2),var(--a3),var(--a1));filter:blur(46px);opacity:.55;animation:gira 9s linear infinite}
.foto-fusion::after{content:"";position:absolute;left:50%;top:50%;width:92%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;border:1px solid rgba(var(--glow),.45);box-shadow:inset 0 0 60px rgba(var(--glow),.12),0 0 60px rgba(var(--glow),.18);animation:pulsoAro 5s ease-in-out infinite}
@keyframes gira{to{--ang:360deg}}
@keyframes pulsoAro{50%{transform:translate(-50%,-50%) scale(1.04);border-color:rgba(var(--glow2),.6)}}
.foto-fusion img{position:relative;z-index:1;width:100%;height:auto;-webkit-mask-image:linear-gradient(#000 86%,transparent 100%);mask-image:linear-gradient(#000 86%,transparent 100%);transform:translate3d(calc(var(--px,0) * 14px),calc(var(--py,0) * 10px),0);animation:flota 7s ease-in-out infinite}
@keyframes flota{0%,100%{translate:0 0}50%{translate:0 -12px}}
.sello{position:absolute;z-index:2;left:-14px;bottom:70px;display:flex;align-items:center;gap:12px;background:rgba(10,15,28,.72);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:16px;padding:12px 16px;font-size:13px;line-height:1.3;color:var(--mut);box-shadow:0 20px 40px -20px #000;animation:flota 5s ease-in-out infinite reverse;transition:border-color .3s,transform .3s}
.sello:hover{border-color:rgba(var(--glow),.7)}
.sello svg{width:30px;height:30px;fill:#3b82f6;flex:none}.sello strong{display:block;color:#fff;font-size:14px}
@media (max-width:860px){
 .portada{min-height:0;padding:104px 0 40px}.portada-in{grid-template-columns:1fr}.portada-txt{order:1}.foto-fusion{order:2;max-width:300px;margin:12px auto 0}
 .acciones{flex-direction:column;align-items:stretch}.acciones .bot{justify-content:center}
}

/* ---------- cifras y cinta ---------- */
.banda{position:relative;z-index:2;margin:0 0 8px;padding:6px 0}
.banda .env{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.banda li{position:relative;text-align:center;padding:22px 10px;border-radius:var(--radio);background:var(--card);border:1px solid var(--line);transition:transform .35s var(--ease),border-color .3s,box-shadow .3s}
.banda li:hover{transform:translateY(-6px) scale(1.03);border-color:rgba(var(--glow),.55);box-shadow:0 24px 50px -24px rgba(var(--glow),.7)}
.banda strong{display:block;font-size:clamp(2rem,3.8vw,3.2rem);line-height:1;letter-spacing:-.04em;font-weight:700;font-variant-numeric:tabular-nums;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.banda span{display:block;margin-top:8px;font-size:14px;color:var(--mut)}
@media (max-width:760px){.banda .env{grid-template-columns:1fr 1fr}}
.cinta{padding:30px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.cinta-fila{display:flex;gap:18px;width:max-content;animation:desliza 70s linear infinite}
.cinta-fila.inv{animation-direction:reverse;margin-top:16px;animation-duration:80s}
.cinta:hover .cinta-fila{animation-play-state:paused}
@keyframes desliza{to{transform:translateX(-50%)}}
.cinta-fila span{display:flex;align-items:center;gap:10px;padding:10px 18px;border-radius:999px;background:var(--card);border:1px solid var(--line);font-size:14px;font-weight:600;color:var(--mut);white-space:nowrap;transition:transform .3s var(--ease),border-color .3s,color .3s,box-shadow .3s}
.cinta-fila svg{width:22px;height:22px;fill:color-mix(in srgb,var(--c,#94a3b8) 62%,#fff)}
.cinta-fila img{width:22px;height:22px;border-radius:5px}
.cinta-fila span:hover{transform:translateY(-4px) scale(1.08);color:#fff;border-color:var(--c,var(--a1));box-shadow:0 14px 34px -12px var(--c,var(--a1))}

/* ---------- secciones ---------- */
.seccion{position:relative;padding:104px 0}
.seccion.alt{background:linear-gradient(180deg,transparent,rgba(255,255,255,.025) 18%,rgba(255,255,255,.025) 82%,transparent)}
.cab{text-align:center;max-width:780px;margin:0 auto 56px}
.et{display:inline-flex;align-items:center;gap:12px;font:600 12.5px/1 "Plex Mono",ui-monospace,monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--a1);margin-bottom:16px}
.et::before,.et::after{content:"";width:34px;height:1px;background:linear-gradient(90deg,transparent,var(--a1))}.et::after{transform:scaleX(-1)}
.cab h2,.contacto h2{font-size:clamp(2rem,4.4vw,3.3rem);line-height:1.08}
.cab p{color:var(--mut);margin:16px auto 0;max-width:42rem}
.contacto .et{justify-content:flex-start}.contacto .et::before{display:none}

/* efecto «cristal» con foco de luz al pasar el ratón */
.fx{position:relative;isolation:isolate;overflow:hidden;background:var(--card);border:1px solid var(--line);border-radius:var(--radio);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:transform .25s var(--ease),border-color .3s,box-shadow .4s,background .3s}
.fx::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(440px circle at var(--mx,50%) var(--my,50%),rgba(var(--glow),.2),transparent 46%);opacity:0;transition:opacity .35s}
.fx:hover{border-color:rgba(var(--glow),.5);background:var(--card2);box-shadow:0 34px 70px -34px rgba(var(--glow),.65)}
.fx:hover::before{opacity:1}
.fx-tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0))}
.fx-tilt:hover{--ty:-6px}

/* reveals */
.js .revela{opacity:0;transform:translateY(44px) scale(.98);filter:blur(10px);transition:opacity .9s var(--ease),transform .9s var(--ease),filter .9s var(--ease)}
.js .revela.visto{opacity:1;transform:none;filter:none}
.js .escalonado>*{opacity:0}
.js .escalonado.visto>*{opacity:1;animation:aparece .75s var(--ease) var(--d,0s) backwards}
@keyframes aparece{from{opacity:0;transform:translateY(36px) scale(.95);filter:blur(6px)}}
.entra{animation:entra 1.1s var(--ease) both;animation-delay:var(--d,0s)}
@keyframes entra{from{opacity:0;transform:translateY(34px);filter:blur(12px)}to{opacity:1;transform:none;filter:none}}

/* perfil */
.perfil-in{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start}
.texto p{color:var(--mut);font-size:1.04rem}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.chips li{font-size:14px;font-weight:600;padding:8px 16px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--txt);transition:transform .3s var(--ease),border-color .3s,background .3s,box-shadow .3s;cursor:default}
.chips li:hover{transform:translateY(-4px) rotate(-2deg);border-color:rgba(var(--glow),.7);background:rgba(var(--glow),.12);box-shadow:0 12px 26px -12px rgba(var(--glow),.8)}
.natural{position:relative;border-radius:var(--radio);overflow:hidden;border:1px solid var(--line)}
.natural::after{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(var(--glow),.18),transparent 45%,rgba(var(--glow2),.2));opacity:.7;transition:opacity .4s;pointer-events:none}
.natural:hover::after{opacity:0}
.natural img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;transition:transform 1.2s var(--ease)}.natural:hover img{transform:scale(1.06)}
.panel{margin-top:18px;padding:24px}.panel h3{font-size:1rem;margin-bottom:16px}
.idioma{margin-bottom:14px;font-size:15px}.idioma>div:first-child{display:flex;justify-content:space-between;margin-bottom:6px}.idioma span{color:var(--mut);font-size:14px}
.barra{height:8px;border-radius:99px;background:rgba(255,255,255,.09);overflow:hidden}
.barra i{display:block;height:100%;width:var(--v);border-radius:99px;background:var(--grad);box-shadow:0 0 14px rgba(var(--glow),.7);transition:width 1.6s var(--ease)}
.js .barra:not(.visto) i{width:0}
@media (max-width:860px){.perfil-in{grid-template-columns:1fr;gap:34px}}

/* servicios */
.servicios{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.servicio{display:flex;flex-direction:column}
.servicio img{width:100%;aspect-ratio:2/1;object-fit:cover;transition:transform .9s var(--ease),filter .5s;filter:saturate(.9) brightness(.85)}
.servicio:hover img{transform:scale(1.1);filter:saturate(1.15) brightness(1)}
.servicio .img-w{overflow:hidden}
.servicio>div{position:relative;flex:1;display:flex;flex-direction:column;padding:20px 22px 22px}
.servicio .n{position:absolute;top:-22px;left:20px;width:46px;height:46px;border-radius:14px;background:var(--grad);color:#04060c;display:grid;place-items:center;font-size:13px;font-weight:700;box-shadow:0 12px 26px -10px rgba(var(--glow),1);transition:transform .5s var(--ease)}
.servicio:hover .n{transform:rotate(-8deg) scale(1.12)}
.servicio h3{font-size:1.15rem;margin:14px 0 6px}
.servicio .lema{margin:0 0 12px;font-size:14.5px;color:var(--mut)}
.servicio ul{display:grid;gap:8px;margin:0 0 16px}
.servicio li{position:relative;padding-left:24px;font-size:13.5px;line-height:1.45;color:var(--txt);transition:transform .3s var(--ease)}
.servicio li::before{content:"";position:absolute;left:3px;top:.45em;width:10px;height:6px;border-left:2px solid var(--a1);border-bottom:2px solid var(--a1);transform:rotate(-45deg)}
.servicio li:hover{transform:translateX(5px)}
.serv-cta,.proy-cta{margin-top:auto;display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:14px;color:var(--a1);text-decoration:none;min-height:44px}
.serv-cta::after,.proy-cta::after{content:"→";transition:transform .35s var(--ease)}
.serv-cta:hover::after,.proy-cta:hover::after{transform:translateX(8px)}
.serv-cta:hover,.proy-cta:hover{color:#fff}
.nota-serv{margin:30px auto 0;max-width:760px;text-align:center;font-size:13px;color:var(--dim)}
@media (max-width:1180px){.servicios{grid-template-columns:1fr 1fr}}
@media (max-width:760px){.servicios{grid-template-columns:1fr}}

/* proyectos */
.filtros,.bib-fila{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 28px}
.filtros[hidden],.bib-fila[hidden]{display:none}
.filtros button,.bib-fila button,.rec-tab{font:inherit;font-size:14px;font-weight:600;min-height:44px;padding:8px 18px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--mut);cursor:pointer;transition:transform .25s var(--ease),background .3s,border-color .3s,color .3s,box-shadow .3s}
.filtros button:hover,.bib-fila button:hover,.rec-tab:hover{color:#fff;border-color:rgba(var(--glow),.7);transform:translateY(-3px)}
.filtros button[aria-pressed=true],.bib-fila button[aria-pressed=true],.rec-tab[aria-selected=true]{background:var(--grad);border-color:transparent;color:#04060c;box-shadow:0 12px 28px -12px rgba(var(--glow),1)}
.bib-fila b{font-size:13px;color:var(--dim);font-weight:600}
.proyectos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.proyecto{display:flex;flex-direction:column;padding:28px}
.proyecto[hidden]{display:none}
.proyecto .ico-p{width:54px;height:54px;border-radius:16px;background:rgba(var(--glow),.12);border:1px solid rgba(var(--glow),.3);display:grid;place-items:center;margin-bottom:18px;transition:transform .6s var(--ease),box-shadow .4s}
.proyecto:hover .ico-p{transform:rotate(360deg) scale(1.1);box-shadow:0 0 30px rgba(var(--glow),.6)}
.proyecto .ico-p svg{width:26px;height:26px;fill:var(--a1)}
.proyecto h3{font-size:1.12rem;margin-bottom:8px}
.proyecto p{margin:0;color:var(--mut);font-size:14.5px}
.proyecto small{align-self:flex-start;display:inline-block;margin-top:16px;font-size:12px;font-weight:600;color:var(--a1);background:rgba(var(--glow),.1);border:1px solid rgba(var(--glow),.25);border-radius:99px;padding:3px 12px}
.proy-cta{margin-top:12px}
@media (max-width:1100px){.proyectos{grid-template-columns:1fr 1fr}}@media (max-width:700px){.proyectos{grid-template-columns:1fr}}
@media (max-width:560px){.filtros,.bib-fila{flex-wrap:nowrap;overflow-x:auto;margin-inline:-20px;padding:0 20px 8px;scrollbar-width:none}.filtros button,.bib-fila button,.bib-fila b{flex:none}}

/* tecnologías */
.busca,.bib-q,.rec-q{margin:0 auto 26px;max-width:560px}
.busca[hidden]{display:none}
label{display:grid;gap:6px;font-size:14px;font-weight:600;color:var(--txt)}
.busca label,.bib-q label,.rec-q label{font-size:13px;color:var(--dim);font-weight:500}
input,select,textarea{font:inherit;font-weight:400;color:#fff;background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:14px;padding:13px 16px;width:100%;transition:border-color .3s,box-shadow .3s,background .3s}
input::placeholder,textarea::placeholder{color:var(--dim)}
input:focus,select:focus,textarea:focus{outline:none;border-color:rgba(var(--glow),.9);box-shadow:0 0 0 4px rgba(var(--glow),.16),0 0 30px -6px rgba(var(--glow),.6);background:rgba(255,255,255,.08)}
select option{background:#0a0f1c;color:#fff}
textarea{min-height:140px;resize:vertical}
.busca-n,.bib-cnt{margin:8px 0 0;font-size:13px;color:var(--dim)}
.muro{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:12px;margin-bottom:30px}
.muro li,.marcas li{min-width:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;min-height:100px;padding:14px 8px;border-radius:18px;background:var(--card);border:1px solid var(--line);font-size:12.5px;font-weight:600;color:var(--txt);text-align:center;line-height:1.2;transition:transform .35s var(--ease),border-color .3s,box-shadow .4s,background .3s}
.muro li:hover,.marcas li:hover{transform:translateY(-8px) scale(1.07) rotate(-1.2deg);border-color:var(--c,var(--a1));background:color-mix(in srgb,var(--c,var(--a1)) 14%,transparent);box-shadow:0 22px 44px -14px color-mix(in srgb,var(--c,var(--a1)) 75%,transparent);z-index:2}
.ico{display:grid;place-items:center;flex:none}
.muro .ico{width:38px;height:38px}.muro .ico svg{width:34px;height:34px}.muro .ico img{width:34px;height:34px;border-radius:8px}
.ico svg{fill:color-mix(in srgb,var(--c,#cbd5e1) 62%,#fff);transition:transform .5s var(--ease),fill .3s}
.muro li:hover .ico svg,.marcas li:hover .ico svg,.muro li:hover .ico img,.marcas li:hover .ico img{transform:scale(1.2) rotate(8deg)}
.muro li:hover .ico svg,.marcas li:hover .ico svg{fill:var(--c,var(--a1))}
.ico.mono{width:34px;height:34px;border-radius:10px;font-size:11px;font-weight:700;color:#fff;letter-spacing:.02em}
.mas summary{display:inline-flex;align-items:center;gap:12px;cursor:pointer;list-style:none;font-weight:700;color:#fff;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:14px 26px;transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}
.mas summary::-webkit-details-marker{display:none}
.mas summary:hover{transform:translateY(-3px);border-color:rgba(var(--glow),.8);box-shadow:0 14px 34px -14px rgba(var(--glow),.9)}
.mas summary span{background:var(--grad);color:#04060c;border-radius:99px;padding:2px 12px;font-size:12px;font-weight:700}
.mas summary::after{content:"+";font-size:1.3rem;line-height:1;transition:transform .4s var(--ease)}.mas[open] summary::after{transform:rotate(45deg)}
.mas-in{margin-top:34px;animation:abre .6s var(--ease)}
@keyframes abre{from{opacity:0;transform:translateY(-16px)}}
.grupo{margin-bottom:38px}
.grupo h3{font-size:1.05rem;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.grupo h3 span{font-size:12px;font-weight:600;color:var(--a1);background:rgba(var(--glow),.1);border-radius:99px;padding:2px 10px}
.marcas{display:grid;grid-template-columns:repeat(auto-fill,minmax(172px,1fr));gap:10px}
.marcas li{flex-direction:row;justify-content:flex-start;min-height:58px;padding:10px 14px;gap:12px;font-size:14px;text-align:left}
.marcas .ico{width:28px;height:28px}.marcas .ico svg{width:26px;height:26px}.marcas .ico img{width:26px;height:26px;border-radius:6px}
.mas .grupo[hidden],.mas li[hidden]{display:none}
@media (max-width:1100px){.muro{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (max-width:760px){.muro{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (max-width:480px){.muro{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* certificaciones */
.certs{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.cert{display:flex;gap:14px;align-items:flex-start;padding:20px}
.cert.destaque{border-color:rgba(var(--glow),.55);background:linear-gradient(160deg,rgba(var(--glow),.14),var(--card))}
.cert .ico{width:46px;height:46px;border-radius:14px;background:rgba(255,255,255,.07);border:1px solid var(--line);transition:transform .5s var(--ease)}
.cert:hover .ico{transform:rotate(-10deg) scale(1.12)}
.cert .ico svg{width:26px;height:26px}.cert .ico img{width:28px;height:28px}
.cert small{display:block;font-size:12px;color:var(--a1);font-weight:600;margin-bottom:2px}
.cert strong{display:block;line-height:1.3}
.cert span{color:var(--mut);font-size:14px}
.cert .ico.mono{color:#fff}

/* colaboraciones */
.colabs{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;max-width:1100px;margin:0 auto}
.colab{width:226px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 16px 18px}
.colab .logo-c{height:84px;width:100%;display:grid;place-items:center;margin-bottom:8px;background:#fff;border-radius:14px;padding:10px;transition:transform .5s var(--ease)}
.colab:hover .logo-c{transform:scale(1.06) rotate(-1.5deg)}
.colab img{width:170px;height:64px;max-width:100%;object-fit:contain}
.colab .texto-logo{font-size:1.4rem;font-weight:700;letter-spacing:-.02em;color:#0b1220}
.colab .nom-c{font-size:13.5px;line-height:1.3;text-align:center;font-weight:600}
.colab small{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
@media (max-width:560px){.colab{width:calc(50% - 8px);padding:16px 10px 14px}.colab img{width:120px}}

/* teasers (Recursos / Biblioteca) */
.teasers{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.teaser{position:relative;display:flex;flex-direction:column;gap:14px;padding:38px 34px;border-radius:var(--radio);text-decoration:none;color:inherit;border:1px solid transparent;background:linear-gradient(var(--bg2),var(--bg2)) padding-box,conic-gradient(from var(--ang),var(--a1),var(--a2),var(--a3),var(--a1)) border-box;animation:gira 8s linear infinite;overflow:hidden;isolation:isolate;transition:transform .4s var(--ease),box-shadow .4s}
.teaser::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(500px circle at var(--mx,50%) var(--my,0%),rgba(var(--glow),.22),transparent 55%);opacity:.6;transition:opacity .4s}
.teaser:hover{transform:translateY(-8px);box-shadow:0 40px 80px -40px rgba(var(--glow),.9)}.teaser:hover::before{opacity:1}
.teaser .et{margin:0}.teaser .et::before,.teaser .et::after{display:none}
.teaser h2{font-size:clamp(1.5rem,2.8vw,2.1rem)}
.teaser h2 span{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.teaser p{color:var(--mut);margin:0;max-width:36rem}
.teaser-chips{display:flex;flex-wrap:wrap;gap:8px}
.teaser-chips span{font-size:12.5px;font-weight:600;padding:4px 12px;border-radius:999px;background:rgba(255,255,255,.07);color:var(--txt);transition:transform .3s var(--ease)}
.teaser:hover .teaser-chips span{transform:translateY(-3px)}
.teaser:hover .teaser-chips span:nth-child(2){transition-delay:.05s}.teaser:hover .teaser-chips span:nth-child(3){transition-delay:.1s}.teaser:hover .teaser-chips span:nth-child(4){transition-delay:.15s}
.teaser-go{margin-top:auto;font-weight:700;color:var(--a1);display:inline-flex;gap:8px;align-items:center}
.teaser-go::after{content:"→";transition:transform .4s var(--ease)}.teaser:hover .teaser-go::after{transform:translateX(10px)}
@media (max-width:860px){.teasers{grid-template-columns:1fr}}

/* contacto */
.contacto{position:relative}
.contacto-in{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}
.contacto .nota{color:var(--mut);margin:18px 0 26px}
.form{display:grid;gap:16px;padding:32px}
.fila{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.trampa{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.aviso{margin:0;font-size:15px;display:none}.aviso.ok,.aviso.err{display:block;padding:12px 14px;border-radius:12px}
.aviso.ok{background:rgba(34,197,94,.15);color:#bbf7d0;border:1px solid rgba(34,197,94,.4)}.aviso.err{background:rgba(239,68,68,.15);color:#fecaca;border:1px solid rgba(239,68,68,.4)}
.boton{justify-self:start}.boton:disabled{opacity:.6;cursor:wait}
.privacidade{margin:0;font-size:12.5px;color:var(--dim)}
@media (max-width:860px){.contacto-in{grid-template-columns:1fr;gap:34px}.fila{grid-template-columns:1fr}}
.pie{position:relative;padding:30px 0 40px;font-size:13px;color:var(--dim);border-top:1px solid var(--line);background:rgba(0,0,0,.35)}
.pie .env{display:flex;justify-content:space-between;gap:10px 24px;flex-wrap:wrap}
.pie a{text-decoration:none;color:var(--mut);transition:color .25s}.pie a:hover{color:var(--a1)}

/* botón fijo móvil */
.cta-movel{display:none}
@media (max-width:860px){
 .cta-movel{display:flex;justify-content:center;align-items:center;position:fixed;left:16px;right:16px;bottom:16px;z-index:90;min-height:54px;border-radius:999px;background:var(--grad);color:#04060c;font-weight:700;text-decoration:none;box-shadow:0 18px 40px -10px rgba(var(--glow),.9);transform:translateY(160%);transition:transform .45s var(--ease)}
 .cta-movel.ver{transform:none}
 .pie{padding-bottom:100px}
}

/* accesibilidad */
.salto{position:fixed;left:12px;top:-70px;z-index:200;background:var(--grad);color:#04060c;font-weight:700;padding:10px 16px;border-radius:10px;text-decoration:none;transition:top .15s}
.salto:focus{top:12px}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--a1);outline-offset:3px}
/* El usuario decide: boton pausar animaciones (no se impone el ajuste del sistema operativo) */
html[data-mov=off] *,html[data-mov=off] *::before,html[data-mov=off] *::after{animation:none!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
html[data-mov=off] .js .revela,html[data-mov=off] .js .escalonado>*{opacity:1!important;transform:none!important;filter:none!important}
html[data-mov=off] .cinta-fila{width:auto;flex-wrap:wrap;justify-content:center;row-gap:14px}
.mov-bt{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.04);cursor:pointer;display:grid;place-items:center;padding:0;color:#fff;transition:transform .35s var(--ease),border-color .3s,background .3s}
.mov-bt:hover{transform:scale(1.14);border-color:rgba(var(--glow),.7)}
.mov-bt svg{width:16px;height:16px;fill:currentColor}
.mov-bt .i-play{display:none}html[data-mov=off] .mov-bt .i-play{display:block}html[data-mov=off] .mov-bt .i-pause{display:none}
@media (max-width:1560px){.logo span{display:none}}
@media (max-width:640px){.mov-bt{display:none}}
/* ---------- biblioteca Claude/Codex y recursos ---------- */
.bib-hero{padding:136px 0 24px}
.bib-hero h1,.rec-hero h1{font-size:clamp(2.1rem,4.8vw,3.6rem);line-height:1.06;margin:0 0 16px}
.bib-hero .lead,.rec-hero .lead{max-width:50rem}
.bib-ctrl{display:grid;gap:14px;margin-top:26px}
.bib-q,.rec-q{margin:0;max-width:560px}
.bib-grupo{margin:0 0 48px}.bib-grupo[hidden],.bib-card[hidden],.rec-grupo[hidden],.rec-card[hidden]{display:none}
.bib-grupo h2,.rec-grupo h2{font-size:1.5rem;margin:0 0 18px;display:flex;align-items:center;gap:12px}
.bib-grupo h2 span,.rec-grupo h2 span{font-size:12px;font-weight:600;color:var(--a1);background:rgba(var(--glow),.1);border-radius:99px;padding:2px 12px}
.bib-grid,.rec-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.bib-card{padding:18px;display:flex;flex-direction:column;gap:10px;min-width:0}
.bib-top{display:flex;flex-wrap:wrap;gap:6px}
.bib-tag{font-size:11.5px;font-weight:700;padding:2px 10px;border-radius:99px;border:1px solid var(--line);color:var(--mut);background:rgba(255,255,255,.04)}
.bib-tag.t-c{color:#fdba74;border-color:rgba(253,186,116,.4);background:rgba(251,146,60,.1)}
.bib-tag.t-x{color:#6ee7b7;border-color:rgba(110,231,183,.4);background:rgba(16,185,129,.1)}
.bib-tag.t-b{color:#a5b4fc;border-color:rgba(165,180,252,.4);background:rgba(99,102,241,.12)}
.bib-card code,.cmd code{font-family:"Plex Mono",ui-monospace,Consolas,monospace;font-size:13.5px;font-weight:500;color:var(--a1);background:rgba(0,0,0,.35);border:1px solid var(--line);border-radius:10px;padding:7px 10px;overflow-wrap:anywhere;line-height:1.45}
.bib-card p{margin:0;font-size:14px;color:var(--mut);line-height:1.55}
.bib-vacio,.rec-vacio{padding:28px;border:1px dashed var(--line);border-radius:var(--radio);color:var(--mut);text-align:center}.bib-vacio[hidden],.rec-vacio[hidden]{display:none}
.bib-pie{margin-top:8px;display:grid;gap:10px;font-size:14px;color:var(--mut)}.bib-pie ul{display:flex;flex-wrap:wrap;gap:8px 18px}.bib-pie a{color:var(--a1)}
.rec-hero{padding:136px 0 24px}
.rec-nav{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.rec-nav a{padding:10px 18px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);text-decoration:none;font-weight:600;font-size:14px;color:var(--txt);transition:transform .25s var(--ease),border-color .3s,background .3s}
.rec-nav a:hover{transform:translateY(-3px);border-color:rgba(var(--glow),.8);background:rgba(var(--glow),.12)}
.rec-fil{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.rec-fil[hidden]{display:none}
.rec-fil b{font-size:13px;color:var(--dim);font-weight:600;width:100%}
.rec-fil button{font:inherit;font-size:13.5px;font-weight:600;min-height:40px;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--mut);cursor:pointer;display:inline-flex;align-items:center;gap:8px;transition:transform .25s var(--ease),border-color .3s,background .3s,color .3s}
.rec-fil button i{width:9px;height:9px;border-radius:50%;background:var(--c,var(--a1));box-shadow:0 0 10px var(--c,var(--a1))}
.rec-fil button:hover{color:#fff;border-color:var(--c,var(--a1));transform:translateY(-3px)}
.rec-fil button[aria-pressed=true]{color:#04060c;background:var(--c,var(--grad));border-color:transparent}
.rec-fil button[aria-pressed=true] i{background:#04060c;box-shadow:none}
.rec-card{display:flex;flex-direction:column;gap:8px;padding:16px 18px;text-decoration:none;color:inherit;min-width:0;--c:var(--a1)}
.rec-card:hover{border-color:var(--c);box-shadow:0 26px 54px -26px var(--c)}
.rec-top{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;color:var(--mut)}
.rec-top i{width:9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c);flex:none}
.rec-top em{font-style:normal;margin-left:auto;padding:2px 9px;border-radius:99px;border:1px solid var(--line);background:rgba(255,255,255,.05);letter-spacing:.02em}
.rec-card strong{font-size:1rem;line-height:1.3;transition:color .3s}
.rec-card:hover strong{color:#fff}
.rec-dom{font:500 12.5px/1.3 "Plex Mono",ui-monospace,monospace;color:var(--dim);overflow-wrap:anywhere;display:flex;justify-content:space-between;gap:10px;align-items:center}
.rec-dom::after{content:"↗";color:var(--c);font-size:1.1rem;transition:transform .35s var(--ease)}
.rec-card:hover .rec-dom::after{transform:translate(4px,-4px) scale(1.2)}
.rec-tabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:22px}
.rec-panel[hidden]{display:none}
.cmds{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.cmd{position:relative;display:flex;flex-direction:column;gap:6px;text-align:left;font:inherit;color:inherit;padding:14px 16px;cursor:pointer;width:100%}
.cmd code{display:block;color:var(--c,var(--a1));white-space:pre-wrap;word-break:break-word}
.cmd span{font-size:13.5px;color:var(--mut)}
.cmd::after{content:attr(data-copy);position:absolute;top:12px;right:14px;font-size:11.5px;font-weight:700;color:var(--dim);opacity:0;transform:translateY(4px);transition:opacity .25s,transform .25s}
.cmd:hover::after{opacity:1;transform:none}
.cmd.copiado{border-color:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2)}
.cmd.copiado::after{content:attr(data-ok);color:#4ade80;opacity:1;transform:none}
.rec-lib{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding:26px 28px;margin-top:40px;text-decoration:none;color:inherit}
.rec-lib strong{font-size:1.1rem}.rec-lib p{margin:4px 0 0;color:var(--mut)}
.rec-lib span{font-weight:700;color:var(--a1)}
@media (max-width:1100px){.bib-grid,.rec-grid{grid-template-columns:1fr 1fr}}
@media (max-width:700px){.bib-grid,.rec-grid,.cmds{grid-template-columns:1fr}.bib-hero,.rec-hero{padding-top:100px}}

/* ---------- puntero propio: punto + anillo que reacciona ---------- */
@media (hover:hover) and (pointer:fine){
 html.pt-on,html.pt-on *{cursor:none!important}
 html.pt-on input:not([type=checkbox]):not([type=radio]),html.pt-on textarea{cursor:text!important}
 html.pt-on select{cursor:pointer!important}
 .pt-dot,.pt-ring{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;opacity:0;transition:opacity .3s}
 html.pt-on .pt-dot,html.pt-on .pt-ring{opacity:1}
 html.pt-fuera .pt-dot,html.pt-fuera .pt-ring{opacity:0}
 .pt-dot{width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.35),0 0 14px 3px rgba(var(--glow),.95);transform:translate3d(var(--dx,-99px),var(--dy,-99px),0);transition:opacity .3s,width .2s,height .2s,margin .2s,background .2s}
 .pt-ring{width:40px;height:40px;margin:-20px 0 0 -20px;transform:translate3d(var(--rx,-99px),var(--ry,-99px),0)}
 .pt-ring i{display:block;width:100%;height:100%;border-radius:50%;border:1.5px solid rgba(var(--glow),.85);background:rgba(var(--glow),.05);box-shadow:0 0 22px -4px rgba(var(--glow),.8);transition:transform .3s var(--ease),background .3s,border-color .3s,border-radius .3s}
 .pt-ring.hov i{transform:scale(1.7);background:rgba(var(--glow),.14);border-color:rgba(255,255,255,.85)}
 .pt-ring.down i{transform:scale(.62);background:rgba(var(--glow),.35)}
 .pt-ring.hov.down i{transform:scale(1.25)}
 .pt-ring.txt i{transform:scale(.18,.9);border-radius:6px;background:rgba(var(--glow),.6);border-color:transparent}
 .pt-dot.hov{width:5px;height:5px;margin:-2.5px 0 0 -2.5px}
 .pt-onda{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;border:2px solid rgba(var(--glow),.9);animation:onda .7s var(--ease) forwards}
 @keyframes onda{to{transform:scale(7);opacity:0}}
 .pt-chispa{position:fixed;left:0;top:0;z-index:2147482999;pointer-events:none;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:rgb(var(--glow));box-shadow:0 0 10px rgb(var(--glow));animation:chispa .75s ease-out forwards}
 @keyframes chispa{to{transform:translate(var(--cx),var(--cy)) scale(.2);opacity:0}}
}
@media not all and (hover:hover) and (pointer:fine){.pt-dot,.pt-ring{display:none}}
html[data-mov=off] .pt-dot,html[data-mov=off] .pt-ring{display:none}
/* ---------- paseo: viaje controlado por el scroll ---------- */
.paseo{position:relative;height:820vh}
.paseo-stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:var(--bg)}
.paseo-cv{position:absolute;inset:0;width:100%;height:100%;display:block}
.paseo-velo{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(4,6,12,.88) 0%,rgba(4,6,12,.5) 38%,rgba(4,6,12,.05) 72%),linear-gradient(0deg,rgba(4,6,12,.75),transparent 38%),linear-gradient(180deg,rgba(4,6,12,.6),transparent 22%)}
.paseo-txt,.paseo-intro{position:absolute;left:max(22px,6vw);right:max(22px,6vw);bottom:15vh;max-width:36rem;pointer-events:none}
.paseo-escena{position:absolute;left:0;right:0;bottom:0;opacity:0;transform:translateY(34px);filter:blur(10px);transition:opacity .7s var(--ease),transform .8s var(--ease),filter .7s var(--ease)}
.paseo-escena.activa{opacity:1;transform:none;filter:none;pointer-events:auto}
.paseo-escena .num{display:block;font:700 clamp(4rem,12vw,9rem)/.9 "Plex Mono",ui-monospace,monospace;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:.9;margin-bottom:6px}
.paseo-escena h2{font-size:clamp(1.8rem,4.6vw,3.2rem);line-height:1.05;margin-bottom:12px}
.paseo-escena p{color:#d3dbea;font-size:1.05rem;max-width:30rem;margin:0 0 18px}
.paseo-intro{transition:opacity .6s var(--ease),transform .7s var(--ease),filter .6s}
.paseo-intro.oculto{opacity:0;transform:translateY(-30px);filter:blur(10px)}
.paseo-intro h1{font-size:clamp(2.3rem,6vw,4.6rem);line-height:1.04;letter-spacing:-.04em;margin-bottom:14px}
.paseo-intro h1 span{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.paseo-intro p{color:#d3dbea;font-size:1.1rem;max-width:30rem}
.paseo-riel{position:absolute;right:max(14px,2.4vw);top:50%;transform:translateY(-50%);display:grid;gap:10px;z-index:3;margin:0;padding:0;list-style:none}
.paseo-riel button{position:relative;width:14px;height:14px;padding:0;border-radius:50%;border:1.5px solid rgba(255,255,255,.65);background:transparent;cursor:pointer;transition:transform .3s var(--ease),background .3s,border-color .3s,box-shadow .3s}
.paseo-riel button:hover{transform:scale(1.5);border-color:var(--a1)}
.paseo-riel button[aria-current=true]{background:var(--a1);border-color:var(--a1);box-shadow:0 0 16px rgba(var(--glow),1);transform:scale(1.3)}
.paseo-riel button::before{content:attr(data-l);position:absolute;right:26px;top:50%;transform:translateY(-50%) translateX(8px);white-space:nowrap;font-size:12.5px;font-weight:600;color:#fff;background:rgba(4,6,12,.8);border:1px solid var(--line);border-radius:99px;padding:3px 11px;opacity:0;pointer-events:none;transition:opacity .25s,transform .3s var(--ease)}
.paseo-riel button:hover::before,.paseo-riel button:focus-visible::before{opacity:1;transform:translateY(-50%)}
.paseo-prog{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.12);z-index:3}
.paseo-prog i{display:block;height:100%;transform-origin:0 50%;transform:scaleX(0);background:var(--grad);box-shadow:0 0 14px rgba(var(--glow),.9)}
.paseo-hint{position:absolute;left:50%;bottom:30px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;font:600 12px/1 "Plex Mono",ui-monospace,monospace;letter-spacing:.18em;text-transform:uppercase;color:#e8edf7;transition:opacity .4s;z-index:3}
.paseo-hint::after{content:"";width:22px;height:36px;border:2px solid rgba(255,255,255,.7);border-radius:12px;background:radial-gradient(circle at 50% 22%,#fff 0 2.5px,transparent 3px);animation:rueda 1.8s ease-in-out infinite}
@keyframes rueda{0%{background-position:0 0}50%{background-position:0 12px}100%{background-position:0 0}}
.paseo-hint.oculto{opacity:0}
.paseo-load{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:var(--bg);color:var(--mut);font:600 13px/1 "Plex Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;transition:opacity .6s,visibility .6s}
.paseo-load::after{content:"";position:absolute;left:50%;top:calc(50% + 28px);width:160px;height:3px;margin-left:-80px;border-radius:3px;background:linear-gradient(90deg,var(--a1) calc(var(--c,0) * 100%),rgba(255,255,255,.12) 0)}
.paseo-load.listo{opacity:0;visibility:hidden}
.paseo-fin{padding:90px 0 110px;text-align:center}
.paseo-fin h2{font-size:clamp(1.8rem,4vw,2.8rem);margin-bottom:22px}
.teaser.ancho{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:space-between;gap:24px}
.teaser.ancho>div{display:flex;flex-direction:column;gap:12px}
@media (max-width:860px){.paseo{height:640vh}.paseo-riel{display:none}.paseo-txt,.paseo-intro{bottom:13vh}.paseo-velo{background:linear-gradient(0deg,rgba(4,6,12,.92) 0%,rgba(4,6,12,.5) 45%,rgba(4,6,12,.1) 75%),linear-gradient(180deg,rgba(4,6,12,.55),transparent 20%)}.teaser.ancho{flex-direction:column;align-items:flex-start}}