/* ============================================================================
   FAIRTAP — event connection infrastructure. Standalone design system.
   Mission-critical control-plane aesthetic: cold navy infrastructure surfaces,
   infrastructure-blue as the working accent (APIs, data movement, control),
   FairTap orange reserved for physical connection / brand / CTA (~5% of screen),
   verified-green for healthy/synced, warning-amber + failure-red for conditions.
   Harder geometry, dense real system information, mono only for identifiers.
   No framework. CSS transforms/opacity + WAAPI + SVG only.
   ============================================================================ */
@font-face{font-family:"Sora";font-style:normal;font-weight:100 800;font-display:swap;src:url("/fonts/sora-var.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url("/fonts/inter-var.woff2") format("woff2")}
:root{
  /* cold navy infrastructure surfaces */
  --bg:#05080D; --bg-1:#080E16; --panel:#0D151F; --panel-2:#121D2A; --elev:#16212F;
  --line:#223044; --line-2:#344861;
  /* type — muted raised so "inactive" is still legible, never almost-unreadable */
  --ink:#F4F7FA; --mut:#98A5B5; --dim:#6E7C8D;
  /* signals. --amber kept as the token name but is now FairTap orange #FF5A24.
     orange = human/physical interaction (tap, brand, CTA). Keep it rare. */
  --amber:#FF5A24; --gold:#FF7A43; --orange:#FF4D1F; --amber-soft:rgba(255,90,36,.12);
  /* infrastructure blue = APIs, processing, data movement, control plane */
  --blue:#4C8DFF; --blue-soft:rgba(76,141,255,.12);
  /* operational states */
  --green:#28D17C; --green-soft:rgba(40,209,124,.12); --warn:#E8AD45; --red:#F15B64;
  --grad:linear-gradient(96deg,#FF7A43,#FF4D1F);
  --fd:"Sora",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --fb:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --fm:ui-monospace,"SF Mono","Cascadia Mono","Segoe UI Mono",Menlo,monospace;
  --wrap:1140px; --rad:10px;
  --t-fast:140ms; --t-base:260ms; --t-slow:520ms;
  --e-out:cubic-bezier(.2,.7,.2,1); --e-inout:cubic-bezier(.6,0,.3,1); --e-spring:cubic-bezier(.2,1.1,.3,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--fb);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{max-width:100%}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:3px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:0;background:var(--blue);color:#04070C;padding:10px 18px;font-weight:700;z-index:200;border-radius:0 0 8px 0}
.skip:focus{left:0}

/* faint technical blueprint grid — used behind the hero + architecture planes */
.grid-bg{position:relative}
.grid-bg::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(rgba(76,141,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(76,141,255,.05) 1px,transparent 1px);background-size:24px 24px;mask-image:radial-gradient(120% 90% at 50% 0,#000,transparent 78%);-webkit-mask-image:radial-gradient(120% 90% at 50% 0,#000,transparent 78%)}
.grid-bg>*{position:relative}

/* ---- shared bits ---- */
.mono{font-family:var(--fm);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--dim)}
.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--fm);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mut);margin:0 0 20px}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--blue)}
.eyebrow.io::before{background:var(--amber)} /* input/output plane eyebrow accent = orange */
h1,h2,h3,h4{font-family:var(--fd);line-height:1.08;letter-spacing:-.02em;margin:0 0 16px;text-wrap:balance}
h2{font-size:clamp(28px,4vw,42px);font-weight:680}
h3{font-size:19px;font-weight:640;letter-spacing:-.01em}
.lead{font-size:clamp(17px,2vw,20px);color:var(--mut);max-width:620px;line-height:1.55;margin:0 0 36px}
.gr{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
section{position:relative;padding:104px 0}
main>section:nth-child(even){background:var(--bg-1)} /* alternating system planes */
.sec-line{border-top:1px solid var(--line)}
/* status pill — round is reserved for live status only */
.pill{display:inline-flex;align-items:center;gap:7px;font-family:var(--fm);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);border:1px solid var(--line-2);border-radius:999px;padding:6px 12px;background:var(--panel)}
.pill .dot{width:6px;height:6px;border-radius:50%;background:var(--blue)}
.pill .dot.live{background:var(--green);box-shadow:0 0 0 0 rgba(40,209,124,.5);animation:beat 2.4s ease-out infinite}
@keyframes beat{0%{box-shadow:0 0 0 0 rgba(40,209,124,.5)}70%,100%{box-shadow:0 0 0 6px rgba(40,209,124,0)}}
/* technical chips — hard geometry */
.tag{font-family:var(--fm);font-size:10px;letter-spacing:.08em;text-transform:uppercase;padding:3px 8px;border-radius:4px;border:1px solid var(--line-2);color:var(--mut)}
.tag.beta{color:var(--blue);border-color:rgba(76,141,255,.4);background:var(--blue-soft)}
.tag.plan{color:var(--dim)}
.tag.live{color:var(--green);border-color:rgba(40,209,124,.4);background:var(--green-soft)}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--fd);font-weight:640;font-size:15px;padding:13px 22px;border-radius:8px;border:0;cursor:pointer;transition:transform var(--t-fast) var(--e-spring),box-shadow var(--t-fast),background var(--t-fast)}
.btn:active{transform:scale(.98)}
.btn-primary{background:var(--grad);color:#1A0A02}
.btn-primary:hover{box-shadow:0 8px 22px -12px rgba(255,90,36,.55)}
.btn-ghost{background:var(--panel);color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn-ghost:hover{box-shadow:inset 0 0 0 1px var(--blue)}
.btn-sm{padding:9px 15px;font-size:13.5px;border-radius:7px}

/* ---- nav ---- */
.nav{position:sticky;top:0;z-index:100;transition:padding var(--t-base) var(--e-out),background var(--t-base)}
.nav-in{max-width:var(--wrap);margin:0 auto;padding:16px 24px;display:flex;align-items:center;justify-content:space-between;transition:padding var(--t-base) var(--e-out)}
.nav.shrunk{background:rgba(5,8,13,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.nav.shrunk .nav-in{padding:10px 24px}
.brand{display:flex;align-items:center;gap:10px}
.brand .mk{font-family:var(--fd);font-weight:720;font-size:18px;letter-spacing:-.02em}
.brand .mk b{color:var(--amber);font-weight:720}
.brand .tm{font-size:.5em;font-weight:600;color:var(--amber);vertical-align:super;margin-left:1px;letter-spacing:0}
.brand .glyph{width:26px;height:26px;flex:none}
.brand small{display:block;font-family:var(--fm);font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--dim);margin-top:2px}
.nav-links{display:flex;align-items:center;gap:6px}
.nav-links a:not(.btn){font-size:14px;font-weight:520;color:var(--mut);padding:8px 12px;border-radius:7px;transition:color var(--t-fast),background var(--t-fast)}
.nav-links a:not(.btn):hover{color:var(--ink);background:var(--panel)}
.nav-links .btn{margin-left:8px}
.burger{display:none;background:none;border:1px solid var(--line-2);border-radius:8px;width:40px;height:40px;color:var(--ink);cursor:pointer;align-items:center;justify-content:center}
@media (max-width:860px){
  .nav-links{position:fixed;inset:0 0 0 auto;width:min(84vw,340px);flex-direction:column;align-items:stretch;gap:4px;background:var(--bg-1);border-left:1px solid var(--line);padding:88px 20px 20px;transform:translateX(100%);visibility:hidden;transition:transform var(--t-base) var(--e-out),visibility var(--t-base)}
  .nav-links.open{transform:none;visibility:visible}
  .nav-links a{padding:14px 12px;font-size:16px}
  .nav-links .btn{margin:8px 0 0}
  .burger{display:inline-flex;z-index:101}
}

/* ---- hero ---- */
.hero{padding:64px 0 96px;position:relative;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1fr 1.02fr;gap:52px;align-items:center}
.hero h1{font-size:clamp(38px,5.4vw,60px);font-weight:700;max-width:13ch}
.hero .lead{margin-top:8px}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:6px}
.hero-sub{font-size:13px;color:var(--dim);margin-top:18px}
.hero-sub b{color:var(--mut);font-weight:600}
@media (max-width:900px){.hero-grid{grid-template-columns:1fr;gap:38px}.hero{padding:36px 0 68px}}

/* system status strip (replaces marketing pills) */
.sysstrip{display:inline-flex;align-items:center;flex-wrap:wrap;gap:12px;font-family:var(--fm);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mut);border:1px solid var(--line);border-radius:6px;padding:8px 14px;background:var(--panel);margin:0 0 22px}
.sysstrip .ss-sep{width:1px;height:11px;background:var(--line-2)}
.sysstrip .ss-item{white-space:nowrap}
.sysstrip .ss-item.ok{color:var(--green);display:inline-flex;align-items:center;gap:7px}
.sysstrip .ss-dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(40,209,124,.5);animation:beat 2.4s ease-out infinite}

/* the live network topology (hero) */
.stage{position:relative;background:radial-gradient(120% 100% at 60% 0,#0C1622 0,#06090F 66%);border:1px solid var(--line);border-radius:12px;padding:18px 18px 16px;overflow:hidden;min-height:430px;display:flex;flex-direction:column}
.stage::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(76,141,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(76,141,255,.05) 1px,transparent 1px);background-size:26px 26px;mask-image:radial-gradient(130% 80% at 55% 8%,#000,transparent 72%);-webkit-mask-image:radial-gradient(130% 80% at 55% 8%,#000,transparent 72%)}
.stage>*{position:relative}
.topo-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.topo-head .mono{font-size:9.5px;color:var(--mut)}
.topo-thru{color:var(--blue)!important;font-variant-numeric:tabular-nums}
.topo-svg{width:100%;height:auto;display:block}
.topo-rail{stroke:var(--line-2);stroke-width:.5}
.tnode-ring{fill:none;stroke:var(--line-2);stroke-width:.5;opacity:0}
.tnode circle.core{fill:var(--panel-2);stroke:var(--line-2);stroke-width:.6;transition:fill var(--t-base),stroke var(--t-base)}
.tnode.io circle.core{stroke:var(--line-2)}
.tnode.lit circle.core{fill:var(--blue);stroke:var(--blue)}
.tnode.io.lit circle.core{fill:var(--amber);stroke:var(--amber)}
.tnode text.tl{font-family:var(--fm);font-size:2.9px;fill:var(--mut);letter-spacing:.06em;text-anchor:middle}
.tnode.lit text.tl{fill:var(--ink)}
.tnode text.ts{font-family:var(--fm);font-size:2.3px;fill:var(--dim);text-anchor:middle;transition:fill var(--t-base)}
.tnode.lit text.ts{fill:var(--green)}
.tnode rect.qr{fill:var(--ink)}
.packet{fill:var(--blue)}
.packet.io{fill:var(--amber)}
/* live event log */
.hlog{margin-top:auto;background:#05080D;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-family:var(--fm);font-size:11px;line-height:1.72;min-height:104px;overflow:hidden}
.hlog .ln{display:flex;gap:10px;white-space:nowrap;opacity:0;transform:translateY(4px);animation:logIn var(--t-base) var(--e-out) forwards}
@keyframes logIn{to{opacity:1;transform:none}}
.hlog .ts{color:var(--dim);flex:none}
.hlog .ev{color:var(--mut)}
.hlog .ev.io{color:var(--gold)}
.hlog .ev.data{color:#8FB6FF}
.hlog .st{margin-left:auto;color:var(--green)}
@media (max-width:520px){.hlog{font-size:10px}.hlog .ln{gap:7px}}

/* ---- generic reveal ---- */
[data-rv]{opacity:0;transform:translateY(16px);transition:opacity var(--t-slow) var(--e-out),transform var(--t-slow) var(--e-out);transition-delay:var(--d,0s)}
[data-rv].in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){[data-rv]{opacity:1;transform:none;transition:none}.packet,.hlog .ln{animation:none}}

/* ---- problem flow ---- */
.frag{display:grid;grid-template-columns:1fr auto 1fr;gap:30px;align-items:center;margin-top:44px}
.frag-col{display:flex;flex-direction:column;gap:9px}
.frag-col .fh{font-family:var(--fm);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.chip{font-size:13px;color:var(--mut);background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:9px 13px;transition:opacity var(--t-slow) var(--e-out),transform var(--t-slow) var(--e-out)}
.frag.in .chip{opacity:.45;transform:translateX(-6px)}
.frag-mid{display:grid;place-items:center;color:var(--dim)}
.frag-mid svg{width:44px;height:44px}
.frag-one{background:linear-gradient(160deg,#101923,#0A121B);border:1px solid var(--line-2);border-radius:10px;padding:22px;text-align:center}
.frag-one .mono{color:var(--amber);margin-bottom:10px}
.frag-one h3{margin-bottom:6px}
.frag-one p{font-size:13.5px;color:var(--mut);margin:0}
@media (max-width:820px){.frag{grid-template-columns:1fr;gap:18px}.frag-mid{transform:rotate(90deg)}}

/* ---- how it works (continuous rail) ---- */
.rail{position:relative;margin-top:48px;display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.rail::before{content:"";position:absolute;left:0;right:0;top:19px;height:2px;background:linear-gradient(90deg,var(--amber) 0,var(--blue) 26%,var(--blue) 74%,var(--green) 100%);opacity:.65}
.step{position:relative;padding:0 22px 0 0}
.step .num{width:40px;height:40px;border-radius:9px;background:var(--panel);border:1px solid var(--line-2);display:grid;place-items:center;font-family:var(--fm);font-size:13px;color:var(--blue);position:relative;z-index:1;margin-bottom:18px;transition:border-color var(--t-base),box-shadow var(--t-base)}
.step:first-child .num{color:var(--amber)} /* Identify: the physical pass = orange */
.rail.in .step:nth-child(1) .num{box-shadow:0 0 0 4px var(--amber-soft);border-color:var(--amber)}
.step h3{font-size:16px;margin-bottom:7px}
.step p{font-size:13.5px;color:var(--mut);margin:0}
@media (max-width:860px){.rail{grid-template-columns:1fr 1fr;gap:32px 20px}.rail::before{display:none}}
@media (max-width:520px){.rail{grid-template-columns:1fr}}

/* ---- platform: interconnected module architecture ---- */
.modflow{display:flex;align-items:center;flex-wrap:wrap;gap:0 4px;margin-top:40px;font-family:var(--fm);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.modflow .mf{color:var(--mut);border:1px solid var(--line-2);background:var(--panel);border-radius:5px;padding:7px 12px}
.modflow .mf.io{color:var(--amber);border-color:rgba(255,90,36,.4)}
.modflow i{width:22px;height:2px;background:var(--amber);opacity:.55;flex:none}
.modflow .mf.ctrl{color:var(--blue);border-color:rgba(76,141,255,.4);margin-left:14px;position:relative}
.modflow .mf.ctrl::before{content:"";position:absolute;left:-14px;top:50%;width:14px;height:2px;background:var(--blue);opacity:.55}
.mods{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.mod{background:var(--panel);border:1px solid var(--line);border-radius:var(--rad);padding:22px;transition:border-color var(--t-base),transform var(--t-base)}
.mod:hover{border-color:var(--line-2);transform:translateY(-2px)}
.mod.big{grid-column:1/-1;display:grid;grid-template-columns:1.1fr 1fr;gap:26px;align-items:center}
.mod-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.mod-head .ic{width:36px;height:36px;border-radius:8px;background:var(--bg-1);border:1px solid var(--line-2);display:grid;place-items:center;color:var(--blue);flex:none}
.mod.big .mod-head .ic{color:var(--amber)} /* Pass = identity/physical = orange */
.mod-head .ic svg{width:19px;height:19px}
.mod-head h3{margin:0}
.mod-head .tag{margin-left:auto}
.mod p{font-size:14px;color:var(--mut);margin:0 0 14px}
.caps{display:flex;flex-wrap:wrap;gap:6px}
.caps span{font-size:12px;color:var(--mut);background:var(--bg-1);border:1px solid var(--line);border-radius:5px;padding:5px 10px}
.caps span.soon{color:var(--dim);border-style:dashed}
@media (max-width:820px){.mods{grid-template-columns:1fr}.mod.big{grid-template-columns:1fr}}

/* the pass card inside the platform module */
.pass{background:linear-gradient(160deg,#111C28,#0A131C);border:1px solid var(--line-2);border-radius:10px;padding:14px;position:relative}
.pass .mono{font-size:9px;margin-bottom:8px;color:var(--dim)}
.pass .nm{font-family:var(--fd);font-weight:640;font-size:15px}
.pass .rl{font-size:11.5px;color:var(--mut);margin-bottom:10px}
.pass .qr{width:100%;aspect-ratio:1;background:#EDF1F4;border-radius:7px;padding:9px;position:relative;max-width:150px}
.pass .qr svg{width:100%;height:100%;display:block}

/* ---- live pass demo (Platform · FairTap Pass module) — scan → connect → webhook ---- */
.ftlive{position:relative}
.ftlive .flow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ftlive .pass .qr{max-width:none}
.pass .mono .ev-id{color:var(--amber)}
.scanbox{position:absolute;inset:9px;pointer-events:none}
.scanbox i{position:absolute;width:16px;height:16px;border:2px solid var(--amber)}
.scanbox i:nth-child(1){top:0;left:0;border-right:0;border-bottom:0}
.scanbox i:nth-child(2){top:0;right:0;border-left:0;border-bottom:0}
.scanbox i:nth-child(3){bottom:0;left:0;border-right:0;border-top:0}
.scanbox i:nth-child(4){bottom:0;right:0;border-left:0;border-top:0}
.scanline{position:absolute;left:9px;right:9px;height:2px;background:linear-gradient(90deg,transparent,var(--amber),transparent);opacity:0;filter:drop-shadow(0 0 5px var(--amber))}
.dash{display:flex;flex-direction:column;gap:10px}
.dcard{background:var(--bg-1);border:1px solid var(--line);border-radius:8px;padding:13px 14px}
.dcard .mono{font-size:8.5px;margin-bottom:9px;display:block}
.krow{display:flex;justify-content:space-between;align-items:baseline;padding:4px 0}
.krow span{font-size:11px;color:var(--mut)}
.krow b{font-family:var(--fd);font-size:17px;font-weight:640;font-variant-numeric:tabular-nums;color:var(--ink)}
.wh{font-family:var(--fm);font-size:10.5px;line-height:1.7;color:var(--mut)}
.wh .ok{color:var(--green)}
.wh .k{color:var(--amber)}
.stage-cap{margin-top:14px;font-family:var(--fm);font-size:11px;color:var(--mut);min-height:20px}
.stage-cap b{color:var(--green)}
.pulse{position:absolute;left:26%;top:44%;width:60px;height:60px;border-radius:50%;border:2px solid var(--green);opacity:0;pointer-events:none}
@media (max-width:520px){.ftlive .flow{grid-template-columns:1fr}}

/* ---- event graph ---- */
.graph-wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;margin-top:40px}
.graph{position:relative;background:radial-gradient(110% 100% at 50% 40%,#0C1622,#06090F 72%);border:1px solid var(--line);border-radius:10px;aspect-ratio:1/.86;overflow:hidden}
.graph svg{width:100%;height:100%}
.gnode{cursor:pointer;outline:none}
.gnode circle{transition:r var(--t-base) var(--e-out),fill var(--t-base),stroke var(--t-fast)}
.gnode:focus-visible circle{stroke:var(--blue);stroke-width:1.6;paint-order:stroke}
.gnode text{font-family:var(--fm);font-size:3.4px;fill:var(--mut);letter-spacing:.04em}
.gnode.on circle,.gnode:hover circle{fill:var(--blue)}
.gnode[data-k="connection"].on circle,.gnode[data-k="connection"]:hover circle{fill:var(--amber)}
.gnode.on text,.gnode:hover text{fill:var(--ink)}
.gedge{stroke:var(--line-2);stroke-width:.4;transition:stroke var(--t-base),stroke-width var(--t-base)}
.gedge.lit{stroke:var(--blue);stroke-width:.7}
.graph-info .gi-node{font-family:var(--fm);font-size:11px;color:var(--blue);margin-bottom:6px}
.graph-info h3{margin-bottom:8px}
.graph-info p{font-size:14px;color:var(--mut);margin:0 0 16px}
.graph-json{font-family:var(--fm);font-size:12px;line-height:1.7;background:var(--bg-1);border:1px solid var(--line);border-radius:8px;padding:16px;color:var(--mut);overflow-x:auto}
.graph-json .k{color:var(--blue)}.graph-json .s{color:var(--green)}
@media (max-width:820px){.graph-wrap{grid-template-columns:1fr}}

/* ---- developers / code ---- */
.dev-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:40px;align-items:start;margin-top:40px}
.dev-list{display:flex;flex-direction:column;gap:10px}
.dev-item{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--mut)}
.dev-item svg{width:18px;height:18px;color:var(--blue);flex:none;margin-top:2px}
.dev-item b{color:var(--ink);font-weight:600}
.code{background:#05080D;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.code-top{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--bg-1)}
.code-top .dotr{display:flex;gap:6px}.code-top .dotr i{width:9px;height:9px;border-radius:50%;background:var(--line-2)}
.code-top .fn{font-family:var(--fm);font-size:11px;color:var(--dim);margin-left:4px}
.code-copy{margin-left:auto;font-family:var(--fm);font-size:11px;color:var(--mut);background:none;border:1px solid var(--line-2);border-radius:6px;padding:5px 10px;cursor:pointer;transition:all var(--t-fast)}
.code-copy:hover{color:var(--ink);border-color:var(--blue)}
.code pre{margin:0;padding:18px;overflow-x:auto;font-family:var(--fm);font-size:12.5px;line-height:1.75;color:#C8CFD8}
.code .cm{color:var(--dim)}.code .kw{color:var(--blue)}.code .st{color:var(--green)}.code .fn2{color:#8FB6FF}.code .nm{color:#C8CFD8}
.endpoints{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px}
.ep{font-family:var(--fm);font-size:12px;background:var(--bg-1);border:1px solid var(--line);border-radius:6px;padding:9px 11px;display:flex;gap:8px;align-items:center;color:var(--mut)}
.ep .m{font-weight:700;font-size:10px;padding:2px 6px;border-radius:4px}
.ep .m.post{color:var(--green);background:var(--green-soft)}.ep .m.get{color:var(--blue);background:var(--blue-soft)}
.evtypes{display:flex;flex-wrap:wrap;gap:6px;margin-top:16px}
.evtypes code{font-family:var(--fm);font-size:11.5px;color:var(--blue);background:var(--bg-1);border:1px solid var(--line);border-radius:5px;padding:4px 9px}
@media (max-width:820px){.dev-grid{grid-template-columns:1fr}.endpoints{grid-template-columns:1fr}}

/* ---- webhook automation flow ---- */
.auto{display:flex;flex-direction:column;gap:0;margin-top:40px;max-width:720px}
.astep{display:grid;grid-template-columns:34px 1fr auto;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line);opacity:.45;transition:opacity var(--t-base)}
.astep.on{opacity:1}
.astep .an{font-family:var(--fm);font-size:12px;color:var(--dim);border:1px solid var(--line-2);border-radius:6px;height:34px;display:grid;place-items:center}
.astep.on .an{color:var(--blue);border-color:var(--blue)}
.astep .at{font-size:14.5px}
.astep .as{font-family:var(--fm);font-size:11px;color:var(--green);opacity:0;transition:opacity var(--t-base)}
.astep.on .as{opacity:1}
.dest-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px}
.dest{font-size:13px;color:var(--mut);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 13px}
.dest small{color:var(--dim);font-size:10px}

/* ---- offline sync ---- */
.off-grid{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center;margin-top:40px}
.device{background:linear-gradient(160deg,#0F1B27,#08111A);border:1px solid var(--line-2);border-radius:12px;padding:18px;max-width:300px;margin:0 auto}
.device-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.conn{display:inline-flex;align-items:center;gap:7px;font-family:var(--fm);font-size:11px;padding:5px 10px;border-radius:999px;border:1px solid var(--line-2);color:var(--mut)}
.conn .cd{width:7px;height:7px;border-radius:50%;background:var(--dim)}
.conn.online{color:var(--green);border-color:rgba(40,209,124,.4)}.conn.online .cd{background:var(--green)}
.conn.offline{color:var(--warn);border-color:rgba(232,173,69,.45)}.conn.offline .cd{background:var(--warn)}
.queue{display:flex;flex-direction:column;gap:8px;min-height:150px}
.qitem{display:flex;justify-content:space-between;align-items:center;font-family:var(--fm);font-size:11px;background:var(--bg-1);border:1px solid var(--line);border-radius:6px;padding:10px 12px;color:var(--mut)}
.qitem .qs{font-size:10px}
.qitem .qs.pending{color:var(--warn)}.qitem .qs.synced{color:var(--green)}.qitem .qs.dupe{color:var(--dim)}
.off-controls{margin-top:14px;text-align:center}
.off-list{display:flex;flex-direction:column;gap:12px}
.off-list .oi{display:flex;gap:12px;font-size:14px;color:var(--mut)}
.off-list .oi svg{width:18px;height:18px;color:var(--blue);flex:none;margin-top:2px}
.off-list .oi b{color:var(--ink);font-weight:600}
@media (max-width:820px){.off-grid{grid-template-columns:1fr}}

/* ---- security / gdpr — trust plane ---- */
.sec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:40px}
.sec-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--rad);padding:22px}
.sec-card .ic{width:34px;height:34px;border-radius:8px;background:var(--bg-1);border:1px solid var(--line-2);display:grid;place-items:center;color:var(--green);margin-bottom:14px}
.sec-card .ic svg{width:18px;height:18px}
.sec-card h3{font-size:15.5px;margin-bottom:8px}
.sec-card p{font-size:13px;color:var(--mut);margin:0}
.sec-card code{font-family:var(--fm);font-size:11.5px;color:var(--blue);background:var(--bg-1);padding:1px 5px;border-radius:3px}
.sec-note{margin-top:24px;font-size:12.5px;color:var(--dim);border-left:2px solid var(--line-2);padding-left:16px;max-width:760px}
.hashdemo{margin-top:30px;background:#05080D;border:1px solid var(--line);border-radius:8px;padding:16px;font-family:var(--fm);font-size:12px;overflow-x:auto}
.hashdemo .row{display:flex;gap:10px;padding:4px 0;white-space:nowrap}
.hashdemo .lbl{color:var(--dim);min-width:150px}
.hashdemo .val{color:var(--mut)}.hashdemo .val.h{color:var(--green)}
@media (max-width:820px){.sec-grid{grid-template-columns:1fr}}

/* ---- use cases ---- */
.uc-cloud{display:flex;flex-wrap:wrap;gap:9px;margin-top:36px}
.uc{font-size:13.5px;color:var(--mut);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:9px 14px;transition:border-color var(--t-fast),color var(--t-fast),transform var(--t-fast) var(--e-spring);cursor:default}
.uc:hover{border-color:var(--blue);color:var(--ink)}
.uc:active{transform:scale(.97)}

/* ---- future intelligence ---- */
.fut{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:40px}
.fut .fi{background:var(--bg-1);border:1px solid var(--line);border-radius:9px;padding:18px}
.fut .fi .mono{color:var(--blue);margin-bottom:8px;display:block}
.fut .fi h4{font-family:var(--fd);font-size:15px;font-weight:600;margin:0 0 6px}
.fut .fi p{font-size:13px;color:var(--mut);margin:0}
@media (max-width:820px){.fut{grid-template-columns:1fr}}

/* ---- architecture ---- */
.arch{margin-top:40px;display:grid;grid-template-columns:1fr;gap:0;max-width:520px;margin-left:auto;margin-right:auto}
.arch .layer{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 18px;text-align:center;font-family:var(--fm);font-size:12.5px;color:var(--ink);position:relative}
.arch .layer small{display:block;color:var(--dim);font-size:10px;margin-top:3px;letter-spacing:.06em}
.arch .arrow{height:22px;display:grid;place-items:center;color:var(--dim)}
.arch .layer.accent{border-color:rgba(76,141,255,.45);background:linear-gradient(160deg,var(--blue-soft),transparent)}
.arch .split{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.arch .split .layer{font-size:10.5px;padding:11px 6px}
@media (max-width:560px){.arch .split{grid-template-columns:1fr 1fr}}

/* ---- onboarding + enquiry ---- */
.beta{background:radial-gradient(120% 120% at 50% 0,#0E1A27,#06090F 66%);border:1px solid var(--line);border-radius:12px;padding:56px 40px;text-align:center}
.beta h2{max-width:16ch;margin:0 auto 16px}
.beta .lead{margin:0 auto 30px;text-align:center}
.beta-aud{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:26px}
.beta-aud span{font-size:12.5px;color:var(--dim);border:1px solid var(--line);border-radius:6px;padding:6px 13px}
.enq{display:grid;grid-template-columns:1fr 1.15fr;gap:48px;align-items:start;margin-top:44px}
.enq-side h3{font-size:22px;margin-bottom:12px}
.enq-side p{font-size:14.5px;color:var(--mut);margin:0 0 18px}
.enq-side ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.enq-side li{display:flex;gap:11px;font-size:14px;color:var(--mut)}
.enq-side li svg{width:18px;height:18px;color:var(--green);flex:none;margin-top:2px}
form.enq-form{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:26px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field.full{grid-column:1/-1}
.field label{font-size:12px;font-weight:600;color:var(--mut);letter-spacing:.02em}
.field label .req{color:var(--amber)}
.field input,.field select,.field textarea{background:var(--bg);border:1px solid var(--line-2);border-radius:6px;color:var(--ink);font-family:var(--fb);font-size:14.5px;padding:11px 13px;transition:border-color var(--t-fast)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue)}
.field textarea{resize:vertical;min-height:84px}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0;pointer-events:none}
.consent{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;color:var(--mut);margin:4px 0 16px}
.consent input{margin-top:3px;accent-color:var(--blue);width:16px;height:16px;flex:none}
.consent a{color:var(--blue)}
.enq-err{color:var(--red);font-size:13px;min-height:18px;margin:0 0 10px}
.enq-ok{background:var(--green-soft);border:1px solid rgba(40,209,124,.4);border-radius:10px;padding:24px;text-align:center}
.enq-ok .ic{width:46px;height:46px;border-radius:50%;background:var(--green-soft);display:grid;place-items:center;margin:0 auto 14px;color:var(--green)}
.enq-ok h3{font-size:18px;margin-bottom:8px}
.enq-ok p{font-size:14px;color:var(--mut);margin:0}
.enq-ok .ref{font-family:var(--fm);color:var(--green);font-size:13px;margin-top:12px}
@media (max-width:860px){.enq{grid-template-columns:1fr;gap:30px}.fgrid{grid-template-columns:1fr}.beta{padding:40px 22px}}

/* ---- footer ---- */
.foot{border-top:1px solid var(--line);padding:52px 0 40px;background:var(--bg-1)}
.foot-top{display:flex;flex-wrap:wrap;gap:30px;justify-content:space-between;align-items:flex-start}
.foot .brand small{margin-top:3px}
.foot-desc{font-size:13px;color:var(--dim);max-width:280px;margin-top:12px}
.foot nav{display:flex;gap:30px;flex-wrap:wrap}
.foot nav div{display:flex;flex-direction:column;gap:9px}
.foot nav .fh{font-family:var(--fm);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:2px}
.foot nav a,.foot nav span{font-size:13.5px;color:var(--mut)}
.foot nav a:hover{color:var(--ink)}
.foot-bot{margin-top:40px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between;font-size:12px;color:var(--dim)}
.foot-bot .mono{font-size:10px}

/* section intro alignment helper */
.sec-head{max-width:680px}
.center{text-align:center;margin-left:auto;margin-right:auto}
.center .eyebrow{justify-content:center}
