/* ==========================================================================
   1. TOKENS
   ========================================================================== */
:root{
  --bg:#0f1013;
  --bg-sunken:#08090b;
  --ink:#f2f1ee;
  --muted:rgba(242,241,238,.64);
  --faint:rgba(242,241,238,.5);
  --line:rgba(242,241,238,.12);
  --line-strong:rgba(242,241,238,.38);
  --accent:#8b7cff;
  --ok:#34d399;
  --display:"Archivo",system-ui,sans-serif;
  --serif:"Instrument Serif",Georgia,serif;
  --mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --nav-h:52px;
  --frame:1280px;
  --pad:40px;
  color-scheme:dark;
}

/* ==========================================================================
   2. RESET
   ========================================================================== */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-padding-top:var(--nav-h);-webkit-text-size-adjust:100%}
html:not(.lenis){scroll-behavior:smooth}
html.lenis,html.lenis body{height:auto}
body{
  font-family:var(--sans);
  font-size:17px;
  line-height:1.6;
  color:var(--ink);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
/* líneas de escaneo muy sutiles, como un monitor */
body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:100;
  pointer-events:none;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.014) 0 1px,transparent 1px 3px);
}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
ol,ul{list-style:none}
svg{display:block}
::selection{background:var(--accent);color:#fff}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* ==========================================================================
   3. TIPOGRAFÍA
   ========================================================================== */
h1,h2,h3{
  font-family:var(--display);
  font-stretch:125%;
  font-weight:700;
  line-height:1.02;
  letter-spacing:-.035em;
}
/* la palabra en cursiva serif de cada título */
h1 em,h2 em{
  padding-right:.05em;
  font-family:var(--serif);
  font-stretch:100%;
  font-style:italic;
  font-weight:400;
  font-size:1.1em;
  letter-spacing:-.01em;
  background:linear-gradient(95deg,#c7d2fe,#a78bfa 55%,#e879f9);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.mono{
  font:500 11px/1.4 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--faint);
}
.ok{color:var(--ok)}
.t-dim{color:var(--faint)}
.t-kw{color:#c4b5fd}
.dot{
  display:inline-block;
  width:7px;height:7px;
  margin-right:8px;
  border-radius:50%;
  background:var(--ok);
  box-shadow:0 0 10px var(--ok);
  vertical-align:1px;
}

/* ==========================================================================
   4. REVEAL ON SCROLL (sube 28px y se desenfoca, como getartcraft)
   ========================================================================== */
.js .reveal{
  opacity:0;
  transform:translateY(28px);
  filter:blur(8px);
  transition:opacity .9s var(--ease),transform .9s var(--ease),filter .9s var(--ease);
  transition-delay:calc(var(--i,0) * 90ms);
}
.js .reveal.in{opacity:1;transform:none;filter:none}

/* pasos que aparecen uno por uno (data-seq, inicio.js) */
.js [data-seq] li{
  opacity:0;
  transform:translateY(6px);
  transition:opacity .45s var(--ease),transform .45s var(--ease);
}
.js [data-seq] li.on{opacity:1;transform:none}

/* ==========================================================================
   5. BOTONES
   ========================================================================== */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:48px;
  padding:0 24px;
  border:1px solid transparent;
  font:500 12px/1 var(--mono);
  letter-spacing:.14em;
  text-transform:uppercase;
  white-space:nowrap;
  transition:background-color .25s ease,border-color .25s ease,color .25s ease;
}
.btn--solid{background:var(--ink);color:var(--bg)}
.btn--solid:hover{background:#fff}
.btn--line{border-color:var(--line-strong);color:var(--ink)}
.btn--line:hover{border-color:var(--ink);background:rgba(242,241,238,.05)}

/* ==========================================================================
   6. NAV
   ========================================================================== */
.nav{
  position:fixed;
  inset:0 0 auto;
  z-index:50;
  display:flex;
  height:var(--nav-h);
  border-bottom:1px solid var(--line);
  background:rgba(15,16,19,.78);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  backdrop-filter:blur(14px) saturate(140%);
}
.nav__logo{
  display:flex;
  align-items:center;
  gap:10px;
  padding:0 22px;
  border-right:1px solid var(--line);
  font:800 14px/1 var(--display);
  font-stretch:125%;
  letter-spacing:.02em;
  text-transform:uppercase;
}
.nav__mark{
  width:12px;height:12px;
  border-radius:3px;
  background:linear-gradient(135deg,#4f46e5,#9333ea);
}
.nav__menu{
  display:flex;
  align-items:center;
  gap:4px;
  padding:0 14px;
  font:500 11px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--muted);
}
.nav__menu a{padding:7px 10px;transition:color .2s ease}
.nav__menu a:hover{color:var(--ink)}
.nav__menu a[aria-current="page"]{background:var(--ink);color:var(--bg)}
.nav__toggle,
.nav__cta{
  align-items:center;
  padding:0 24px;
  font:500 11px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
}
.nav__toggle{display:none}
.nav__cta{
  display:flex;
  margin-left:auto;
  background:var(--ink);
  color:var(--bg);
  transition:background-color .25s ease;
}
.nav__cta:hover{background:#fff}

/* ==========================================================================
   7. HERO
   ========================================================================== */
.hero{
  position:relative;
  display:grid;
  place-items:center;
  min-height:100svh;
  padding:calc(var(--nav-h) + 48px) 20px 72px;
  overflow:hidden;
  text-align:center;
  background:radial-gradient(34% 30% at 50% 45%,rgba(99,102,241,.2),transparent 70%);
}
/* oscurece el centro para que el texto se lea sobre las tarjetas */
.hero::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:radial-gradient(40% 36% at 50% 48%,rgba(15,16,19,.85),rgba(15,16,19,.35) 65%,transparent);
}
.hero__inner{position:relative;z-index:2;max-width:1100px}

.wordmark{
  display:block;
  font-size:clamp(3rem,12vw,9.5rem);
  font-weight:800;
  line-height:.92;
  letter-spacing:-.02em;
  text-transform:uppercase;
  /* capa 1: destello que cruza una vez; capa 2: degradado del texto */
  background:
    linear-gradient(110deg,transparent 42%,rgba(196,181,253,.95) 50%,transparent 58%) 100% 0 / 250% 100% no-repeat,
    linear-gradient(180deg,#fff 30%,#9d9ca8 110%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
  animation:wm-in 1.2s var(--ease) both,wm-sheen 1.8s .5s ease-in-out both;
}
@keyframes wm-in{from{opacity:0;filter:blur(14px);transform:scale(.96)}}
@keyframes wm-sheen{to{background-position:0 0,0 0}}

.hero__tag{
  display:block;
  margin-top:26px;
  font-size:clamp(1.35rem,2.7vw,2.25rem);
  letter-spacing:-.03em;
}
.hero__lead{
  max-width:54ch;
  margin:22px auto 0;
  font-size:clamp(1rem,1.4vw,1.15rem);
  color:var(--muted);
}
.hero__actions{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:12px;
  margin-top:36px;
}
.hero__note{margin-top:26px}

/* entrada en cascada: primero la marca, luego lo demás */
.hero__tag,.hero__lead,.hero__actions,.hero__note{animation:rise .9s var(--ease) both}
.hero__tag{animation-delay:.55s}
.hero__lead{animation-delay:.7s}
.hero__actions{animation-delay:.85s}
.hero__note{animation-delay:1s}
@keyframes rise{from{opacity:0;transform:translateY(28px);filter:blur(8px)}}

/* ==========================================================================
   8. ÓRBITA (anillos + tarjetas que mueve inicio.js)
   ========================================================================== */
.orbit{
  position:absolute;
  inset:0;
  perspective:1100px;
  pointer-events:none;
  animation:fade 1.6s .3s both;
}
@keyframes fade{from{opacity:0}}

.orbit__rings i{
  position:absolute;
  left:50%;
  top:50%;
  width:var(--d);
  aspect-ratio:1;
  border:1px solid var(--line);
  border-radius:50%;
  transform:translate(-50%,-50%);
}
.orbit__rings i:nth-child(1){--d:34vmax;border-top-color:rgba(232,121,249,.55);animation:spin 38s linear infinite}
.orbit__rings i:nth-child(2){--d:54vmax;border-style:dashed;border-color:rgba(242,241,238,.08)}
.orbit__rings i:nth-child(3){--d:74vmax;border-right-color:rgba(139,124,255,.7);animation:spin 60s linear infinite reverse}
.orbit__rings i:nth-child(4){--d:96vmax;border-bottom-color:rgba(56,189,248,.55);animation:spin 80s linear infinite}
.orbit__rings i:nth-child(5){--d:122vmax;border-left-color:rgba(52,211,153,.45);animation:spin 110s linear infinite reverse}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}

.ocard{
  position:absolute;
  left:0;
  top:0;
  padding:11px 14px;
  border:1px solid rgba(242,241,238,.14);
  border-radius:10px;
  background:linear-gradient(180deg,rgba(33,34,42,.94),rgba(19,20,25,.94));
  box-shadow:0 24px 48px -24px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.07);
  font:500 11.5px/1.5 var(--mono);
  color:var(--ink);
  text-align:left;
  white-space:nowrap;
  will-change:transform;
  animation:fade .9s both;
  animation-delay:calc(.9s + var(--i,0) * 80ms);
}
html:not(.js) .ocard{display:none}
.ocard.is-far{opacity:.5;filter:blur(1.5px)}
.ocard__k{
  margin-bottom:5px;
  font-size:9.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--faint);
}
.ocard__ai{color:#c4b5fd}
.ocard--pill{padding:9px 16px;border-radius:100px}
.ocard svg{width:150px;height:34px}
.ocard polyline{fill:none;stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke}
.ocard--web i{display:block;width:90px;height:6px;margin-top:7px;border-radius:3px;background:rgba(242,241,238,.16)}
.ocard--web i:first-of-type{width:150px;height:9px;background:linear-gradient(90deg,#8b7cff,#e879f9)}
.ocard--web i:nth-of-type(2){width:120px}

/* ==========================================================================
   9. MARQUEE
   ========================================================================== */
.marquee{
  display:flex;
  overflow:hidden;
  border-top:1px solid var(--line);
  font:500 11px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--muted);
}
.marquee__track{
  display:flex;
  flex-shrink:0;
  min-width:100%;
  animation:marquee 40s linear infinite;
}
.marquee__track span{
  display:flex;
  align-items:center;
  gap:30px;
  padding:16px 0 16px 30px;
  white-space:nowrap;
}
.marquee__track span::after{content:"";width:5px;height:5px;background:var(--accent)}
@keyframes marquee{to{transform:translateX(-100%)}}

/* ==========================================================================
   10. SECCIONES (marco con rieles, barra fija y cruces)
   ========================================================================== */
.sec{border-top:1px solid var(--line)}
.frame{
  position:relative;
  max-width:var(--frame);
  margin:0 auto;
  border-inline:1px solid var(--line);
}
/* cruces "+" donde la línea de la sección corta los rieles */
.sec > .frame::before,
.sec > .frame::after{
  content:"+";
  position:absolute;
  top:-8px;
  z-index:6;
  font:300 15px/1 var(--mono);
  color:var(--line-strong);
}
.sec > .frame::before{left:-5px}
.sec > .frame::after{right:-5px}

.sec__bar{
  position:sticky;
  top:var(--nav-h);
  z-index:5;
  display:flex;
  justify-content:space-between;
  gap:16px;
  padding:15px var(--pad);
  border-bottom:1px solid var(--line);
  background:rgba(15,16,19,.82);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  font:500 11px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--muted);
}
.sec__bar span:last-child{color:var(--faint)}
.sec__head{padding:96px var(--pad) 80px}
.sec__head h2{max-width:22ch;font-size:clamp(2.2rem,5vw,4.1rem)}
.sec__head p{max-width:56ch;margin-top:26px;font-size:1.12rem;color:var(--muted)}

/* ==========================================================================
   11. AGENTES
   ========================================================================== */
.agent{
  display:grid;
  grid-template-columns:5fr 7fr;
  border-top:1px solid var(--line);
}
.agent .steps--col{border-right:1px solid var(--line)}
.agent__stage{
  display:grid;
  place-items:center;
  padding:48px 40px;
  background:radial-gradient(60% 55% at 50% 50%,rgba(99,102,241,.16),transparent 75%);
}
.console{
  width:100%;
  max-width:640px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--bg-sunken);
  box-shadow:0 40px 80px -40px rgba(0,0,0,.9),0 0 0 1px rgba(139,124,255,.08);
  font:13px/1.55 var(--mono);
}
.console__bar{
  display:flex;
  justify-content:space-between;
  padding:13px 18px;
  border-bottom:1px solid var(--line);
  font-size:10.5px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
}
.console__log{display:grid;gap:14px;padding:20px 18px 24px}
.console__log li{display:grid;grid-template-columns:72px 1fr;gap:14px}
.console__log b{
  padding-top:2px;
  font-size:10px;
  font-weight:500;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--faint);
}
.console__log .tool span{color:#c4b5fd}
.console__log .sys span{color:var(--muted)}
.console__log i{font-style:normal;color:var(--ok);white-space:nowrap}

.callout{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px 28px;
  padding:24px var(--pad);
  border-top:1px solid var(--line);
  transition:background-color .3s ease;
}
.callout:hover{background:rgba(139,124,255,.07)}
.callout .mono{color:var(--accent)}
.callout__go{
  margin-left:auto;
  font:500 11px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  transition:transform .3s var(--ease);
}
.callout:hover .callout__go{transform:translateX(4px)}

/* ==========================================================================
   12. PASOS (A, B, C, D)
   ========================================================================== */
.steps{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  border-top:1px solid var(--line);
}
.steps li{padding:32px var(--pad) 48px;border-right:1px solid var(--line)}
.steps li:last-child{border-right:0}
.steps .mono{display:block;margin-bottom:64px}
.steps h3{font-size:1.3rem;letter-spacing:-.025em}
.steps p{margin-top:10px;font-size:15.5px;line-height:1.55;color:var(--muted)}

.steps--col{grid-template-columns:1fr;border-top:0}
.steps--col li{padding:30px var(--pad);border-right:0;border-bottom:1px solid var(--line)}
.steps--col li:last-child{border-bottom:0}
.steps--col .mono{margin-bottom:16px}

/* ==========================================================================
   13. SERVICIOS
   ========================================================================== */
.cells{
  display:grid;
  grid-template-columns:1fr 1fr;
  border-top:1px solid var(--line);
}
.cell{display:flex;flex-direction:column;border-bottom:1px solid var(--line)}
.cell:nth-child(odd){border-right:1px solid var(--line)}
.cell:nth-last-child(-n+2){border-bottom:0}
.cell__bar{
  display:flex;
  justify-content:space-between;
  padding:13px 24px;
  border-bottom:1px solid var(--line);
  font:500 11px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--muted);
}
.cell__bar span:last-child{color:var(--faint)}
.cell__vis{
  position:relative;
  display:grid;
  place-items:center;
  aspect-ratio:16/9;
  overflow:hidden;
  border-bottom:1px solid var(--line);
  background:radial-gradient(70% 70% at 50% 40%,rgba(99,102,241,.1),transparent 70%),var(--bg-sunken);
}
.cell__vis > *{transition:transform .6s var(--ease)}
.cell:hover .cell__vis > *{transform:scale(1.03)}
.cell__body{padding:28px 32px 40px}
.cell__body h3{font-size:1.55rem;letter-spacing:-.03em}
.cell__body p{max-width:52ch;margin-top:12px;font-size:16px;color:var(--muted)}

/* --- maquetas animadas de cada servicio --- */
.mock{
  width:80%;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:10px;
  background:#131419;
  box-shadow:0 30px 60px -30px rgba(0,0,0,.9);
}
.mock__top{
  display:flex;
  align-items:center;
  gap:6px;
  padding:9px 12px;
  border-bottom:1px solid var(--line);
  font:500 9.5px/1 var(--mono);
  letter-spacing:.1em;
  color:var(--faint);
}
.mock__top i{width:7px;height:7px;border-radius:50%;background:rgba(242,241,238,.18)}
.mock__top span{margin-left:8px}

.mock--dash{display:grid;grid-template-columns:22% 1fr;aspect-ratio:16/8.4}
.mock__side{display:grid;align-content:start;gap:10px;padding:16px 12px;border-right:1px solid var(--line)}
.mock__side i{height:6px;border-radius:3px;background:rgba(242,241,238,.12)}
.mock__side i:first-child{width:70%;background:var(--accent)}
.mock__main{display:grid;grid-template-rows:auto 1fr;gap:14px;padding:14px}
.mock__kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mock__kpis span{
  padding:8px;
  border:1px solid var(--line);
  border-radius:6px;
  font:500 8.5px/1 var(--mono);
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--faint);
}
.mock__kpis span::after{
  content:"";
  display:block;
  width:60%;height:6px;
  margin-top:8px;
  border-radius:3px;
  background:rgba(242,241,238,.22);
}
.mock__bars{display:flex;align-items:flex-end;gap:6%;padding:0 4px;border-bottom:1px solid var(--line)}
.mock__bars i{
  flex:1;
  height:var(--h);
  border-radius:3px 3px 0 0;
  background:linear-gradient(180deg,var(--accent),rgba(139,124,255,.2));
  transform-origin:bottom;
  animation:bar 2.6s var(--ease) infinite alternate;
  animation-delay:calc(var(--n) * -.3s);
}
@keyframes bar{from{transform:scaleY(.4)}}

.mock--web{display:flex;flex-direction:column;width:72%;aspect-ratio:16/10}
.mock__page{display:flex;flex:1;flex-direction:column;gap:9px;padding:18px 18px 16px}
.mock__page b{
  display:block;
  height:6px;
  border-radius:3px;
  background:rgba(242,241,238,.14);
  animation:build 5.5s var(--ease) infinite both;
  animation-delay:calc(var(--n) * .18s);
}
.mock__page .mock__title{width:58%;height:13px;background:linear-gradient(90deg,#8b7cff,#e879f9)}
.mock__page .mock__btn{width:64px;height:16px;margin-top:4px;border-radius:4px;background:var(--ink)}
.mock__row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:auto}
.mock__row b{height:auto;aspect-ratio:4/3;border:1px solid var(--line);border-radius:6px;background:rgba(242,241,238,.05)}
@keyframes build{
  0%{opacity:0;transform:translateY(6px)}
  14%,82%{opacity:1;transform:none}
  94%,100%{opacity:0}
}

.mock--term{background:#0b0c0e}
.term{padding:14px 16px 16px;font:12px/1.75 var(--mono)}
.term u{text-decoration-color:var(--accent);text-underline-offset:3px}

.road{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  width:88%;
  /* riel gris entre el primer y el último punto */
  background:linear-gradient(var(--line-strong),var(--line-strong)) 50% 6px / 75% 1px no-repeat;
  font:500 9.5px/1.3 var(--mono);
  letter-spacing:.12em;
  text-transform:uppercase;
  text-align:center;
  color:var(--faint);
}
.js .road li{opacity:1;transform:none;transition:color .4s ease}
.road li{position:relative;padding-top:30px}
.road li::before{
  content:"";
  position:absolute;
  top:0;
  left:50%;
  z-index:1;
  width:13px;height:13px;
  margin-left:-6.5px;
  border:1px solid var(--line-strong);
  border-radius:50%;
  background:var(--bg-sunken);
  transition:background-color .4s ease,border-color .4s ease,box-shadow .4s ease;
}
/* tramo que se llena desde el punto anterior */
.road li + li::after{
  content:"";
  position:absolute;
  top:6px;
  right:50%;
  width:100%;
  height:1px;
  background:var(--accent);
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .8s var(--ease);
}
.road li.on{color:var(--ink)}
.road li.on::before{
  border-color:var(--accent);
  background:var(--accent);
  box-shadow:0 0 0 5px rgba(139,124,255,.18),0 0 22px rgba(139,124,255,.7);
}
.road li.on::after{transform:scaleX(1)}

/* ==========================================================================
   14. CTA FINAL
   ========================================================================== */
.cta{
  padding:140px var(--pad) 150px;
  text-align:center;
  background:radial-gradient(40% 50% at 50% 55%,rgba(99,102,241,.16),transparent 70%);
}
.cta h2{margin-top:22px;font-size:clamp(2.6rem,7.5vw,6rem)}
.cta__lead{max-width:50ch;margin:26px auto 0;font-size:1.12rem;color:var(--muted)}
.cta__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:42px}

/* ==========================================================================
   15. FOOTER
   ========================================================================== */
.foot{border-top:1px solid var(--line)}
.foot__grid{display:grid;grid-template-columns:2fr repeat(3,1fr)}
.foot__grid > div{padding:44px 32px 52px;border-left:1px solid var(--line)}
.foot__grid > .foot__brand{padding-left:var(--pad);border-left:0}
.foot__brand .nav__logo{display:inline-flex;padding:0;border:0}
.foot__brand p{max-width:30ch;margin:18px 0 16px;font-size:15px;color:var(--muted)}
.foot h4{
  margin-bottom:18px;
  font:500 10.5px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--faint);
}
.foot__grid > div:not(.foot__brand) a{display:block;padding:6px 0;font-size:15px;color:var(--muted)}
.foot__grid a{transition:color .2s ease}
.foot__grid a:hover{color:var(--ink)}
.foot__legal{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:20px var(--pad);
  border-top:1px solid var(--line);
  font:500 10.5px/1 var(--mono);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--faint);
}

/* ==========================================================================
   16. RESPONSIVE
   ========================================================================== */
@media (max-width:960px){
  :root{--pad:24px}
  .agent{grid-template-columns:1fr}
  .agent .steps--col{border-right:0;border-bottom:1px solid var(--line)}
  .agent__stage{padding:32px 16px}
  .steps{grid-template-columns:1fr 1fr}
  .steps li:nth-child(2){border-right:0}
  .steps li:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .foot__grid{grid-template-columns:1fr 1fr}
  .foot__grid > div{border-left:0;border-top:1px solid var(--line)}
  .foot__grid > .foot__brand{grid-column:1 / -1;border-top:0}
}

@media (max-width:860px){
  .nav__menu{
    position:absolute;
    top:var(--nav-h);
    left:0;right:0;
    flex-direction:column;
    align-items:stretch;
    gap:0;
    padding:0;
    border-bottom:1px solid var(--line);
    background:rgba(15,16,19,.97);
    opacity:0;
    visibility:hidden;
    transform:translateY(-8px);
    transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s;
  }
  .nav.is-open .nav__menu{opacity:1;visibility:visible;transform:none}
  .nav__menu a{padding:17px 24px;border-top:1px solid var(--line)}
  .nav__menu a:first-child{border-top:0}
  .nav__toggle{display:flex;margin-left:auto;border-left:1px solid var(--line)}
  .nav__cta{margin-left:0}
}

@media (max-width:700px){
  body{font-size:16px}
  .nav__logo,.nav__toggle,.nav__cta{padding:0 16px}
  /* en pantallas angostas las tarjetas pasan detrás del texto: más tenues y más sombra al centro */
  .orbit{opacity:.5}
  .hero::before{background:radial-gradient(75% 42% at 50% 48%,rgba(15,16,19,.85),rgba(15,16,19,.35) 70%,transparent)}
  .ocard--x{display:none}
  .ocard{font-size:10.5px}
  .sec__head{padding:64px var(--pad) 52px}
  .sec__bar span:last-child{display:none}
  .console{font-size:12px}
  .console__log li{grid-template-columns:1fr;gap:2px}
  .cells{grid-template-columns:1fr}
  .cell:nth-child(odd){border-right:0}
  .cell:nth-last-child(2){border-bottom:1px solid var(--line)}
  .term{font-size:10px}
  .road{font-size:8px;letter-spacing:.06em}
  .steps{grid-template-columns:1fr}
  .steps li{border-right:0;border-bottom:1px solid var(--line)}
  .steps li:last-child{border-bottom:0}
  .steps .mono{margin-bottom:20px}
  .callout__go{margin-left:0}
  .cta{padding:100px var(--pad) 110px}
  .foot__grid{grid-template-columns:1fr}
}

/* ==========================================================================
   17. ACCESIBILIDAD / MOVIMIENTO REDUCIDO
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  html:not(.lenis){scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none;filter:none}
  .marquee__track,.mock__page b{animation:none}
}
