@font-face{font-family:"Roboto Flex";src:url("../fonts/roboto-flex-latin.woff2") format("woff2");font-weight:100 1000;font-stretch:25% 151%;font-display:swap}
:root{
  --bg:#10132f;          /* secundario #232859 llevado a noche */
  --bg-2:#161a3f;
  --bg-3:#1d2250;
  --navy:#232859;
  --primary:#007da4;
  --turq:#40d4c5;
  --green:#03a374;
  --purple:#9f60b5;
  --yellow:#ffe247;
  --text:#eef0fb;
  --muted:#a3a8cc;
  --dim:rgba(238,240,251,.42);
  --line:rgba(255,255,255,.1);
  --line-2:rgba(255,255,255,.18);
  --grad:linear-gradient(120deg,var(--primary),var(--purple) 58%);   /* «Degradado lineal» del manual */
  --g:clamp(20px,5vw,80px);
  --ease:cubic-bezier(.2,.7,.2,1);
  --r-lg:28px;--r-md:18px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{margin:0;background:var(--bg);color:var(--text);font-family:"Roboto Flex",system-ui,sans-serif;font-size:1.0625rem;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{list-style:none;padding:0}a{color:inherit}
h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}
:focus-visible{outline:2px solid var(--turq);outline-offset:4px;border-radius:6px}
::selection{background:var(--turq);color:var(--bg)}
.wrap{max-width:1440px;margin:auto;padding-inline:var(--g)}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:16px;top:-60px;z-index:50;background:var(--text);color:var(--bg);padding:10px 16px;border-radius:999px;font-weight:600}.skip:focus{top:16px}

/* grano real (feTurbulence) en lugar de trama de puntos */
.noise{position:absolute;inset:0;z-index:-1;pointer-events:none;opacity:.22;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .55 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- casos ---------- */
.cases{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.xc{position:relative;display:grid;grid-template-columns:minmax(0,3fr) minmax(0,5fr) minmax(0,4fr);gap:clamp(20px,3vw,48px);padding:clamp(28px,3.4vw,44px) clamp(0px,1.6vw,24px);border-bottom:1px solid var(--line);isolation:isolate}
.xc::before{content:"";position:absolute;inset:6px 0;z-index:-1;border-radius:24px;opacity:0;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.02));box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 0 0 1px rgba(255,255,255,.08);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:opacity .35s}
.xc::after{content:"";position:absolute;left:0;top:clamp(28px,3.4vw,44px);bottom:clamp(28px,3.4vw,44px);width:2px;border-radius:2px;background:var(--grad);transform:scaleY(0);transform-origin:top;transition:transform .5s var(--ease)}
.xc:hover::before,.xc:focus-within::before{opacity:1}
.xc:hover::after,.xc:focus-within::after{transform:none}
.xc__sec{display:flex;flex-direction:column;gap:10px;color:var(--muted);font-size:.9375rem}
.xc__sec b{font-weight:600;color:var(--turq)}
.xc h3{margin:0;font-size:clamp(1.375rem,2.1vw,2rem);line-height:1.15;letter-spacing:-.02em;font-weight:620;max-width:26ch}
.xc p{margin:14px 0 0;color:var(--muted);line-height:1.6;max-width:52ch}
.xc__built h4{margin:0 0 12px;font-size:.9375rem;font-weight:600;color:var(--text)}
.xc__built ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;color:var(--muted);font-size:.9375rem;line-height:1.45}
.xc__built li{position:relative;padding-left:18px}
.xc__built li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--turq)}
.xc .tags{grid-column:auto;margin-top:16px}
.cases-note{margin:28px 0 0;color:var(--muted);font-size:.9375rem}
@media(max-width:900px){.xc{grid-template-columns:1fr;gap:14px;padding-inline:0}.xc::before{inset:0 -12px}.xc::after{left:-12px}.xc__sec{flex-direction:row;flex-wrap:wrap;gap:6px 14px}}

/* ---------- cabecera ---------- */
.hd{position:fixed;inset:0 0 auto;z-index:40;transition:background .4s,box-shadow .4s,backdrop-filter .4s}
.hd::before{content:"";position:absolute;inset:0 0 -28px;z-index:-1;opacity:0;transition:opacity .4s;background:linear-gradient(180deg,rgba(16,19,47,.7),rgba(16,19,47,.35) 70%,rgba(16,19,47,0));-webkit-backdrop-filter:blur(20px) saturate(170%);backdrop-filter:blur(20px) saturate(170%);-webkit-mask-image:linear-gradient(180deg,#000 62%,transparent);mask-image:linear-gradient(180deg,#000 62%,transparent)}
.hd.s::before{opacity:1}

.hd .wrap{display:flex;align-items:center;justify-content:space-between;height:84px;transition:height .4s}
.hd.s .wrap{height:68px}
.hd .brand img{display:block;width:118px}
.hd nav{position:relative;display:flex;align-items:center;gap:2px;font-size:.9375rem}
.hd nav a{position:relative;z-index:1;text-decoration:none;color:var(--muted);padding:8px 15px;border-radius:999px;transition:color .25s}
.hd nav a:hover{color:var(--text)}
.hd nav a[aria-current]{color:var(--text)}
.hd .ind{position:absolute;z-index:0;top:0;bottom:0;-webkit-backdrop-filter:blur(14px) saturate(170%);backdrop-filter:blur(14px) saturate(170%);left:0;width:0;border-radius:999px;opacity:0;pointer-events:none;translate:var(--ix,0) 0;width:var(--iw,0);background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.06));box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 0 0 1px rgba(255,255,255,.1),0 0 18px -4px rgba(64,212,197,.45);transition:translate .5s var(--ease),width .5s var(--ease),opacity .3s}
.hd .ind.on{opacity:1}
.hd .ind::after{content:"";position:absolute;left:50%;bottom:-1px;width:16px;height:2px;margin-left:-8px;border-radius:2px;background:var(--turq);box-shadow:0 0 8px var(--turq)}
.hd nav .cta{margin-left:6px;color:var(--bg);background:var(--text);font-weight:600;padding:10px 20px}
.hd nav .cta:hover{background:var(--turq);color:var(--bg)}
.hd nav .cta[aria-current]{background:var(--turq);box-shadow:0 0 0 4px rgba(64,212,197,.22),0 0 24px -4px var(--turq)}
.menu{display:none;width:48px;height:48px;border:1px solid var(--line-2);border-radius:50%;background:none;color:var(--text);cursor:pointer;place-items:center}
.menu span{display:block;width:18px;height:2px;background:currentColor;border-radius:2px;box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor;transition:box-shadow .3s,transform .3s}
.menu[aria-expanded=true] span{box-shadow:none;transform:rotate(45deg)}
.menu[aria-expanded=true] span::after{content:"";display:block;width:18px;height:2px;background:currentColor;transform:rotate(-90deg)}
@media(max-width:900px){
  .menu{display:grid}
  .hd nav{position:fixed;inset:68px 0 auto;height:calc(100svh - 68px);flex-direction:column;align-items:stretch;gap:0;padding:24px var(--g) 40px;border:0;border-radius:0;box-shadow:none;background:rgba(16,19,47,.72);-webkit-backdrop-filter:blur(26px) saturate(170%);backdrop-filter:blur(26px) saturate(170%);visibility:hidden;opacity:0;translate:0 -12px;transition:opacity .3s,translate .3s var(--ease),visibility 0s .3s}
  .hd.open nav{visibility:visible;opacity:1;translate:none;transition:opacity .3s,translate .3s var(--ease)}
  .hd.open::before{opacity:1}
  .hd .ind{display:none}
  .hd nav a[aria-current]:not(.cta){color:var(--turq)}
  .hd nav a[aria-current]:not(.cta)::before{content:"";display:inline-block;width:8px;height:8px;margin:0 14px 0 -2px;vertical-align:middle;border-radius:50%;background:var(--turq);box-shadow:0 0 10px var(--turq)}
  .hd nav a{font-size:1.75rem;font-weight:560;letter-spacing:-.02em;color:var(--text);padding:16px 0;border-radius:0;border-bottom:1px solid var(--line)}
  .hd nav a:hover{background:none;color:var(--turq)}
  .hd nav .cta{margin:28px 0 0;text-align:center;font-size:1.125rem;padding:18px;border-radius:999px;border:0}
}

/* ---------- hero: los chevrones de marca como fuente de luz ---------- */
.hero{position:relative;min-height:100svh;display:grid;place-items:center;text-align:center;padding:clamp(96px,14vh,132px) 0 clamp(72px,11vh,96px);overflow:hidden;isolation:isolate}
.hero::before{content:"";position:absolute;inset:0;z-index:-2;background:radial-gradient(60% 50% at 50% 46%,#1a1f52 0%,var(--bg) 70%)}
.spot{position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(420px circle at var(--mx,50%) var(--my,40%),rgba(64,212,197,.09),transparent 70%);transition:opacity .6s}
.chev{position:absolute;top:50%;z-index:-1;height:min(74vh,56vw);aspect-ratio:68/103;translate:0 -50%}
.chev svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.chev .bl{filter:blur(46px);opacity:.85}
.chev--l{left:calc(50% - min(47vw,720px))}
.chev--r{right:calc(50% - min(47vw,720px))}
.chev .edge{fill:none;stroke:rgba(255,255,255,.35);stroke-width:.35}
.hero__body{max-width:min(1100px,64vw);padding-inline:var(--g)}
@media(max-width:700px){.hero__body{max-width:none}}
@media(max-height:640px){.scroll{display:none}}
.eyebrow{display:inline-flex;align-items:center;gap:10px;padding:8px 16px 8px 12px;border-radius:999px;border:1px solid var(--line-2);background:rgba(16,19,47,.4);backdrop-filter:blur(8px);color:var(--text);font-size:.9375rem;font-weight:500}
.eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--turq);box-shadow:0 0 0 4px rgba(64,212,197,.18)}
.title{margin:clamp(18px,3vh,30px) auto 0;font-size:clamp(2.625rem,min(7vw,10.5vh),8rem);line-height:.95;letter-spacing:-.034em;font-weight:700;font-stretch:102%;max-width:min(11.5em,100%);font-variation-settings:"opsz" 144}
.title .l{display:block}
.we{margin:0;font-size:clamp(1.5rem,min(2.6vw,4.2vh),2.75rem);line-height:1;font-weight:680;letter-spacing:-.025em}
.we span{display:inline-block;padding-bottom:.08em;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;filter:brightness(1.25) saturate(1.1)}
.we+.title{margin-top:clamp(10px,1.8vh,18px)}
.lead{margin:clamp(18px,3.2vh,32px) auto 0;max-width:52ch;font-size:clamp(1.0625rem,1.35vw,1.3125rem);line-height:1.55;color:var(--muted)}
.actions{margin-top:clamp(22px,4vh,40px);display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:56px;padding:0 28px;border-radius:999px;font:inherit;font-weight:600;text-decoration:none;border:0;cursor:pointer;transition:background .25s,color .25s,border-color .25s,box-shadow .3s}
.btn--solid{background:var(--text);color:var(--bg);box-shadow:0 10px 40px -12px rgba(64,212,197,.6)}
.btn--solid:hover{background:var(--turq)}
.btn--line{color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn--line:hover{box-shadow:inset 0 0 0 1px var(--text)}
.btn svg{width:16px;transition:transform .25s var(--ease)}.btn:hover svg{transform:translateX(3px)}
.scroll{position:absolute;left:50%;bottom:28px;translate:-50% 0;width:26px;height:42px;border-radius:999px;border:1.5px solid rgba(238,240,251,.55)}
.scroll::after{content:"";position:absolute;left:50%;top:9px;width:3px;height:8px;margin-left:-1.5px;border-radius:2px;background:var(--text)}
@media(max-width:560px){.eb-x{display:none}}
@media(max-width:700px){
  /* en móvil los chevrones dejan de ir detrás del texto: forman el emblema < > encima del titular */
  .hero{place-items:end center;padding:0 0 max(40px,6svh);text-align:left}
  .hero::before{background:radial-gradient(90% 40% at 50% 22%,#1d2257 0%,var(--bg) 75%)}
  .chev{top:max(88px,11svh);height:min(16svh,124px);translate:none}
  .chev--l{left:auto;right:calc(50% + 6px)}
  .chev--r{right:auto;left:calc(50% + 6px)}
  .hero__body{width:100%;padding-top:calc(max(88px,11svh) + min(16svh,124px) + 24px)}
  .title{margin:18px 0 0;font-size:clamp(2.375rem,min(12vw,6.6svh),3.75rem);line-height:.98;max-width:none}
  .lead{margin:18px 0 0;font-size:1rem;line-height:1.5}
  .actions{margin-top:24px;justify-content:stretch;flex-direction:column;gap:10px}
  .actions .btn{width:100%;min-height:52px}
  .tag{display:none}
  .scroll{display:none}
}
@media(max-width:700px) and (prefers-reduced-motion:no-preference){
  .chev--l{animation-name:openLm}.chev--r{animation-name:openRm}
}
@keyframes openLm{from{translate:40px 0;opacity:0}}
@keyframes openRm{from{translate:-40px 0;opacity:0}}
@media (prefers-reduced-motion:no-preference){
  .chev--l{animation:openL 1.8s var(--ease) both .1s}
  .chev--r{animation:openR 1.8s var(--ease) both .1s}
  .chev .bl{animation:breathe 7s ease-in-out infinite alternate 2s}
  .title .l{animation:weight 1.5s var(--ease) both .45s}
  .title .l+.l{animation-delay:.6s}
  .eyebrow,.we,.lead,.actions{animation:fade 1s var(--ease) both}
  .eyebrow,.we{animation-delay:.2s}.lead{animation-delay:1.05s}.actions{animation-delay:1.2s}
  .scroll::after{animation:cue 2.2s ease-in-out infinite 2.4s}
}
@keyframes openL{from{translate:22vw -50%;opacity:0}}
@keyframes openR{from{translate:-22vw -50%;opacity:0}}
@keyframes breathe{to{opacity:.5;scale:1.05}}
@keyframes weight{from{font-weight:140;letter-spacing:-.015em;opacity:0;filter:blur(10px)}to{font-weight:700;letter-spacing:-.034em;opacity:1;filter:blur(0)}}
@keyframes fade{from{opacity:0;translate:0 14px}}
@keyframes cue{0%{translate:0 0;opacity:1}70%{translate:0 12px;opacity:0}100%{opacity:0}}

/* ---------- secciones ---------- */
.sec{position:relative;padding:clamp(96px,10vw,152px) 0;isolation:isolate}
.sec--alt{background:var(--bg-2)}
.head{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:32px;align-items:end;margin-bottom:clamp(56px,6vw,88px)}
.h2{font-size:clamp(2.375rem,4.8vw,4.75rem);line-height:1.02;letter-spacing:-.03em;font-weight:660;max-width:16ch}
.sub{color:var(--muted);line-height:1.6;max-width:42ch}
@media(max-width:860px){.head{grid-template-columns:1fr;gap:20px}}
.grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}

/* manifiesto */
.manifest{font-size:clamp(1.875rem,4.1vw,4.125rem);line-height:1.13;letter-spacing:-.024em;font-weight:520;max-width:23ch}
.manifest span{color:rgba(238,240,251,.16);transition:color .35s}
.manifest span.on{color:var(--text)}
.manifest em{font-style:normal}.manifest em span.on{color:var(--turq)}
.facts{margin-top:clamp(72px,8vw,120px);display:grid;grid-template-columns:repeat(4,1fr);gap:0 32px}
.facts li{padding-top:22px;border-top:1px solid var(--line-2)}
.facts svg{width:26px;height:26px;fill:none;stroke:var(--turq);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.facts b{display:block;margin-top:18px;font-size:1.125rem;font-weight:620;letter-spacing:-.01em}
.facts span{display:block;margin-top:4px;color:var(--muted);font-size:.9375rem}
@media(max-width:860px){.facts{grid-template-columns:1fr 1fr;row-gap:36px}}

/* servicios: lista enfocada con índice fijo */
.svcw{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:clamp(40px,6vw,112px)}
.svcw__aside{position:sticky;top:120px;align-self:start}
.svcw__sub{margin-top:20px}
.svcw__idx{margin-top:56px;font-size:clamp(5rem,10vw,9.5rem);line-height:.8;font-weight:800;letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.svcw__idx b{display:inline-block;font-weight:inherit;padding-right:.06em;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.svcw__idx small{display:block;margin-top:18px;font-size:1rem;font-weight:500;letter-spacing:0;color:var(--muted)}
.svc li{display:grid;grid-template-columns:4.5rem minmax(0,1fr);gap:8px 20px;padding:36px 0;border-top:1px solid var(--line);transition:opacity .4s}
.svc li:last-child{border-bottom:1px solid var(--line)}
.js .svc li{opacity:.38}.js .svc li.act{opacity:1}
.num{font-weight:700;color:var(--turq);font-size:1rem;padding-top:.55em;font-variant-numeric:tabular-nums}
.svc h3{font-size:clamp(1.625rem,2.6vw,2.5rem);font-weight:580;letter-spacing:-.022em;line-height:1.1}
.svc p{grid-column:2;color:var(--muted);max-width:52ch}
.tags{grid-column:2;display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.tags li{all:unset;font-size:.8125rem;font-weight:550;color:var(--text);padding:6px 12px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--line-2)}
@media(max-width:900px){.svcw{grid-template-columns:1fr}.svcw__aside{position:static}.svcw__idx{display:none}.js .svc li{opacity:1}.svc li{grid-template-columns:3.25rem 1fr}}

/* modelos */
.models{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.model{position:relative;padding:clamp(28px,3.4vw,48px);border-radius:var(--r-lg);background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));box-shadow:inset 0 0 0 1px var(--line);overflow:hidden;isolation:isolate}
.model::after{content:"";position:absolute;width:70%;aspect-ratio:1;border-radius:50%;right:-25%;top:-40%;filter:blur(80px);opacity:.28;z-index:-1}
.model:nth-child(1)::after{background:var(--primary)}.model:nth-child(2)::after{background:var(--purple)}
.k{display:inline-block;font-weight:700;color:var(--turq);font-size:.9375rem}
.model h3{margin-top:12px;font-size:clamp(1.875rem,3vw,2.75rem);font-weight:640;letter-spacing:-.026em;line-height:1.02}
.model>p{margin-top:14px;color:var(--muted);max-width:40ch}
.model dl{margin-top:36px}
.model dl div{display:grid;grid-template-columns:9rem 1fr;gap:16px;padding:14px 0;border-top:1px solid var(--line);font-size:.9375rem}
.model dt{color:var(--muted)}.model dd{font-weight:520}
.fig{display:block;width:100%;height:auto;margin-bottom:32px;border-radius:var(--r-md);background:rgba(8,10,30,.45);box-shadow:inset 0 0 0 1px var(--line)}
.fig text{font-family:inherit;font-size:12px;font-weight:600;fill:var(--muted)}
.ft-ring{fill:none;stroke:rgba(255,255,255,.22);stroke-width:1.2;stroke-dasharray:3 6}
.ft-m{fill:rgba(238,240,251,.55)}.ft-dot{fill:var(--turq)}.ft-halo{fill:none;stroke:var(--turq);stroke-width:1.2}
.ff-br{fill:none;stroke:rgba(255,255,255,.3);stroke-width:1.2}
.ff-chev{fill:none;stroke:var(--turq);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
@media(max-width:900px){.models{grid-template-columns:1fr}.model dl div{grid-template-columns:7.5rem 1fr}}

/* caso Keepler */
.case{margin-top:20px;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,5vw,80px);align-items:center;padding:clamp(28px,4vw,64px);border-radius:var(--r-lg);background:var(--bg);box-shadow:inset 0 0 0 1px var(--line)}
.lgk{display:block;width:180px;height:62px;background:var(--text);-webkit-mask:url("../img/clients/keepler-accenture.png") left center/contain no-repeat;mask:url("../img/clients/keepler-accenture.png") left center/contain no-repeat}
.case h3{margin-top:36px;font-size:clamp(1.75rem,2.8vw,2.5rem);font-weight:640;letter-spacing:-.03em;line-height:1.05}
.case p{margin-top:16px;color:var(--muted);max-width:44ch}
.nest{width:100%;height:auto}
.nest text{font-family:inherit;font-size:13px;font-weight:600;fill:var(--muted)}
.nest .b0{fill:none;stroke:rgba(255,255,255,.22);stroke-dasharray:5 7}
.nest .b1{fill:var(--bg-2);stroke:rgba(255,255,255,.12)}
.nest .b2{fill:var(--bg-3)}
.nest .t1{fill:var(--text)}
.nest .d{fill:rgba(238,240,251,.45)}.nest .w{fill:var(--turq)}.nest .h{fill:none;stroke:var(--turq);stroke-width:1.4}
.nest .lgd circle{fill:var(--turq)}
@media(max-width:900px){.case{grid-template-columns:1fr}}

/* proceso */
.proc{display:grid;grid-template-columns:repeat(7,1fr);gap:16px;position:relative}
.proc::before,.proc::after{content:"";position:absolute;left:0;right:0;top:9px;height:2px;border-radius:2px}
.proc::before{background:var(--line)}
.proc::after{background:linear-gradient(90deg,var(--primary),var(--purple) 58%,var(--turq));transform-origin:left;transform:scaleX(var(--p,1))}
.proc li{position:relative;padding-top:48px}
.proc li::before{content:"";position:absolute;top:2px;left:0;width:16px;height:16px;border-radius:50%;background:var(--bg-2);box-shadow:inset 0 0 0 2px var(--line-2);z-index:1;transition:background .4s,box-shadow .4s}
.proc li.on::before{background:var(--turq);box-shadow:0 0 0 6px rgba(64,212,197,.16)}
.proc b{font-weight:700;color:var(--turq);font-size:.875rem}
.proc h3{margin-top:8px;font-size:1.1875rem;font-weight:620;letter-spacing:-.01em}
.proc p{margin-top:4px;font-size:.9375rem;color:var(--muted);line-height:1.45}
@media(max-width:1000px){.proc{grid-template-columns:repeat(4,1fr);row-gap:36px}.proc::before,.proc::after{display:none}}
@media(max-width:700px){
  .proc{grid-template-columns:1fr;row-gap:0;padding-left:34px}
  .proc::before,.proc::after{display:block;left:7px;right:auto;top:10px;bottom:48px;width:2px;height:auto}
  .proc::after{background:linear-gradient(180deg,var(--primary),var(--purple) 58%,var(--turq));transform-origin:top;transform:scaleY(var(--p,1))}
  .proc li{display:grid;grid-template-columns:44px 1fr;column-gap:10px;align-items:baseline;padding:0 0 22px}
  .proc li:last-child{padding-bottom:0}
  .proc li::before{top:3px;left:-34px}
  .proc b{grid-row:span 2}
  .proc h3{margin-top:0;font-size:1.125rem}
  .proc p{margin-top:2px}
}

/* IA */
.ai{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,6vw,104px);align-items:center}
.cycle{width:100%;max-width:520px;height:auto;justify-self:center;overflow:visible}
.cy-track{fill:none;stroke:rgba(255,255,255,.12);stroke-width:1.5}
.cy-arc{fill:none;stroke:url(#cg);stroke-width:3;stroke-linecap:round;transform:rotate(-90deg);transform-origin:200px 200px}
.cy-run{fill:var(--turq)}
.cy-node circle{fill:var(--bg);stroke:rgba(255,255,255,.22);stroke-width:1.5;transition:stroke .4s,fill .4s}
.cy-node text{fill:var(--text);font-family:inherit;font-size:30px;font-weight:800;transition:fill .4s}
.cy-node.act circle{fill:var(--turq);stroke:var(--turq)}.cy-node.act text{fill:var(--bg)}
.cy-c{fill:var(--text);font-family:inherit;font-size:54px;font-weight:760;letter-spacing:-2px}
.cy-cs{fill:var(--muted);font-family:inherit;font-size:15px}
.steps li{display:grid;grid-template-columns:4.5rem 1fr;gap:20px;align-items:start;padding:28px 0;border-top:1px solid var(--line);transition:opacity .4s}
.steps li:last-child{border-bottom:1px solid var(--line)}
.js .steps li{opacity:.45}.js .steps li.act{opacity:1}
.sym{font-size:3.75rem;line-height:.85;font-weight:800;text-align:center;background:linear-gradient(135deg,var(--purple),var(--turq));-webkit-background-clip:text;background-clip:text;color:transparent}
.steps h3{font-size:1.625rem;font-weight:620;letter-spacing:-.02em}
.steps p{margin-top:6px;color:var(--muted)}
.ai__note{margin-top:28px;color:var(--muted);font-size:.9375rem;max-width:52ch}
@media(max-width:900px){.ai{grid-template-columns:1fr}.cycle{max-width:340px}.js .steps li{opacity:1}}

/* tecnología */
.tech{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(40px,5vw,88px);align-items:center}
.tech__g{display:grid;grid-template-columns:1fr 1fr;gap:40px 32px}
.tech__g h3{font-size:.9375rem;font-weight:650;color:var(--turq);padding-bottom:14px;border-bottom:1px solid var(--line-2)}
.tech__g ul{margin-top:14px;display:grid;gap:6px;font-size:clamp(1.125rem,1.5vw,1.375rem);font-weight:470;letter-spacing:-.01em}
.orbit{width:100%;height:auto;overflow:visible}
.ob-ring{fill:none;stroke:rgba(255,255,255,.14);stroke-width:1.2;transform-origin:300px 300px}
.ob-ring--dash{stroke-dasharray:4 8;stroke:rgba(64,212,197,.4)}
.ob-lab rect{fill:var(--bg-3)}.ob-lab text{fill:var(--turq);font-family:inherit;font-size:14px;font-weight:700}
.ob-node rect{fill:var(--bg);stroke:rgba(255,255,255,.16);stroke-width:1.2}.ob-node text{fill:var(--text);font-family:inherit;font-size:15px;font-weight:500}
.ob-core-t{fill:#fff;font-family:inherit;font-size:25px;font-weight:700}
@media(max-width:1000px){.tech{grid-template-columns:1fr}.orbit{max-width:620px;margin-inline:auto}}

/* clientes con foco que sigue al puntero */
.logos{position:relative;display:grid;grid-template-columns:repeat(7,1fr);border-radius:var(--r-lg);box-shadow:inset 0 0 0 1px var(--line);overflow:hidden;isolation:isolate}
.logos::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(260px circle at var(--x,-999px) var(--y,-999px),rgba(64,212,197,.14),transparent 70%)}
.logos li{display:grid;place-items:center;height:136px;box-shadow:inset -1px -1px 0 var(--line)}
.lg{display:block;background:rgba(238,240,251,.62);transition:background .3s;-webkit-mask:var(--s) center/contain no-repeat;mask:var(--s) center/contain no-repeat}
.logos li:hover .lg{background:var(--text)}
.logos__note{margin-top:20px;color:var(--dim);font-size:.875rem}
@media(max-width:1000px){.logos{grid-template-columns:repeat(4,1fr)}}
@media(max-width:560px){.logos{grid-template-columns:repeat(2,1fr)}.logos li{height:112px}}

/* contacto */
.end{position:relative;overflow:hidden;isolation:isolate;padding:clamp(120px,14vw,220px) 0 clamp(88px,10vw,140px)}
.end .chev{height:min(90vh,70vw);opacity:.28}
.end .chev--l{left:-8vw}.end .chev--r{display:none}
.end .wrap{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(48px,6vw,104px);align-items:end}
.end h2{font-size:clamp(3.5rem,9.5vw,9.5rem);font-weight:700;letter-spacing:-.04em;line-height:.9}
.mail{display:inline-block;margin-top:40px;font-size:clamp(1.25rem,2.4vw,2.125rem);font-weight:450;letter-spacing:-.02em;text-decoration:none;background:linear-gradient(var(--turq),var(--turq)) left bottom/0 1px no-repeat,linear-gradient(var(--line-2),var(--line-2)) left bottom/100% 1px no-repeat;padding-bottom:6px;transition:background-size .5s var(--ease),color .3s}
.mail:hover{background-size:100% 1px,100% 1px;color:var(--turq)}
.end dl{margin-top:48px;display:grid;grid-template-columns:1fr 1fr;gap:24px;max-width:520px}
.end dt{color:var(--muted);font-size:.875rem}.end dd{margin-top:4px;font-weight:520}.end dd a{text-decoration:none}.end dd a:hover{color:var(--turq)}
form{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:clamp(24px,3vw,40px);border-radius:var(--r-lg);background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--line);backdrop-filter:blur(12px)}
label{display:grid;gap:8px;font-size:.875rem;font-weight:550;color:var(--muted)}
label.full{grid-column:1/-1}
input,select,textarea{font:inherit;font-size:1rem;color:var(--text);background:rgba(8,10,30,.5);border:1px solid var(--line-2);border-radius:14px;padding:14px 16px;transition:border-color .2s,box-shadow .2s}
select option{color:#111}
textarea{min-height:120px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--turq);box-shadow:0 0 0 4px rgba(64,212,197,.16)}
form .btn{grid-column:1/-1;justify-self:start;margin-top:6px}
.note{grid-column:1/-1;font-size:.8125rem;color:var(--dim)}
@media(max-width:900px){.end .wrap{grid-template-columns:1fr}}
@media(max-width:520px){form{grid-template-columns:1fr}.end dl{grid-template-columns:1fr}}

/* pie */
.ft{border-top:1px solid var(--line);padding:56px 0 36px;color:var(--muted);font-size:.9375rem}
.ft__sig{margin:0 0 clamp(40px,5vw,72px);font-size:clamp(3.5rem,13.5vw,13rem);line-height:.9;font-weight:720;letter-spacing:-.045em;white-space:nowrap}
.ft__sig span{display:inline-block;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:.08em}
.ft__top{display:grid;grid-template-columns:minmax(0,5fr) repeat(2,minmax(0,2fr));gap:32px}
.ft__top img{width:150px}
.ft__top p{margin-top:16px;max-width:34ch}
.ft h3{font-size:.875rem;font-weight:650;color:var(--text);margin-bottom:12px}
.ft ul{display:grid;gap:8px}.ft a{text-decoration:none}.ft a:hover{color:var(--text)}
.ft__bot{margin-top:56px;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:.875rem}
@media(max-width:760px){.ft__top{grid-template-columns:1fr 1fr}.ft__top>div:first-child{grid-column:1/-1}}

/* aparición única y sutil por bloque */
@media (prefers-reduced-motion:no-preference){
  .js .rv{opacity:0;translate:0 28px;transition:opacity 1s var(--ease),translate 1s var(--ease)}
  .js .rv.in{opacity:1;translate:none}
  /* diagramas */
  .js .fig-team:not(.in) .ft-waka{transform:translateX(130px);opacity:0}
  .ft-waka{transition:transform 1.2s var(--ease) .3s,opacity .5s ease .3s}
  .fig-team.in .ft-halo{animation:pulse 2.6s ease-out 1.6s infinite;transform-box:fill-box;transform-origin:center}
  .js .fig-flow:not(.in) .ff-bar{transform:scaleX(0)}
  .ff-bar{transform-box:fill-box;transform-origin:left;transition:transform .45s var(--ease);transition-delay:calc(.2s + var(--i) * 120ms)}
  .js .fig-flow:not(.in) .ff-chev{opacity:0;transform:translateX(-10px)}
  .ff-chev{transition:opacity .4s 1.2s,transform .5s var(--ease) 1.2s}
  .js .nest:not(.in) .w,.js .nest:not(.in) .h{opacity:0;transform:scale(.2)}
  .nest .w,.nest .h{transform-box:fill-box;transform-origin:center;transition:opacity .5s,transform .7s var(--ease);transition-delay:calc(.4s + var(--i) * 180ms)}
  .js .nest:not(.in) .b1,.js .nest:not(.in) .b2{opacity:0;transform:scale(.96)}
  .nest .b1,.nest .b2{transform-box:fill-box;transform-origin:center;transition:opacity .6s,transform .8s var(--ease)}.nest .b2{transition-delay:.15s}
  .js .cycle:not(.in) .cy-arc{stroke-dashoffset:100}
  .cy-arc{stroke-dasharray:100;stroke-dashoffset:0;transition:stroke-dashoffset 1.8s var(--ease)}
  .js .orbit:not(.in) .ob-ring{transform:scale(.4);opacity:0}
  .js .orbit:not(.in) .ob-node,.js .orbit:not(.in) .ob-lab{opacity:0}
  .ob-ring{transition:transform .9s var(--ease),opacity .6s;transition-delay:calc(var(--i) * 160ms)}
  .ob-lab{transition:opacity .5s;transition-delay:calc(.5s + var(--i) * 160ms)}
  .ob-node{transition:opacity .5s;transition-delay:calc(.9s + var(--i) * 70ms)}
  .orbit.in .ob-ring--dash{animation:spin 80s linear 1.4s infinite}
  .svcw__idx b.flip{animation:flip .5s var(--ease)}
}
@keyframes pulse{0%{transform:scale(.6);opacity:1}100%{transform:scale(1.9);opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes flip{from{opacity:.35;translate:0 .12em}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.tag{position:fixed;left:16px;bottom:16px;z-index:30;background:var(--turq);color:var(--bg);font-size:12px;font-weight:700;padding:8px 12px;border-radius:999px}
