:root {
  --bg: #06070c;
  --panel: #0c0e16;
  --panel-2: #11131d;
  --line: rgba(255, 255, 255, .08);
  --line-2: rgba(255, 255, 255, .14);
  --text: #eef0f7;
  --muted: #9097ab;
  --dim: #5d6478;
  --blue: #3b5bff;
  --violet: #8b5cf6;
  --lilac: #c084fc;
  --ok: #4ade80;
  --warn: #fbbf24;
  --grad: linear-gradient(100deg, var(--blue), var(--violet) 55%, var(--lilac));
  --display: "Space Grotesk", system-ui, sans-serif;
  --body: "Inter", system-ui, sans-serif;
  --mono: "JetBrains Mono", ui-monospace, monospace;
  --wrap: 1180px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 90px; }
body {
  background: var(--bg);
  color: var(--text);
  font: 400 16px/1.6 var(--body);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
::selection { background: rgba(139, 92, 246, .45); }

/* Backdrop */
.bg-grid {
  position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background-image:
    linear-gradient(var(--line) 1px, transparent 1px),
    linear-gradient(90deg, var(--line) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 20%, transparent 75%);
  opacity: .5;
}
.bg-glow {
  position: fixed; inset: -20% -10% auto; height: 90vh; z-index: -1; pointer-events: none;
  background:
    radial-gradient(40% 50% at 72% 30%, rgba(109, 92, 255, .22), transparent 70%),
    radial-gradient(35% 45% at 20% 10%, rgba(59, 91, 255, .16), transparent 70%);
  filter: blur(20px);
  animation: drift 18s ease-in-out infinite alternate;
}
@keyframes drift { to { transform: translate3d(-3%, 4%, 0) scale(1.08); } }

/* Nav */
.nav {
  position: fixed; top: 14px; left: 50%; transform: translateX(-50%);
  width: min(calc(100% - 32px), var(--wrap)); z-index: 50;
  display: flex; align-items: center; gap: 32px;
  padding: 10px 12px 10px 18px;
  border: 1px solid var(--line); border-radius: 16px;
  background: rgba(8, 9, 15, .55);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  transition: background .3s, border-color .3s;
}
.nav.scrolled { background: rgba(8, 9, 15, .85); border-color: var(--line-2); }
.brand { display: flex; align-items: center; gap: 10px; font: 600 15px var(--display); letter-spacing: .14em; }
.brand i { font-style: normal; font-weight: 400; color: var(--muted); }
.nav nav { display: flex; gap: 28px; margin-left: auto; font-size: 14px; color: var(--muted); }
.nav nav a { transition: color .2s; }
.nav nav a:hover { color: var(--text); }

.btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 12px 20px; border-radius: 12px;
  font: 500 14.5px var(--body); white-space: nowrap;
  transition: transform .2s, box-shadow .3s, background .2s, border-color .2s;
}
.btn:hover { transform: translateY(-1px); }
.btn-primary { background: var(--grad); color: #fff; box-shadow: 0 8px 30px -8px rgba(109, 92, 255, .7); }
.btn-primary:hover { box-shadow: 0 12px 40px -6px rgba(139, 92, 246, .85); }
.btn-ghost { border: 1px solid var(--line-2); color: var(--text); background: rgba(255, 255, 255, .03); }
.btn-ghost:hover { background: rgba(255, 255, 255, .07); }
.nav-cta { padding: 9px 16px; }

/* Hero */
.hero {
  max-width: var(--wrap); margin: 0 auto; padding: 150px 24px 70px;
  min-height: 100vh;
  display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; gap: 24px;
}
.eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font: 500 12px var(--mono); letter-spacing: .18em; text-transform: uppercase; color: var(--muted);
}
.dot { width: 7px; height: 7px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 0 rgba(74, 222, 128, .6); animation: pulse 2s infinite; }
@keyframes pulse { 70% { box-shadow: 0 0 0 9px rgba(74, 222, 128, 0); } 100% { box-shadow: 0 0 0 0 rgba(74, 222, 128, 0); } }

h1 {
  font: 500 clamp(40px, 5.6vw, 76px)/1.03 var(--display);
  letter-spacing: -.035em; margin: 22px 0 24px;
}
.swap {
  display: inline-block;
  background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent;
  transition: opacity .35s, transform .35s, filter .35s;
}
.swap.out { opacity: 0; transform: translateY(.25em); filter: blur(6px); }
.lede { font-size: clamp(16px, 1.35vw, 19px); color: var(--muted); max-width: 54ch; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 34px 0 22px; }
.fineprint { font: 400 12px var(--mono); color: var(--dim); max-width: 52ch; }

.hero-copy > * { opacity: 0; transform: translateY(18px); animation: rise .9s cubic-bezier(.2, .7, .2, 1) forwards; }
.hero-copy > :nth-child(2) { animation-delay: .08s; }
.hero-copy > :nth-child(3) { animation-delay: .16s; }
.hero-copy > :nth-child(4) { animation-delay: .24s; }
.hero-copy > :nth-child(5) { animation-delay: .32s; }
@keyframes rise { to { opacity: 1; transform: none; } }

.hero-visual { position: relative; aspect-ratio: 1; width: 100%; max-width: 620px; justify-self: end; }
#torus { width: 100%; height: 100%; display: block; }
.hud {
  position: absolute; display: flex; flex-direction: column; gap: 2px;
  padding: 9px 13px; border-radius: 10px;
  border: 1px solid var(--line-2); background: rgba(10, 11, 18, .7);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  font: 400 11px var(--mono); color: var(--muted);
  animation: float 7s ease-in-out infinite;
}
.hud b { font-weight: 500; letter-spacing: .16em; color: var(--lilac); }
.hud-a { top: 14%; left: 2%; }
.hud-b { top: 46%; right: 0; animation-delay: -2.3s; }
.hud-c { bottom: 12%; left: 12%; animation-delay: -4.6s; }
@keyframes float { 50% { transform: translateY(-10px); } }

/* Marquee */
.marquee {
  border-block: 1px solid var(--line); overflow: hidden; padding: 18px 0;
  mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}
.marquee-track { display: flex; width: max-content; animation: scroll 40s linear infinite; }
.marquee span {
  font: 500 13px var(--mono); letter-spacing: .16em; text-transform: uppercase; color: var(--dim);
  padding: 0 28px; position: relative;
}
.marquee span::after { content: ""; position: absolute; right: -3px; top: 50%; width: 5px; height: 5px; border-radius: 50%; background: var(--violet); transform: translateY(-50%); }
@keyframes scroll { to { transform: translateX(-50%); } }

/* Sections */
.section { max-width: var(--wrap); margin: 0 auto; padding: 120px 24px 0; }
.section-head { max-width: 680px; margin-bottom: 52px; }
h2 { font: 500 clamp(30px, 3.6vw, 48px)/1.08 var(--display); letter-spacing: -.03em; margin: 16px 0; }
.section-head p:last-child { color: var(--muted); font-size: 17px; }

.reveal { opacity: 0; transform: translateY(26px); transition: opacity .8s cubic-bezier(.2, .7, .2, 1), transform .8s cubic-bezier(.2, .7, .2, 1); transition-delay: var(--rd, 0s); }
.reveal.in { opacity: 1; transform: none; }

/* Cards */
.cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.card {
  position: relative; padding: 18px 18px 26px; border-radius: 20px;
  border: 1px solid var(--line); background: linear-gradient(180deg, var(--panel-2), var(--panel));
  overflow: hidden; isolation: isolate;
}
.card::before {
  content: ""; position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity .4s;
  background: radial-gradient(420px circle at var(--mx, 50%) var(--my, 0%), rgba(139, 92, 246, .2), transparent 60%);
}
.card:hover::before { opacity: 1; }
.card:hover { border-color: var(--line-2); }
.card h3 { font: 500 22px var(--display); letter-spacing: -.02em; margin: 22px 6px 8px; }
.card > p { color: var(--muted); font-size: 15px; margin: 0 6px 18px; }
.card > ul { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 6px; }
.card > ul li { font: 400 11px var(--mono); color: var(--muted); padding: 5px 9px; border: 1px solid var(--line); border-radius: 999px; }

.mock { height: 230px; border-radius: 14px; border: 1px solid var(--line); background: #080910; padding: 12px 14px; display: flex; flex-direction: column; gap: 10px; overflow: hidden; }
.mock-bar { display: flex; align-items: center; gap: 6px; }
.mock-bar i { width: 8px; height: 8px; border-radius: 50%; background: #262a38; }
.mock-bar em { margin-left: auto; font: 400 10.5px var(--mono); color: var(--dim); font-style: normal; }

.mock-chart svg { flex: 1; width: 100%; min-height: 0; }
.mock-chart .line { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 7s cubic-bezier(.5, 0, .2, 1) infinite; }
.mock-chart .area { opacity: 0; animation: fill 7s ease infinite; }
@keyframes draw { 0% { stroke-dashoffset: 1; } 45%, 88% { stroke-dashoffset: 0; opacity: 1; } 100% { stroke-dashoffset: 0; opacity: 0; } }
@keyframes fill { 0%, 30% { opacity: 0; } 55%, 88% { opacity: 1; } 100% { opacity: 0; } }
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.chips span { font: 400 10.5px var(--mono); color: var(--dim); padding: 4px 8px; border-radius: 6px; background: #10121b; }
.chips .on { color: var(--ok); background: rgba(74, 222, 128, .1); }

.mock-map svg { flex: 1; width: 100%; min-height: 0; border-radius: 8px; background: radial-gradient(120% 90% at 70% 20%, #121627, #0a0c14); }
.mock-map .roads path { fill: none; stroke: #1c2134; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; }
.mock-map .route { fill: none; stroke: url(#rg); stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; stroke-dasharray: 1; stroke-dashoffset: 1; animation: route 9s cubic-bezier(.4, 0, .2, 1) infinite; }
.mock-map .route-2 { animation-duration: 13s; opacity: .55; }
@keyframes route { 0% { stroke-dashoffset: 1; } 80%, 100% { stroke-dashoffset: 0; } }
.mock-map .origin { fill: #0a0c14; stroke: var(--blue); stroke-width: 2; }
.mock-map .fence circle { fill: rgba(74, 222, 128, .06); stroke: var(--ok); stroke-width: 1; stroke-dasharray: 3 3; }
.mock-map .fence .ping { fill: none; stroke-dasharray: none; transform-box: fill-box; transform-origin: center; animation: ping 2.6s ease-out infinite; }
.mock-map .fence .pin { fill: var(--ok); stroke: none; }
@keyframes ping { from { transform: scale(.4); opacity: .9; } to { transform: scale(1.7); opacity: 0; } }
.mock-map .unit circle { fill: #fff; }
.mock-map .unit .halo { fill: rgba(139, 92, 246, .35); }
.mock-map .unit.idle circle { fill: var(--warn); }
.mock-map .unit.idle .halo { fill: rgba(251, 191, 36, .25); }

.mock-form { position: relative; }
.field { display: flex; flex-direction: column; gap: 4px; padding: 7px 10px; border-radius: 8px; background: #10121b; }
.field label { font: 400 9.5px var(--mono); letter-spacing: .12em; text-transform: uppercase; color: var(--dim); }
.type {
  font: 400 12.5px var(--mono); color: #d7dbe8; white-space: nowrap; overflow: hidden;
  width: 0; border-right: 1.5px solid var(--lilac);
  animation: typing 9s steps(var(--n)) var(--d) infinite both;
}
@keyframes typing { 0% { width: 0; } 14%, 90% { width: calc(var(--n) * 1ch); border-color: transparent; } 100% { width: 0; } }
.stamp {
  position: absolute; right: 14px; bottom: 14px;
  font: 500 10.5px var(--mono); letter-spacing: .1em; text-transform: uppercase;
  color: var(--ok); padding: 6px 10px; border: 1px solid rgba(74, 222, 128, .5); border-radius: 8px; background: rgba(74, 222, 128, .08);
  animation: stamp 9s infinite both;
}
@keyframes stamp { 0%, 55% { opacity: 0; transform: scale(1.5) rotate(-8deg); } 60%, 92% { opacity: 1; transform: scale(1) rotate(-3deg); } 100% { opacity: 0; transform: scale(1) rotate(-3deg); } }

/* Shared mock rows */
.rows { display: flex; flex-direction: column; gap: 7px; flex: 1; justify-content: center; }
.rows li { display: flex; align-items: center; justify-content: space-between; padding: 8px 10px; border-radius: 8px; background: #10121b; font-size: 12.5px; color: #c6cbda; }
.tag { font: 500 10px var(--mono); padding: 3px 8px; border-radius: 999px; color: var(--lilac); background: rgba(139, 92, 246, .14); animation: tagin 9s var(--d) infinite both; }
.tag.ok { color: var(--ok); background: rgba(74, 222, 128, .12); }
.tag.warn { color: var(--warn); background: rgba(251, 191, 36, .12); }
@keyframes tagin { 0%, 4% { opacity: 0; transform: translateX(8px); } 9%, 92% { opacity: 1; transform: none; } 100% { opacity: 0; } }
.progress { height: 4px; border-radius: 4px; background: #151824; overflow: hidden; }
.progress i { display: block; height: 100%; background: var(--grad); transform-origin: left; animation: grow 9s cubic-bezier(.4, 0, .2, 1) infinite; }
@keyframes grow { 0% { transform: scaleX(.06); } 60%, 92% { transform: scaleX(.82); } 100% { transform: scaleX(.06); } }

.doc-wrap { flex: 1; display: grid; grid-template-columns: auto 1fr; gap: 14px; min-height: 0; }
.wiz { display: flex; flex-direction: column; justify-content: center; gap: 12px; }
.wiz li { position: relative; padding-left: 18px; font: 400 11px var(--mono); animation: step 9s var(--d) infinite both; }
.wiz li::before { content: ""; position: absolute; left: 0; top: 50%; width: 8px; height: 8px; margin-top: -4px; border-radius: 50%; background: currentColor; }
@keyframes step { 0%, 5% { color: var(--dim); } 10%, 92% { color: var(--ok); } 100% { color: var(--dim); } }
.page { position: relative; border-radius: 8px; border: 1px solid var(--line); background: #10121b; padding: 14px 14px 10px; display: flex; flex-direction: column; gap: 9px; overflow: hidden; }
.page b { width: 42%; height: 7px; border-radius: 4px; background: var(--grad); margin-bottom: 3px; }
.page i { height: 5px; border-radius: 3px; background: #2a3044; width: 0; animation: linefill 9s var(--d) infinite both; }
@keyframes linefill { 0% { width: 0; } 8%, 92% { width: var(--w); } 100% { width: 0; } }
.seal { position: absolute; right: 10px; bottom: 10px; font: 500 10px var(--mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ok); padding: 5px 9px; border: 1px solid rgba(74, 222, 128, .5); border-radius: 7px; background: rgba(10, 12, 20, .85); animation: stamp 9s infinite both; }

.bars { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 11px; }
.bars div { display: grid; grid-template-columns: 96px 1fr; align-items: center; gap: 10px; }
.bars span { font-size: 11.5px; color: #c6cbda; white-space: nowrap; }
.bars i { height: 8px; border-radius: 4px; background: var(--grad); width: var(--w); transform-origin: left; animation: bar 8s cubic-bezier(.3, .8, .3, 1) var(--d) infinite both; }
@keyframes bar { 0% { transform: scaleX(0); } 18%, 46% { transform: scaleX(1); } 58%, 90% { transform: scaleX(.86); } 100% { transform: scaleX(0); } }

/* Modernization flow */
.flow { display: flex; align-items: center; gap: 0; margin-bottom: 20px; padding: 28px; border-radius: 20px; border: 1px solid var(--line); background: var(--panel); }
.node { flex: 0 1 260px; display: flex; flex-direction: column; gap: 6px; padding: 18px 20px; border-radius: 14px; border: 1px solid var(--line-2); background: var(--panel-2); }
.node b { font: 500 16px var(--display); }
.node span { font: 400 11px var(--mono); color: var(--muted); }
.node.core { border-color: transparent; background: linear-gradient(var(--panel-2), var(--panel-2)) padding-box, var(--grad) border-box; box-shadow: 0 0 50px -12px rgba(139, 92, 246, .7); }
.pipe { position: relative; flex: 1; min-width: 36px; height: 2px; background: var(--line-2); }
.pipe i { position: absolute; top: -3px; left: 0; width: 8px; height: 8px; border-radius: 50%; background: var(--lilac); box-shadow: 0 0 10px var(--violet); animation: flow-x 2.4s linear infinite; }
.pipe i:nth-child(2) { animation-delay: -.8s; }
.pipe i:nth-child(3) { animation-delay: -1.6s; }
@keyframes flow-x { 0% { left: 0; opacity: 0; } 15%, 85% { opacity: 1; } 100% { left: calc(100% - 8px); opacity: 0; } }
@keyframes flow-y { 0% { top: 0; opacity: 0; } 15%, 85% { opacity: 1; } 100% { top: calc(100% - 8px); opacity: 0; } }

/* Capability grid */
.grid { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); border-radius: 20px; overflow: hidden; background: var(--line); gap: 1px; }
.cell { background: var(--panel); padding: 30px 28px 34px; transition: background .3s; }
.cell:hover { background: var(--panel-2); }
.num { font: 500 12px var(--mono); color: var(--violet); }
.cell h4 { font: 500 19px var(--display); margin: 14px 0 8px; letter-spacing: -.01em; }
.cell p { color: var(--muted); font-size: 14.5px; }

/* Capability glyphs */
.glyph { display: block; width: 160px; height: 56px; margin-bottom: 20px; overflow: visible; }
.glyph .gl { fill: none; stroke: #2a3044; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.glyph .gl.thin { stroke-width: 1.5; }
.glyph .gl.hot { stroke: url(#gg); }
.glyph .gl.dash { stroke-dasharray: 3 5; }
.glyph .gn { fill: #0c0e16; stroke: #4a5170; stroke-width: 1.5; }
.glyph .gd { fill: var(--lilac); filter: drop-shadow(0 0 4px var(--violet)); }
.glyph .gcore { fill: url(#gg); filter: drop-shadow(0 0 8px rgba(139, 92, 246, .8)); }
.glyph .gok { fill: rgba(74, 222, 128, .15); stroke: var(--ok); stroke-width: 1.5; }
.glyph .tick { fill: none; stroke: var(--ok); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.glyph .spin { transform-box: fill-box; transform-origin: center; animation: spin 14s linear infinite; }
.glyph .spin.rev { animation-duration: 9s; animation-direction: reverse; }
.glyph .beat { transform-box: fill-box; transform-origin: center; animation: beat 2.2s ease-in-out infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes beat { 50% { transform: scale(1.22); } }
.glyph .think rect, .glyph .log rect { fill: #2a3044; transform-box: fill-box; transform-origin: left; animation: think 3.6s var(--d) ease-in-out infinite both; }
@keyframes think { 0% { transform: scaleX(0); fill: var(--violet); } 30% { transform: scaleX(1); fill: var(--violet); } 55%, 100% { transform: scaleX(1); fill: #2a3044; } }
.glyph .scan { fill: var(--lilac); filter: drop-shadow(0 0 5px var(--violet)); animation: scan 3s ease-in-out infinite alternate; }
@keyframes scan { to { transform: translateY(45px); } }
.glyph .cells rect { fill: rgba(139, 92, 246, .12); stroke: var(--violet); stroke-width: 1.2; animation: cellin 4s var(--d) infinite both; }
@keyframes cellin { 0% { opacity: 0; transform: translateX(-6px); } 15%, 85% { opacity: 1; transform: none; } 100% { opacity: 0; } }
.glyph .wave { stroke-dasharray: 22 78; animation: wave 2.4s linear infinite; }
@keyframes wave { from { stroke-dashoffset: 100; } to { stroke-dashoffset: 0; } }
.glyph .live { fill: var(--ok); animation: blink 1.4s ease-in-out infinite; }
@keyframes blink { 50% { opacity: .2; } }
.glyph .draw { stroke-dasharray: 1; stroke-dashoffset: 1; animation: gdraw 3.6s ease-in-out infinite; }
@keyframes gdraw { 0% { stroke-dashoffset: 1; } 45%, 90% { stroke-dashoffset: 0; } 100% { stroke-dashoffset: 1; } }
.glyph .pop { transform-box: fill-box; transform-origin: center; animation: pop 3.6s ease-in-out infinite; }
@keyframes pop { 0%, 40% { opacity: 0; transform: scale(.4); } 50%, 90% { opacity: 1; transform: scale(1); } 100% { opacity: 0; } }
.cell { position: relative; overflow: hidden; }
.cell::after { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0; transition: opacity .4s; background: radial-gradient(320px circle at var(--mx, 50%) var(--my, 0%), rgba(139, 92, 246, .16), transparent 60%); }
.cell:hover::after { opacity: 1; }

/* Principles: one step lit at a time */
.steps.cycle li { position: relative; overflow: hidden; animation: lit 12s infinite both; }
.steps.cycle li::after { content: ""; position: absolute; left: 0; bottom: 0; height: 2px; width: 100%; background: var(--grad); transform-origin: left; transform: scaleX(0); animation: litbar 12s linear infinite both; }
.steps.cycle li > span { animation: litbadge 12s infinite both; }
.steps.cycle li:nth-child(2), .steps.cycle li:nth-child(2)::after, .steps.cycle li:nth-child(2) > span { animation-delay: -9s; }
.steps.cycle li:nth-child(3), .steps.cycle li:nth-child(3)::after, .steps.cycle li:nth-child(3) > span { animation-delay: -6s; }
.steps.cycle li:nth-child(4), .steps.cycle li:nth-child(4)::after, .steps.cycle li:nth-child(4) > span { animation-delay: -3s; }
@keyframes lit { 0%, 25% { border-color: rgba(139, 92, 246, .55); background: var(--panel-2); box-shadow: 0 0 40px -18px rgba(139, 92, 246, .9); } 30%, 100% { border-color: var(--line); background: var(--panel); box-shadow: none; } }
@keyframes litbar { 0% { transform: scaleX(0); opacity: 1; } 25% { transform: scaleX(1); opacity: 1; } 28%, 100% { transform: scaleX(1); opacity: 0; } }
@keyframes litbadge { 0%, 25% { transform: scale(1.12); box-shadow: 0 0 22px rgba(139, 92, 246, .9); filter: none; } 30%, 100% { transform: none; box-shadow: none; filter: saturate(.45) brightness(.8); } }

/* Steps */
.steps { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.steps li { display: flex; gap: 18px; padding: 26px; border-radius: 18px; border: 1px solid var(--line); background: var(--panel); }
.steps li > span {
  flex: none; width: 38px; height: 38px; border-radius: 11px; display: grid; place-items: center;
  font: 500 14px var(--mono); color: #fff; background: var(--grad);
}
.steps h4 { font: 500 18px var(--display); margin-bottom: 6px; }
.steps p { color: var(--muted); font-size: 14.5px; }

/* CTA */
.cta { padding-bottom: 120px; }
.cta-inner {
  position: relative; text-align: center; padding: 80px 24px; border-radius: 28px;
  border: 1px solid var(--line-2); overflow: hidden;
  background: radial-gradient(60% 120% at 50% 0%, rgba(109, 92, 255, .28), transparent 70%), var(--panel);
}
.cta-inner > p:not(.eyebrow) { color: var(--muted); max-width: 56ch; margin: 0 auto 30px; }

.footer {
  max-width: var(--wrap); margin: 0 auto; padding: 28px 24px 44px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 12px 32px;
  border-top: 1px solid var(--line); font-size: 13px; color: var(--dim);
}
.footer .brand { font-size: 13px; color: var(--text); margin-right: auto; }

/* Responsive */
@media (max-width: 960px) {
  .hero { grid-template-columns: 1fr; padding-top: 130px; min-height: 0; }
  .hero-visual { justify-self: center; max-width: 460px; margin-top: -10px; }
  .cards, .grid { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr; }
  .flow { flex-direction: column; align-items: stretch; }
  .node { flex: none; }
  .pipe { flex: none; width: 2px; height: 40px; margin: 0 auto; min-width: 0; }
  .pipe i { top: 0; left: -3px; animation-name: flow-y; }
  .section { padding-top: 90px; }
}
@media (max-width: 720px) {
  .nav nav { display: none; }
  .nav-cta { margin-left: auto; }
  .hud { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001s !important; animation-iteration-count: 1 !important; transition-duration: .001s !important; }
  html { scroll-behavior: auto; }
  .reveal, .hero-copy > * { opacity: 1; transform: none; }
  .type { width: auto; border: 0; }
  .mock-chart .line, .mock-map .route { stroke-dashoffset: 0; }
  .mock-chart .area, .stamp, .seal, .tag { opacity: 1; }
  .page i { width: var(--w); }
}
