/* Base común de las páginas de servicio
   Generado por _trabajo/construir-css.js — no editar a mano.
   Todo el CSS cuelga de .ksrv para no tocar el header/footer de Elementor. */
.ksrv, .ksrv *, .ksrv *::before, .ksrv *::after{box-sizing:border-box; margin:0; padding:0;}
.ksrv{font-family:'KsrvSans',-apple-system,BlinkMacSystemFont,sans-serif; color:var(--black); background:var(--bg); line-height:1.5; overflow-x:hidden;}
.ksrv a{text-decoration:none; color:inherit;}
.ksrv .wrap{max-width:1180px; margin:0 auto; padding:0 32px;}
.ksrv svg{display:block;}
.ksrv .dots{position:absolute; pointer-events:none;
    background-image: radial-gradient(circle, currentColor 1.6px, transparent 1.7px);
    background-size: 15px 15px;}
.ksrv .cta-btn{background:var(--orange); color:#fff; font-weight:700; font-size:14px; padding:12px 22px; border-radius:10px; display:inline-flex; align-items:center; gap:8px; white-space:nowrap; border:none; cursor:pointer; font-family:inherit;}
.ksrv .cta-btn:hover{background:var(--orange-dark);}
.ksrv .cta-btn.secondary{background:#fff; color:var(--black); border:1px solid var(--border);}
.ksrv .hero .dots{top:-40px; right:-60px; width:340px; height:340px; color:rgba(255,91,0,.35);
    -webkit-mask-image:radial-gradient(circle,#000 0%,transparent 70%); mask-image:radial-gradient(circle,#000 0%,transparent 70%);}
.ksrv .eyebrow{display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:12px; font-weight:700; letter-spacing:.08em; color:var(--orange); text-transform:uppercase; margin-bottom:20px;}
.ksrv .eyebrow::before{content:''; width:18px; height:1.5px; background:var(--orange);}
.ksrv .tagline{font-size:19px; font-weight:700; color:var(--orange); margin-bottom:18px; letter-spacing:-.005em;}
.ksrv .section{padding:88px 0; position:relative;}
.ksrv .section.band{background:var(--bg2);}
.ksrv .kicker{display:inline-flex; align-items:center; gap:8px; font-family:var(--mono); font-size:12px; font-weight:700; letter-spacing:.08em; color:var(--orange); text-transform:uppercase; margin-bottom:16px;}
.ksrv .kicker::before{content:''; width:18px; height:1.5px; background:var(--orange);}
.ksrv .section-title{font-size:34px; font-weight:800; letter-spacing:-.01em; margin-bottom:14px;}
.ksrv .section-title .accent{color:var(--orange);}
.ksrv .section-sub{color:var(--gray); font-size:16px; max-width:640px; margin-bottom:10px;}
.ksrv .services-grid{display:grid; grid-template-columns:1.5fr .5fr; gap:40px; align-items:stretch;}
.ksrv .faq-grid{display:grid; grid-template-columns:1.5fr .5fr; gap:40px; align-items:stretch;}
.ksrv .divide-block{border-radius:20px; padding:28px 32px; position:relative; overflow:hidden; opacity:0; transform:translateY(28px); transition:opacity .65s ease, transform .65s ease, box-shadow .3s ease;}
.ksrv .divide-block.in-view{opacity:1; transform:translateY(0);}
.ksrv .divide-block.bad{background:#fff; border:1px solid var(--border);}
.ksrv .divide-block.bad:hover{box-shadow:0 14px 30px rgba(20,20,30,.06);}
.ksrv .divide-block.good{background:var(--carbon); color:#fff; transition-delay:.12s;}
.ksrv .divide-block.good:hover{box-shadow:0 20px 44px rgba(255,91,0,.14);}
.ksrv .divide-block.good .dots{top:-40px; right:-40px; width:200px; height:200px; color:rgba(255,91,0,.35); -webkit-mask-image:radial-gradient(circle,#000 0%,transparent 70%); mask-image:radial-gradient(circle,#000 0%,transparent 70%);}
.ksrv .divide-inner{display:grid; grid-template-columns:auto 1fr; gap:34px; align-items:center; position:relative; z-index:2;}
.ksrv .divide-label{font-size:12.5px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; margin-bottom:14px; display:flex; align-items:center; gap:8px;}
.ksrv .divide-block.bad .divide-label{color:var(--plomo);}
.ksrv .divide-block.good .divide-label{color:var(--orange);}
.ksrv .icon-chain{display:flex; align-items:center; gap:0; flex-wrap:wrap;}
.ksrv .divide-block.bad .chain-node svg{width:20px;height:20px;}
.ksrv .divide-block.good .chain-node svg{width:20px;height:20px;}
.ksrv .divide-block.good .chain-node::after{content:''; position:absolute; inset:-6px; border-radius:16px; border:1.5px solid rgba(255,91,0,.35); animation:ks-ringpulse 2.4s ease-out infinite;}
.ksrv .divide-block.good .chain-node:nth-child(3)::after{animation-delay:.6s;}
.ksrv .chain-gap{width:22px; height:2px; border-top:2px dashed var(--plomo-light); margin:0 -2px;}
.ksrv .chain-link-line{width:22px; height:2px; background:var(--orange); margin:0 -2px; position:relative; overflow:visible;}
.ksrv .chain-link-line::after{content:''; position:absolute; top:50%; left:0; width:6px; height:6px; border-radius:50%; background:#fff; box-shadow:0 0 6px 1px rgba(255,91,0,.8); transform:translateY(-50%); animation:ks-flow 1.8s linear infinite;}
.ksrv .divide-block h3{font-size:19px; font-weight:800; margin-bottom:8px;}
.ksrv .divide-block.good h3{color:#fff;}
.ksrv .divide-block p{font-size:15px; position:relative; z-index:2; max-width:520px;}
.ksrv .divide-block.bad p{color:var(--gray);}
.ksrv .divide-block.good p{color:#C7C9CF;}
.ksrv .divide-connector{display:flex; align-items:center; justify-content:center; gap:14px; padding:4px 0;}
.ksrv .divide-connector .line{width:80px; height:1px; background:repeating-linear-gradient(90deg, var(--border) 0 6px, transparent 6px 11px);}
.ksrv .divide-connector .badge{width:40px;height:40px; border-radius:50%; background:var(--orange); color:#fff; display:flex; align-items:center; justify-content:center; flex-shrink:0; animation:ks-bounce 1.8s ease-in-out infinite;}
.ksrv .grid-cta{text-align:center; margin-top:4px;}
.ksrv .faq-term-bar{display:flex; align-items:center; gap:8px; padding:14px 20px; border-bottom:1px solid rgba(255,255,255,.08);}
.ksrv .faq-term-bar .tdot{width:10px; height:10px; border-radius:50%;}
.ksrv .faq-term-bar .tdot:nth-child(1){background:var(--orange);}
.ksrv .faq-term-bar .tdot:nth-child(2){background:var(--plomo-light);}
.ksrv .faq-term-bar .tdot:nth-child(3){background:var(--plomo);}
.ksrv .faq-term-bar .term-title{margin-left:auto; font-family:var(--mono); font-size:11.5px; color:#8C8E96;}
.ksrv .faq-line{border-bottom:1px solid rgba(255,255,255,.06);}
.ksrv .faq-line:last-child{border-bottom:none;}
.ksrv .faq-q{display:flex; align-items:flex-start; gap:12px; padding:18px 24px; cursor:pointer; font-family:var(--mono);}
.ksrv .faq-q .prompt{color:var(--orange); font-weight:700; flex-shrink:0;}
.ksrv .faq-q .qtxt{flex:1; font-weight:600; font-size:15px; color:#fff; font-family:'KsrvSans',sans-serif;}
.ksrv .faq-line.open .faq-q .chev svg{transform:rotate(180deg); color:var(--orange);}
.ksrv .faq-line.open .faq-q .prompt{color:var(--orange);}
.ksrv .faq-a{max-height:0; overflow:hidden; transition:max-height .3s ease;}
.ksrv .faq-a-inner{padding:0 24px 20px 24px; display:flex; gap:12px; font-family:var(--mono); font-size:13.5px;}
.ksrv .faq-a-inner .out{color:var(--plomo-light); flex-shrink:0;}
.ksrv .faq-a-inner p{color:#C7C9CF; font-family:'KsrvSans',sans-serif; font-size:14.5px; margin:0;}
.ksrv .faq-a-inner p .cursor-blink{display:inline-block; width:7px; height:14px; background:var(--orange); margin-left:3px; vertical-align:middle; animation:ks-blink 1s step-end infinite;}
.ksrv .cta-final .dots{top:-50px; right:-60px; width:280px; height:280px; color:rgba(255,91,0,.28); -webkit-mask-image:radial-gradient(circle,#000 0%,transparent 70%); mask-image:radial-gradient(circle,#000 0%,transparent 70%);}
.ksrv .cta-final .wrap{position:relative; z-index:2;}
.ksrv .cta-alert{display:inline-flex; align-items:center; gap:9px; background:rgba(255,91,0,.1); border:1px solid rgba(255,91,0,.38); border-radius:30px; padding:8px 18px 8px 14px; font-family:var(--mono); font-size:11.5px; font-weight:700; letter-spacing:.03em; color:var(--orange); text-transform:uppercase; margin-bottom:26px;}
.ksrv .cta-alert .adot{width:7px; height:7px; border-radius:50%; background:var(--orange); animation:ks-pulse 1.6s infinite;}
.ksrv .cta-final h2 .accent{color:var(--orange);}
.ksrv .cta-final .btns{display:flex; gap:18px; justify-content:center; align-items:center; flex-wrap:wrap; margin-bottom:52px;}
.ksrv .cta-final .btns .cta-btn{position:relative; overflow:hidden; padding:16px 28px; font-size:15px;}
.ksrv .cta-final .btns .cta-btn::before{content:''; position:absolute; top:0; left:-60%; width:40%; height:100%; background:linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent); transform:skewX(-20deg); animation:ks-shine 2.8s ease-in-out infinite;}
.ksrv .cta-trust .t:hover{transform:translateY(-4px);}
.ksrv .footer-grid{display:grid; grid-template-columns:1.4fr 1fr 1fr 1.2fr; gap:40px;}
.ksrv .footer-logo{font-size:20px; font-weight:800; margin-bottom:18px;}
.ksrv .footer-logo .tech{color:var(--orange);}
.ksrv .social{display:flex; gap:10px;}
.ksrv .social span{width:32px;height:32px;border-radius:50%;background:var(--orange); display:flex; align-items:center;justify-content:center; font-size:13px;}
.ksrv .foot-bottom{border-top:1px solid #232326; margin-top:50px; padding-top:22px; font-size:13px; color:#7C7E86; display:flex; justify-content:space-between;}
@media(max-width:900px){
.ksrv .cta-trust{gap:18px;}
}

@keyframes ks-pulse{ 0%{box-shadow:0 0 0 0 rgba(255,91,0,.55);} 70%{box-shadow:0 0 0 8px rgba(255,91,0,0);} 100%{box-shadow:0 0 0 0 rgba(255,91,0,0);} }
@keyframes ks-spin{ to{ transform:rotate(360deg); } }
@keyframes ks-ringpulse{ 0%{ transform:scale(.85); opacity:.9; } 100%{ transform:scale(1.35); opacity:0; } }
@keyframes ks-flow{ 0%{ left:0; opacity:0; } 10%{ opacity:1; } 90%{ opacity:1; } 100%{ left:100%; opacity:0; } }
@keyframes ks-bounce{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(4px); } }
@keyframes ks-nucleus-pulse{ 0%,100%{ box-shadow:0 0 0 10px rgba(255,91,0,.08), 0 0 0 20px rgba(255,91,0,.05); } 50%{ box-shadow:0 0 0 14px rgba(255,91,0,.13), 0 0 0 26px rgba(255,91,0,.06); } }
@keyframes ks-blink{ 0%,100%{opacity:1;} 50%{opacity:0;} }
@keyframes ks-shine{ 0%{left:-60%;} 55%{left:130%;} 100%{left:130%;} }

/* ---- correcciones propias (ver construir-css.js) ---- */
.ksrv{position:relative;}

/*
 * En móvil el texto se salía de la pantalla: el titular, el párrafo y el
 * bloque comparativo medían más que el viewport.
 *
 * El diseño responsive de los mockups sí es correcto (a 900px las rejillas
 * pasan a una columna y las métricas se vuelven un carrusel deslizable). Lo
 * que falla es que un item de grid o flex tiene `min-width:auto`, es decir,
 * su mínimo es el min-content: basta que dentro haya un carrusel para que la
 * columna no pueda encoger y arrastre consigo al titular y al párrafo.
 *
 * min-width:0 rompe ese suelo; max-width:100% impide además que un bloque
 * interior con overflow propio crezca más que su columna.
 *
 * Comprobado que los carruseles siguen desplazándose: el desbordamiento
 * interno que necesitan es suyo, no del documento.
 */
.ksrv .wrap > *,
.ksrv [class*="-grid"] > *{min-width:0;}
.ksrv [class*="-grid"] > * > *{max-width:100%;}
