/* Alkes, página principal. Mundo propio: sala de control de noche, con tema claro. */
@font-face{font-family:"Bricolage Grotesque";font-style:normal;font-weight:500 800;font-stretch:100%;font-display:swap;src:url(fonts/bricolage-latin.woff2) format("woff2")}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/source-sans-3-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

:root{
  --bg:#F3F5FB;--bg2:#E6EAF6;--surface:#FFFFFF;--surface2:#EEF1FA;
  --ink:#0A1230;--muted:#434D78;--line:rgb(10 18 48 / .12);
  --green:#07BA86;--green-text:#046B4E;--on-green:#03130E;--navy:#061C6B;--blue:#3B5BFF;
  --glow-a:rgb(59 91 255 / .22);--glow-b:rgb(7 186 134 / .22);
  --shadow:0 1px 2px rgb(10 18 48 / .06),0 18px 40px -18px rgb(10 18 48 / .22);
  --shadow-lg:0 2px 4px rgb(10 18 48 / .08),0 40px 80px -30px rgb(10 18 48 / .38);
  --nav-bg:rgb(255 255 255 / .72);
  --display:"Bricolage Grotesque","Trebuchet MS",system-ui,sans-serif;
  --body:"Source Sans 3",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.23,1,.32,1);--ease-io:cubic-bezier(.77,0,.175,1);--ease-drawer:cubic-bezier(.32,.72,0,1);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#050A18;--bg2:#08102A;--surface:#0D1634;--surface2:#131F46;
  --ink:#EDF1FF;--muted:#A3AED4;--line:rgb(163 182 255 / .15);
  --green-text:#3DE0AE;--navy:#C9D6FA;
  --glow-a:rgb(59 91 255 / .34);--glow-b:rgb(7 186 134 / .26);
  --shadow:0 1px 2px rgb(0 0 0 / .4),0 22px 44px -18px rgb(0 0 0 / .7);
  --shadow-lg:0 2px 4px rgb(0 0 0 / .5),0 50px 90px -30px rgb(0 0 0 / .85);
  --nav-bg:rgb(8 14 36 / .66);
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 var(--body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img,svg{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--green);color:var(--on-green)}
:focus-visible{outline:2px solid var(--green-text);outline-offset:3px;border-radius:6px}
:root[data-theme="dark"] :focus-visible{outline-color:var(--green)}
h1,h2,h3,.big,.price,.btn,.nav__logo{font-variation-settings:"opsz" 40}
h1,h2,h3{font-family:var(--display);font-weight:700;letter-spacing:-.018em;margin:0;text-wrap:balance}
p{margin:0}
.ico{width:1.35em;height:1.35em;flex:none;fill:currentColor}
.wrap{width:min(1200px,100% - 40px);margin-inline:auto}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--green);color:var(--on-green);padding:10px 16px;border-radius:12px;font-weight:600;z-index:200}
.skip:focus{top:12px}

/* ---------- botones ---------- */
.btn{--h:56px;display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:var(--h);padding:0 18px 0 26px;border-radius:999px;border:1px solid transparent;font:600 1.0625rem/1 var(--display);letter-spacing:-.01em;text-decoration:none;white-space:nowrap;cursor:pointer;transition:transform .16s var(--ease),box-shadow .25s var(--ease),background-color .2s,border-color .2s}
.btn:active{transform:scale(.97)}
.btn--wa{background:var(--green);color:var(--on-green);box-shadow:0 1px 0 rgb(255 255 255 / .35) inset,0 12px 30px -10px rgb(7 186 134 / .65)}
.btn--wa .btn__i{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:rgb(3 19 14 / .14);transition:transform .35s var(--ease)}
.btn--wa .btn__i .ico{width:22px;height:22px}
.btn--ghost{background:transparent;color:var(--ink);border-color:var(--line);padding:0 26px}
.btn--sm{--h:44px;padding:0 8px 0 18px;font-size:.95rem;gap:10px}
.btn--sm .btn__i{width:30px;height:30px}
.btn--sm .btn__i .ico{width:18px;height:18px}
.btn--lg{--h:68px;font-size:1.25rem;padding:0 14px 0 34px}
.btn--lg .btn__i{width:46px;height:46px}
.btn--lg .btn__i .ico{width:28px;height:28px}
@media (hover:hover) and (pointer:fine){
  .btn--wa:hover{box-shadow:0 1px 0 rgb(255 255 255 / .35) inset,0 18px 40px -10px rgb(7 186 134 / .85);transform:translateY(-2px)}
  .btn--wa:hover .btn__i{transform:translate(3px,-2px) scale(1.06)}
  .btn--ghost:hover{border-color:var(--green-text);background:var(--surface)}
}
.tlink{display:inline-flex;align-items:center;gap:8px;font-weight:600;color:var(--green-text);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s,gap .25s var(--ease)}
.tlink .ico{width:1.1em;height:1.1em}
@media (hover:hover) and (pointer:fine){.tlink:hover{border-color:currentColor;gap:12px}}

/* ---------- barra ---------- */
.nav{position:fixed;inset:14px 0 auto;z-index:100;pointer-events:none}
.nav__in{pointer-events:auto;width:min(1120px,100% - 28px);margin-inline:auto;display:flex;align-items:center;gap:6px;padding:8px 8px 8px 20px;border-radius:999px;background:var(--nav-bg);border:1px solid var(--line);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:var(--shadow);transition:transform .4s var(--ease),background-color .3s}
.nav__logo{display:flex;align-items:center;margin-right:auto}
.nav__logo{gap:10px;text-decoration:none;font:700 1.35rem/1 var(--display);letter-spacing:-.03em}
.nav__logo img{height:30px;width:auto}
.logo-d{display:none}
:root[data-theme="dark"] .logo-d{display:block}
:root[data-theme="dark"] .logo-l{display:none}
.nav__links{display:flex;align-items:center;gap:2px;list-style:none;margin:0 10px 0 0;padding:0}
.nav__links a{display:block;padding:10px 14px;border-radius:999px;color:var(--muted);text-decoration:none;font-weight:600;font-size:.98rem;transition:color .2s,background-color .2s}
@media (hover:hover) and (pointer:fine){.nav__links a:hover{color:var(--ink);background:var(--surface2)}}
.nav__tema,.nav__burger{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:transform .16s var(--ease),background-color .2s}
.nav__tema:active,.nav__burger:active{transform:scale(.94)}
.nav__tema .ico{width:22px;height:22px}
.t-sun{display:none}
:root[data-theme="dark"] .t-sun{display:block}
:root[data-theme="dark"] .t-moon{display:none}
.nav__burger{display:none}
.nav__burger span{display:block;width:18px;height:1.5px;background:currentColor;border-radius:2px;transition:transform .4s var(--ease-drawer),opacity .2s}
.nav__burger{gap:5px;align-content:center}
.nav__burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.nav__burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav__burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
.menu{position:fixed;inset:0;z-index:90;background:var(--bg);display:flex;flex-direction:column;justify-content:center;gap:6px;padding:100px 28px 40px;opacity:0;visibility:hidden;transition:opacity .3s var(--ease),visibility .3s}
.menu.is-open{opacity:1;visibility:visible}
.menu a:not(.btn){font:700 clamp(2rem,9vw,3rem)/1.15 var(--display);letter-spacing:-.03em;text-decoration:none;padding:8px 0;transform:translateY(24px);opacity:0;transition:transform .5s var(--ease-drawer),opacity .4s}
.menu.is-open a:not(.btn){transform:none;opacity:1}
.menu.is-open a:nth-child(2){transition-delay:.05s}.menu.is-open a:nth-child(3){transition-delay:.1s}.menu.is-open a:nth-child(4){transition-delay:.15s}.menu.is-open a:nth-child(5){transition-delay:.2s}
.menu .btn{margin-top:22px;align-self:flex-start}
@media (max-width:980px){.nav__links,.nav .btn--sm{display:none}.nav__burger{display:grid}}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100dvh;display:flex;align-items:center;padding:112px 0 72px;overflow:clip;isolation:isolate}
.aurora{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.aurora i{position:absolute;border-radius:50%;will-change:transform}
.aurora i:nth-child(1){width:70vmax;height:70vmax;left:-20vmax;top:-26vmax;background:radial-gradient(closest-side,var(--glow-a),transparent 70%);animation:drift 22s var(--ease-io) infinite alternate}
.aurora i:nth-child(2){width:60vmax;height:60vmax;right:-22vmax;top:8vmax;background:radial-gradient(closest-side,var(--glow-b),transparent 70%);animation:drift 28s var(--ease-io) infinite alternate-reverse}
.aurora i:nth-child(3){width:46vmax;height:46vmax;left:30vw;bottom:-28vmax;background:radial-gradient(closest-side,var(--glow-a),transparent 70%);animation:drift 34s var(--ease-io) infinite alternate}
@keyframes drift{to{transform:translate3d(6vmax,4vmax,0) scale(1.12)}}
.hero__grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(24px,4vw,64px);align-items:center}
.hero h1{font-size:clamp(2.7rem,1.3rem + 5vw,5.4rem);line-height:1;letter-spacing:-.028em;font-weight:700}
.hero h1 .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.12em;margin-bottom:-.12em}
.hero h1 .w>span{display:inline-block;transform:translateY(105%);animation:up .9s var(--ease) forwards;animation-delay:calc(var(--i) * 70ms + 120ms)}
@keyframes up{to{transform:none}}
.hero__sub{margin-top:26px;max-width:34ch;font-size:clamp(1.15rem,1rem + .5vw,1.4rem);line-height:1.5;color:var(--muted);opacity:0;animation:fade .8s var(--ease) .75s forwards}
.hero__cta{margin-top:34px;display:flex;flex-wrap:wrap;gap:14px;align-items:center;opacity:0;animation:fade .8s var(--ease) .9s forwards}
@keyframes fade{to{opacity:1}}
.net{position:relative;aspect-ratio:600/540;width:min(100%,640px);justify-self:center;opacity:0;animation:fade 1s var(--ease) .35s forwards}
.net__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.ln{fill:none;stroke:var(--muted);opacity:.45;stroke-width:1.6;stroke-dasharray:3 7;animation:flow 1.6s linear infinite;transition:stroke .3s}
.ln.hot{stroke:var(--green);opacity:1;stroke-width:2.2}
@keyframes flow{to{stroke-dashoffset:-20}}
.pk{fill:var(--green);filter:drop-shadow(0 0 5px var(--green))}
.nd{position:absolute;translate:-50% -50%;display:flex;flex-direction:column;align-items:center;gap:8px;will-change:transform}
.nd .ico{width:34px;height:34px;padding:19px;box-sizing:content-box;border-radius:50%;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);color:var(--green-text);transition:transform .35s var(--ease),border-color .3s,box-shadow .3s}
.nd span{font:700 .95rem/1.1 var(--display);letter-spacing:-.01em;white-space:nowrap;padding:5px 11px;border-radius:999px;background:var(--surface);border:1px solid var(--line)}
.nd:not(.nd--c) span{transition:color .3s}
.nd--c{left:50%;top:50%;width:142px;height:142px;border-radius:50%;justify-content:center;gap:6px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg),0 0 60px -10px var(--glow-b)}
.nd--c img{width:46px;height:46px;object-fit:contain}
.nd--c b{font:700 1.15rem/1 var(--display);letter-spacing:-.02em}
.nd__ring{position:absolute;inset:-6px;border-radius:50%;border:1.5px solid var(--green);opacity:0;animation:ring 3.4s var(--ease) infinite}
.nd__ring.r2{animation-delay:1.7s}
@media (hover:hover) and (pointer:fine){
 .nd:not(.nd--c):hover .ico{transform:scale(1.1);border-color:var(--green);box-shadow:0 0 0 6px rgb(7 186 134 / .14),var(--shadow)}
 .nd:not(.nd--c):hover span{color:var(--green-text)}
}
.nd--c .logo-l,.nd--c .logo-d{margin:0}
.fr{border-radius:16px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);overflow:hidden}
.fr__bar{display:flex;align-items:center;gap:8px;height:30px;padding:0 12px;background:var(--surface2);border-bottom:1px solid var(--line);font:600 .72rem/1 var(--body);color:var(--muted);letter-spacing:.01em}
.fr__bar b{width:7px;height:7px;border-radius:50%;background:var(--line);box-shadow:12px 0 0 var(--line),24px 0 0 var(--line);margin-right:26px;font-weight:400}
.fr img{width:100%;height:auto;aspect-ratio:1568/768;object-fit:cover;object-position:top left}
.shot-l{display:block}.shot-d{display:none}
:root[data-theme="dark"] .shot-l{display:none}
:root[data-theme="dark"] .shot-d{display:block}

/* ---------- herramientas (única marquesina) ---------- */
.tools{border-block:1px solid var(--line);background:var(--bg2);padding:26px 0;overflow:hidden}
.tools__t{width:min(1200px,100% - 40px);margin:0 auto 18px;color:var(--muted);font-weight:600}
.marq{display:flex;width:max-content;animation:marq 48s linear infinite}
.marq:hover{animation-play-state:paused}
.marq ul{display:flex;gap:56px;list-style:none;margin:0;padding:0 28px;align-items:center}
.marq li{display:flex;align-items:center;gap:12px;font:600 1.05rem/1 var(--display);color:var(--muted);white-space:nowrap}
.marq li svg{width:26px;height:26px;fill:currentColor}
@keyframes marq{to{transform:translateX(-50%)}}

/* ---------- secciones ---------- */
.sec{padding:clamp(80px,11vw,160px) 0;position:relative}
.sec--alt{background:var(--bg2)}
.sec__h{max-width:20ch}
.sec__h h2,.sec h2{font-size:clamp(2.2rem,1.2rem + 3.8vw,4.4rem);line-height:1.04;letter-spacing:-.022em;font-weight:700}
.sec__lede{margin-top:20px;max-width:46ch;font-size:1.2rem;color:var(--muted)}
[data-r]{opacity:0;transform:translateY(26px);filter:blur(6px);transition:opacity .8s var(--ease),transform .8s var(--ease),filter .8s var(--ease);transition-delay:var(--d,0ms)}
.no-js [data-r],[data-r].in{opacity:1;transform:none;filter:none}

/* bento */
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:16px;margin-top:56px}
.tile{position:relative;border-radius:28px;padding:clamp(24px,3vw,38px);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);overflow:hidden;isolation:isolate;display:flex;flex-direction:column;gap:14px}
.tile::before{content:"";position:absolute;inset:0;z-index:-1;opacity:0;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),var(--glow-b),transparent 60%);transition:opacity .3s}
@media (hover:hover) and (pointer:fine){.tile:hover::before{opacity:1}}
.tile h3{font-size:clamp(1.35rem,1rem + 1vw,1.85rem);line-height:1.12}
.tile p{color:var(--muted);max-width:40ch}
.tile .ico{width:34px;height:34px;color:var(--green-text)}
.tile--big{grid-column:span 7;grid-row:span 2;justify-content:flex-end;min-height:440px;background:linear-gradient(160deg,var(--surface),var(--surface2))}
.tile--big::after{content:"";position:absolute;right:-12%;top:-18%;width:70%;aspect-ratio:1;border-radius:50%;background:radial-gradient(closest-side,var(--glow-a),transparent 70%);z-index:-1}
.big{display:flex;align-items:baseline;gap:14px;font-family:var(--display);font-weight:800;letter-spacing:-.04em;line-height:.8}
.big small{font:600 1.3rem/1 var(--body);letter-spacing:0;color:var(--muted);align-self:flex-start;margin-top:12px}
.big em{font-style:normal;font-size:clamp(7rem,3rem + 13vw,15rem);color:var(--ink)}
.big span{font-size:clamp(1.6rem,1rem + 2vw,2.6rem);letter-spacing:-.02em;color:var(--green-text);font-weight:700;align-self:flex-end;padding-bottom:.2em}
.tile--w5{grid-column:span 5}.tile--w4{grid-column:span 4}

/* productos */
.show{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(30px,5vw,90px);margin-top:48px;align-items:start}
.show__list{display:flex;flex-direction:column}
.prod{min-height:88vh;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:30px 0;border-top:1px solid var(--line);opacity:.4;transition:opacity .5s var(--ease)}
.prod:first-child{border-top:0}
.prod.is-on{opacity:1}
.prod__id{display:flex;align-items:center;gap:14px;font:700 1.35rem/1 var(--display);letter-spacing:-.02em}
.prod__logo{height:44px;width:auto}
.prod__logo.d{display:none}
:root[data-theme="dark"] .prod__logo.l{display:none}
:root[data-theme="dark"] .prod__logo.d{display:block}
.prod h3{font-size:clamp(1.9rem,1.2rem + 2.2vw,2.9rem);line-height:1.08;letter-spacing:-.02em}
.prod p{color:var(--muted);max-width:44ch;font-size:1.12rem}
.prod ul{list-style:none;margin:2px 0 0;padding:0;display:grid;gap:10px}
.prod li{display:flex;gap:12px;align-items:flex-start}
.prod li .ico{color:var(--green-text);margin-top:.2em;width:1.3em;height:1.3em}
.price{display:inline-flex;align-items:baseline;gap:10px;font:700 1.9rem/1 var(--display);letter-spacing:-.03em}
.price small{font:500 .98rem/1.3 var(--body);color:var(--muted);letter-spacing:0}
.prod__row{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:6px}
.prod__inline{display:none;margin-top:12px}
.show__stage{position:sticky;top:12vh;height:76vh;display:grid;align-items:center}
.pan{position:relative;aspect-ratio:1568/830;border-radius:24px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg);overflow:hidden}
.pan .fr__bar{position:relative;z-index:2}
.pan__s{position:absolute;inset:30px 0 0;clip-path:inset(0 0 100% 0);transform:scale(1.04);transition:clip-path .8s var(--ease-io),transform 1s var(--ease)}
.pan__s.is-on{clip-path:inset(0);transform:none}
.pan__s img{width:100%;height:100%;object-fit:cover;object-position:top left}
.pan__tag{position:absolute;z-index:3;right:16px;bottom:16px;padding:10px 16px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font:700 .98rem/1 var(--display);box-shadow:var(--shadow);letter-spacing:-.01em}
.sys{margin-top:8px;display:inline-flex;align-items:center;gap:10px;color:var(--muted);font-size:.98rem}

/* servicios: riel que se expande */
.rail{display:flex;gap:14px;margin-top:56px;height:min(580px,72vh)}
.rl{position:relative;flex:1 1 0;min-width:0;border-radius:28px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);overflow:hidden;cursor:pointer;transition:flex-grow .7s var(--ease-drawer),background-color .3s;text-align:left;padding:0;color:inherit;font:inherit}
.rl.is-on{flex-grow:3.4;cursor:default}
.rl__c{position:absolute;inset:0;padding:clamp(22px,2.4vw,34px);display:flex;flex-direction:column;gap:14px}
.rl__h{display:flex;flex-direction:column;gap:12px}
.rl__h .ico{width:38px;height:38px;color:var(--green-text)}
.rl__t{font:700 clamp(1.3rem,1rem + .9vw,1.8rem)/1.1 var(--display);letter-spacing:-.025em}
.rl:not(.is-on) .rl__t{writing-mode:vertical-rl;transform:rotate(180deg);margin-top:auto;white-space:nowrap}
.rl__b{opacity:0;transform:translateY(14px);transition:opacity .35s var(--ease),transform .5s var(--ease);pointer-events:none;display:flex;flex-direction:column;gap:18px;flex:1;min-width:min(430px,60vw)}
.rl.is-on .rl__b{opacity:1;transform:none;pointer-events:auto;transition-delay:.25s}
.rl__b p{color:var(--muted);max-width:40ch}
.chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.chips li{padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:var(--surface2);font-weight:600;font-size:.96rem}
.rl__b .tlink{margin-top:auto}
.rl--1.is-on{background:linear-gradient(160deg,var(--surface),var(--surface2))}

/* proceso */
.steps{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:64px}
.steps__ln{position:absolute;left:0;right:0;top:27px;height:2px;background:var(--line)}
.steps__ln i{position:absolute;inset:0;background:var(--green);transform-origin:left;transform:scaleX(var(--p,0))}
.step{position:relative;padding-top:78px}
.step__n{position:absolute;top:0;left:0;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--bg);border:2px solid var(--line);font:800 1.3rem/1 var(--display);transition:border-color .4s,background-color .4s,color .4s}
.sec--alt .step__n{background:var(--bg2)}
.step.is-on .step__n{border-color:var(--green);background:var(--green);color:var(--on-green)}
.step h3{font-size:1.5rem;line-height:1.1;margin-bottom:10px}
.step p{color:var(--muted);max-width:30ch}

/* preguntas */
.faq{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:clamp(30px,6vw,100px);align-items:start}
.faq__aside{position:sticky;top:120px;display:flex;flex-direction:column;gap:24px;align-items:flex-start}
.q{border-bottom:1px solid var(--line)}
.q summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:20px;padding:26px 0;cursor:pointer;font:700 clamp(1.15rem,1rem + .6vw,1.5rem)/1.25 var(--display);letter-spacing:-.02em}
.q summary::-webkit-details-marker{display:none}
.q summary .ico{width:28px;height:28px;color:var(--green-text);transition:transform .35s var(--ease)}
.q[open] summary .ico{transform:rotate(45deg)}
.q__a{padding:0 0 28px;color:var(--muted);max-width:60ch;font-size:1.1rem}

/* cierre */
.fin{position:relative;overflow:clip;isolation:isolate;text-align:center;padding:clamp(90px,13vw,190px) 0;background:var(--bg2)}
.fin .aurora i:nth-child(1){left:-10vmax;top:-10vmax}
.fin h2{font-size:clamp(2.6rem,1.3rem + 6vw,6.2rem);line-height:1;letter-spacing:-.028em;font-weight:700;max-width:14ch;margin:0 auto}
.fin p.lede{margin:26px auto 0;max-width:40ch;font-size:1.3rem;color:var(--muted)}
.fin__cta{margin-top:42px;display:flex;flex-direction:column;align-items:center;gap:22px}
.fin .btn--wa{position:relative}
.fin .btn--wa::after{content:"";position:absolute;inset:-8px;border-radius:inherit;border:2px solid var(--green);opacity:0;animation:ring 3.2s var(--ease) infinite}
@keyframes ring{0%{opacity:.7;transform:scale(.97)}70%,100%{opacity:0;transform:scale(1.12)}}
.fin__alt{display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:center;color:var(--muted);font-weight:600}
.fin__alt a{text-decoration:none;border-bottom:1px solid var(--line)}
@media (hover:hover) and (pointer:fine){.fin__alt a:hover{color:var(--ink);border-color:var(--green)}}

/* pie */
.foot{padding:70px 0 40px;border-top:1px solid var(--line)}
.foot__g{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:40px}
.foot img{height:34px;width:auto;margin-bottom:18px}
.foot p{color:var(--muted);max-width:32ch}
.foot h4{margin:0 0 14px;font:700 1rem/1 var(--display)}
.foot ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.foot li a{color:var(--muted);text-decoration:none}
@media (hover:hover) and (pointer:fine){.foot li a:hover{color:var(--ink)}}
.foot__b{margin-top:50px;padding-top:24px;border-top:1px solid var(--line);color:var(--muted);font-size:.95rem;display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .hero{min-height:0;padding-top:104px}
  .hero__grid{grid-template-columns:1fr}
  .net{max-width:520px}
  .tile--big,.tile--w5,.tile--w4{grid-column:1/-1}
  .tile--big{min-height:340px;grid-row:auto}
  .show{grid-template-columns:1fr}
  .show__stage{display:none}
  .prod{min-height:0;opacity:1;padding:44px 0}
  .prod__inline{display:block}
  .rail{flex-direction:column;height:auto}
  .rl{flex:none;cursor:default}
  .rl__c{position:static}
  .rl:not(.is-on) .rl__t{writing-mode:horizontal-tb;transform:none;margin:0}
  .rl__b{opacity:1;transform:none;pointer-events:auto;min-width:0}
  .steps{grid-template-columns:1fr;gap:36px}
  .steps__ln{left:27px;right:auto;top:0;bottom:0;width:2px;height:auto}
  .steps__ln i{transform-origin:top;transform:scaleY(var(--p,0))}
  .step{padding:0 0 0 78px;min-height:56px}
  .faq{grid-template-columns:1fr}.faq__aside{position:static}
  .foot__g{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .wrap{width:calc(100% - 32px)}
  .btn--lg{--h:62px;padding:0 10px 0 24px;font-size:1.1rem}
  .nd .ico{width:24px;height:24px;padding:13px}.nd span{font-size:.78rem;padding:4px 8px}.nd--c{width:104px;height:104px}.nd--c img{width:34px;height:34px}.nd--c b{font-size:.95rem}
  .big em{font-size:7.5rem}
  .foot__g{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .hero h1 .w>span{transform:none}.hero__sub,.hero__cta,.net{opacity:1}
  [data-r]{opacity:1;transform:none;filter:none}
  .marq,.ln{animation:none}.pk{display:none}.nd__ring{display:none}
}
section[id]{scroll-margin-top:84px}

/* ---------- mapa de red: detalle animado ---------- */
.netwrap{position:relative;width:min(100%,640px);justify-self:center}
.netwrap .net{width:100%}
button.nd{background:none;border:0;padding:0;margin:0;color:inherit;font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
button.nd:focus-visible{outline:none}
button.nd:focus-visible .ico{border-color:var(--green);box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--green)}
.nd.is-on .ico{transform:scale(1.1);border-color:var(--green);box-shadow:0 0 0 6px rgb(7 186 134 / .16),var(--shadow);background:var(--surface2)}
.nd.is-on span{color:var(--green-text)}
.nd--c{transition:opacity .35s var(--ease),scale .45s var(--ease)}
.net.is-open .nd--c{opacity:0;scale:.7}
.nx{position:absolute;left:23%;right:23%;top:50%;translate:0 -50%;z-index:5;border-radius:28px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-lg),0 0 80px -20px var(--glow-b);padding:14px 16px 16px;opacity:0;visibility:hidden;transform:scale(.94);transform-origin:50% 50%;transition:opacity .28s var(--ease),transform .4s var(--ease),visibility .28s}
.nx.is-open{opacity:1;visibility:visible;transform:none}
.nx__x{position:absolute;right:10px;top:10px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--surface2);color:var(--muted);display:grid;place-items:center;cursor:pointer;z-index:2;transition:transform .16s var(--ease),color .2s}
.nx__x:active{transform:scale(.92)}
.nx__x .ico{width:16px;height:16px}
@media (hover:hover) and (pointer:fine){.nx__x:hover{color:var(--ink)}}
.nx__i{display:none}
.nx__i.is-on{display:block;animation:nxin .45s var(--ease)}
@keyframes nxin{from{opacity:0;transform:translateY(10px)}}
.nx__i h3{font-size:1.12rem;line-height:1.15;margin:10px 0 4px}
.nx__i p{color:var(--muted);font-size:.94rem;line-height:1.4;margin-bottom:10px}
.ill{display:none;width:100%;height:auto;overflow:visible;border-radius:16px;background:var(--bg2)}
.nx__i.is-on .ill{display:block}
.ill .o{fill:none;stroke:var(--muted);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;opacity:.85}
.ill .f{fill:var(--surface2);stroke:var(--muted);stroke-width:1.6;stroke-linejoin:round}
.ill .ff{fill:var(--surface2);stroke:none}
.ill .g{fill:none;stroke:var(--green);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.ill .gf{fill:var(--green);stroke:none}
.ill .tf{fill:var(--muted);opacity:.55;stroke:none}
.ill .pk{fill:var(--green);filter:none}
.ill .dash{stroke-dasharray:3 6;animation:flow 1.6s linear infinite}
.ill .lite{opacity:.35}
.ill .cl,.ill .bar{transform-box:fill-box}
.ill .cl{transform-origin:left center;animation:typ 5.6s var(--ease) infinite;animation-delay:calc(var(--i) * .32s)}
@keyframes typ{0%{transform:scaleX(0)}16%,78%{transform:scaleX(1)}92%,100%{transform:scaleX(0)}}
.ill .cur{animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.ill .bar{transform-origin:center bottom;animation:grow 5.6s var(--ease) infinite;animation-delay:calc(var(--i) * .25s + .6s)}
@keyframes grow{0%{transform:scaleY(.1)}20%,80%{transform:scaleY(var(--s,1))}95%,100%{transform:scaleY(.1)}}
.ill .bar:nth-of-type(n){--s:1}
.ill .pop{animation:popin 5.6s var(--ease) infinite}
@keyframes popin{0%,50%{transform:scale(0);opacity:0}60%,88%{transform:scale(1);opacity:1}100%{transform:scale(0);opacity:0}}
.ill .float{animation:fl 4s ease-in-out infinite alternate}
@keyframes fl{to{transform:translateY(-5px)}}
.ill .scan{animation:scan 2.8s linear infinite}
@keyframes scan{0%{transform:translateY(0)}100%{transform:translateY(150px)}}
.ill .chk{stroke-dasharray:60;animation:draw 3.2s var(--ease) infinite}
@keyframes draw{0%{stroke-dashoffset:60}30%,80%{stroke-dashoffset:0}100%{stroke-dashoffset:60}}
.ill .th{animation:hit 3.4s var(--ease) infinite;animation-delay:var(--d)}
@keyframes hit{0%{transform:translateX(0);opacity:0}12%{opacity:.9}55%{transform:translateX(var(--dx));opacity:.9}62%{transform:translateX(var(--dx)) scale(1.5);opacity:0}100%{opacity:0;transform:translateX(var(--dx))}}
.ill .shield{animation:shd 3.4s ease-in-out infinite}
@keyframes shd{0%,100%{stroke:var(--muted)}40%,60%{stroke:var(--green)}}
.ill .blink{animation:blink2 1.4s ease-in-out infinite;animation-delay:calc(var(--i) * .25s)}
@keyframes blink2{50%{opacity:.25}}
.ill .wf{opacity:.15;animation:wifi 2s ease-in-out infinite;animation-delay:calc(var(--i) * .22s)}
@keyframes wifi{40%{opacity:1}100%{opacity:.15}}
.ill .wv{transform-box:fill-box;transform-origin:center;opacity:0;animation:wave 2.4s var(--ease) infinite;animation-delay:calc(var(--i) * .8s)}
@keyframes wave{0%{transform:scale(.5);opacity:.75}100%{transform:scale(2);opacity:0}}
.ill .s1,.ill .s2,.ill .s3{transform-box:fill-box;opacity:0}
.ill .s1{animation:seq1 6s var(--ease) infinite}.ill .s2{animation:seq2 6s var(--ease) infinite}.ill .s3{transform-origin:center;animation:seq3 6s var(--ease) infinite}
@keyframes seq1{0%{opacity:0;transform:translateY(8px)}6%,92%{opacity:1;transform:none}100%{opacity:0}}
@keyframes seq2{0%,28%{opacity:0;transform:translateY(8px)}36%,92%{opacity:1;transform:none}100%{opacity:0}}
@keyframes seq3{0%,55%{opacity:0;transform:scale(.8)}62%,92%{opacity:1;transform:scale(1)}100%{opacity:0}}
.ill .dt{animation:dots 1.2s ease-in-out infinite;animation-delay:calc(var(--i) * .18s)}
@keyframes dots{50%{opacity:.15}}
.ill .nn{animation:act 3.2s ease-in-out infinite;animation-delay:calc(var(--l) * .5s)}
@keyframes act{0%,100%{fill:var(--surface2);stroke:var(--muted)}20%,42%{fill:var(--green);stroke:var(--green)}}
.ill .spark{transform-box:fill-box;transform-origin:center;animation:sp 3.2s ease-in-out infinite 1.4s}
@keyframes sp{0%,100%{transform:scale(.7) rotate(0)}50%{transform:scale(1.15) rotate(45deg)}}
@media (max-width:980px){
  .netwrap{display:flex;flex-direction:column;gap:16px;max-width:520px}
  .nx{position:relative;left:auto;right:auto;top:auto;translate:none;display:none;transform:none;opacity:1;visibility:visible}
  .nx.is-open{display:block;animation:nxin .4s var(--ease)}
  .net.is-open .nd--c{opacity:1;scale:1}
}
@media (prefers-reduced-motion:reduce){
  .ill *{animation:none!important}.ill .s1,.ill .s2,.ill .s3{opacity:1}.ill .chk{stroke-dashoffset:0}.ill .wf{opacity:.7}.ill .pk{display:none}
}
