/* Shared site styles: theme tokens, layout, header, sections, footer. Used by index.html and about.html */
:root{
  --bg:#0b0f1a; --bg2:#10162a; --card:#121a2e; --line:#232c45; --grid:#161d31;
  --text:#ecf0f8; --muted:#8e98b2; --teal:#5eead4; --indigo:#818cf8;
  --grad:linear-gradient(90deg,var(--teal),var(--indigo));
  --r:16px; --max:1120px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
/* Scrolling settles on each section. The header is sticky, so sections stop just below it.
   Sections taller than the screen still scroll freely inside. Phones use a gentler snap. */
html{scroll-snap-type:y mandatory;scroll-padding-top:var(--head,69px)}
main>section{scroll-snap-align:start}
footer{scroll-snap-align:end}
@media (max-width:760px),(pointer:coarse){html{scroll-snap-type:y proximity}}
body{background:var(--bg);color:var(--text);font:16px/1.6 Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit}
img{max-width:100%;height:auto;display:block}
.hero-grid>*,.case>*,.contact>*{min-width:0}
.wrap{max-width:var(--max);margin:0 auto;padding:0 20px}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
section{padding:96px 0}
.eyebrow{font-family:"JetBrains Mono",monospace;color:var(--teal);font-size:14px;margin-bottom:14px}
h1,h2,h3{line-height:1.12;letter-spacing:-.02em}
h2{font-size:clamp(30px,4vw,44px);font-weight:800;margin-bottom:16px}
.lead{color:var(--muted);font-size:18px;max-width:640px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 22px;border-radius:12px;font-weight:600;text-decoration:none;border:1px solid transparent;transition:transform .15s,box-shadow .15s,background .15s;cursor:pointer;font-size:16px;font-family:inherit}
.btn-primary{background:var(--grad);color:#0b0f1a}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 30px -10px rgba(129,140,248,.6)}
.btn-ghost{border-color:var(--line);color:var(--text);background:transparent}
.btn-ghost:hover{background:var(--card)}

/* nav */
header{position:sticky;top:0;z-index:20;background:rgba(11,15,26,.8);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
nav{display:flex;align-items:center;justify-content:space-between;height:68px}
.logo{display:flex;align-items:center;gap:9px;text-decoration:none;font:400 21px/1 Geist,Inter,sans-serif;letter-spacing:-.045em;color:var(--text)}
.logo svg{width:34px;height:34px;flex:none}
.logo b{font-weight:700}.logo span{color:#9aa1b2}
.links{display:flex;gap:28px;align-items:center}
.links a{text-decoration:none;color:var(--muted);font-size:15px;font-weight:500}
.links a:hover{color:var(--text)}
.links .btn{color:#0b0f1a;padding:9px 16px;font-size:15px}
.nav-cta{position:relative;white-space:nowrap;border-radius:999px;padding:10px 16px 10px 20px!important;font-weight:700;letter-spacing:-.01em;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 0 0 1px rgba(255,255,255,.08),0 8px 24px -12px rgba(94,234,212,.7);overflow:hidden}
.nav-cta svg{transition:transform .2s}
@media (max-width:420px){.nav-cta svg{display:none}.links .nav-cta{padding:8px 14px!important;font-size:14px}.logo{font-size:18px}.logo svg{width:28px;height:28px}}
.nav-cta::before{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.45) 50%,transparent 70%);transform:translateX(-120%);transition:transform .6s}
.nav-cta:hover::before{transform:translateX(120%)}
.nav-cta:hover svg{transform:translateX(3px)}
.nav-cta:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 0 0 1px rgba(255,255,255,.12),0 12px 32px -10px rgba(129,140,248,.8)}
@media (max-width:1140px){.links{gap:18px}}
@media (prefers-reduced-motion:reduce){.nav-cta::before,.nav-cta svg{transition:none}}
@media (max-width:820px){.links a:not(.btn){display:none}}

/* hero */
.hero{position:relative;padding:96px 0 80px;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:40px 40px;mask-image:radial-gradient(ellipse at 60% 30%,#000 30%,transparent 75%);z-index:-1}
/* animated grid canvas (bg.js) replaces the static grid when it runs */
.hero-bg{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;mask-image:radial-gradient(ellipse at 60% 35%,#000 35%,transparent 80%),linear-gradient(90deg,rgba(0,0,0,.3) 0,rgba(0,0,0,.3) 42%,#000 62%);mask-composite:intersect;-webkit-mask-composite:source-in}
@media (max-width:900px){.hero-bg{mask-image:radial-gradient(ellipse at 50% 70%,#000 25%,transparent 75%);mask-composite:add}}
.hero.has-bg::before{display:none}
.glow{position:absolute;border-radius:50%;filter:blur(90px);opacity:.35;z-index:-1}
.g1{width:520px;height:520px;background:var(--indigo);right:-120px;top:-120px;animation:drift1 18s ease-in-out infinite alternate}
.g2{width:380px;height:380px;background:var(--teal);right:120px;bottom:-200px;opacity:.2;animation:drift2 22s ease-in-out infinite alternate}
@keyframes drift1{50%{translate:-140px 60px;scale:1.12}100%{translate:-40px 140px;scale:.95}}
@keyframes drift2{50%{translate:-260px -30px;scale:1.2}100%{translate:-120px -50px}}
@media (prefers-reduced-motion:reduce){.g1,.g2{animation:none}}
.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(40px,6vw,66px);font-weight:800;margin-bottom:22px}
.hero .lead{margin-bottom:34px}
.cta-row{display:flex;gap:12px;flex-wrap:wrap}
.proof{margin-top:40px;display:flex;flex-wrap:wrap;gap:10px 22px;color:var(--muted);font-size:14px}
.proof span::before{content:"✓ ";color:var(--teal)}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr}}

/* services */
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:48px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:26px;transition:border-color .2s,transform .2s}
.card:hover{border-color:#36426a;transform:translateY(-2px)}
.icon{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:rgba(94,234,212,.1);color:var(--teal);margin-bottom:18px}
.card h3{font-size:19px;margin-bottom:8px}
.card p{color:var(--muted);font-size:15px}
.card ul{list-style:none;margin-top:14px;font-size:14px;color:var(--muted)}
.card li{padding:3px 0}.card li::before{content:"→ ";color:var(--indigo)}
.cards.three{grid-template-columns:repeat(3,1fr)}
.stat{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:28px;font-size:15px;color:#c5cce0}
.stat b{font-family:"JetBrains Mono",monospace;font-weight:500;color:var(--teal);margin-right:6px}
@media (max-width:980px){.cards,.cards.three{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.cards,.cards.three{grid-template-columns:1fr}}

/* process */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:48px;counter-reset:s}
.step{border-top:2px solid var(--line);padding-top:22px;position:relative}
.step::before{counter-increment:s;content:"0" counter(s);font-family:"JetBrains Mono",monospace;font-size:14px;color:var(--indigo);display:block;margin-bottom:10px}
.step h3{font-size:18px;margin-bottom:8px}
.step p{color:var(--muted);font-size:15px}
@media (max-width:860px){.steps{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.steps{grid-template-columns:1fr}}

/* pricing */
.prices{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:48px}
.price{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:30px;display:flex;flex-direction:column}
.price.feat{border-color:transparent;background:linear-gradient(var(--card),var(--card)) padding-box,var(--grad) border-box;border:1px solid transparent}
.price h3{font-size:20px;margin-bottom:6px}
.price .sub{color:var(--muted);font-size:14px;margin-bottom:20px}
.amt{font-size:40px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px}
.amt small{display:block;font-size:15px;color:var(--muted);font-weight:500;letter-spacing:0}
.price ul{list-style:none;margin:20px 0 28px;flex:1}
.price li{padding:7px 0;border-bottom:1px solid var(--line);font-size:15px;color:#c5cce0}
.price li::before{content:"✓ ";color:var(--teal)}
.note{color:var(--muted);font-size:14px;margin-top:22px}
.plan{margin-top:18px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:30px;display:grid;grid-template-columns:1fr auto;gap:24px 40px;align-items:center}
.plan h3{font-size:20px;margin-bottom:8px}
.plan p{color:#c5cce0;font-size:15px;max-width:620px}
.plan-amt .amt small{display:inline;margin-left:6px}
.plan-amt p{color:var(--muted);font-size:14px;max-width:260px}
@media (max-width:720px){.plan{grid-template-columns:1fr;padding:24px}}
@media (max-width:900px){.prices{grid-template-columns:1fr}}

/* applications */
.app{display:grid;grid-template-columns:1.15fr .85fr;gap:48px;align-items:center;margin-top:48px}
.app-shot{border-radius:var(--r);overflow:hidden;border:1px solid var(--line);background:#000;box-shadow:0 30px 80px -30px rgba(99,102,241,.5)}
.app-shot .bar{display:flex;align-items:center;gap:8px;height:34px;padding:0 14px;background:#191b20;border-bottom:1px solid #24272e;font-size:12px;color:#9aa1b2}
.app-shot .bar i{width:14px;height:14px;border-radius:4px;background:linear-gradient(135deg,#22d3ee,#6366f1 50%,#d946ef)}
.app-shot .bar span{margin-left:auto;letter-spacing:6px;color:#5c6378}
.app-head{display:flex;align-items:center;gap:16px;margin-bottom:18px}
.app-icon{width:60px;height:60px;border-radius:15px;flex:none;box-shadow:0 12px 30px -12px rgba(99,102,241,.9)}.app-icon svg{display:block}
.app-head h3{font-size:28px}
.app-head p{color:var(--muted);font-size:15px}
.app-info>p{color:#c5cce0}
.app-feats{list-style:none;margin:20px 0 26px;display:grid;gap:9px;font-size:15px;color:#c5cce0}
.app-feats li{padding-left:22px;position:relative}
.app-feats li::before{content:"✓";position:absolute;left:0;color:var(--teal)}
.app-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:16px;font-size:13px;color:var(--muted)}
.app-note{margin-top:14px;font-size:13px;color:var(--muted);max-width:460px}
.app-note code{font-family:"JetBrains Mono",monospace;font-size:11px;word-break:break-all;color:#9aa1b2}
@media (max-width:900px){.app{grid-template-columns:1fr;gap:32px}}

/* faq */
.faq{max-width:780px;margin-top:40px}
details{border-bottom:1px solid var(--line);padding:20px 0}
summary{cursor:pointer;font-weight:600;font-size:17px;list-style:none;display:flex;justify-content:space-between;gap:16px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";color:var(--teal);font-family:"JetBrains Mono",monospace;font-size:20px;line-height:1}
details[open] summary::after{content:"–"}
details p{color:var(--muted);margin-top:12px}

/* contact */
.contact{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:start}
form{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:30px;display:grid;gap:16px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
label{display:grid;gap:7px;font-size:14px;font-weight:500;color:#c5cce0}
input,select,textarea{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--text);font:inherit;font-size:15px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--indigo);box-shadow:0 0 0 3px rgba(129,140,248,.2)}
textarea{min-height:130px;resize:vertical}
.hp{position:absolute;left:-9999px}
#status{font-size:15px;min-height:1.4em}
#status.ok{color:var(--teal)} #status.err{color:#fca5a5}
.alt{margin-top:28px;color:var(--muted);font-size:15px}
.alt a{color:var(--teal);text-decoration:none;font-weight:600}
@media (max-width:860px){.contact{grid-template-columns:1fr}.row{grid-template-columns:1fr}}

footer{border-top:1px solid var(--line);padding:32px 0;color:var(--muted);font-size:14px}
footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
.foot-links{display:flex;gap:22px}
footer a{text-decoration:none}footer a:hover{color:var(--text)}

.reveal{opacity:0;transform:translateY(16px);transition:opacity .6s,transform .6s}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}
.amt .was{font-size:20px;font-weight:500;color:var(--muted);margin-left:6px}
