:root{
  --bg:#0E1420; --panel:#141C2B; --surface:#1C2635; --hairline:#26324A;
  --faint:#7A8699; --muted:#C7CFDA; --ink:#F2F5F8;
  --accent:#00E676; --accent-deep:#00A85D; --accent-ink:#0E1420;
  --warn:#FFB020; --info:#00C2FF;
  --ease-out:cubic-bezier(0.23,1,0.32,1); --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --font-sans:"IBM Plex Sans",system-ui,sans-serif; --font-mono:"IBM Plex Mono",monospace;
}
*{margin:0;padding:0;box-sizing:border-box;}
body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased;}
h1,h2,h3{text-wrap:balance;line-height:1.12;font-weight:600;letter-spacing:-0.02em;}
p{text-wrap:pretty;max-width:64ch;}
a{color:inherit;}
.wrap{max-width:1160px;margin-inline:auto;padding-inline:clamp(20px,4vw,48px);}
header.site{position:sticky;top:0;z-index:50;height:64px;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline);}
.nav{display:flex;align-items:center;justify-content:space-between;height:64px;}
.logo{font-weight:700;font-size:1.1rem;letter-spacing:-0.01em;text-decoration:none;font-family:var(--font-mono);}
.logo .cursor{width:8px;height:0.95em;margin-left:3px;vertical-align:-0.08em;}
.nav-toggle{display:none;appearance:none;background:transparent;border:1px solid var(--hairline);color:var(--ink);font-family:var(--font-mono);font-size:0.82rem;letter-spacing:0.06em;padding:8px 14px;min-height:44px;min-width:44px;border-radius:8px;cursor:pointer;}
.nav-toggle:hover{border-color:var(--accent-deep);}
.nav-links{display:flex;gap:28px;align-items:center;}
.nav-links a{font-size:0.9rem;font-weight:500;color:var(--muted);text-decoration:none;transition:color 180ms var(--ease-out);}
.nav-links a:hover{color:var(--ink);}
.nav-links a:not(.btn){position:relative;}
.nav-links a:not(.btn)::after{content:"";position:absolute;left:0;bottom:-4px;height:1.5px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform 220ms var(--ease-out);}
.nav-links a:not(.btn):hover::after{transform:scaleX(1);}
.nav-links a:focus-visible,.btn:focus-visible,.nav-toggle:focus-visible,a.prod:focus-visible,.term a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px;}
.btn{display:inline-block;font-weight:600;font-size:0.95rem;text-decoration:none;padding:12px 22px;border-radius:8px;background:var(--accent);color:var(--accent-ink);transition:transform 160ms var(--ease-out),background 160ms var(--ease-out);}
.btn:hover{background:#4dffa1;transform:translateY(-1px);}
.btn:active{transform:scale(0.97);}
a.btn,a.btn:hover,a.btn:focus-visible,.nav-links a.btn,.nav-links a.btn:hover{color:var(--accent-ink);}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--hairline);}
.btn.ghost:hover{border-color:var(--accent-deep);background:var(--surface);}
a.btn.ghost,a.btn.ghost:hover,.nav-links a.btn.ghost,.nav-links a.btn.ghost:hover{color:var(--ink);}
.nav .btn{padding:9px 18px;font-size:0.88rem;}
.hero{padding-block:clamp(64px,10vh,110px) clamp(28px,5vh,48px);}
.hero h1{font-size:clamp(2.3rem,5.4vw,4.2rem);font-weight:700;letter-spacing:-0.03em;max-width:18ch;}
.hero h1 em{font-style:normal;color:var(--accent);}
.hero .lead{margin-top:20px;font-size:1.08rem;color:var(--muted);max-width:52ch;}
@keyframes rise{from{opacity:0;transform:translateY(18px);filter:blur(6px);}to{opacity:1;transform:none;filter:blur(0);}}
.hero > *{opacity:0;animation:rise 700ms var(--ease-out) forwards;}
.hero h1{animation-delay:60ms;}.hero .lead{animation-delay:180ms;}
#dolores,#productos,#quienes{scroll-margin-top:80px;}
.term-cue{margin:0 0 12px;}
.term{margin-block:0 clamp(56px,9vh,96px);border:1px solid var(--hairline);border-radius:12px;background:var(--panel);overflow:hidden;opacity:0;animation:rise 700ms var(--ease-out) 320ms forwards;}
.term-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--hairline);font-family:var(--font-mono);font-size:0.75rem;color:var(--faint);letter-spacing:0.05em;}
.term-body{padding:22px 24px 26px;font-family:var(--font-mono);font-size:0.95rem;line-height:1.45;}
.term-ps{color:var(--faint);padding-block:8px;}
.term-ps b{color:var(--accent);font-weight:500;}
.cursor{display:inline-block;width:9px;height:1.1em;background:var(--accent);vertical-align:text-bottom;margin-left:2px;animation:blink 1.05s steps(1) infinite;}
@keyframes blink{50%{opacity:0;}}
.term a{display:flex;align-items:center;min-height:44px;color:var(--muted);text-decoration:none;padding:10px 8px 10px 1.6em;position:relative;cursor:pointer;transition:color 150ms var(--ease-out),background 150ms var(--ease-out);}
.term a .idx{color:var(--accent-deep);flex-shrink:0;margin-right:0.45em;}
.term a::before{content:">";position:absolute;left:0.2em;color:var(--accent);opacity:0.45;transition:opacity 150ms var(--ease-out),transform 150ms var(--ease-out);}
.term a.other{margin-top:6px;border-top:1px solid var(--hairline);}
.term a:hover,.term a.is-hit{color:var(--ink);background:var(--surface);}
.term a:hover::before,.term a.is-hit::before{opacity:1;}
.term-foot{padding:12px 24px;border-top:1px solid var(--hairline);font-size:0.82rem;color:var(--faint);}
@media (hover:hover) and (pointer:fine){
  .term a::before{opacity:0;transform:translateX(-6px);}
  .term a:hover::before,.term a.is-hit::before{opacity:1;transform:none;}
}
section{padding-block:clamp(64px,9vh,104px);border-top:1px solid var(--hairline);}
.sec-head{margin-bottom:40px;}
.sec-head h2{font-size:clamp(1.7rem,3.2vw,2.4rem);}
.sec-head p{margin-top:14px;color:var(--muted);font-size:1.02rem;}
.cases{margin-top:8px;font-family:var(--font-mono);font-size:0.8rem;color:var(--faint);letter-spacing:0.03em;line-height:2;}
.prod{display:grid;grid-template-columns:minmax(150px,2.5fr) 6fr 2fr;gap:clamp(14px,3vw,40px);align-items:baseline;padding-block:22px;border-bottom:1px solid var(--hairline);text-decoration:none;transition:background 180ms var(--ease-out);}
a.prod:hover{background:var(--panel);}
a.prod:active{transform:scale(0.995);}
.prod .name{font-weight:700;font-size:1.15rem;letter-spacing:-0.015em;}
a.prod:hover .name{color:var(--accent);}
a.prod .name::after{content:"\2192";display:inline-block;margin-left:10px;color:var(--accent);opacity:0;transform:translateX(-6px);transition:opacity 200ms var(--ease-out),transform 200ms var(--ease-out);}
a.prod:hover .name::after{opacity:1;transform:none;}
.prod .desc{color:var(--muted);font-size:0.95rem;}
.prod .state{font-family:var(--font-mono);font-size:0.74rem;letter-spacing:0.05em;color:var(--faint);text-align:right;white-space:nowrap;}
.prod .state.live{color:var(--accent-deep);}
.closer h2{font-size:clamp(1.9rem,3.6vw,2.7rem);font-weight:700;max-width:22ch;}
.closer p{margin-top:18px;color:var(--muted);font-size:1.05rem;}
.closer .cta{margin-top:32px;}
footer{border-top:1px solid var(--hairline);padding-block:36px;font-size:0.85rem;color:var(--faint);}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;}
footer a{color:var(--muted);text-decoration:none;}
/* etapas de caso */
.stage{min-height:88vh;display:flex;align-items:center;padding-block:clamp(48px,7vh,80px);border-top:1px solid var(--hairline);}
.stage .wrap{width:100%;}
.stage-grid{display:grid;grid-template-columns:6fr 5fr;gap:clamp(28px,5vw,72px);align-items:center;}
.stage-grid.rev .gfx{order:2;}
.stage-grid.rev .txt{order:1;}
.stage.big{min-height:0;}
.stage.big .stage-grid{grid-template-columns:1fr;gap:36px;}
.stage.big .txt{max-width:720px;}
#hero-case{min-height:calc(100vh - 64px);border-top:none;}
#prueba{min-height:100vh;}
.etiqueta{font-family:var(--font-mono);font-size:0.74rem;letter-spacing:0.12em;color:var(--accent-deep);}
.txt h2,.txt h1{margin-top:10px;font-size:clamp(1.6rem,3.2vw,2.4rem);}
.stage.big h1{font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;letter-spacing:-0.03em;}
.txt p{margin-top:12px;color:var(--muted);}
.net-svg{width:100%;height:auto;display:block;}
.lk{stroke:var(--hairline);stroke-width:2;fill:none;}
.stage[data-stage] .lk, #prueba .lk{stroke:#3a4a68;}
.amb-l{stroke:var(--warn);stroke-width:3;fill:none;}
.sol-l{stroke:var(--accent);stroke-width:2;stroke-dasharray:6 7;fill:none;}
.fix-l{stroke:var(--accent);stroke-width:2.5;fill:none;}
.nd circle.ring{fill:var(--bg);stroke:#3a4a68;stroke-width:2;}
.nd circle.dotc{fill:var(--faint);}
.nd.lit circle.ring{stroke:var(--accent-deep);}
.nd.lit circle.dotc{fill:var(--accent);}
.nd.warn circle.ring{stroke:var(--warn);}
.nd.warn circle.dotc{fill:var(--warn);}
.nd text{font-family:var(--font-mono);font-size:12px;letter-spacing:0.07em;fill:var(--faint);text-anchor:middle;}
.nd.lit text,.nd.warn text{fill:var(--ink);}
.nd .sub{font-size:9.5px;fill:var(--faint);letter-spacing:0.04em;}
.nd.soln circle.ring{stroke:var(--accent);stroke-dasharray:4 4;}
.nd.soln circle.dotc{fill:var(--accent);}
.nd.soln text{fill:var(--ink);}
@keyframes pulse{50%{transform:scale(1.25);}}
.nd.pulse circle.dotc{animation:pulse 1.1s var(--ease-in-out) infinite;transform-origin:center;transform-box:fill-box;}
.mk text{font-family:var(--font-mono);font-size:11px;letter-spacing:0.05em;fill:var(--warn);}
.mk line{stroke:var(--warn);stroke-width:1;}
.mk.ok text{fill:var(--accent);}
.mk.ok line{stroke:var(--accent);}
.pkt-halo{fill:var(--accent);opacity:0.14;}
.pkt-core{fill:var(--accent);}
.doc{margin-top:20px;border:1px solid var(--hairline);border-radius:10px;background:var(--panel);padding:18px 20px;max-width:400px;font-family:var(--font-mono);font-size:0.8rem;letter-spacing:0.02em;color:var(--muted);}
.doc .dl{display:flex;justify-content:space-between;gap:12px;padding-block:7px;border-bottom:1px solid var(--hairline);}
.doc .dl:last-of-type{border-bottom:none;}
.doc .dl b{color:var(--ink);font-weight:500;}
.stamp{display:inline-block;margin-top:12px;padding:4px 10px;border:1.5px solid var(--accent);border-radius:6px;color:var(--accent);font-weight:500;font-family:var(--font-mono);}
.backterm{font-family:var(--font-mono);font-size:0.85rem;color:var(--faint);text-decoration:none;}
.backterm:hover{color:var(--accent);}
.reveal{opacity:0;transform:translateY(16px);transition:opacity 550ms var(--ease-out),transform 550ms var(--ease-out);transition-delay:var(--d,0ms);}
.reveal.in{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){
  .hero > *,.term{animation:none;opacity:1;transform:none;}
  .nd.pulse circle.dotc{animation:none;}
  .cursor{animation:none;}
  .reveal{opacity:1;transform:none;transition:none;}
  .btn,a.prod,.nav-links a::after,.term a{transition:none;}
}
@media (max-width:860px){
  header.site{height:auto;}
  .nav{flex-wrap:wrap;height:auto;min-height:64px;}
  .nav-toggle{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;}
  .nav-links{display:none;flex-direction:column;align-items:stretch;flex-basis:100%;gap:0;padding:8px 0 16px;}
  header.site.is-open .nav-links{display:flex;}
  .nav-links a{min-height:44px;display:flex;align-items:center;padding:12px 0;}
  .nav-links a:not(.btn)::after{display:none;}
  .nav-links .btn{justify-content:center;margin-top:8px;}
  .term-kbd{display:none;}
  .stage{min-height:0;}
  .stage-grid,.stage-grid.rev{grid-template-columns:1fr;}
  .stage-grid.rev .gfx{order:1;}.stage-grid.rev .txt{order:2;}
  .prod{grid-template-columns:1fr;gap:6px;}
  .prod .state{text-align:left;}
  .term-body{font-size:0.85rem;padding:18px;}
}
.faq h2{font-size:clamp(1.7rem,3.2vw,2.4rem);}
.faq h3{margin-top:28px;font-size:1.15rem;font-weight:600;letter-spacing:-0.015em;}
.faq h3:first-of-type{margin-top:28px;}
.faq p{margin-top:10px;color:var(--muted);}
