#cover-veil,#cover-ui{display:none!important}html,body{overflow-x:hidden}:root{--muted:#1b2842}h1,h2,h3,h4,h5,h6{color:#0a1222}.lead,.sub,.subtitle,.desc,.note,.meta{color:#16233c}.chip,.pc-badge,.pro-hook,.pro-row-p,.pro-price-m,.status,.num,.chk,.h2-plan-d,.h2-num{color:#13203a}.eyebrow{color:#1463ff}a{color:#0f49c9}a:hover{color:#0a2f85}.mx,.mx *,#proyectos,#proyectos *,.x3-cover,.x3-cover *,.dark,.dark *,[class*=-dark],[class*=-dark] *{color:#eef3ff}.mx p,.mx li,.mx small,#proyectos small{color:#eef3ffdb!important}footer{color:#111a2e}footer a,footer li a,footer p a{color:#1c2740!important;opacity:1!important}footer a:hover{color:#1463ff!important}footer h3,footer h4,footer b,footer strong{color:#0a1222!important}footer p,footer li,footer small{color:#2a3550!important}.mx .eyebrow,#proyectos .eyebrow{color:#8fc0ff}.btn{font-weight:700;letter-spacing:.005em;transition:transform .2s ease,box-shadow .2s ease,background .2s ease,color .2s ease}.btn:not(.pri){color:#0a1222!important;background:#ffffffdb!important;border:1.5px solid rgba(10,18,34,.5)!important;backdrop-filter:saturate(140%) blur(8px);box-shadow:0 2px 12px #0a122214}.btn:not(.pri):hover{background:#0a1222!important;color:#fff!important;border-color:#0a1222!important;transform:translateY(-2px)}.mx .btn:not(.pri),#proyectos .btn:not(.pri),.x3-cover .btn:not(.pri){color:#fff!important;background:#ffffff1a!important;border-color:#ffffffa6!important}.mx .btn:not(.pri):hover,#proyectos .btn:not(.pri):hover{background:#fff!important;color:#0a1222!important;border-color:#fff!important}.btn.pri{box-shadow:0 10px 26px #1463ff42}.btn.pri:hover{transform:translateY(-2px);box-shadow:0 16px 36px #1463ff57}.ai-chips button{color:#0d1a33!important;border:1.4px solid rgba(20,99,255,.35)!important;background:#fff!important;font-weight:700}.ai-chips button:hover{background:#1463ff!important;color:#fff!important;border-color:#1463ff!important}.ai-langs button{color:#0d1a33!important;font-weight:700}.ai-langs button.on{background:#1463ff!important;color:#fff!important}footer .giant,.giant{display:none!important}#web-3d .mx{height:200vh!important}#web-3d .m3-grid{gap:18px}#web-3d .x3-wrap,#web-3d .m3-wrap{padding-top:22px;padding-bottom:22px}.ai-visual{aspect-ratio:auto!important;overflow:hidden;border-radius:18px}.ai-visual img,.ai-visual video{width:100%!important;height:auto!important;object-fit:contain!important;display:block}.ai-visual:after{display:none!important}@keyframes visDrift{0%{transform:scale(1)}to{transform:scale(1.045) translate3d(-1.2%,0,0)}}@keyframes handH{0%{transform:translate3d(-9px,5px,0) rotate(-.55deg)}to{transform:translate3d(5px,-4px,0) rotate(.35deg)}}@keyframes handR{0%{transform:translate3d(9px,-4px,0) rotate(.45deg)}to{transform:translate3d(-5px,4px,0) rotate(-.3deg)}}.m3d-x{transform-style:preserve-3d;will-change:transform,opacity}.m3d-wrap{perspective:1200px;perspective-origin:50% 40%}.ai-mic{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;border:1.6px solid rgba(20,99,255,.45);background:#fff;color:#1463ff;font-size:16px;cursor:pointer;margin-left:6px;transition:transform .18s ease,background .18s ease,color .18s ease}.ai-mic:hover{transform:scale(1.07)}.ai-mic[aria-pressed=true]{background:#1463ff;color:#fff;border-color:#1463ff;animation:micPulse 1.25s ease-in-out infinite}@keyframes micPulse{0%,to{box-shadow:0 0 #1463ff73}50%{box-shadow:0 0 0 12px #1463ff00}}@media(max-width:1024px){.hai-copy{text-align:center;padding-top:clamp(92px,12vh,132px)!important}.hai-copy>*{margin-left:auto;margin-right:auto}.hero-ai .hero-ctas{display:flex;justify-content:center}.hero-ai .hero-title{font-size:clamp(28px,5.2vw,44px)!important;line-height:1.14}.hero-ai .hero-title .line{overflow:visible!important;padding-bottom:0!important}.hero-ai .lead{font-size:clamp(14.5px,1.9vw,17px);max-width:560px}#web-3d .mx{height:170vh!important}}@media(max-width:760px){.hero-ai .hero-title{font-size:clamp(26px,7.6vw,34px)!important}.hai-copy{padding:84px 18px 0!important}.hai-stats{bottom:98px!important}.hai-facts{width:100%;justify-content:space-between;padding:12px 6px;flex-wrap:nowrap}.hai-fact{padding:0 8px;min-width:0}.hai-fact b{font-size:14.5px}.hai-fact small{font-size:10px;line-height:1.25;white-space:normal}.hai-cta{width:100%;max-width:320px;justify-content:center}#web-3d .mx{height:150vh!important}}@media(prefers-reduced-motion:reduce){.m3d-x,}#web-3d .mx-ch{max-width:min(560px,46vw);padding:26px 28px;border-radius:20px;background:linear-gradient(180deg,#080e1c6b,#080e1c42);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(14px) saturate(130%);-webkit-backdrop-filter:blur(14px) saturate(130%);box-shadow:0 24px 60px #00000059}#web-3d .mx-ch h2{font-size:clamp(26px,2.9vw,44px)!important;line-height:1.06;letter-spacing:-.022em;margin:0 0 12px;text-wrap:balance;max-width:none}#web-3d .mx-ch p{font-size:clamp(14px,1.05vw,16.5px);line-height:1.55;margin:0;max-width:44ch;color:#eef3ffe6!important}#web-3d .mx-ch .eyebrow{font-size:11px;letter-spacing:.22em;color:#8fc0ff!important;margin-bottom:10px;display:block}#web-3d .mx-ch .btn{margin-top:16px}@media(max-width:1024px){#web-3d .mx-ch{max-width:min(92vw,560px);padding:20px}#web-3d .mx-ch h2{font-size:clamp(24px,4.6vw,34px)!important}}@media(max-width:760px){#web-3d .mx-ch{max-width:calc(100vw - 36px);padding:18px}#web-3d .mx-ch h2{font-size:clamp(22px,6.4vw,30px)!important}#web-3d .mx-ch p{font-size:14px}}

@media (prefers-reduced-motion:reduce){.hai-human img,.hai-robot img,.ai-visual,.m3-media,.art{animation:none!important}}
/* --- v16 corrections --- */
footer{color:#16233c}
footer a,footer li,footer p,footer small,footer span,footer h3,footer h4{color:#16233c!important;opacity:1!important}
footer a:hover{color:#1463ff!important}
footer .giant,.giant{display:none!important}
h2{font-size:clamp(26px,3.1vw,44px)!important;line-height:1.08;letter-spacing:-.02em;text-wrap:balance}
h1:not(.hero-title){font-size:clamp(30px,3.6vw,52px)!important;line-height:1.06;text-wrap:balance}
#web-3d .mx-ch h2{font-size:clamp(24px,2.6vw,38px)!important}

@media (max-width:760px){.hai-stats{bottom:78px!important}}
footer,footer *{color:#16233c!important}footer h2,footer h3,footer h4,footer b,footer strong{color:#0a1222!important}footer a{color:#16233c!important;text-decoration:none}footer a:hover{color:#1463ff!important}footer small,footer p{color:#1f2d49!important}footer .eyebrow,footer [class*=head]{color:#0a1222!important;letter-spacing:.18em}h2{font-size:clamp(26px,3.1vw,46px)!important;line-height:1.08;letter-spacing:-.02em;text-wrap:balance;max-width:none}h3{font-size:clamp(18px,1.5vw,24px)!important;line-height:1.2;text-wrap:balance}.mx-ch h2{max-width:none!important}#inicio .hero-title{font-size:clamp(34px,4vw,60px)!important}.card,.pc,.plan,.tpl,.step,.box,.tile{box-sizing:border-box}.hai-stats{bottom:28px!important}@media(max-width:1024px){h2{font-size:clamp(24px,4.4vw,34px)!important}.hai-stats{bottom:24px!important}}@media(max-width:760px){h2{font-size:clamp(22px,6.2vw,30px)!important}.hai-stats{bottom:92px!important}}
.plan{grid-template-columns:minmax(0,1fr)!important;gap:14px!important}
.plan>*{min-width:0!important;max-width:100%}
.plans{align-items:start}
.sec-head{display:block!important;text-align:center}
.sec-head>*{margin-left:auto!important;margin-right:auto!important}
.sec-head h2{max-width:min(24ch,100%)!important}
.sec-head p,.sec-head .lead{max-width:64ch!important}
#contacto .cta-inner{text-align:center}
#contacto .cta-inner h2{max-width:none!important;width:100%;margin-left:auto;margin-right:auto}
#contacto .cta-inner>*{margin-left:auto;margin-right:auto}
#web-3d .mx{height:140vh!important}
#web-3d .x3-wrap,#web-3d .m3-wrap{padding-top:10px!important;padding-bottom:10px!important}
.x3-wrap h2,.m3-wrap h2,.tpl-head h2{max-width:min(26ch,100%)!important}
@media (max-width:760px){.sec-head h2{max-width:100%!important}#web-3d .mx{height:120vh!important}}

#proceso .steps{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))!important;gap:16px!important}
#proceso .steps>*{min-width:0!important;max-width:100%}
#expertises .wrap>*,#offres .wrap>*,#valeur .wrap>*{min-width:0;max-width:100%}
.wrap{box-sizing:border-box;max-width:100%}

/* === v22 · motion fix: una sola fuente de verdad === */
/* manos: mismo comportamiento en las dos, sin animacion de entrada */
.hai-human img{animation:handDriftL 9s ease-in-out infinite alternate;will-change:transform}
.hai-robot img{animation:handDriftR 10.5s ease-in-out infinite alternate;will-change:transform}
@keyframes handDriftL{from{transform:translate3d(-7px,4px,0) rotate(-.4deg)}to{transform:translate3d(5px,-3px,0) rotate(.28deg)}}
@keyframes handDriftR{from{transform:translate3d(7px,-3px,0) rotate(.35deg)}to{transform:translate3d(-5px,3px,0) rotate(-.22deg)}}
/* el bandeau deriva en el contenedor, la imagen la gobierna GSAP */
.ai-visual{animation:visDrift 18s ease-in-out infinite alternate}
@keyframes visDrift{from{transform:scale(1)}to{transform:scale(1.035) translate3d(-1%,0,0)}}
/* nada se anima fuera de pantalla */
.m-off,.m-off *{animation-play-state:paused!important}
/* secciones pesadas: el navegador no las calcula hasta acercarse */
section[id]{contain-intrinsic-size:auto 900px}
/* reserva de espacio para las imagenes sin medidas: evita saltos */
img:not([width]):not([height]){background:rgba(10,18,34,.03)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* mientras el dedo o la rueda se mueven, lo decorativo se congela: el scroll va limpio */
html.is-scrolling .m3-media img,html.is-scrolling .art img{animation-play-state:paused}

/* el navegador compone en GPU solo lo que de verdad se mueve */
.hai-human img,.hai-robot img,.ai-visual{backface-visibility:hidden}

/* v27 */
/* la cabeza IA sin tarjeta ni marco */
.ai-visual{border-radius:0!important;box-shadow:none!important;overflow:visible!important;background:transparent!important;border:0!important}
.ai-visual img,.ai-visual video{border-radius:0!important;box-shadow:none!important;border:0!important}
/* las cifras, siempre en barra horizontal */
.hai-facts{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}
.hai-facts::-webkit-scrollbar{display:none}
.hai-fact{flex:1 1 0;min-width:0}
.hai-fact b{white-space:nowrap}
.hai-fact small{white-space:normal}
/* alcance en la portada: solo letras, sin fondo */
.hai-world{display:block;margin:18px auto 0;background:none!important;border:0!important;padding:0!important;box-shadow:none!important;font-size:13px!important;font-weight:600;line-height:1.5;letter-spacing:.26em;text-transform:uppercase;color:#49587a}
@media (max-width:760px){.hai-world{font-size:10.5px;letter-spacing:.18em;margin-top:14px}}

/* v29 */
/* la portada aparece entera desde el primer fotograma: nada de textos que
   suben cruzandose con el titulo al entrar en la pagina */
.hero-ai .h-in,.hai-copy .h-in,.hai-copy .hai-world,.hai-stats{opacity:1!important;transform:none!important;translate:none!important;rotate:none!important;scale:none!important;filter:none!important}
.hero-ai .hero-title,.hero-ai .hero-title .line,.hero-ai .hero-title span{opacity:1!important;filter:none!important}

/* v30 */
/* === cabeza IA: cerebro, mirada y voz con vida === */
.ai-visual{position:relative;isolation:isolate}
.ai-visual img{filter:contrast(1.07) saturate(1.1);animation:aiBreath 11s ease-in-out infinite alternate}
@keyframes aiBreath{from{transform:scale(1)}to{transform:scale(1.018)}}
/* sinapsis del cerebro */
.ai-visual::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;mix-blend-mode:screen;
 background:radial-gradient(22% 26% at 73% 27%,rgba(120,195,255,.55),rgba(120,195,255,0) 70%),
 radial-gradient(9% 11% at 66% 21%,rgba(190,225,255,.5),rgba(190,225,255,0) 72%),
 radial-gradient(7% 9% at 80% 34%,rgba(90,170,255,.45),rgba(90,170,255,0) 74%);
 animation:aiSynapse 3.6s ease-in-out infinite}
@keyframes aiSynapse{0%,100%{opacity:.35}35%{opacity:.95}55%{opacity:.5}75%{opacity:.85}}
/* pulso del oido: la voz */
.ai-visual::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;mix-blend-mode:screen;
 background:radial-gradient(5.5% 7% at 70% 46%,rgba(150,210,255,.75),rgba(150,210,255,0) 70%);
 animation:aiVoice 2.1s ease-in-out infinite}
@keyframes aiVoice{0%,100%{opacity:.2;transform:scale(1)}50%{opacity:.9;transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){.ai-visual img,.ai-visual::before,.ai-visual::after{animation:none!important}}

/* === el bloque de pago del proyecto puntual vive en los cotizadores, no en la home === */
#h2-pqcta{display:none!important}

/* === tipografia uniforme en toda la web === */
p,li,dd,td,figcaption{font-size:16px;line-height:1.6}
.lead{font-size:18px;line-height:1.55}
small,.small,figcaption{font-size:13.5px;line-height:1.5}
h1{font-size:clamp(30px,4.6vw,58px)!important;line-height:1.07;letter-spacing:-.03em}
h2{font-size:clamp(26px,3.1vw,44px)!important;line-height:1.09;letter-spacing:-.025em}
h3{font-size:clamp(18px,1.6vw,24px)!important;line-height:1.22}
h4{font-size:clamp(15px,1.2vw,18px)!important;line-height:1.3}
@media (max-width:1024px){p,li,dd,td,figcaption{font-size:15.5px}.lead{font-size:17px}
 h1{font-size:clamp(28px,5vw,42px)!important}h2{font-size:clamp(24px,4.2vw,34px)!important}}
@media (max-width:760px){p,li,dd,td,figcaption{font-size:15px}.lead{font-size:15.5px}
 small,.small{font-size:12.5px}h1{font-size:clamp(26px,7.4vw,34px)!important}
 h2{font-size:clamp(22px,6vw,29px)!important}h3{font-size:17px!important}}

/* === margenes iguales en toda la web === */
.wrap{padding-left:clamp(20px,4vw,48px)!important;padding-right:clamp(20px,4vw,48px)!important}
@media (max-width:760px){.wrap{padding-left:18px!important;padding-right:18px!important}}

/* === Realisations: titulos centrados, uno debajo de otro === */
#proyectos .sec-head,#proyectos>.wrap>h2,#proyectos h2{text-align:center!important;margin-left:auto!important;margin-right:auto!important}
#proyectos .sec-head p,#proyectos .sec-head .lead{text-align:center!important;margin-left:auto!important;margin-right:auto!important;max-width:60ch}

/* v32 */
/* la linea de alcance sale de la portada */
.hai-world{display:none!important}

/* === el robot sin recuadro: el fondo claro de la foto se funde con la pagina === */
.ai-head{border-radius:0!important;background:transparent!important;box-shadow:none!important;overflow:visible!important;position:relative;
 -webkit-mask-image:radial-gradient(118% 108% at 66% 44%,#000 52%,rgba(0,0,0,.55) 74%,transparent 93%);
 mask-image:radial-gradient(118% 108% at 66% 44%,#000 52%,rgba(0,0,0,.55) 74%,transparent 93%)}
.ai-head img{border-radius:0!important;box-shadow:none!important;mix-blend-mode:multiply;filter:contrast(1.06) saturate(1.12)}

/* === cerebro, mirada y voz === */
.ai-head::before,.ai-head::after{content:"";position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen}
/* cerebro + oido */
.ai-head::before{z-index:3;
 background:radial-gradient(20% 24% at 72% 25%,rgba(120,195,255,.6),rgba(120,195,255,0) 70%),
 radial-gradient(6% 8% at 70% 43%,rgba(160,215,255,.6),rgba(160,215,255,0) 72%);
 animation:aiBrain 3.4s ease-in-out infinite}
@keyframes aiBrain{0%,100%{opacity:.3}40%{opacity:.9}65%{opacity:.45}}
/* ojo + boca */
.ai-head::after{z-index:4;
 background:radial-gradient(3.2% 2.2% at 47% 36%,rgba(190,230,255,.85),rgba(190,230,255,0) 70%),
 radial-gradient(4.5% 2.6% at 40% 60%,rgba(170,215,255,.5),rgba(170,215,255,0) 72%);
 animation:aiFace 5.2s ease-in-out infinite}
@keyframes aiFace{0%,88%,100%{opacity:.35;transform:scaleY(1)}92%{opacity:.1;transform:scaleY(.25)}95%{opacity:.5;transform:scaleY(1)}}

/* cuando el asistente habla: boca, ojo y cerebro se aceleran */
.ai-head.ai-speaking::after{animation:aiTalk .42s ease-in-out infinite}
.ai-head.ai-speaking::before{animation:aiBrain 1.1s ease-in-out infinite}
.ai-head.ai-speaking img{animation:aiNod 2.4s ease-in-out infinite}
@keyframes aiTalk{0%,100%{opacity:.35;transform:scaleY(.7)}50%{opacity:.95;transform:scaleY(1.25)}}
@keyframes aiNod{0%,100%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(0,-4px,0) rotate(-.35deg)}}
@media (prefers-reduced-motion:reduce){.ai-head::before,.ai-head::after,.ai-head img{animation:none!important}}
