
:root{
  --bg:#05070e;
  --bg-2:#0a0d1a;
  --ink:#0e1226;
  --line:rgba(255,255,255,.08);
  --line-2:rgba(255,255,255,.14);
  --text:#e8ecf5;
  --muted:#8a92ab;
  --dim:#575e77;
  --cyan: oklch(0.82 0.13 200);
  --iris: oklch(0.68 0.22 275);
  --mint: oklch(0.84 0.14 160);
  --amber: oklch(0.82 0.14 80);
  --brand-blue:#0D59F2;
  --brand-purple:#8b5cf6;
  --grad: linear-gradient(92deg, var(--brand-blue), var(--brand-purple));
  --mono: "JetBrains Mono", ui-monospace, Menlo, monospace;
  --display: "Space Grotesk", Inter, system-ui, sans-serif;
  --body: Inter, system-ui, -apple-system, sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body{
  background:
    radial-gradient(1200px 700px at 15% -10%, rgba(13,89,242,.18), transparent 60%),
    radial-gradient(900px 600px at 90% 5%, rgba(139,92,246,.14), transparent 60%),
    var(--bg);
}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
img{max-width:100%;display:block}
::selection{background:oklch(0.72 0.20 270 / .5);color:white}

/* Grain overlay */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:100;opacity:.035;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* Cursor spotlight */
.spot{position:fixed;inset:0;pointer-events:none;z-index:1;
  background:radial-gradient(420px 420px at var(--mx,50%) var(--my,20%), rgba(139,92,246,.12), transparent 60%);
  transition:background .15s linear;
}

/* Nav */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  padding:18px 28px;backdrop-filter:blur(14px);background:rgba(5,7,14,.55);border-bottom:1px solid var(--line);
}
.brand{display:inline-flex;align-items:center;gap:12px;font-family:var(--display);font-weight:700;letter-spacing:.04em;font-size:19px;color:#fff;text-decoration:none}
.brand-logo{height:34px;width:auto;display:block;flex-shrink:0;filter:drop-shadow(0 0 18px rgba(139,92,246,.35))}
.brand-text{line-height:1;white-space:nowrap}
footer .brand{font-size:17px}
footer .brand-logo{height:28px}
/* Swiss-made flag badge — reusable across nav, eyebrow, footer */
.ch-flag{display:inline-block;flex:0 0 auto;vertical-align:middle;border-radius:3px;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.brand .ch-flag{width:16px;height:16px;margin-left:2px}
.hero-kicker .ch-flag{width:15px;height:15px;flex:none}
.foot-bot .ch-flag{width:13px;height:13px;margin-right:2px}
.nav-links{display:flex;gap:40px;font-size:15px;color:#c8cdd9;font-weight:500;letter-spacing:.005em}
.nav-links a{position:relative;display:inline-block;padding:6px 0;transition:color .2s ease;text-decoration:none}
.nav-links a::after{
  content:"";
  position:absolute;
  left:0; right:0; bottom:0;
  height:2px;
  background:var(--grad);
  border-radius:2px;
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform .3s cubic-bezier(.4,0,.2,1), opacity .2s ease;
  opacity:0;
}
.nav-links a:hover{color:var(--text)}
.nav-links a:hover::after{transform:scaleX(1); opacity:1}
.nav-cta{display:flex;gap:10px;align-items:center}
.chip{padding:8px 14px;border:1px solid var(--line-2);border-radius:999px;font-size:13px;color:var(--muted);transition:.2s}
.chip:hover{color:var(--text);border-color:#fff3}
.btn{
  display:inline-flex;align-items:center;gap:10px;padding:11px 18px;border-radius:999px;font-size:14px;font-weight:500;
  background:var(--text);color:#0a0d1a;transition:transform .2s ease, box-shadow .3s ease, background .2s;
  box-shadow:0 10px 40px -10px rgba(232,236,245,.4);
}
.btn:hover{transform:translateY(-1px);box-shadow:0 14px 50px -10px rgba(232,236,245,.6)}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line-2);box-shadow:none}
.btn.ghost:hover{border-color:#fff5;background:rgba(255,255,255,.04)}
.btn svg{width:14px;height:14px}

/* Live-demo CTA — cyan accent matches the Document Assistant product card. */
.btn.btn-live{
  background:rgba(125,249,255,.04);color:#7df9ff;
  border:1px solid rgba(125,249,255,.45);
  box-shadow:0 0 0 1px rgba(125,249,255,.06),0 10px 34px -14px rgba(125,249,255,.45);
  transition:transform .2s ease, box-shadow .3s ease, border-color .2s, color .2s, background .2s;
}
.btn.btn-live:hover{
  border-color:rgba(125,249,255,.9);color:#cafcff;
  background:rgba(125,249,255,.08);
  box-shadow:0 0 0 1px rgba(125,249,255,.25),0 14px 44px -10px rgba(125,249,255,.65);
  transform:translateY(-1px);
}
.btn.btn-live .live-dot{
  width:8px;height:8px;border-radius:50%;flex-shrink:0;
  background:#7df9ff;box-shadow:0 0 8px #7df9ff,0 0 18px rgba(125,249,255,.55);
  animation:live-dot-pulse 1.4s ease-in-out infinite;
}
@keyframes live-dot-pulse{
  0%,100%{opacity:1;transform:scale(1)}
  50%{opacity:.45;transform:scale(.78)}
}

/* Layout */
.wrap{max-width:1280px;margin:0 auto;padding:0 28px;position:relative;z-index:2}
section{position:relative}

/* Hero */
.hero{min-height:100vh;display:flex;align-items:center;padding:140px 0 80px;position:relative;overflow:hidden}
.hero-grid{
  position:absolute;inset:0;z-index:0;opacity:.35;
  background-image:
    linear-gradient(var(--line) 1px,transparent 1px),
    linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 90% 60% at 50% 40%, black 30%, transparent 75%);
}
.aurora{position:absolute;inset:-20%;z-index:0;filter:blur(80px);opacity:.55;pointer-events:none}
.aurora span{position:absolute;width:520px;height:520px;border-radius:50%}
.aurora .a1{background:var(--brand-purple);top:-5%;left:-10%;animation:float 16s ease-in-out infinite}
.aurora .a2{background:var(--brand-blue);top:10%;right:-15%;animation:float 20s ease-in-out infinite reverse}
.aurora .a3{background:oklch(0.72 0.18 320);bottom:-20%;left:30%;animation:float 24s ease-in-out infinite}
@keyframes float{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,-30px) scale(1.1)}}

.hero-inner{display:grid;grid-template-columns: 1fr 560px;gap:80px;align-items:center;width:100%}
@media(max-width:1240px){.hero-inner{grid-template-columns: 1fr 460px;gap:60px}}
@media(max-width:1020px){.hero-inner{grid-template-columns:1fr;gap:48px}}

/* ── Hero top (title column | lede+ctas+meta column), stage below ── */
.hero-top{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:end;margin-bottom:46px;width:100%}
.hero-top .lede{margin:0 0 22px}
.hero-top .hero-meta{margin-top:20px}
@media(max-width:1100px){.hero-top{grid-template-columns:1fr;gap:24px;align-items:start}}

.hero-kicker{display:inline-flex;align-items:center;gap:10px;margin-bottom:22px;font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted)}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 12px var(--mint);animation:pulse 2s infinite}
@keyframes pulse{50%{opacity:.4}}

h1.display{
  font-family:var(--display);font-weight:600;line-height:1;letter-spacing:-.035em;
  font-size:clamp(44px, 5.2vw, 78px);margin:22px 0 22px;
}
h1.display .line{display:block}
h1.display .grad{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
h1.display .stroke{color:transparent;-webkit-text-stroke:1.5px rgba(232,236,245,.35)}

.rotator{position:relative;display:inline-block}
.rotator .r{display:inline-block;min-width:.5ch}
.rotator .r.typing::after{content:"▌";color:var(--cyan);margin-left:4px;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}

.lede{max-width:560px;color:var(--muted);font-size:18px;line-height:1.55;font-weight:300}
.hero-ctas{display:flex;gap:12px;margin-top:28px;flex-wrap:wrap}
.hero-meta{display:flex;flex-wrap:wrap;gap:11px 26px;width:100%;margin-top:40px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;position:relative}
.hero-meta::before{content:"";position:absolute;top:-1px;left:0;right:0;height:2px;background:var(--grad)}
.hero-meta div{display:flex;align-items:center}

/* ═══════════════════════════════════════════════════════════════
   Hero STAGE: sources → server → outputs
   ═══════════════════════════════════════════════════════════════ */
.stage{position:relative;display:grid;grid-template-columns:220px 1fr 240px;gap:30px;align-items:center;padding:26px 28px;border:1px dashed rgba(94,234,212,.28);border-radius:20px;background:rgba(8,10,20,.45);min-height:580px;isolation:isolate}
.stage::before,.stage::after{content:"";position:absolute;width:16px;height:16px;border:1.5px solid var(--mint);pointer-events:none}
.stage::before{top:-1px;left:-1px;border-right:none;border-bottom:none}
.stage::after{bottom:-1px;right:-1px;border-left:none;border-top:none}

.stage-lbl{position:absolute;font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--mint);text-transform:uppercase;background:var(--bg,#05070e);padding:0 10px;z-index:6}
.stage-lbl.t{top:0;left:36px;transform:translateY(-50%)}
.stage-lbl.tc{top:0;left:50%;transform:translate(-50%,-50%);color:var(--muted)}
.stage-lbl.tr{top:0;right:36px;transform:translateY(-50%);color:var(--mint)}
.stage-lbl.b{bottom:0;left:50%;transform:translate(-50%,50%);color:var(--dim)}

.stage .col-cap{position:absolute;top:14px;font-family:var(--mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);z-index:5}
.stage .col-cap.l{left:40px}
.stage .col-cap.r{right:40px}

/* LEFT: data sources */
.stage .sources{display:flex;flex-direction:column;gap:10px;z-index:3;padding-top:10px}
.stage .src{display:flex;align-items:center;gap:10px;padding:9px 11px;background:rgba(10,13,24,.72);border:1px solid var(--line);border-radius:8px;backdrop-filter:blur(6px);min-width:0}
.stage .src .s-ic{width:26px;height:26px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;background:rgba(255,255,255,.04);color:var(--muted)}
.stage .src .s-ic svg{width:13px;height:13px}
.stage .src .s-txt{display:flex;flex-direction:column;min-width:0}
.stage .src .s-name{font-size:12px;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stage .src .s-kind{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;color:var(--dim);text-transform:uppercase;white-space:nowrap}
.stage .src .s-blink{width:5px;height:5px;border-radius:50%;background:var(--mint);box-shadow:0 0 6px var(--mint);margin-left:auto;flex:0 0 auto;animation:pulse 1.6s infinite}
.stage .src:nth-child(2) .s-blink{animation-delay:.3s}
.stage .src:nth-child(3) .s-blink{animation-delay:.6s}
.stage .src:nth-child(4) .s-blink{animation-delay:.9s}
.stage .src:nth-child(5) .s-blink{animation-delay:1.2s}
.stage .src:nth-child(6) .s-blink{animation-delay:.2s}

/* CENTER: alternating object */
.stage .center{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:540px}
.stage .center-badge{margin-bottom:24px;display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--mint);z-index:5}
.stage .center-badge svg{width:13px;height:13px;opacity:.9}
.stage .center-badge svg path{stroke:var(--mint)}

.stage .objstage{position:relative;width:340px;height:380px;display:flex;align-items:center;justify-content:center;perspective:1400px;perspective-origin:50% 35%}
.stage .obj{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 1.2s ease, transform 1.2s ease;transform:translateY(8px) scale(.98);transform-style:preserve-3d;pointer-events:none}
.stage .obj.show{opacity:1;transform:translateY(0) scale(1)}

.stage .floor{position:absolute;left:50%;bottom:8px;transform:translateX(-50%);width:320px;height:40px;background:radial-gradient(ellipse at center,rgba(0,0,0,.75),transparent 60%);filter:blur(14px);z-index:0}
.stage .glow{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);width:380px;height:70px;background:radial-gradient(ellipse at center,color-mix(in oklab,var(--brand-purple) 40%,transparent),transparent 60%);filter:blur(22px);opacity:.55;z-index:0}

.stage .obj3d{position:relative;filter:drop-shadow(20px 32px 24px rgba(0,0,0,.6)) drop-shadow(0 8px 18px rgba(0,0,0,.45))}
.stage .obj3d svg{display:block;overflow:visible}
.stage .obj3d .blink{animation:pulse 1.6s infinite}

.stage .stage-rotator{position:absolute;left:50%;bottom:-12px;transform:translateX(-50%);display:flex;gap:6px;z-index:4}
.stage .stage-rotator i{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.15);transition:background .3s, box-shadow .3s;cursor:pointer}
.stage .stage-rotator i.on{background:var(--mint);box-shadow:0 0 6px var(--mint)}

.stage .server-cap{margin-top:28px;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;z-index:4;text-align:center}
.stage .server-cap .big{font-family:var(--display);font-size:16px;font-weight:600;color:var(--text);letter-spacing:-.005em}
.stage .server-cap .big b{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}
.stage .server-cap .sub{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--muted);text-transform:uppercase}

/* RIGHT: 4 product outputs */
.stage .outs{display:flex;flex-direction:column;gap:12px;z-index:3;padding-top:10px}
.stage .out{position:relative;padding:12px 14px;background:rgba(10,13,24,.78);border:1px solid var(--line-2);border-radius:10px;backdrop-filter:blur(8px);overflow:hidden;color:inherit;text-decoration:none;transition:transform .2s ease, border-color .2s ease, box-shadow .2s ease}
a.stage .out,.stage a.out{cursor:pointer}
.stage a.out:hover{transform:translateY(-2px);border-color:color-mix(in oklab,var(--accent) 55%,transparent);box-shadow:0 8px 24px -8px color-mix(in oklab,var(--accent) 40%,transparent)}
.stage .out::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--accent)}
.stage .out .o-row{display:flex;align-items:center;gap:10px}
.stage .out .o-ic{width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;background:color-mix(in oklab,var(--accent) 14%,transparent);color:var(--accent)}
.stage .out .o-ic svg{width:14px;height:14px}
.stage .out .o-num{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase}
.stage .out .o-name{font-size:13px;color:var(--text);font-weight:600;letter-spacing:-.005em;margin-top:1px}
.stage .out .o-metric{font-family:var(--mono);font-size:10px;color:var(--muted);margin-top:6px;letter-spacing:.04em}
.stage .out .o-metric b{color:var(--accent);font-weight:600}
.stage .out.p1{--accent:var(--cyan)}
.stage .out.p2{--accent:oklch(0.72 0.20 270)}
.stage .out.p3{--accent:oklch(0.78 0.18 320)}
.stage .out.p4{--accent:var(--mint)}

/* SVG flow-line overlay */
.stage .flow{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;overflow:visible}
.stage .flow path{fill:none;stroke-dasharray:3 4;stroke-width:1.1;opacity:.55}
.stage .flow .in{stroke:#8a92ab}
.stage .flow .out-1{stroke:var(--cyan)}
.stage .flow .out-2{stroke:oklch(0.72 0.20 270)}
.stage .flow .out-3{stroke:oklch(0.78 0.18 320)}
.stage .flow .out-4{stroke:var(--mint)}
.stage .flow circle.packet{r:2.4}

/* Responsive */
@media(max-width:1100px){
  .stage{grid-template-columns:200px 1fr 220px;gap:18px;padding:22px 20px;min-height:560px}
}
@media(max-width:860px){
  .stage{grid-template-columns:1fr;gap:28px;padding:24px 18px;min-height:auto}
  .stage .col-cap{position:static;margin-bottom:-4px}
  .stage .col-cap.r{text-align:right}
  .stage .center{min-height:420px;order:2}
  .stage .sources{order:1}
  .stage .outs{order:3}
  .stage .flow{display:none}
  .stage-lbl.tc{display:none}
}
@media(max-width:520px){
  .stage .objstage{width:280px;height:320px}
  .stage .obj3d svg{width:280px;height:auto}
  .stage .box-closed #ms3d-mount{width:280px!important;height:230px!important}
}

/* Live extraction card */
.xtract{
  position:relative;border:1px solid var(--line-2);border-radius:20px;overflow:hidden;
  background:linear-gradient(180deg, rgba(16,20,40,.85), rgba(8,10,22,.95));
  backdrop-filter:blur(20px);box-shadow:0 30px 80px -20px rgba(0,0,0,.7), 0 0 0 1px rgba(255,255,255,.02) inset;
}
.xtract-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.xtract-header .lhs{display:flex;gap:6px}
.xtract-header .lhs i{width:10px;height:10px;border-radius:50%;background:#2a3050;display:block}
.xtract-header .mid{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.08em}
.xtract-header .rhs{display:flex;gap:8px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--mint)}
.xtract-header .rhs .live{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint);animation:pulse 1.4s infinite}

.xtract-body{display:grid;grid-template-columns:1fr auto 1fr;min-height:380px}
@media(max-width:640px){.xtract-body{grid-template-columns:1fr;min-height:auto}}

.pdf{padding:22px;border-right:1px solid var(--line);position:relative;background:
  repeating-linear-gradient(transparent 0 24px, rgba(255,255,255,.03) 24px 25px);
}
.pdf .doc-title{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:14px}
.pdf .row{height:8px;background:rgba(255,255,255,.07);border-radius:3px;margin-bottom:10px;position:relative;overflow:hidden}
.pdf .row.short{width:62%}
.pdf .row.mid{width:80%}
.pdf .row.field{background:rgba(139,92,246,.13);border:1px solid rgba(139,92,246,.25);height:22px;width:auto;padding:4px 8px;font-family:var(--mono);font-size:10px;color:#cfd4ff;letter-spacing:.04em;display:flex;align-items:center}
.pdf .row.field.hl{animation:hl 3s ease-in-out infinite;background:rgba(56,189,248,.15);border-color:var(--cyan)}
@keyframes hl{0%,100%{box-shadow:0 0 0 0 rgba(56,189,248,0)}50%{box-shadow:0 0 0 4px rgba(56,189,248,.2)}}
.pdf .stamp{position:absolute;top:20px;right:20px;font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.08em;border:1px dashed var(--line-2);padding:4px 8px;border-radius:4px}

/* connector arrow */
.arrow{display:flex;align-items:center;justify-content:center;width:60px;position:relative}
.arrow svg{width:100%;height:100%;position:absolute;inset:0}
.arrow .pkt{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--cyan);box-shadow:0 0 14px var(--cyan);top:50%;left:-3px;animation:shoot 2.2s linear infinite}
@keyframes shoot{0%{left:-3px;opacity:0}10%{opacity:1}90%{opacity:1}100%{left:calc(100% + 3px);opacity:0}}

.json{padding:22px;font-family:var(--mono);font-size:12.5px;line-height:1.75;color:#cdd5f0;background:
  linear-gradient(180deg, rgba(8,12,28,.5), rgba(8,12,28,0));
}
.json .k{color:var(--cyan)}
.json .v{color:var(--mint)}
.json .n{color:var(--amber)}
.json .p{color:var(--muted)}
.json .line-head{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px}
.json .caret{display:inline-block;width:7px;height:14px;background:var(--cyan);margin-left:3px;vertical-align:-3px;animation:blink 1s steps(2) infinite}

.xtract-foot{display:flex;gap:24px;padding:12px 18px;border-top:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.04em;justify-content:space-between;flex-wrap:wrap}
.xtract-foot b{color:var(--text);font-weight:500}

/* Trusted by — single-customer credibility strip below hero */
.trusted-by{display:flex;align-items:center;justify-content:center;gap:22px;padding:30px 24px;margin-top:56px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:rgba(0,0,0,.22);position:relative;z-index:3;flex-wrap:wrap}
.trusted-by__label{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim)}
.trusted-by__logo{display:inline-flex;align-items:center;gap:14px;text-decoration:none;color:var(--muted);transition:color .2s ease;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.trusted-by__logo:hover{color:var(--text)}
.trusted-by__logo img{height:38px;width:auto;max-width:200px;object-fit:contain;filter:brightness(.95);transition:filter .2s ease}
.trusted-by__logo:hover img{filter:brightness(1.1)}
.trusted-by__caption{color:#1895B2;font-weight:600}
@media(max-width:600px){
  .trusted-by{gap:14px;padding:22px 18px;margin-top:36px}
  .trusted-by__logo img{height:30px}
  .trusted-by__caption{font-size:10px;letter-spacing:.06em}
}

/* Marquee */
.marquee-label{text-align:center;margin:48px auto 0;padding:0 24px;font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted);position:relative;z-index:3}
.marquee-label+.marquee{margin-top:14px}
.marquee{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:28px 0;margin-top:80px;overflow:hidden;position:relative}
.marquee::before,.marquee::after{content:"";position:absolute;top:0;bottom:0;width:120px;z-index:2;pointer-events:none}
.marquee::before{left:0;background:linear-gradient(90deg,var(--bg),transparent)}
.marquee::after{right:0;background:linear-gradient(-90deg,var(--bg),transparent)}
.marquee-track{display:flex;gap:80px;animation:scroll 36s linear infinite;width:max-content;align-items:center;color:var(--dim);font-family:var(--mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.marquee-track span{display:flex;align-items:center;gap:12px}
.marquee-track em{color:var(--muted);font-style:normal;font-weight:600;font-family:var(--display);letter-spacing:-.01em;font-size:22px;text-transform:none}
@keyframes scroll{to{transform:translateX(-50%)}}

/* Section header */
.sect{padding:120px 0;position:relative}
.sect-head{max-width:720px;margin-bottom:64px}
.sect-eyebrow{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}
.sect-eyebrow i{width:24px;height:1px;background:var(--muted);display:block}
.sect h2{font-family:var(--display);font-weight:600;letter-spacing:-.025em;font-size:clamp(36px,4.5vw,60px);line-height:1.05;margin:0}
.sect h2 .grad{color:#fff}
.sect .kicker{color:var(--muted);font-size:17px;line-height:1.6;margin-top:20px;max-width:620px;font-weight:300}

/* Capabilities */
.caps{display:grid;grid-template-columns:repeat(12,1fr);gap:18px}
.cap{grid-column:span 4;border:1px solid var(--line);border-radius:16px;padding:28px;background:linear-gradient(180deg, rgba(20,24,44,.55), rgba(10,13,26,.8));transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s,background .35s;position:relative;overflow:hidden;min-height:260px;cursor:default;color:inherit;text-decoration:none;display:block}
a.cap{cursor:pointer}
.cap-go{position:absolute;top:22px;right:22px;width:36px;height:36px;border-radius:50%;border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--muted);background:rgba(0,0,0,.3);transition:all .4s cubic-bezier(.2,.8,.2,1);z-index:3}
a.cap:hover .cap-go{color:#0a0d1a;border-color:transparent;background:var(--grad);box-shadow:0 10px 28px -6px rgba(139,92,246,.55);transform:scale(1.08) rotate(0deg)}
.cap::before{content:"";position:absolute;inset:0;background:radial-gradient(400px 200px at var(--cx,50%) var(--cy,0%), rgba(120,140,255,.12), transparent 60%);opacity:0;transition:opacity .4s}
.cap:hover{transform:translateY(-4px);border-color:var(--line-2);background:linear-gradient(180deg, rgba(30,36,68,.7), rgba(12,16,34,.9))}
.cap:hover::before{opacity:1}
.cap.wide{grid-column:span 8}
.cap.tall{grid-column:span 4}
.cap.full{grid-column:span 12}
.caps.caps-4{grid-template-columns:repeat(2,1fr);gap:22px}
.caps.caps-4 .cap,.caps.caps-4 .cap.wide,.caps.caps-4 .cap.tall{grid-column:auto;min-height:320px}
@media(max-width:900px){.cap,.cap.wide,.cap.tall{grid-column:span 12}.caps.caps-4{grid-template-columns:1fr}}
.cap .ic{width:36px;height:36px;border-radius:10px;border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--cyan);margin-bottom:18px;background:rgba(139,92,246,.06)}
.cap h3{font-family:var(--display);font-size:22px;margin:0 0 8px;font-weight:600;letter-spacing:-.015em}
.cap p{color:var(--muted);font-size:15px;line-height:1.55;margin:0}
.cap .num{position:absolute;top:22px;right:26px;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.1em}
.cap .viz{margin-top:20px;height:140px;border-radius:10px;border:1px solid var(--line);position:relative;overflow:hidden;background:rgba(0,0,0,.2)}

/* viz variants */
.viz.dashboard{padding:12px;display:flex;flex-direction:column;gap:6px}
.viz.dashboard .bar{height:14px;border-radius:3px;background:rgba(255,255,255,.05);position:relative;overflow:hidden}
.viz.dashboard .bar i{position:absolute;inset:0;background:var(--grad);width:var(--w,60%);border-radius:3px;animation:grow 4s ease-in-out infinite alternate}
@keyframes grow{to{width:90%}}
.viz.dashboard .bar:nth-child(2) i{animation-delay:.3s;--w:45%}
.viz.dashboard .bar:nth-child(3) i{animation-delay:.6s;--w:72%}
.viz.dashboard .bar:nth-child(4) i{animation-delay:.9s;--w:30%}
.viz.dashboard .bar:nth-child(5) i{animation-delay:1.2s;--w:58%}

.viz.graph{display:flex;align-items:center;justify-content:center}
.viz.graph svg{width:100%;height:100%}

.viz.chat{padding:10px;display:flex;flex-direction:column;gap:6px;font-family:var(--mono);font-size:10.5px}
.viz.chat .b{padding:6px 9px;border-radius:8px;max-width:80%;line-height:1.4}
.viz.chat .u{background:rgba(255,255,255,.06);align-self:flex-end;color:var(--text)}
.viz.chat .a{background:rgba(139,92,246,.14);border:1px solid rgba(139,92,246,.25);color:#d7ddff;align-self:flex-start}
.viz.chat .typing{display:inline-block;width:18px}
.viz.chat .typing i{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--muted);margin-right:2px;animation:dot 1s infinite}
.viz.chat .typing i:nth-child(2){animation-delay:.15s}
.viz.chat .typing i:nth-child(3){animation-delay:.3s}
@keyframes dot{0%,60%,100%{opacity:.3}30%{opacity:1}}

.viz.report{padding:12px;display:grid;grid-template-columns:1fr 1fr;gap:8px}
.viz.report .doc{border:1px solid var(--line);border-radius:6px;padding:8px;background:rgba(0,0,0,.3);display:flex;flex-direction:column;gap:4px}
.viz.report .doc i{height:3px;background:rgba(255,255,255,.1);border-radius:2px;display:block}
.viz.report .doc i.ac{background:var(--cyan);width:50%}

.viz.pulse{position:relative}
.viz.pulse::after{content:"";position:absolute;inset:20%;border-radius:50%;border:1px solid var(--cyan);animation:ring 2.4s ease-out infinite}
.viz.pulse::before{content:"";position:absolute;top:50%;left:50%;width:10px;height:10px;border-radius:50%;background:var(--cyan);transform:translate(-50%,-50%);box-shadow:0 0 20px var(--cyan)}
@keyframes ring{0%{transform:scale(.6);opacity:1}100%{transform:scale(1.6);opacity:0}}

.viz.deploy{display:flex;align-items:center;justify-content:center;gap:14px;font-family:var(--mono);font-size:10px;color:var(--muted)}
.viz.deploy .node{width:50px;height:50px;border-radius:10px;border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.03);position:relative}
.viz.deploy .node.on::before{content:"";position:absolute;inset:-1px;border-radius:11px;background:var(--grad);opacity:.6;filter:blur(8px);z-index:-1}
.viz.deploy .arrow-s{color:var(--dim)}

/* Pipeline interactive */
.pipeline{border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg, rgba(16,20,40,.55), rgba(8,10,22,.8));padding:40px;position:relative;overflow:hidden}
.pipe-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;position:relative}
@media(max-width:900px){.pipe-steps{grid-template-columns:1fr 1fr}}
.pipe-step{border:1px solid var(--line);border-radius:14px;padding:18px;background:rgba(8,10,22,.5);position:relative;transition:.35s;cursor:pointer}
.pipe-step.active{border-color:transparent;background:linear-gradient(rgba(8,10,22,.9),rgba(8,10,22,.9)) padding-box,var(--grad) border-box;border:1px solid transparent}
.pipe-step .i{width:26px;height:26px;border-radius:8px;background:rgba(139,92,246,.1);border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--cyan);margin-bottom:12px;font-family:var(--mono);font-size:11px}
.pipe-step h4{font-family:var(--display);font-size:16px;margin:0 0 4px;font-weight:600}
.pipe-step p{color:var(--muted);font-size:12px;margin:0;line-height:1.45}
.pipe-step::after{content:"";position:absolute;top:50%;right:-8px;width:16px;height:1px;background:var(--line-2)}
.pipe-step:last-child::after{display:none}

.pipe-detail{margin-top:36px;border-top:1px solid var(--line);padding-top:32px;display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:center}
@media(max-width:900px){.pipe-detail{grid-template-columns:1fr}}
.pipe-detail h3{font-family:var(--display);font-size:28px;font-weight:600;margin:0 0 10px;letter-spacing:-.015em}
.pipe-detail p{color:var(--muted);line-height:1.6;margin:0 0 18px}
.pipe-detail ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.pipe-detail li{display:flex;gap:12px;color:var(--muted);font-size:14px;align-items:flex-start}
.pipe-detail li::before{content:"";width:14px;height:14px;border-radius:4px;background:var(--grad);flex:0 0 14px;margin-top:2px}

.stage-viz{border:1px solid var(--line);border-radius:14px;min-height:280px;background:rgba(0,0,0,.3);padding:22px;font-family:var(--mono);font-size:12px;overflow:hidden;position:relative}
.stage-viz .hd{color:var(--dim);font-size:10px;letter-spacing:.1em;margin-bottom:12px;text-transform:uppercase}

/* Product carousel */
.carousel{border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg, rgba(16,20,40,.55), rgba(8,10,22,.85));padding:0;position:relative;overflow:hidden}
.car-stage{position:relative;min-height:440px}
.car-slide{position:absolute;inset:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:0;padding:44px 48px;opacity:0;pointer-events:none;transform:translateY(12px);transition:opacity .6s cubic-bezier(.2,.8,.2,1),transform .6s cubic-bezier(.2,.8,.2,1)}
.car-slide.active{opacity:1;pointer-events:auto;transform:none}
@media(max-width:900px){.car-slide{grid-template-columns:1fr;padding:28px 24px}.car-stage{min-height:720px}}

.car-text{display:flex;flex-direction:column;justify-content:center;padding-right:24px;max-width:440px}
.car-num{font-family:var(--mono);font-size:12px;letter-spacing:.18em;color:var(--accent,var(--cyan));margin-bottom:14px}
.car-name{font-family:var(--display);font-size:32px;font-weight:600;letter-spacing:-.015em;margin:0 0 12px;color:var(--text);line-height:1.1}
.car-tag{color:var(--muted);line-height:1.55;font-size:16px;margin:0 0 22px;text-wrap:pretty}
.car-bullets{margin:0 0 28px;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}
.car-bullets li{display:flex;gap:12px;color:var(--muted);font-size:14px;align-items:flex-start;line-height:1.5}
.car-bullets li::before{content:"";width:12px;height:12px;border-radius:3px;background:var(--accent,var(--cyan));flex:0 0 12px;margin-top:4px;opacity:.85}
.car-link{display:inline-flex;align-items:center;gap:8px;color:var(--accent,var(--cyan));font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;padding:10px 14px;border:1px solid color-mix(in oklab, var(--accent) 45%, transparent);border-radius:999px;align-self:flex-start;background:color-mix(in oklab, var(--accent) 8%, transparent);transition:.25s}
.car-link:hover{background:color-mix(in oklab, var(--accent) 18%, transparent);transform:translateX(2px)}
.car-link svg{width:14px;height:14px}

.car-viz{position:relative;display:flex;align-items:center;justify-content:center;border-left:1px solid var(--line);background:radial-gradient(circle at 50% 50%, rgba(139,92,246,.08), transparent 70%);min-height:380px}
@media(max-width:900px){.car-viz{border-left:none;border-top:1px solid var(--line);min-height:280px;margin-top:8px;padding-top:16px}}
.car-svg{width:100%;height:100%;max-height:380px;display:block}
/* 3D Mac Studio overlay (DOM canvas on top of the SVG viz, centered) */
.car-viz .car-mac3d{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:200px;height:160px;pointer-events:none;z-index:2;display:flex;align-items:center;justify-content:center;filter:drop-shadow(10px 18px 18px rgba(0,0,0,.55)) drop-shadow(0 6px 12px rgba(0,0,0,.4))}
.car-viz .car-mac3d canvas{width:100%!important;height:auto!important;display:block}
@media(max-width:900px){.car-viz .car-mac3d{width:170px;height:140px}}

/* Controls */
.car-controls{display:flex;align-items:center;gap:16px;padding:18px 24px;border-top:1px solid var(--line);background:rgba(0,0,0,.25);position:relative}
.car-nav{width:38px;height:38px;border-radius:50%;border:1px solid var(--line-2);background:rgba(8,10,22,.6);color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.2s;flex-shrink:0}
.car-nav:hover{border-color:var(--cyan);color:var(--cyan);background:rgba(90,169,255,.08)}
.car-nav svg{width:16px;height:16px}
.car-dots{display:flex;gap:8px;flex:1;overflow:hidden}
.car-dot{flex:1;display:flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:rgba(8,10,22,.4);color:var(--muted);cursor:pointer;transition:.3s;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-align:left}
.car-dot .d-n{color:var(--dim);font-size:10px}
.car-dot .d-l{text-transform:uppercase;letter-spacing:.14em;font-size:10.5px}
.car-dot:hover{border-color:var(--line-2);color:var(--text)}
.car-dot.active{border-color:transparent;background:linear-gradient(rgba(8,10,22,.95),rgba(8,10,22,.95)) padding-box, var(--grad) border-box;color:var(--text);border:1px solid transparent}
.car-dot.active .d-n{color:var(--cyan)}
.car-progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(255,255,255,.04);overflow:hidden}
.car-progress i{display:block;height:100%;width:0;background:var(--grad)}
@media(max-width:760px){.car-dots{flex-wrap:wrap}.car-dot{flex:1 0 45%;min-width:0}}

/* anims used by viz */
@keyframes rSpin{to{transform:rotate(360deg)}}

/* Trust metrics */
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--line)}
@media(max-width:820px){.metrics{grid-template-columns:1fr 1fr}}
.metric{padding:34px 28px;background:var(--bg);display:flex;flex-direction:column;gap:6px}
.metric .n{font-family:var(--display);font-size:44px;font-weight:600;letter-spacing:-.02em;color:#fff}
.metric .l{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.metric .d{color:var(--muted);font-size:13px;line-height:1.4;margin-top:6px}

/* Security card */
.security{display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:stretch}
@media(max-width:900px){.security{grid-template-columns:1fr}}
.vault{border:1px solid var(--line);border-radius:22px;padding:32px;background:linear-gradient(180deg, rgba(16,20,40,.55), rgba(8,10,22,.8));position:relative;overflow:hidden}
.vault h3{font-family:var(--display);font-size:26px;font-weight:600;margin:0 0 10px}
.vault p{color:var(--muted);line-height:1.55;margin:0 0 22px}
.vault-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vault-item{border:1px solid var(--line);border-radius:10px;padding:14px;background:rgba(0,0,0,.25)}
.vault-item .t{font-size:14px;font-weight:600;margin:0 0 4px;font-family:var(--display)}
.vault-item .d{color:var(--muted);font-size:12px;line-height:1.45}
.vault-item .ic{color:var(--mint);margin-bottom:8px;display:block;width:18px;height:18px}

.perimeter{position:relative;border:1px solid var(--line);border-radius:22px;background:
  radial-gradient(500px 300px at 50% 50%, rgba(139,92,246,.12), transparent 70%),
  rgba(8,10,22,.6);
  min-height:380px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.perimeter .ring{position:absolute;top:50%;left:50%;width:100px;height:100px;border:1px solid var(--line-2);border-radius:50%;transform:translate(-50%,-50%)}
.perimeter .ring.r2{width:200px;height:200px}
.perimeter .ring.r3{width:300px;height:300px}
.perimeter .ring.r4{width:420px;height:420px;border-style:dashed;opacity:.5}
.perimeter .core{width:80px;height:80px;border-radius:20px;background:var(--grad);display:flex;align-items:center;justify-content:center;font-family:var(--display);font-weight:700;color:#0a0d1a;font-size:12px;letter-spacing:.05em;box-shadow:0 0 80px rgba(139,92,246,.5);position:relative;z-index:2}
.orbit{position:absolute;top:50%;left:50%;width:300px;height:300px;border-radius:50%;transform:translate(-50%,-50%);animation:rot 20s linear infinite}
.orbit .sat{position:absolute;top:-8px;left:calc(50% - 8px);width:16px;height:16px;border-radius:50%;background:var(--cyan);box-shadow:0 0 14px var(--cyan)}
.orbit.o2{width:200px;height:200px;animation-duration:14s;animation-direction:reverse}
.orbit.o2 .sat{background:var(--mint);box-shadow:0 0 14px var(--mint)}
.orbit.o3{width:420px;height:420px;animation-duration:30s}
.orbit.o3 .sat{background:oklch(0.78 0.18 320);box-shadow:0 0 14px oklch(0.78 0.18 320)}
@keyframes rot{to{transform:translate(-50%,-50%) rotate(360deg)}}
.perimeter .lbl{position:absolute;font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.perimeter .lbl.t{top:24px;left:50%;transform:translateX(-50%)}
.perimeter .lbl.b{bottom:24px;left:50%;transform:translateX(-50%);color:var(--mint)}

/* Case study */
.case{border:1px solid var(--line);border-radius:22px;overflow:hidden;background:linear-gradient(180deg, rgba(16,20,40,.55), rgba(8,10,22,.8));display:grid;grid-template-columns:1fr 1fr}
@media(max-width:900px){.case{grid-template-columns:1fr}}
.case-l{padding:44px}
.case-l .logo{font-family:var(--display);font-size:18px;font-weight:700;margin-bottom:24px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.case-l .logo i{width:22px;height:22px;border-radius:6px;background:var(--grad)}
.case-l .logo--customer{text-decoration:none;color:inherit}
.case-l .logo--customer:hover .customer-logo-img{filter:brightness(1.15)}
.customer-logo-img{height:44px;width:auto;max-width:220px;display:block;object-fit:contain;flex-shrink:0}
.customer-logo-fallback{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;color:#1895B2;text-transform:uppercase}
.case-l h3{font-family:var(--display);font-size:32px;font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0 0 16px}
.case-l q{position:relative;quotes:none;display:block;margin:14px 0 22px;padding:0 8px 0 36px;color:var(--text);font-size:17px;line-height:1.65;font-weight:300}
.case-l q::before{content:"\201C";position:absolute;left:-4px;top:-18px;font-family:var(--display);font-size:64px;font-weight:700;line-height:1;color:#fff;opacity:.6;pointer-events:none}
.case-l q::after{content:"\201D";position:absolute;right:-4px;bottom:-32px;font-family:var(--display);font-size:64px;font-weight:700;line-height:1;color:#fff;opacity:.6;pointer-events:none}
.case-l .who{font-family:var(--mono);font-size:12px;color:var(--dim);letter-spacing:.05em}
.case-l .who b{color:var(--text);font-weight:500;font-family:var(--body)}
.case-r{padding:44px;border-left:1px solid var(--line);background:rgba(0,0,0,.15);display:flex;flex-direction:column;gap:14px}
@media(max-width:900px){.case-r{border-left:0;border-top:1px solid var(--line)}}
.result{display:flex;gap:16px;padding:14px 0;border-bottom:1px dashed var(--line)}
.result:last-child{border-bottom:0}
.result .n{font-family:var(--display);font-size:32px;font-weight:600;min-width:90px;color:#fff;letter-spacing:-.02em}
.result .t{color:var(--muted);font-size:13px;line-height:1.45;padding-top:10px}

/* CTA */
.cta{border:1px solid var(--line);border-radius:28px;background:
  radial-gradient(800px 400px at 50% 0%, rgba(139,92,246,.2), transparent 60%),
  linear-gradient(180deg, rgba(16,20,40,.8), rgba(8,10,22,.95));
  padding:80px 40px;text-align:center;position:relative;overflow:hidden}
.cta h2{font-family:var(--display);font-size:clamp(36px,5vw,64px);font-weight:600;letter-spacing:-.025em;line-height:1.05;margin:0 0 18px}
.cta h2 .grad{color:#fff}
.cta p{color:var(--muted);max-width:560px;margin:0 auto 32px;line-height:1.6;font-size:17px}
.cta-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.cta .bg-grid{position:absolute;inset:0;opacity:.2;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse 80% 60% at 50% 40%,black 30%,transparent 70%)}

/* Contact / Form */
.contact-shell{
  position:relative;border:1px solid var(--line);border-radius:28px;overflow:hidden;
  background:radial-gradient(900px 500px at 100% 0%, rgba(139,92,246,.18), transparent 60%),
    linear-gradient(180deg, rgba(16,20,40,.8), rgba(8,10,22,.95));
}
.contact-shell .bg-grid{position:absolute;inset:0;opacity:.18;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;mask-image:radial-gradient(ellipse 80% 60% at 50% 40%,black 30%,transparent 70%);pointer-events:none}
.contact-grid{position:relative;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:0}
@media(max-width:900px){.contact-grid{grid-template-columns:1fr}}
.contact-l{padding:56px 48px}
@media(max-width:760px){.contact-l{padding:40px 28px}}
.contact-l h2{font-family:var(--display);font-size:clamp(36px,4.4vw,52px);font-weight:600;letter-spacing:-.025em;line-height:1.05;margin:0 0 16px}
.contact-l h2 .grad{color:#fff}
.contact-l .kicker{color:var(--muted);line-height:1.6;font-size:16px;font-weight:300;margin:0 0 36px;max-width:480px}

.why-list{display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--line);padding-top:28px}
.why-head{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:6px}
.why-item{display:flex;gap:12px;align-items:flex-start;color:var(--muted);font-size:14px;line-height:1.5}
.why-item b{color:var(--text);font-weight:500}
.why-ic{flex:0 0 22px;width:22px;height:22px;border-radius:6px;background:rgba(120,200,255,.12);border:1px solid rgba(120,200,255,.25);color:var(--mint);display:flex;align-items:center;justify-content:center;margin-top:1px}

.contact-form{
  padding:44px;border-left:1px solid var(--line);background:rgba(0,0,0,.18);
  display:flex;flex-direction:column;gap:18px;position:relative;
}
@media(max-width:900px){.contact-form{border-left:0;border-top:1px solid var(--line);padding:36px 28px}}
.form-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.form-tag{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:6px 10px;border:1px solid var(--line-2);border-radius:999px}
.form-tag .dot{width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint);animation:pulse 1.6s infinite}
.form-tag.mono{color:var(--dim);border-color:var(--line)}

.field{display:flex;flex-direction:column;gap:8px}
.field span{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.field input, .field textarea{
  width:100%;background:rgba(8,10,22,.6);border:1px solid var(--line-2);border-radius:10px;
  padding:13px 14px;font-family:var(--body);font-size:14.5px;color:var(--text);
  transition:border-color .2s, background .2s, box-shadow .2s;outline:none;resize:vertical;
}
.field input::placeholder, .field textarea::placeholder{color:var(--dim)}
.field input:focus, .field textarea:focus{
  border-color:transparent;background:rgba(8,10,22,.85);
  box-shadow:0 0 0 1px oklch(0.72 0.20 270), 0 0 0 4px rgba(139,92,246,.18);
}
.field input:invalid:not(:placeholder-shown), .field textarea:invalid:not(:placeholder-shown){
  border-color:rgba(255,120,120,.4);
}

.btn.submit{
  background:var(--grad);color:#0a0d1a;justify-content:center;padding:14px 22px;font-weight:600;
  box-shadow:0 12px 40px -10px rgba(139,92,246,.6);margin-top:6px;
  position:relative;overflow:hidden;
}
.btn.submit::before{
  content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.35) 50%,transparent 65%);
  transform:translateX(-100%);transition:transform .8s;
}
.btn.submit:hover::before{transform:translateX(100%)}
.btn.submit svg{width:14px;height:14px}

.form-foot{font-size:12px;color:var(--dim);line-height:1.5;text-align:center;margin-top:4px}
.form-foot a{color:var(--muted);text-decoration:underline;text-decoration-color:var(--line-2)}
.form-foot a:hover{color:var(--text)}

.form-success{
  display:none;align-items:center;gap:14px;padding:16px;border-radius:12px;
  background:rgba(120,200,170,.08);border:1px solid rgba(120,200,170,.3);color:var(--text);font-size:14px;
}
.form-success.show{display:flex}
.form-success svg{color:var(--mint);flex:0 0 22px}
.form-success b{font-weight:600}
.form-success div{line-height:1.4;color:var(--muted)}
.form-success div b{color:var(--text);display:block;margin-bottom:2px}

.contact-form.sent .field, .contact-form.sent .btn.submit, .contact-form.sent .form-foot{display:none}

/* Footer */
footer{border-top:1px solid var(--line);margin-top:80px;padding:60px 28px 40px;color:var(--muted);font-size:13px}
.foot-inner{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:40px}
@media(max-width:820px){.foot-inner{grid-template-columns:1fr 1fr}}
footer h5{font-family:var(--display);font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--text);margin:0 0 14px;font-weight:500}
footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
footer a:hover{color:var(--text)}
.foot-bot{max-width:1280px;margin:40px auto 0;padding-top:24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:.05em;text-transform:uppercase}

/* Reveal */
/* Pure CSS fade-in. No JS dependency so content is never stuck invisible
   when a Reflex SPA re-render wipes the IntersectionObserver's attachments. */
.reveal{animation:dv-reveal .8s cubic-bezier(.2,.8,.2,1) both}
.reveal.delay-1{animation-delay:.1s}
.reveal.delay-2{animation-delay:.2s}
.reveal.delay-3{animation-delay:.3s}
@keyframes dv-reveal{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
/* Legacy: some code still adds .in — treat it as a no-op (element is already visible after animation) */
.reveal.in{animation:none;opacity:1;transform:none}

/* scroll indicator */
.scroll-ind{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);display:flex;flex-direction:column;align-items:center;gap:8px}
.scroll-ind i{width:1px;height:28px;background:linear-gradient(var(--muted),transparent);animation:dwn 2s ease-in-out infinite}
@keyframes dwn{0%,100%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1)}}

@media(max-width:760px){
  .nav-links{display:none}
  .hero{padding-top:110px}
  .sect{padding:80px 0}
}


/* ===== Product page styles ===== */
.p-hero{position:relative;padding:160px 0 80px;overflow:hidden}
.p-hero .hero-grid{position:absolute;inset:0;opacity:.3;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% 30%,black 20%,transparent 75%);pointer-events:none}
.p-hero .aurora{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.5}
.p-hero .aurora span{position:absolute;border-radius:50%;filter:blur(80px)}
.p-hero .aurora .a1{width:500px;height:500px;background:radial-gradient(circle,rgba(139,92,246,.4),transparent 70%);top:-120px;left:-80px;animation:float 16s ease-in-out infinite}
.p-hero .aurora .a2{width:420px;height:420px;background:radial-gradient(circle,rgba(13,89,242,.28),transparent 70%);top:40px;right:-80px;animation:float 18s ease-in-out infinite reverse}
.p-hero-inner{max-width:920px;margin:0 auto;text-align:center;padding:0 24px;position:relative;z-index:2}
/* hero kicker pill hidden per CMO request: was a blinking label box at top of every subpage. Restore by switching display back to inline-flex. */
.p-eyebrow{display:none;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);padding:8px 14px;border:1px solid var(--line-2);border-radius:999px;background:rgba(0,0,0,.35);margin-bottom:32px}
.p-eyebrow i{width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint);animation:pulse 1.6s infinite}
.p-hero h1{font-family:var(--display);font-size:clamp(44px,7vw,88px);font-weight:600;letter-spacing:-.03em;line-height:1;margin:0 0 16px;text-wrap:balance}
.p-hero .rot-line{display:flex;justify-content:center;align-items:baseline;gap:.3em;font-family:var(--display);font-size:clamp(44px,7vw,88px);font-weight:600;letter-spacing:-.03em;line-height:1;margin:0 0 32px;min-height:1em}
.p-hero .rot{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:600}
.p-hero .rot::after{content:"";display:inline-block;width:3px;height:.85em;background:oklch(0.82 0.13 200);margin-left:4px;animation:blink 1s step-end infinite;vertical-align:-.08em}
.p-hero .lede{color:var(--muted);font-size:19px;line-height:1.6;max-width:680px;margin:0 auto 40px;font-weight:300;text-wrap:pretty}
.p-hero .lede strong{color:var(--text);font-weight:400}
.p-hero .cta-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.p-hero__note{margin:16px auto 0;color:var(--dim);font-family:var(--mono);font-size:12.5px;letter-spacing:.03em}
@media(max-width:760px){.p-hero{padding:130px 0 60px}}

/* Stat row */
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:linear-gradient(180deg,rgba(12,15,30,.5),rgba(8,10,22,.2))}
.stat-row .st{padding:36px 28px;border-left:1px solid var(--line);text-align:center}
.stat-row .st:first-child{border-left:0}
.stat-row .st .v{font-family:var(--display);font-size:clamp(32px,4vw,48px);font-weight:600;letter-spacing:-.025em;color:#fff;line-height:1;margin-bottom:8px}
.stat-row .st .l{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
@media(max-width:760px){.stat-row{grid-template-columns:repeat(2,1fr)}.stat-row .st{border-left:0;border-top:1px solid var(--line)}.stat-row .st:nth-child(-n+2){border-top:0}.stat-row .st:nth-child(odd){border-right:1px solid var(--line)}}

/* Feature list (big alternating rows) */
.feat-list{display:flex;flex-direction:column;gap:32px}
.feat-row{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;padding:56px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(180deg,rgba(20,24,44,.5),rgba(10,13,26,.75));position:relative;overflow:hidden;transition:border-color .4s, transform .4s cubic-bezier(.2,.8,.2,1)}
.feat-row:hover{border-color:var(--line-2);transform:translateY(-3px)}
.feat-row::before{content:"";position:absolute;inset:0;background:radial-gradient(600px 300px at 0% 100%,rgba(139,92,246,.1),transparent 60%);opacity:0;transition:opacity .5s}
.feat-row:hover::before{opacity:1}
.feat-row.rev{grid-template-columns:1fr 1fr}
.feat-row.rev .feat-copy{order:2}
.feat-row.rev .feat-viz{order:1}
.feat-copy{position:relative;z-index:1}
.feat-copy .num{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:20px;display:flex;align-items:center;gap:10px}
.feat-copy .num::before{content:"";width:28px;height:1px;background:var(--grad)}
.feat-copy .num-badge{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--cyan);background:rgba(125,249,255,.08);border:1px solid rgba(125,249,255,.3);border-radius:4px;padding:2px 7px;text-transform:uppercase}
.feat-copy h3{font-family:var(--display);font-size:clamp(24px,2.6vw,34px);font-weight:500;letter-spacing:-.02em;margin:0 0 14px;line-height:1.15;text-wrap:balance}
.feat-copy p{color:var(--muted);font-size:15.5px;line-height:1.65;margin:0 0 20px;font-weight:300;text-wrap:pretty}
.feat-copy ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.feat-copy ul li{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--muted)}
.feat-copy ul li::before{content:"";flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:var(--grad);margin-top:8px}
.feat-viz{position:relative;z-index:1;min-height:280px;border-radius:16px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(8,10,22,.85),rgba(6,8,18,.95));padding:24px;overflow:hidden;display:flex;align-items:center;justify-content:center}
@media(max-width:960px){.feat-row,.feat-row.rev{grid-template-columns:1fr;gap:24px;padding:36px}.feat-row.rev .feat-copy{order:1}.feat-row.rev .feat-viz{order:2}}

/* Product viz primitives */
.v-head{position:absolute;top:14px;left:16px;right:16px;display:flex;justify-content:space-between;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.v-head .dot{width:8px;height:8px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint)}

/* Dashboard viz */
.viz-dash{width:100%;height:100%;position:relative;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr;gap:10px;padding-top:28px}
.viz-dash .tile{border:1px solid var(--line);border-radius:8px;padding:12px;background:rgba(12,15,30,.6);display:flex;flex-direction:column;gap:6px}
.viz-dash .tile.big{grid-column:span 2}
.viz-dash .tile .lab{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.viz-dash .tile .val{font-family:var(--display);font-size:22px;font-weight:500;letter-spacing:-.02em}
.viz-dash .tile .val.g{color:var(--mint)}
.viz-dash .tile .val.r{color:oklch(0.7 0.2 25)}
.viz-dash .spark{height:40px;background:linear-gradient(180deg,transparent,rgba(120,200,255,.15));border-radius:4px;position:relative;overflow:hidden}
.viz-dash .spark svg{width:100%;height:100%;display:block}

/* Chart viz (for analytics) */
.viz-chart{width:100%;height:100%;padding-top:30px;position:relative}
.viz-chart svg{width:100%;height:100%}

/* Chat viz */
.viz-chat{width:100%;height:100%;padding-top:26px;display:flex;flex-direction:column;gap:10px;justify-content:flex-end}
.viz-chat .bubble{border-radius:12px;padding:11px 14px;font-size:12.5px;line-height:1.5;max-width:85%}
.viz-chat .bubble.u{align-self:flex-end;background:rgba(139,92,246,.14);border:1px solid rgba(139,92,246,.3);color:var(--text)}
.viz-chat .bubble.a{align-self:flex-start;background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--muted)}
.viz-chat .bubble.a u{color:var(--cyan);text-decoration:none;border-bottom:1px dashed var(--cyan)}

/* Report viz */
.viz-rep{width:100%;height:100%;padding-top:30px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.viz-rep .page{border:1px solid var(--line);border-radius:6px;background:rgba(255,255,255,.03);padding:10px;display:flex;flex-direction:column;gap:4px}
.viz-rep .page i{height:4px;background:rgba(255,255,255,.1);border-radius:2px;display:block}
.viz-rep .page i.t{width:70%;height:6px;background:rgba(255,255,255,.25);margin-bottom:4px}
.viz-rep .page i.ch{height:28px;background:linear-gradient(180deg,transparent 50%,rgba(120,200,255,.2) 100%);border-radius:3px;margin:4px 0}
.viz-rep .page i.ac{background:var(--grad)}

/* Graph viz */
.viz-graph{width:100%;height:100%;padding-top:30px}
.viz-graph svg{width:100%;height:100%}

/* Vehicle/asset viz */
.viz-asset{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:8px;justify-content:center}
.viz-asset .row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:rgba(12,15,30,.6);font-size:12.5px}
.viz-asset .row .make{color:var(--text);font-weight:500}
.viz-asset .row .conf{font-family:var(--mono);color:var(--mint);font-size:11px}
.viz-asset .row .val{font-family:var(--display);font-weight:500;font-size:14px;color:var(--text)}
.viz-asset .row .val.up{color:var(--mint)}
.viz-asset .row .val.dn{color:oklch(0.7 0.2 25)}

/* ═══════════════════════════════════════════════════════════════
   New capability viz blocks (trading F2/F3, reporting F1-F4,
   knowledge-graph F4, asset-intelligence F1/F3/F4)
   ═══════════════════════════════════════════════════════════════ */

/* --- AI Signal Stream (trading F2) --- */
.viz-signal{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:10px;justify-content:center}
.viz-signal .sg-gauge{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(12,15,30,.7)}
.viz-signal .sg-gauge-lbl{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.12em}
.viz-signal .sg-gauge-svg{width:90px;height:45px;flex-shrink:0}
.viz-signal .sg-gauge-val{margin-left:auto;font-family:var(--display);font-size:18px;font-weight:600;color:#fff;letter-spacing:-.01em}
.viz-signal .sg-gauge-val b{color:var(--mint);font-size:13px;margin-left:4px}
.viz-signal .sg-stream{display:flex;flex-direction:column;gap:6px}
.viz-signal .sg-row{display:flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:rgba(10,13,24,.7);font-family:var(--mono);font-size:10.5px;opacity:0;animation:sg-in .5s cubic-bezier(.2,.8,.2,1) both}
.viz-signal .sg-row:nth-child(1){animation-delay:.2s}
.viz-signal .sg-row:nth-child(2){animation-delay:.5s}
.viz-signal .sg-row:nth-child(3){animation-delay:.8s}
.viz-signal .sg-tag{padding:2px 7px;border-radius:4px;font-size:9px;letter-spacing:.1em;color:var(--cyan);background:rgba(120,200,255,.12);border:1px solid rgba(120,200,255,.25);flex-shrink:0}
.viz-signal .sg-tag.anom{color:oklch(0.82 0.14 80);background:rgba(232,180,90,.12);border-color:rgba(232,180,90,.3)}
.viz-signal .sg-tag.regi{color:oklch(0.78 0.18 320);background:rgba(230,140,220,.12);border-color:rgba(230,140,220,.3)}
.viz-signal .sg-text{flex:1;color:#cdd5f0;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viz-signal .sg-time{color:var(--dim);font-size:9.5px;flex-shrink:0}
@keyframes sg-in{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}

/* --- Pre-Trade Risk Gates (trading F3) --- */
.viz-gates{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:7px;justify-content:center;font-family:var(--mono)}
.viz-gates .vg-order{padding:8px 11px;border:1px solid rgba(120,200,255,.3);border-radius:8px;background:rgba(120,200,255,.08);color:var(--cyan);font-size:11px;letter-spacing:.05em}
.viz-gates .vg-row{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;padding:7px 11px;border:1px solid var(--line);border-radius:7px;background:rgba(10,13,24,.7);font-size:10.5px}
.viz-gates .vg-ic{font-family:var(--display);font-size:13px;font-weight:700;text-align:center}
.viz-gates .vg-lbl{color:#cdd5f0;letter-spacing:.02em}
.viz-gates .vg-val{color:var(--muted);font-size:10px}
.viz-gates .vg-pass{border-color:rgba(120,200,170,.25);background:rgba(120,200,170,.05)}
.viz-gates .vg-pass .vg-ic{color:var(--mint)}
.viz-gates .vg-warn{border-color:rgba(232,180,90,.3);background:rgba(232,180,90,.06)}
.viz-gates .vg-warn .vg-ic{color:oklch(0.82 0.14 80)}
.viz-gates .vg-block{border-color:rgba(232,100,100,.35);background:rgba(232,100,100,.06)}
.viz-gates .vg-block .vg-ic{color:oklch(0.7 0.2 25)}
.viz-gates .vg-result{margin-top:2px;padding:7px 11px;font-size:10px;color:var(--dim);letter-spacing:.08em;border-top:1px dashed var(--line)}
.viz-gates .vg-result b{color:oklch(0.82 0.14 80);letter-spacing:.1em}

/* --- Kronos Forecast (trading F2) --- */
.viz-forecast{width:100%;height:100%;padding-top:30px;display:flex;align-items:center;justify-content:center}
.viz-forecast svg{width:100%;height:auto;max-height:200px;display:block}

/* --- Scheduled Report Flow (reporting F1) --- */
.viz-sched{width:100%;height:100%;padding-top:30px;display:grid;grid-template-columns:90px 1fr 90px;gap:14px;align-items:center}
.viz-sched .vs-cal{border:1px solid var(--line);border-radius:10px;background:rgba(12,15,30,.7);padding:8px;display:flex;flex-direction:column;gap:6px}
.viz-sched .vs-cal-h{font-family:var(--mono);font-size:9px;color:var(--muted);letter-spacing:.1em;text-align:center;padding-bottom:4px;border-bottom:1px solid var(--line)}
.viz-sched .vs-cal-g{display:grid;grid-template-columns:repeat(5,1fr);gap:2px}
.viz-sched .vs-cal-g i{display:block;height:8px;border-radius:2px;background:rgba(255,255,255,.06)}
.viz-sched .vs-cal-g i.on{background:var(--grad);box-shadow:0 0 10px rgba(139,92,246,.6);animation:vs-pulse 1.6s ease-in-out infinite}
@keyframes vs-pulse{50%{opacity:.55}}
.viz-sched .vs-page{position:relative;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.04);padding:12px;display:flex;flex-direction:column;gap:6px;overflow:hidden;min-height:130px}
.viz-sched .vs-page::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,transparent,var(--mint),transparent);animation:vs-sweep 2.4s ease-in-out infinite}
@keyframes vs-sweep{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.viz-sched .vs-page i{height:4px;background:rgba(255,255,255,.14);border-radius:2px;display:block}
.viz-sched .vs-page i.t{width:60%;height:7px;background:rgba(255,255,255,.3);margin-bottom:3px}
.viz-sched .vs-page i.ch{height:32px;background:linear-gradient(180deg,transparent 40%,rgba(120,200,255,.2));border-radius:3px;margin:4px 0}
.viz-sched .vs-page i.ac{width:46%;background:var(--grad);height:6px}
.viz-sched .vs-page .vs-stamp{position:absolute;top:8px;right:8px;font-family:var(--mono);font-size:8px;color:var(--mint);border:1px dashed rgba(120,200,170,.4);padding:2px 5px;border-radius:3px;letter-spacing:.1em}
.viz-sched .vs-deliv{display:flex;flex-direction:column;gap:6px}
.viz-sched .vs-ch{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:rgba(10,13,24,.7);font-family:var(--mono);font-size:10px;color:#cdd5f0;opacity:0;animation:sg-in .4s ease-out both}
.viz-sched .vs-ch:nth-child(1){animation-delay:1s}
.viz-sched .vs-ch:nth-child(2){animation-delay:1.3s}
.viz-sched .vs-ch:nth-child(3){animation-delay:1.6s}
.viz-sched .vs-ch svg{width:12px;height:12px;color:var(--cyan);flex-shrink:0}
.viz-sched .vs-ch b{margin-left:auto;color:var(--mint);font-size:10px}

/* --- Attribution + Benchmark (reporting F2) --- */
.viz-attr{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:10px;justify-content:center}
.viz-attr .va-chart{width:100%;height:95px;flex-shrink:0}
.viz-attr .va-bars{display:flex;flex-direction:column;gap:4px}
.viz-attr .va-bar{display:grid;grid-template-columns:56px 1fr 50px;gap:8px;align-items:center;font-family:var(--mono);font-size:9.5px}
.viz-attr .va-l{color:var(--dim);letter-spacing:.1em;text-transform:uppercase}
.viz-attr .va-track{height:14px;border-radius:3px;background:rgba(255,255,255,.04);position:relative;overflow:hidden}
.viz-attr .va-fill{position:absolute;left:0;top:0;bottom:0;border-radius:3px;animation:va-grow 1.1s cubic-bezier(.2,.8,.2,1) both}
.viz-attr .va-fill.p{background:linear-gradient(90deg,oklch(0.72 0.20 270),oklch(0.82 0.13 200))}
.viz-attr .va-fill.a{background:linear-gradient(90deg,oklch(0.84 0.14 160),oklch(0.7 0.15 150))}
.viz-attr .va-fill.n{background:linear-gradient(90deg,oklch(0.7 0.2 25),oklch(0.6 0.2 15));right:auto}
.viz-attr .va-fill.net{background:linear-gradient(90deg,oklch(0.82 0.13 200),oklch(0.72 0.20 270),oklch(0.78 0.18 320))}
.viz-attr .va-bar:nth-child(1) .va-fill{animation-delay:.1s}
.viz-attr .va-bar:nth-child(2) .va-fill{animation-delay:.2s}
.viz-attr .va-bar:nth-child(3) .va-fill{animation-delay:.3s}
.viz-attr .va-bar:nth-child(4) .va-fill{animation-delay:.4s}
.viz-attr .va-bar:nth-child(5) .va-fill{animation-delay:.5s}
@keyframes va-grow{from{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1)}}
.viz-attr .va-v{color:#fff;text-align:right;font-size:10px}

/* --- Multi-format export (reporting F3) --- */
.viz-formats{width:100%;height:100%;padding-top:30px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:8px}
.viz-formats .vf-cell{border:1px solid var(--line);border-radius:10px;background:rgba(10,13,24,.75);padding:8px;display:flex;flex-direction:column;gap:5px;overflow:hidden;position:relative}
.viz-formats .vf-hd{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:10px;letter-spacing:.1em}
.viz-formats .vf-ext{font-weight:600}
.viz-formats .vf-dot{width:6px;height:6px;border-radius:50%;opacity:.9}
.viz-formats .vf-body{flex:1;border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:3px;font-family:var(--mono);overflow:hidden}
.viz-formats .vf-pdf{border-color:rgba(255,100,100,.3)}
.viz-formats .vf-pdf .vf-ext{color:oklch(0.68 0.18 28)}
.viz-formats .vf-pdf .vf-dot{background:oklch(0.68 0.18 28)}
.viz-formats .vf-pdf .vf-body{background:rgba(255,255,255,.03)}
.viz-formats .vf-pdf .vf-body i{display:block;height:3px;background:rgba(255,255,255,.14);border-radius:1px}
.viz-formats .vf-pdf .vf-body i.t{width:60%;height:4px;background:rgba(255,255,255,.3)}
.viz-formats .vf-pdf .vf-body i.ch{height:18px;background:linear-gradient(180deg,rgba(255,100,100,.05),rgba(255,100,100,.2));margin:2px 0}
.viz-formats .vf-xlsx{border-color:rgba(90,200,140,.3)}
.viz-formats .vf-xlsx .vf-ext{color:oklch(0.78 0.18 150)}
.viz-formats .vf-xlsx .vf-dot{background:oklch(0.78 0.18 150)}
.viz-formats .vf-xlsx .vf-body{background:rgba(12,18,14,.6);display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(4,1fr);gap:1px;padding:4px}
.viz-formats .vf-xlsx .vf-body i{background:rgba(90,200,140,.08);display:block;border-radius:1px}
.viz-formats .vf-xlsx .vf-body i.hd{background:rgba(90,200,140,.25)}
.viz-formats .vf-xlsx .vf-body i.sel{background:rgba(90,200,140,.5);box-shadow:0 0 0 1px oklch(0.78 0.18 150)}
.viz-formats .vf-pptx{border-color:rgba(232,155,90,.35)}
.viz-formats .vf-pptx .vf-ext{color:oklch(0.78 0.16 60)}
.viz-formats .vf-pptx .vf-dot{background:oklch(0.78 0.16 60)}
.viz-formats .vf-pptx .vf-body{background:rgba(25,20,14,.5);padding:6px;gap:4px}
.viz-formats .vf-pptx .vf-body .slide{flex:1;border:1px solid rgba(232,155,90,.2);border-radius:3px;padding:4px;display:flex;flex-direction:column;gap:3px;background:rgba(255,240,220,.02)}
.viz-formats .vf-pptx .vf-body .slide i{display:block;height:3px;background:rgba(232,155,90,.3);border-radius:1px}
.viz-formats .vf-pptx .vf-body .slide i.t{height:5px;width:55%;background:rgba(232,155,90,.6);margin-bottom:3px}
.viz-formats .vf-pptx .vf-body .slide i.ch{flex:1;background:linear-gradient(135deg,rgba(232,155,90,.15),rgba(232,155,90,.04));border-radius:2px}
.viz-formats .vf-html{border-color:rgba(180,140,255,.35)}
.viz-formats .vf-html .vf-ext{color:oklch(0.74 0.15 290)}
.viz-formats .vf-html .vf-dot{background:oklch(0.74 0.15 290)}
.viz-formats .vf-html .vf-body{background:rgba(20,15,30,.5);display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:4px}
.viz-formats .vf-html .vf-body i{display:block;background:rgba(180,140,255,.1);border-radius:2px}
.viz-formats .vf-html .vf-body i.big{grid-column:1/-1;background:linear-gradient(90deg,rgba(180,140,255,.2),rgba(120,200,255,.15));height:12px}
.viz-formats .vf-html .vf-body i.sp{background:rgba(180,140,255,.2);height:8px}

/* --- Regulatory templates + audit trail (reporting F4) --- */
.viz-regs{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:5px;justify-content:center}
.viz-regs .vrg-tpl{display:grid;grid-template-columns:72px 1fr 22px;gap:10px;align-items:center;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:rgba(10,13,24,.7);font-family:var(--mono)}
.viz-regs .vrg-code{font-family:var(--display);font-size:12px;font-weight:600;color:var(--cyan);letter-spacing:.02em;padding:3px 7px;background:rgba(120,200,255,.1);border:1px solid rgba(120,200,255,.3);border-radius:4px;text-align:center}
.viz-regs .vrg-name{font-size:10px;color:var(--muted);letter-spacing:.04em}
.viz-regs .vrg-ok{font-family:var(--display);color:var(--mint);font-size:15px;font-weight:700;text-align:center}
.viz-regs .vrg-audit{margin-top:6px;padding:8px 11px;border:1px dashed rgba(120,200,170,.4);border-radius:8px;background:rgba(120,200,170,.05);display:flex;flex-direction:column;gap:3px}
.viz-regs .vrg-audit-h{font-family:var(--mono);font-size:9px;color:var(--mint);letter-spacing:.14em}
.viz-regs .vrg-audit-row{font-family:var(--mono);font-size:9.5px;color:#cdd5f0;letter-spacing:.02em}
.viz-regs .vrg-audit-row span.h{color:var(--cyan)}

/* --- KG graph motion (kg F3) --- */
.viz-graph svg .kg-node{animation:kg-pulse 2s ease-in-out infinite}
.viz-graph svg .kg-node.d1{animation-delay:.3s}
.viz-graph svg .kg-node.d2{animation-delay:.6s}
.viz-graph svg .kg-node.d3{animation-delay:.9s}
@keyframes kg-pulse{50%{filter:drop-shadow(0 0 6px oklch(0.72 0.20 270))}}

/* --- Perimeter / RBAC (kg F4) --- */
.viz-perim{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center}
.viz-perim svg{width:100%;max-height:150px;flex-shrink:0}
.viz-perim .vpr-tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;width:100%}
.viz-perim .vpr-tag{padding:5px 10px;border:1px solid rgba(120,200,170,.3);border-radius:6px;background:rgba(120,200,170,.06);color:var(--mint);font-family:var(--mono);font-size:9.5px;letter-spacing:.05em}

/* --- Contract clauses (asset F1) --- */
.viz-clauses{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:6px;justify-content:center}
.viz-clauses .vcl-h{font-family:var(--mono);font-size:10px;color:var(--cyan);letter-spacing:.08em;padding:6px 10px;border:1px solid rgba(120,200,255,.25);border-radius:6px;background:rgba(120,200,255,.06)}
.viz-clauses .vcl{display:grid;grid-template-columns:22px 1fr;gap:10px;align-items:start;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:rgba(10,13,24,.7);opacity:0;animation:sg-in .5s ease-out both}
.viz-clauses .vcl:nth-of-type(1){animation-delay:.15s}
.viz-clauses .vcl:nth-of-type(2){animation-delay:.4s}
.viz-clauses .vcl:nth-of-type(3){animation-delay:.65s}
.viz-clauses .vcl:nth-of-type(4){animation-delay:.9s}
.viz-clauses .vcl-ic{font-family:var(--display);font-weight:700;font-size:13px;text-align:center;line-height:1.2}
.viz-clauses .vcl-t{font-size:11px;color:#fff;font-weight:500;letter-spacing:-.005em}
.viz-clauses .vcl-s{font-family:var(--mono);font-size:9.5px;color:var(--muted);margin-top:2px;letter-spacing:.02em}
.viz-clauses .vcl.ok{border-color:rgba(120,200,170,.25);background:rgba(120,200,170,.05)}
.viz-clauses .vcl.ok .vcl-ic{color:var(--mint)}
.viz-clauses .vcl.warn{border-color:rgba(232,180,90,.3);background:rgba(232,180,90,.05)}
.viz-clauses .vcl.warn .vcl-ic{color:oklch(0.82 0.14 80)}
.viz-clauses .vcl.block{border-color:rgba(232,100,100,.35);background:rgba(232,100,100,.05)}
.viz-clauses .vcl.block .vcl-ic{color:oklch(0.7 0.2 25)}

/* --- Dealer scorecard (asset F3) --- */
.viz-dealers{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:8px;justify-content:center;position:relative}
.viz-dealers .vdl-bg{width:100%;height:40px;margin-bottom:4px}
.viz-dealers .vdl-list{display:flex;flex-direction:column;gap:6px}
.viz-dealers .vdl-row{display:grid;grid-template-columns:22px 1fr auto 50px;gap:10px;align-items:center;padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:rgba(10,13,24,.7);font-family:var(--mono);font-size:11px}
.viz-dealers .vdl-ic{font-family:var(--display);font-size:13px;font-weight:700;text-align:center}
.viz-dealers .vdl-name{color:#fff;font-weight:500;letter-spacing:-.005em;font-family:var(--display);font-size:12px}
.viz-dealers .vdl-score{color:var(--cyan);font-weight:600}
.viz-dealers .vdl-delta{text-align:right;font-size:10px}
.viz-dealers .vdl-up{border-color:rgba(120,200,170,.25);background:rgba(120,200,170,.05)}
.viz-dealers .vdl-up .vdl-delta{color:var(--mint)}
.viz-dealers .vdl-up .vdl-ic{color:var(--mint)}
.viz-dealers .vdl-neutral .vdl-delta{color:var(--muted)}
.viz-dealers .vdl-anom{border-color:rgba(232,100,100,.35);background:rgba(232,100,100,.06)}
.viz-dealers .vdl-anom .vdl-delta{color:oklch(0.7 0.2 25)}
.viz-dealers .vdl-anom .vdl-ic{color:oklch(0.82 0.14 80)}

/* --- Exposure breakdown (asset F4) --- */
.viz-exposure{width:100%;height:100%;padding-top:30px;display:flex;flex-direction:column;gap:11px;justify-content:center}
.viz-exposure .vex-sec{display:flex;flex-direction:column;gap:5px}
.viz-exposure .vex-lbl{font-family:var(--mono);font-size:9.5px;color:var(--dim);letter-spacing:.14em}
.viz-exposure .vex-bar{display:flex;height:22px;border-radius:5px;overflow:hidden;border:1px solid var(--line);background:rgba(10,13,24,.7)}
.viz-exposure .vex-seg{display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;color:#fff;font-weight:600;letter-spacing:.02em;white-space:nowrap;overflow:hidden;animation:va-grow 1.1s cubic-bezier(.2,.8,.2,1) both}
.viz-exposure .vex-ev{background:linear-gradient(90deg,oklch(0.82 0.13 200),oklch(0.72 0.20 270));animation-delay:.1s}
.viz-exposure .vex-hy{background:linear-gradient(90deg,oklch(0.84 0.14 160),oklch(0.78 0.14 130));animation-delay:.25s}
.viz-exposure .vex-ic{background:linear-gradient(90deg,oklch(0.72 0.13 45),oklch(0.68 0.16 30));animation-delay:.4s}
.viz-exposure .vex-pills{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.viz-exposure .vex-pill{border:1px solid var(--line);border-radius:6px;background:rgba(10,13,24,.7);padding:6px 4px;display:flex;flex-direction:column;align-items:center;gap:2px}
.viz-exposure .vex-pill-t{font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.02em}
.viz-exposure .vex-pill-v{font-family:var(--display);font-size:13px;color:#fff;font-weight:600}
.viz-exposure .vex-pill.hi{border-color:rgba(139,92,246,.4);background:linear-gradient(180deg,rgba(139,92,246,.12),rgba(139,92,246,.04))}
.viz-exposure .vex-pill.hi .vex-pill-v{color:var(--cyan)}
.viz-exposure .vex-window{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border:1px dashed rgba(120,200,170,.35);border-radius:8px;background:rgba(120,200,170,.05)}
.viz-exposure .vex-win-l{font-family:var(--mono);font-size:9px;color:var(--mint);letter-spacing:.12em}
.viz-exposure .vex-win-v{font-family:var(--display);font-size:12px;color:#fff;font-weight:600}

/* Related products (at bottom of product pages) */
.related{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:24px}
.related .rel{padding:22px;border:1px solid var(--line);border-radius:14px;background:rgba(20,24,44,.35);color:inherit;text-decoration:none;transition:all .3s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;gap:12px;position:relative;overflow:hidden}
.related .rel:hover{border-color:var(--line-2);background:rgba(30,36,68,.6);transform:translateY(-3px)}
.related .rel .rnum{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--muted)}
.related .rel h4{font-family:var(--display);font-size:18px;font-weight:500;letter-spacing:-.01em;margin:0;line-height:1.2}
.related .rel p{margin:0;font-size:13px;color:var(--muted);line-height:1.5}
.related .rel svg{color:var(--muted);margin-top:auto;align-self:flex-end;transition:transform .3s, color .3s}
.related .rel:hover svg{color:var(--cyan);transform:translate(4px,-4px)}
@media(max-width:960px){.related{grid-template-columns:repeat(2,1fr)}}
@media(max-width:500px){.related{grid-template-columns:1fr}}

/* Back-to-home link */
.back-link{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);transition:color .2s}
.back-link:hover{color:var(--text)}
.back-link svg{transition:transform .3s}
.back-link:hover svg{transform:translateX(-3px)}
.subnav{padding:18px 28px 0;max-width:1280px;margin:0 auto;position:relative;z-index:3}


/* ───────── LIVE DEMO (trading dashboard) ───────── */
.demo-dash{border:1px solid var(--line);border-radius:20px;background:linear-gradient(180deg,#0b0f1f,#060912);overflow:hidden;box-shadow:0 40px 80px -40px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.02) inset;position:relative}
.demo-dash::before{content:"";position:absolute;inset:0;background:radial-gradient(800px 300px at 50% -10%,rgba(139,92,246,.08),transparent 70%);pointer-events:none}
.demo-topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;border-bottom:1px solid var(--line);background:rgba(0,0,0,.3);font-family:var(--mono);font-size:11px;position:relative;z-index:2}
.dbrand{display:flex;align-items:center;gap:12px;color:var(--muted)}
.dblip{width:8px;height:8px;border-radius:50%;background:oklch(0.84 0.14 160);box-shadow:0 0 10px oklch(0.84 0.14 160);animation:dpulse 1.6s ease-in-out infinite}
@keyframes dpulse{0%,100%{opacity:1}50%{opacity:.3}}
.dtit{color:var(--text);letter-spacing:.15em;font-weight:600}
.dsesh{color:var(--dim);letter-spacing:.08em}
.dctrl{display:flex;gap:2px;background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:8px;padding:3px}
.dtab{background:transparent;border:0;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.05em;padding:6px 12px;border-radius:6px;cursor:pointer;transition:.2s;text-transform:uppercase}
.dtab:hover{color:var(--text)}
.dtab.active{background:rgba(139,92,246,.15);color:#fff;box-shadow:0 0 0 1px rgba(139,92,246,.3) inset}
.dclock{display:flex;align-items:center;gap:8px;color:var(--muted);font-variant-numeric:tabular-nums}
.dpulse{width:6px;height:6px;border-radius:50%;background:oklch(0.84 0.14 160);animation:dpulse 2s ease-in-out infinite;display:inline-block}
.dtz{color:var(--dim)}

.demo-body{display:grid;grid-template-columns:320px 1fr 280px;gap:14px;padding:14px;position:relative;z-index:1}
@media(max-width:1100px){.demo-body{grid-template-columns:1fr 1fr;gap:12px}.demo-col-c{grid-column:span 2}}
@media(max-width:720px){.demo-body{grid-template-columns:1fr}.demo-col-c{grid-column:auto}}
.demo-col{display:flex;flex-direction:column;gap:14px;min-width:0}
.dcard{border:1px solid var(--line);border-radius:14px;background:rgba(10,14,28,.6);padding:16px;min-width:0;position:relative}
.dcard-hero{background:linear-gradient(180deg,rgba(22,28,56,.7),rgba(10,14,28,.6))}
.dhd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px;font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}
.dhd b{color:var(--text);font-variant-numeric:tabular-nums}
.dmeta{color:var(--dim);text-transform:none;letter-spacing:0;display:flex;align-items:center;gap:6px}
.dchip{font-family:var(--mono);font-size:10px;padding:3px 7px;border-radius:5px;letter-spacing:.05em;font-variant-numeric:tabular-nums}
.dchip.up{background:rgba(120,200,170,.12);color:oklch(0.84 0.14 160);border:1px solid rgba(120,200,170,.25)}
.dchip.dn{background:rgba(230,130,140,.12);color:oklch(0.76 0.14 20);border:1px solid rgba(230,130,140,.25)}
.dhero-val{font-family:var(--display);font-size:34px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-bottom:6px;transition:color .3s}
.dhero-val.flash-up{color:oklch(0.84 0.14 160)}
.dhero-val.flash-dn{color:oklch(0.76 0.14 20)}
.dspark{height:56px;margin-bottom:14px}
.dspark svg{width:100%;height:100%;display:block}
.dstats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;padding-top:14px;border-top:1px solid var(--line)}
.dstats > div{display:flex;flex-direction:column;gap:4px;min-width:0}
.dl{font-family:var(--mono);font-size:10px;color:var(--dim);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv{font-family:var(--mono);font-size:12px;color:var(--text);font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap}
.dv.g{color:oklch(0.84 0.14 160)}
.dv.r{color:oklch(0.76 0.14 20)}

.dtable{display:flex;flex-direction:column;gap:1px;font-family:var(--mono);font-size:11.5px;font-variant-numeric:tabular-nums}
.drow{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:8px 4px;border-bottom:1px solid rgba(255,255,255,.04);transition:background .3s}
.drow:last-child{border-bottom:0}
.drow.flash{background:rgba(139,92,246,.08)}
.drow .dsymbol{color:var(--text);font-weight:500}
.drow .dsz{color:var(--dim);font-size:10.5px}
.drow .dpnl{text-align:right;font-weight:500;min-width:70px}
.drow .dpnl.up{color:oklch(0.84 0.14 160)}
.drow .dpnl.dn{color:oklch(0.76 0.14 20)}

.dcard-chart{height:100%;display:flex;flex-direction:column}
.dsym{display:flex;align-items:baseline;gap:12px;font-family:var(--mono);text-transform:none;letter-spacing:0}
.dsymname{color:var(--text);font-weight:600;font-size:13px;letter-spacing:.05em}
.dprice{color:var(--text);font-size:22px;font-variant-numeric:tabular-nums;font-weight:500;font-family:var(--display);transition:color .3s}
.dprice.flash-up{color:oklch(0.84 0.14 160)}
.dprice.flash-dn{color:oklch(0.76 0.14 20)}
.dtf{display:flex;gap:2px}
.dtf-btn{background:transparent;border:1px solid transparent;color:var(--dim);font-family:var(--mono);font-size:10px;padding:4px 8px;border-radius:4px;cursor:pointer;letter-spacing:.05em}
.dtf-btn:hover{color:var(--muted)}
.dtf-btn.active{color:var(--text);background:rgba(255,255,255,.05);border-color:var(--line)}
.dchart{flex:1;min-height:240px;position:relative;margin:6px -4px 10px}
.dchart svg{width:100%;height:100%;display:block}
.dsymrow{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding-top:12px;border-top:1px solid var(--line)}
.dsq{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:rgba(0,0,0,.25);cursor:pointer;transition:.2s;min-width:0}
.dsq:hover{border-color:var(--line-2);background:rgba(139,92,246,.04)}
.dsq.active{border-color:rgba(139,92,246,.4);background:rgba(139,92,246,.08)}
.dsq-sym{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.05em;font-weight:500}
.dsq-px{font-family:var(--display);font-size:14px;color:var(--text);font-variant-numeric:tabular-nums;font-weight:500;transition:color .3s}
.dsq-px.flash-up{color:oklch(0.84 0.14 160)}
.dsq-px.flash-dn{color:oklch(0.76 0.14 20)}
.dsq-chg{font-family:var(--mono);font-size:10px}
.dsq-chg.up{color:oklch(0.84 0.14 160)}
.dsq-chg.dn{color:oklch(0.76 0.14 20)}

.dbook{display:flex;flex-direction:column;font-family:var(--mono);font-size:11px;font-variant-numeric:tabular-nums}
.dbk{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:4px 6px;position:relative;align-items:center}
.dbk .dbx{position:absolute;inset:0 auto 0 auto;right:0;border-radius:3px;opacity:.18;z-index:0}
.dbk.ask .dbx{background:oklch(0.76 0.14 20)}
.dbk.bid .dbx{background:oklch(0.84 0.14 160)}
.dbk > *{position:relative;z-index:1}
.dbk.ask .dbp{color:oklch(0.78 0.12 20)}
.dbk.bid .dbp{color:oklch(0.82 0.14 160)}
.dbk .dbs{color:var(--muted);text-align:right}
.dbk .dbt{color:var(--dim);text-align:right;font-size:10px}
.dbmid{margin:8px -6px;padding:8px 10px;background:linear-gradient(90deg,rgba(139,92,246,.08),rgba(139,92,246,.02));border-top:1px solid rgba(139,92,246,.2);border-bottom:1px solid rgba(139,92,246,.2);display:flex;justify-content:space-between;color:var(--cyan);font-size:11px}

.dcard-alerts{max-height:340px;overflow:hidden;display:flex;flex-direction:column}
.dalerts{overflow:hidden;display:flex;flex-direction:column;gap:6px;flex:1;position:relative}

/* tab-driven emphasis */
.demo-dash[data-view] .dcard{transition:opacity .3s, box-shadow .3s, border-color .3s}
.demo-dash[data-view="risk"] .dcard:not([data-card="aum"]):not([data-card="positions"]){opacity:.38}
.demo-dash[data-view="risk"] .dcard[data-card="aum"],
.demo-dash[data-view="risk"] .dcard[data-card="positions"]{border-color:rgba(230,130,140,.35);box-shadow:0 0 0 1px rgba(230,130,140,.15) inset}
.demo-dash[data-view="flow"] .dcard:not([data-card="chart"]):not([data-card="book"]){opacity:.38}
.demo-dash[data-view="flow"] .dcard[data-card="chart"],
.demo-dash[data-view="flow"] .dcard[data-card="book"]{border-color:rgba(139,92,246,.35);box-shadow:0 0 0 1px rgba(139,92,246,.15) inset}
.demo-dash[data-view="alerts"] .dcard:not([data-card="alerts"]){opacity:.38}
.demo-dash[data-view="alerts"] .dcard[data-card="alerts"]{border-color:rgba(94,234,212,.35);box-shadow:0 0 0 1px rgba(94,234,212,.15) inset}
.dalert{display:flex;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:rgba(0,0,0,.25);font-family:var(--mono);font-size:10.5px;line-height:1.45;animation:aIn .4s cubic-bezier(.2,.8,.2,1);flex:0 0 auto}
@keyframes aIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.dalert .at{color:var(--dim);flex:0 0 44px}
.dalert .ab{color:var(--muted);flex:1;min-width:0}
.dalert .ab b{color:var(--text);font-weight:500}
.dalert.info{border-color:rgba(139,92,246,.25)}
.dalert.info .ai{color:var(--cyan)}
.dalert.warn{border-color:rgba(230,180,100,.28)}
.dalert.warn .ai{color:oklch(0.82 0.14 80)}
.dalert.success{border-color:rgba(120,200,170,.28)}
.dalert.success .ai{color:oklch(0.84 0.14 160)}
.dalert .ai{flex:0 0 14px;font-weight:600}

.demo-foot{display:flex;justify-content:space-between;gap:16px;padding:10px 20px;border-top:1px solid var(--line);background:rgba(0,0,0,.3);font-family:var(--mono);font-size:10.5px;color:var(--dim);letter-spacing:.05em}
.df-l{display:flex;align-items:center;gap:8px;color:var(--muted)}
.df-r span{color:var(--muted)}

.demo-cta-note{text-align:center;margin:28px 0 0;color:var(--muted);font-size:14px}
.demo-cta-note a{color:var(--cyan);font-weight:500}
.demo-cta-note a:hover{color:#fff}


/* ───────── HERO ORRERY (animated centerpiece) ───────── */
.orrery{position:relative;width:min(560px,100%);height:min(560px,90vw);margin:0 auto;isolation:isolate;flex:0 0 auto}
@property --a{syntax:"<angle>";inherits:false;initial-value:0deg}
.orr-rings{position:absolute;inset:0;width:100%;height:100%;animation:orrSpinSlow 60s linear infinite}
@keyframes orrSpinSlow{to{transform:rotate(360deg)}}

.orr-orbit{position:absolute;inset:0;border-radius:50%;pointer-events:none}
.orr-orbit-1{}
.orr-orbit-2{inset:18%;animation:orrSpin 60s linear infinite reverse}
@keyframes orrSpin{to{transform:rotate(360deg)}}

.orr-chip{position:absolute;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:6px 12px;border:1px solid var(--line-2);border-radius:999px;background:rgba(8,10,22,.75);backdrop-filter:blur(8px);display:inline-flex;align-items:center;gap:8px;white-space:nowrap;z-index:2}
.orr-chip.top{top:8px;left:50%;transform:translateX(-50%)}
.orr-chip.right{right:8px;top:50%;transform:translateY(-50%)}
.orr-chip.bottom{bottom:8px;left:50%;transform:translateX(-50%)}
.orr-chip.left{left:8px;top:50%;transform:translateY(-50%)}
@keyframes orrCounter{to{}}
.orr-chip i.pulse{width:6px;height:6px;border-radius:50%;background:var(--mint);box-shadow:0 0 8px var(--mint);animation:pulse 1.6s infinite}

.orr-doc{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) rotate(var(--a,0deg)) translateY(-170px) rotate(calc(-1 * var(--a,0deg)));font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--dim);padding:3px 7px;border:1px solid rgba(255,255,255,.06);border-radius:4px;background:rgba(0,0,0,.4)}

.orr-core{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:62%;aspect-ratio:1/1;border:1px solid var(--line-2);border-radius:16px;overflow:hidden;background:linear-gradient(180deg,rgba(16,20,40,.92),rgba(8,10,22,.98));backdrop-filter:blur(12px);box-shadow:0 20px 60px -10px rgba(0,0,0,.7),0 0 0 1px rgba(139,92,246,.08) inset;display:flex;flex-direction:column;z-index:2}
.orr-core-header{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:10px;letter-spacing:.08em;color:var(--dim)}
.orr-core-header .dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 8px var(--mint);animation:pulse 1.4s infinite;flex:0 0 auto}
.orr-core-header .lbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.orr-core-header .lbl b{color:var(--text);font-weight:500;text-transform:lowercase}
.orr-core-header .live{color:var(--mint);letter-spacing:.14em}

.orr-core .sc-stage{flex:1 1 auto;position:relative;overflow:hidden;padding:12px;min-height:200px;display:block}
.orr-core .sc-scene{position:absolute;inset:12px;display:none;flex-direction:column;opacity:1;transform:none;transition:none}
.orr-core .sc-scene.in{display:flex}
.orr-core .sc-scene.in{opacity:1;transform:none}
.orr-core .sc-eyebrow{display:none}
.orr-core .sc-title{display:none}
.orr-core .sc-body{flex:1;position:relative;min-height:0;overflow:auto}
.orr-core .sc-stage{flex:1 1 0;position:relative;overflow:hidden;padding:12px;min-height:180px}
.orr-core .sc-dots{display:flex;gap:4px;padding:8px 12px;border-top:1px solid var(--line);background:rgba(0,0,0,.35);justify-content:center}
.orr-core .sc-dots a{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;border:1px solid transparent;cursor:pointer;transition:.25s;text-decoration:none;padding:0}
.orr-core .sc-dots a span{width:6px;height:6px;border-radius:50%;background:var(--line-2);transition:.25s}
.orr-core .sc-dots a em{display:none}
.orr-core .sc-dots a:hover{background:rgba(255,255,255,.04)}
.orr-core .sc-dots a.active span{background:var(--grad);box-shadow:0 0 8px rgba(139,92,246,.5);width:18px;border-radius:3px}

/* scale down the scenes inside the small core */
.orr-core .scx-trading,.orr-core .scx-lease{font-size:10px}
.orr-core .scx-trading .sct-row,.orr-core .scx-lease .ls-row{padding:4px 2px;gap:6px}
.orr-core .scx-report{gap:8px}
.orr-core .scx-report .rp-doc{padding:8px 8px;gap:4px}
.orr-core .scx-report .rp-ch{height:30px;margin:2px -8px;padding:3px 8px;gap:2px}
.orr-core .scx-kg .kg-chat{font-size:10px;gap:5px}
.orr-core .scx-kg .kg-b{padding:5px 8px}

/* particles */
.orr-particles{position:absolute;inset:0;pointer-events:none}
.orr-particles span{position:absolute;left:var(--x);top:var(--y);width:4px;height:4px;border-radius:50%;background:oklch(0.82 0.13 200);box-shadow:0 0 12px oklch(0.82 0.13 200);animation:orrFloat 4s ease-in-out infinite;animation-delay:var(--d);opacity:.7}
@keyframes orrFloat{0%,100%{transform:translate(0,0);opacity:.4}50%{transform:translate(-20px,-30px);opacity:1}}

/* scan line */
.orr-scan{position:absolute;left:20%;right:20%;top:0;height:1px;background:linear-gradient(90deg,transparent,oklch(0.82 0.13 200) 50%,transparent);box-shadow:0 0 20px oklch(0.82 0.13 200);animation:orrScan 3.5s cubic-bezier(.4,0,.6,1) infinite;z-index:1;opacity:.7}
@keyframes orrScan{0%{top:15%}50%{top:85%}100%{top:15%}}

/* corner telemetry */
.orr-tel{position:absolute;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--dim);display:flex;flex-direction:column;gap:3px;text-transform:uppercase;z-index:3}
.orr-tel .k{color:var(--dim);font-size:9px}
.orr-tel .v{color:var(--text);font-size:13px;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.orr-tel.tl{top:8px;left:8px;text-align:left}
.orr-tel.tr{top:8px;right:8px;text-align:right;align-items:flex-end}
.orr-tel.bl{bottom:8px;left:8px;text-align:left}
.orr-tel.br{bottom:8px;right:8px;text-align:right;align-items:flex-end}

@media(max-width:1020px){.orrery{max-width:460px}.orr-chip{transform:translate(-50%,-50%) rotate(var(--a,0deg)) translateY(-215px) rotate(calc(-1 * var(--a,0deg)))}.orr-doc{transform:translate(-50%,-50%) rotate(var(--a,0deg)) translateY(-140px) rotate(calc(-1 * var(--a,0deg)))}}
@media(max-width:640px){.orrery{max-width:360px}.orr-chip{font-size:9.5px;padding:4px 9px;transform:translate(-50%,-50%) rotate(var(--a,0deg)) translateY(-165px) rotate(calc(-1 * var(--a,0deg)))}.orr-doc{display:none}.orr-tel .v{font-size:11px}}
.showcase{position:relative;border:1px solid var(--line-2);border-radius:20px;overflow:hidden;background:linear-gradient(180deg,rgba(16,20,40,.85),rgba(8,10,22,.95));backdrop-filter:blur(20px);box-shadow:0 30px 80px -20px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.02) inset;min-height:440px;display:flex;flex-direction:column}
.sc-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}
.sc-header .lhs{display:flex;gap:6px}
.sc-header .lhs i{width:10px;height:10px;border-radius:50%;background:#2a3050;display:block}
.sc-header .mid{font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.08em;text-transform:lowercase}
.sc-header .mid b{color:var(--text);font-weight:500}
.sc-header .rhs{display:flex;gap:8px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--mint);letter-spacing:.1em}
.sc-header .rhs .live{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint);animation:pulse 1.4s infinite}
.sc-stage{flex:1;position:relative;overflow:hidden;padding:24px;min-height:340px}
.sc-scene{position:absolute;inset:24px;display:flex;flex-direction:column;opacity:0;transform:translateY(8px);transition:opacity .55s cubic-bezier(.2,.8,.2,1),transform .55s cubic-bezier(.2,.8,.2,1)}
.sc-scene.in{opacity:1;transform:none}
.sc-eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase;margin-bottom:10px}
.sc-title{font-family:var(--display);font-size:20px;font-weight:600;letter-spacing:-.01em;margin:0 0 16px;color:var(--text)}
.sc-title b{color:#fff}
.sc-body{flex:1;position:relative;min-height:200px}
.sc-dots{display:flex;gap:4px;padding:14px 18px;border-top:1px solid var(--line);background:rgba(0,0,0,.2)}
.sc-dots a{flex:1;display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;border:1px solid transparent;color:var(--dim);font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;transition:.25s;min-width:0;cursor:pointer}
.sc-dots a span{width:6px;height:6px;border-radius:50%;background:var(--line-2);flex:0 0 6px;transition:.25s}
.sc-dots a em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sc-dots a:hover{color:var(--muted);background:rgba(255,255,255,.02)}
.sc-dots a.active{color:var(--text);background:rgba(139,92,246,.08);border-color:rgba(139,92,246,.25)}
.sc-dots a.active span{background:var(--grad);box-shadow:0 0 8px rgba(139,92,246,.5)}

/* Scene 1 — Trading */
.scx-trading{font-family:var(--mono);font-size:11px}
.scx-trading .sct-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:7px 2px;border-bottom:1px solid rgba(255,255,255,.05);align-items:center}
.scx-trading .sct-row:last-child{border:0}
.scx-trading .sct-s{color:var(--text);font-weight:500}
.scx-trading .sct-p{color:var(--muted);font-variant-numeric:tabular-nums}
.scx-trading .sct-c{font-variant-numeric:tabular-nums}
.scx-trading .up{color:oklch(0.84 0.14 160)}
.scx-trading .dn{color:oklch(0.76 0.14 20)}

/* Scene 2 — Reporting */
.scx-report{display:flex;gap:14px;align-items:stretch;height:100%}
.scx-report .rp-doc{flex:1;border:1px solid var(--line);border-radius:10px;padding:14px 12px;background:rgba(0,0,0,.3);display:flex;flex-direction:column;gap:7px;min-width:0;position:relative;overflow:hidden}
.scx-report .rp-doc::before{content:"";position:absolute;top:0;left:-40%;width:40%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);animation:rpscan 3.2s ease-in-out infinite}
@keyframes rpscan{50%,100%{left:120%}}
.scx-report .rp-t{height:10px;background:var(--grad);opacity:.8;border-radius:2px;width:60%}
.scx-report .rp-l{height:4px;background:rgba(255,255,255,.1);border-radius:2px}
.scx-report .rp-l.s{width:70%}
.scx-report .rp-l.m{width:88%}
.scx-report .rp-ch{height:46px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:4px -12px;padding:6px 12px;display:flex;align-items:flex-end;gap:3px}
.scx-report .rp-ch i{flex:1;background:var(--grad);opacity:.7;border-radius:1px}

/* Scene 3 — Knowledge graph */
.scx-kg{height:100%;display:flex;flex-direction:column}
.scx-kg .kg-chat{flex:1;display:flex;flex-direction:column;gap:8px;font-family:var(--mono);font-size:11px;overflow:hidden}
.scx-kg .kg-b{padding:7px 10px;border-radius:8px;max-width:85%;line-height:1.45}
.scx-kg .kg-u{background:rgba(255,255,255,.06);align-self:flex-end;color:var(--text)}
.scx-kg .kg-a{background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.22);color:#d7ddff;align-self:flex-start}
.scx-kg .kg-a u{color:var(--cyan);text-decoration:none;border-bottom:1px dashed var(--cyan)}

/* Scene 4 — Leasing */
.scx-lease{font-family:var(--mono);font-size:11px}
.scx-lease .ls-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:8px 2px;border-bottom:1px solid rgba(255,255,255,.05);align-items:center}
.scx-lease .ls-row:last-child{border:0}
.scx-lease .ls-m{color:var(--text)}
.scx-lease .ls-v{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}
.scx-lease .ls-c{font-variant-numeric:tabular-nums;color:oklch(0.84 0.14 160);font-size:10px;padding:2px 6px;border-radius:4px;background:rgba(120,200,170,.1);border:1px solid rgba(120,200,170,.22)}
.scx-lease .ls-c.dn{color:oklch(0.76 0.14 20);background:rgba(230,130,140,.1);border-color:rgba(230,130,140,.22)}

@media(max-width:640px){.showcase{min-height:400px}.sc-dots a em{display:none}.sc-dots a{justify-content:center}}

/* ---------- Language picker ---------- */
.lang-pick{position:relative;display:inline-flex}
.lang-trigger{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line-2);border-radius:999px;background:rgba(8,10,22,.35);color:var(--muted);cursor:pointer;transition:border-color .2s,color .2s,background .2s;font-family:var(--mono);font-size:12px;letter-spacing:.06em;line-height:1}
.lang-trigger:hover{border-color:#fff5;color:var(--text);background:rgba(8,10,22,.6)}
.lang-flag{width:18px;height:13px;object-fit:cover;border-radius:2px;display:block;box-shadow:0 0 0 1px rgba(255,255,255,.06)}
.lang-code{text-transform:uppercase;letter-spacing:.1em;font-weight:600}
.lang-chev{width:10px;height:10px;transition:transform .2s;opacity:.7}
.lang-pick.open .lang-chev{transform:rotate(180deg)}
.lang-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:190px;background:rgba(10,13,26,.97);backdrop-filter:blur(18px);border:1px solid var(--line-2);border-radius:14px;padding:6px;display:none;flex-direction:column;gap:2px;box-shadow:0 24px 60px -10px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.02) inset;z-index:60;opacity:0;transform:translateY(-4px);transition:opacity .18s,transform .18s}
.lang-pick.open .lang-menu{display:flex;opacity:1;transform:none}
.lang-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;background:transparent;color:var(--text);cursor:pointer;font-family:var(--body);font-size:14px;font-weight:500;transition:background .15s,color .15s;text-align:left;width:100%;border:0}
.lang-item:hover{background:rgba(139,92,246,.10);color:var(--text)}
.lang-item.active{background:linear-gradient(rgba(10,13,26,.9),rgba(10,13,26,.9)) padding-box,var(--grad) border-box;border:1px solid transparent;color:#fff}
.lang-item img{width:20px;height:15px;object-fit:cover;border-radius:3px;display:block;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.lang-item .lang-check{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--cyan);opacity:0}
.lang-item.active .lang-check{opacity:1}
@media(max-width:640px){.lang-menu{right:auto;left:0}}

/* ---------- Pricing strip (homepage) ---------- */
.pricing{margin-top:40px;border:1px solid var(--line);border-radius:18px;background:rgba(0,0,0,.22);overflow:hidden}
.pricing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}
.pricing-tier{background:var(--bg);padding:36px 32px;display:flex;flex-direction:column;gap:14px;position:relative}
.pricing-tier .tier-name{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.pricing-tier .tier-price{font-family:var(--display);font-size:34px;font-weight:600;letter-spacing:-.02em;color:#fff;line-height:1.05}
.pricing-tier .tier-price small{font-size:15px;color:var(--muted);font-weight:400;background:none;-webkit-text-fill-color:var(--muted);letter-spacing:0;display:block;margin-top:4px;font-family:var(--body)}
.pricing-tier .tier-desc{color:var(--muted);font-size:14px;line-height:1.55;font-weight:300}
.pricing-tier.featured{background:linear-gradient(180deg,rgba(139,92,246,.06),rgba(0,0,0,0) 60%)}
.pricing-tier.featured::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad)}
.pricing-note{padding:18px 28px;color:var(--muted);font-size:13px;line-height:1.55;text-align:center;border-top:1px solid var(--line);background:rgba(0,0,0,.15)}
@media(max-width:820px){.pricing-grid{grid-template-columns:1fr;gap:1px}.pricing-tier{padding:28px 24px}.pricing-tier .tier-price{font-size:28px}}

/* ---------- Custom Engagements callout (homepage pricing) ---------- */
.pricing-custom{margin-top:24px;border:1px solid var(--line-2);border-radius:18px;background:linear-gradient(135deg,rgba(139,92,246,.12) 0%,rgba(0,0,0,0) 55%),rgba(10,13,24,.62);padding:36px 40px;position:relative;overflow:hidden}
.pricing-custom::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--grad);opacity:.7}
.pricing-custom__inner{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:center}
.pricing-custom__l{min-width:0}
.pricing-custom__eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:#b9c0d4;display:block;margin-bottom:12px}
.pricing-custom__h{font-family:var(--display);font-size:24px;font-weight:600;letter-spacing:-.01em;color:var(--text);margin:0 0 12px;line-height:1.3}
.pricing-custom__p{color:#c5cbdc;font-size:15px;line-height:1.6;font-weight:300;margin:0;max-width:720px}
.pricing-custom__cta{white-space:nowrap}
@media(max-width:820px){.pricing-custom{padding:28px 26px}.pricing-custom__inner{grid-template-columns:1fr;gap:22px}.pricing-custom__h{font-size:20px}.pricing-custom__p{font-size:14px}.pricing-custom__cta{justify-self:start}}

/* ---------- Compliance posture strip (homepage + /security) ---------- */
.posture{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-top:40px;border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--line)}
.posture-item{background:var(--bg);padding:26px 22px;display:flex;flex-direction:column;gap:8px}
.posture-item .pi-icon{width:34px;height:34px;border-radius:10px;background:linear-gradient(rgba(139,92,246,.12),rgba(139,92,246,.04));border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--text)}
.posture-item .pi-icon svg{width:18px;height:18px}
.posture-item .pi-t{font-family:var(--display);font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--text);margin-top:6px}
.posture-item .pi-d{color:var(--muted);font-size:13px;line-height:1.55;font-weight:300}
@media(max-width:980px){.posture{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.posture{grid-template-columns:1fr}}

/* ---------- Security page deep sections ---------- */
.sec-deep{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:48px}
.sec-deep .sd-card{padding:32px;border:1px solid var(--line);border-radius:18px;background:rgba(18,18,18,.55);display:flex;flex-direction:column;gap:14px}
.sec-deep .sd-card h3{font-family:var(--display);font-size:22px;font-weight:600;letter-spacing:-.01em;margin:0;color:var(--text)}
.sec-deep .sd-card .sd-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.sec-deep .sd-card p{color:var(--muted);font-size:14.5px;line-height:1.65;font-weight:300;margin:0}
.sec-deep .sd-card ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.sec-deep .sd-card li{position:relative;padding-left:20px;color:var(--muted);font-size:14px;line-height:1.55;font-weight:300}
.sec-deep .sd-card li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:2px;background:var(--grad)}
@media(max-width:820px){.sec-deep{grid-template-columns:1fr;gap:18px}.sec-deep .sd-card{padding:24px}}
.sec-cta{margin-top:48px;text-align:center;padding:34px 24px;border:1px solid var(--line);border-radius:18px;background:rgba(0,0,0,.22);display:flex;flex-direction:column;gap:14px;align-items:center}
.sec-cta h3{font-family:var(--display);font-size:24px;font-weight:600;letter-spacing:-.01em;margin:0;color:var(--text)}
.sec-cta p{color:var(--muted);max-width:560px;margin:0;font-size:14.5px;line-height:1.6}

/* ---------- Trading page · mobile (iPhone) mockup ---------- */
.phone-row{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;margin-top:48px;padding:56px 8px}
.phone-copy{position:relative;z-index:1}
.phone-copy .num{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:20px;display:flex;align-items:center;gap:10px}
.phone-copy .num::before{content:"";width:28px;height:1px;background:var(--grad)}
.phone-copy h3{font-family:var(--display);font-size:clamp(24px,2.6vw,34px);font-weight:500;letter-spacing:-.02em;margin:0 0 14px;line-height:1.15;text-wrap:balance}
.phone-copy p{color:var(--muted);font-size:15.5px;line-height:1.65;margin:0 0 20px;font-weight:300;text-wrap:pretty}
.phone-copy ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}
.phone-copy ul li{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--muted)}
.phone-copy ul li::before{content:"";flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:var(--grad);margin-top:8px}
.phone-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:640px;perspective:1600px;perspective-origin:50% 40%;background:transparent}
.phone-stage::before{content:"";position:absolute;inset:auto 0 40px 0;width:220px;height:28px;margin-inline:auto;border-radius:50%;background:radial-gradient(closest-side,rgba(139,92,246,.25),transparent 70%);filter:blur(14px);opacity:.6;z-index:0;pointer-events:none}
.phone{position:relative;width:290px;height:590px;border-radius:44px;background:linear-gradient(160deg,#2a2d42 0%,#14172a 40%,#0a0d1e 100%);box-shadow:-16px 32px 60px rgba(0,0,0,.55),8px 14px 30px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.06),inset 0 0 0 8px rgba(0,0,0,.6),inset 2px 0 0 rgba(255,255,255,.08),inset -2px 0 0 rgba(0,0,0,.5);padding:10px;overflow:hidden;transform-style:preserve-3d;transform:rotateY(-18deg) rotateX(8deg) rotateZ(-1.5deg);animation:phoneFloat 7s ease-in-out infinite;will-change:transform}
.phone::before{content:"";position:absolute;top:10px;left:50%;transform:translateX(-50%);width:110px;height:22px;background:#000;border-radius:0 0 18px 18px;z-index:3;box-shadow:0 2px 4px rgba(0,0,0,.5)}
.phone::after{content:"";position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:110px;height:4px;background:rgba(255,255,255,.25);border-radius:4px;z-index:3}
@keyframes phoneFloat{
  0%,100%{transform:rotateY(-18deg) rotateX(8deg) rotateZ(-1.5deg) translateY(0)}
  50%{transform:rotateY(-16deg) rotateX(6deg) rotateZ(-1deg) translateY(-14px)}
}
.phone-screen{position:absolute;inset:10px;border-radius:34px;background:linear-gradient(180deg,#05070e 0%,#0b0f22 100%);overflow:hidden;display:flex;flex-direction:column}
.phone-screen::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(130deg,rgba(255,255,255,.12) 0%,transparent 30%,transparent 70%,rgba(255,255,255,.04) 100%);mix-blend-mode:screen;z-index:4}
.ph-stat{display:flex;justify-content:space-between;padding:14px 22px 4px;font-family:var(--mono);font-size:10px;color:rgba(255,255,255,.6);letter-spacing:.06em}
.ph-brand{padding:12px 18px 10px;display:flex;align-items:center;gap:8px;border-bottom:1px solid rgba(255,255,255,.05)}
.ph-brand .dot{width:8px;height:8px;border-radius:50%;background:var(--grad);box-shadow:0 0 10px rgba(139,92,246,.7)}
.ph-brand span:not(.dot){font-family:var(--display);font-weight:600;font-size:12.5px;letter-spacing:.04em;color:#fff}
.ph-body{flex:1;padding:12px;display:flex;flex-direction:column;gap:9px;overflow:hidden}
.ph-hero{padding:12px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(135deg,rgba(139,92,246,.16),rgba(180,120,255,.08));position:relative;overflow:hidden}
.ph-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(150px 80px at 85% 0%,rgba(120,200,170,.18),transparent 60%);pointer-events:none}
.ph-hero .lbl{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:4px;position:relative}
.ph-hero .val{font-family:var(--display);font-size:22px;font-weight:600;letter-spacing:-.02em;color:#fff;margin-bottom:2px;position:relative}
.ph-hero .sub{font-family:var(--mono);font-size:10px;color:oklch(0.84 0.14 160);margin-bottom:6px;position:relative}
.ph-hero svg{width:100%;height:30px;display:block;position:relative}
.ph-tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.ph-tile{padding:9px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.06);background:rgba(10,14,30,.6)}
.ph-tile .lbl{font-family:var(--mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:3px}
.ph-tile .v{font-family:var(--display);font-size:14px;font-weight:500;color:#fff}
.ph-tile .v.g{color:oklch(0.84 0.14 160)}
.ph-list{display:flex;flex-direction:column;gap:5px;margin-top:2px}
.ph-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:7px 10px;border-radius:8px;background:rgba(10,14,30,.55);border:1px solid rgba(255,255,255,.05);font-size:10.5px}
.ph-row .nm{color:#fff;font-weight:500;font-family:var(--mono);letter-spacing:.04em}
.ph-row .px{font-family:var(--mono);color:rgba(255,255,255,.7)}
.ph-row .ch{font-family:var(--mono);font-size:10px}
.ph-row .ch.up{color:oklch(0.84 0.14 160)}
.ph-row .ch.dn{color:#ff7aa8}
.ph-alert{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;background:rgba(120,200,170,.08);border:1px solid rgba(120,200,170,.25);font-size:10.5px;color:rgba(255,255,255,.85);animation:phAlertPulse 3.6s ease-in-out infinite}
.ph-alert b{color:oklch(0.84 0.14 160);font-family:var(--mono);font-weight:500;flex-shrink:0}
.ph-alert.swap{animation:phAlertSwap .45s ease,phAlertPulse 3.6s ease-in-out infinite}
@keyframes phAlertPulse{
  0%,100%{background:rgba(120,200,170,.08);border-color:rgba(120,200,170,.25);box-shadow:0 0 0 0 rgba(120,200,170,0)}
  50%{background:rgba(120,200,170,.16);border-color:rgba(120,200,170,.55);box-shadow:0 0 0 4px rgba(120,200,170,.08)}
}
@keyframes phAlertSwap{
  0%{opacity:.2;transform:translateY(4px)}
  100%{opacity:1;transform:translateY(0)}
}
.ph-tab{display:flex;justify-content:space-around;padding:10px 14px 14px;border-top:1px solid rgba(255,255,255,.05)}
.ph-tab span{width:22px;height:3px;border-radius:2px;background:rgba(255,255,255,.15)}
.ph-tab span.on{background:var(--grad);box-shadow:0 0 8px rgba(139,92,246,.5)}
.ph-hero .val,.ph-tile .v,.ph-row .px{transition:color .35s ease, text-shadow .35s ease}
.ph-row.flash-up{animation:phFlashUp .7s ease}
.ph-row.flash-dn{animation:phFlashDn .7s ease}
@keyframes phFlashUp{
  0%{background:rgba(120,200,170,.22)}
  100%{background:rgba(10,14,30,.55)}
}
@keyframes phFlashDn{
  0%{background:rgba(230,130,140,.22)}
  100%{background:rgba(10,14,30,.55)}
}
.ph-spark .line{filter:drop-shadow(0 0 4px rgba(120,200,170,.4))}
@media(max-width:960px){
  .phone-row{grid-template-columns:1fr;gap:24px;padding:32px 0}
  .phone-stage{min-height:unset}
  .phone{transform:rotateY(-10deg) rotateX(4deg);animation:phoneFloatM 7s ease-in-out infinite}
  @keyframes phoneFloatM{
    0%,100%{transform:rotateY(-10deg) rotateX(4deg) translateY(0)}
    50%{transform:rotateY(-8deg) rotateX(2deg) translateY(-10px)}
  }
}

/* ---------- KG page · live chat demo ---------- */
.kgdemo{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(180deg,rgba(12,15,30,.95),rgba(6,8,18,.98));box-shadow:0 40px 120px rgba(0,0,0,.55),0 10px 30px rgba(139,92,246,.08);margin-top:24px}
.kg-topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,rgba(20,24,44,.6),rgba(10,13,26,.85))}
.kg-brand{display:flex;align-items:center;gap:12px;color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.12em}
.kg-blip{width:8px;height:8px;border-radius:50%;background:oklch(0.84 0.14 160);box-shadow:0 0 0 4px rgba(120,200,170,.18);animation:kgBlip 1.8s ease-in-out infinite}
@keyframes kgBlip{0%,100%{box-shadow:0 0 0 4px rgba(120,200,170,.18)}50%{box-shadow:0 0 0 8px rgba(120,200,170,.04)}}
.kg-tit{color:#fff;font-weight:600}
.kg-sesh{color:var(--muted);text-transform:none;font-size:10.5px;letter-spacing:.04em}
.kg-ctrl{display:flex;align-items:center;gap:8px}
.kg-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(10,13,26,.7);color:var(--muted);font-family:var(--body);font-size:11px}
.kg-chip.mono{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em}
.kg-chip .dot{width:6px;height:6px;border-radius:50%;background:oklch(0.84 0.14 160)}
.kg-body{display:grid;grid-template-columns:minmax(260px,320px) 1fr;height:560px}
.kg-col{display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden}
.kg-col-l{border-right:1px solid rgba(255,255,255,.06);background:rgba(8,10,22,.5)}
.kg-sec-h{padding:14px 18px 10px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid rgba(255,255,255,.04)}
.kg-docs{padding:10px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.kg-doc{position:relative;display:grid;grid-template-columns:36px 1fr;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.05);background:rgba(10,14,30,.55);transition:border-color .3s, background .3s, transform .3s}
.kg-doc .kg-doc-b{position:absolute;inset:0;border-radius:10px;pointer-events:none;box-shadow:0 0 0 0 rgba(120,200,170,0);transition:box-shadow .4s}
.kg-doc.active{border-color:rgba(120,200,170,.5);background:rgba(120,200,170,.08);transform:translateX(3px)}
.kg-doc.active .kg-doc-b{box-shadow:0 0 0 1px rgba(120,200,170,.45),0 0 24px rgba(120,200,170,.18)}
.kg-doc-ic{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,rgba(139,92,246,.15),rgba(180,120,255,.1));color:#c3caff}
.kg-doc-ic svg{width:18px;height:18px}
.kg-doc.active .kg-doc-ic{background:linear-gradient(135deg,rgba(120,200,170,.2),rgba(120,200,170,.1));color:oklch(0.84 0.14 160)}
.kg-doc-m{min-width:0}
.kg-doc-t{color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}
.kg-doc-s{color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kg-col-r{position:relative}
.kg-chat{flex:1;padding:22px 24px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;min-height:0}
.kg-hint{align-self:center;margin-top:40px;max-width:380px;text-align:center;color:var(--muted);font-size:13px;line-height:1.5;padding:12px 16px;border-radius:10px;border:1px dashed rgba(255,255,255,.08);background:rgba(255,255,255,.02)}
.kg-msg{display:flex;gap:10px;max-width:80%;animation:kgFadeIn .35s ease}
.kg-msg.u{align-self:flex-end}
.kg-msg.a{align-self:flex-start}
.kg-avatar{flex:0 0 26px;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.02em}
.kg-msg.u .kg-avatar{order:2;background:rgba(139,92,246,.2);color:#a9b2ff;border:1px solid rgba(139,92,246,.35)}
.kg-msg.a .kg-avatar{background:linear-gradient(135deg,oklch(0.72 0.20 270),oklch(0.82 0.13 200));color:#fff;box-shadow:0 0 0 2px rgba(139,92,246,.15)}
.kg-bub{padding:10px 14px;border-radius:12px;font-size:13.5px;line-height:1.55;color:var(--text)}
.kg-msg.u .kg-bub{background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.25);border-top-right-radius:4px;color:#fff}
.kg-msg.a .kg-bub{background:rgba(10,14,30,.75);border:1px solid rgba(255,255,255,.08);border-top-left-radius:4px}
.kg-bub .kg-typing{display:inline-flex;gap:3px;align-items:center;padding:2px 0}
.kg-bub .kg-typing i{width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.4);animation:kgDot 1.2s ease-in-out infinite}
.kg-bub .kg-typing i:nth-child(2){animation-delay:.15s}
.kg-bub .kg-typing i:nth-child(3){animation-delay:.3s}
@keyframes kgDot{0%,80%,100%{transform:translateY(0);opacity:.3}40%{transform:translateY(-3px);opacity:1}}
.kg-cite-row{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(255,255,255,.08);display:flex;flex-wrap:wrap;gap:6px}
.kg-cite{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:6px;background:rgba(120,200,170,.08);border:1px solid rgba(120,200,170,.28);color:oklch(0.84 0.14 160);font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;white-space:nowrap}
.kg-cite::before{content:"§";opacity:.7;font-weight:600}
.kg-input{display:flex;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,rgba(10,13,26,.5),rgba(8,10,22,.85))}
.kg-search{width:16px;height:16px;color:var(--muted);flex-shrink:0}
.kg-ph{flex:1;color:#fff;font-family:var(--body);font-size:14px;min-height:18px}
.kg-ph.placeholder{color:var(--muted)}
.kg-cursor{display:inline-block;width:2px;height:16px;background:oklch(0.82 0.13 200);animation:kgCur 1s steps(2) infinite;margin-left:-4px}
@keyframes kgCur{50%{opacity:0}}
.kg-enter{padding:4px 10px;border-radius:6px;border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);color:var(--muted);font-size:10.5px;letter-spacing:.06em;flex-shrink:0}
.kg-foot{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-top:1px solid rgba(255,255,255,.06);background:rgba(8,10,22,.75);font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted)}
.kg-f-l{display:flex;align-items:center;gap:8px;color:rgba(255,255,255,.8)}
.kg-foot .mono span{color:var(--muted)}
.kg-chat::-webkit-scrollbar,.kg-docs::-webkit-scrollbar{width:6px}
.kg-chat::-webkit-scrollbar-thumb,.kg-docs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.08);border-radius:3px}
@keyframes kgFadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:880px){
  .kg-body{grid-template-columns:1fr;max-height:unset}
  .kg-col-l{order:2;border-right:0;border-top:1px solid rgba(255,255,255,.06);max-height:260px}
  .kg-col-r{order:1;min-height:420px}
  .kg-msg{max-width:92%}
}

/* ---------- Leasing Command Center page · leasing live demo ---------- */
.la-dash{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);background:linear-gradient(180deg,rgba(12,15,30,.95),rgba(6,8,18,.98));box-shadow:0 40px 120px rgba(0,0,0,.55),0 10px 30px rgba(139,92,246,.08);margin-top:24px}
.la-top{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;border-bottom:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,rgba(20,24,44,.6),rgba(10,13,26,.85));flex-wrap:wrap}
.la-brand{display:flex;align-items:center;gap:12px;color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.12em}
.la-blip{width:8px;height:8px;border-radius:50%;background:oklch(0.84 0.14 160);box-shadow:0 0 0 4px rgba(120,200,170,.18);animation:kgBlip 1.8s ease-in-out infinite}
.la-tit{color:#fff;font-weight:600}
.la-sesh{color:var(--muted);text-transform:none;font-size:10.5px;letter-spacing:.04em}
.la-top-r{display:flex;gap:6px;flex-wrap:wrap}
.la-kpi{display:inline-flex;flex-direction:column;gap:2px;padding:5px 12px;border-radius:8px;border:1px solid var(--line);background:rgba(10,13,26,.7);min-width:78px}
.la-kpi-l{font-family:var(--mono);font-size:9px;letter-spacing:.12em;color:var(--muted)}
.la-kpi-v{font-family:var(--display);font-size:14px;font-weight:600;color:#fff;font-variant-numeric:tabular-nums}
.la-kpi-v.g{color:oklch(0.84 0.14 160)}
.la-body{display:grid;grid-template-columns:1.35fr 1fr;gap:14px;padding:14px}
.la-card{display:flex;flex-direction:column;border-radius:14px;border:1px solid rgba(255,255,255,.06);background:linear-gradient(180deg,rgba(14,18,36,.7),rgba(8,10,22,.9));overflow:hidden}
.la-card-chart{min-height:360px}
.la-hd{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.06)}
.la-ht{display:flex;align-items:center;gap:8px;color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.la-ht .dot{width:6px;height:6px;border-radius:50%;background:var(--grad)}
.la-meta{color:var(--muted);font-family:var(--mono);font-size:10.5px}
.la-tabs{display:flex;gap:4px}
.la-tab{padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.08);background:transparent;color:var(--muted);font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;cursor:pointer;transition:color .2s,background .2s,border-color .2s}
.la-tab:hover{color:#fff;border-color:rgba(255,255,255,.2)}
.la-tab.active{background:linear-gradient(rgba(10,13,26,.9),rgba(10,13,26,.9)) padding-box,var(--grad) border-box;border:1px solid transparent;color:#fff}
.la-chart-wrap{flex:1;min-height:220px;padding:10px 14px 4px;position:relative;overflow:hidden}
.la-chart{width:100%;height:220px;display:block}
.la-chart .la-line-tr{transition:d 1.1s cubic-bezier(.2,.8,.2,1)}
#laLinePath,#laFillPath,#laBand{transition:d 1.1s cubic-bezier(.2,.8,.2,1)}
#laTodayDot,#laTodayLine,#laTodayLabel{transition:all .6s ease}
.la-chart-foot{display:flex;justify-content:space-between;gap:16px;padding:10px 16px 14px;border-top:1px solid rgba(255,255,255,.05);font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.02em;flex-wrap:wrap}
.la-chart-foot b{color:#fff;font-weight:600;font-family:var(--display);font-size:13px;font-variant-numeric:tabular-nums}
.la-chart-foot b.g{color:oklch(0.84 0.14 160)}
.la-col{display:flex;flex-direction:column;gap:14px;min-width:0}
.la-list{padding:8px;display:flex;flex-direction:column;gap:5px}
.la-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:9px 12px;border-radius:10px;background:rgba(10,14,30,.55);border:1px solid rgba(255,255,255,.05);transition:background .5s,border-color .3s,transform .3s}
.la-row.active{border-color:rgba(120,200,170,.45);background:rgba(120,200,170,.08);transform:translateX(2px)}
.la-nm{color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.la-conf{font-family:var(--mono);font-size:11px;color:var(--muted);padding:2px 6px;border-radius:4px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06)}
.la-row.active .la-conf{color:oklch(0.84 0.14 160);background:rgba(120,200,170,.1);border-color:rgba(120,200,170,.3)}
.la-val{font-family:var(--mono);font-size:12px;color:#fff;font-variant-numeric:tabular-nums}
.la-val.up{color:oklch(0.84 0.14 160)}
.la-val.dn{color:#ff7aa8}
.la-row.flash-up{animation:phFlashUp .7s ease}
.la-row.flash-dn{animation:phFlashDn .7s ease}
.la-dealers{padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.la-dealer{display:grid;grid-template-columns:160px 1fr;gap:12px;align-items:center}
.la-dnm{color:#fff;font-family:var(--body);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.la-bar{position:relative;height:18px;border-radius:5px;background:rgba(255,255,255,.04);overflow:hidden;border:1px solid rgba(255,255,255,.05)}
.la-bar i{position:absolute;inset:0;display:block;width:var(--pct,0%);background:linear-gradient(90deg,oklch(0.72 0.20 270),oklch(0.84 0.14 160));border-radius:5px;transition:width 1.2s cubic-bezier(.2,.8,.2,1);box-shadow:0 0 12px rgba(120,200,170,.25)}
.la-bar em{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10.5px;color:#fff;font-style:normal;text-shadow:0 0 6px rgba(0,0,0,.6)}
.la-alert{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;background:rgba(120,200,170,.08);border:1px solid rgba(120,200,170,.25);font-size:13px;color:rgba(255,255,255,.92);animation:phAlertPulse 3.6s ease-in-out infinite}
.la-alert b{color:oklch(0.84 0.14 160);font-family:var(--mono);font-weight:500;flex-shrink:0;font-size:12px}
.la-alert.swap{animation:phAlertSwap .45s ease, phAlertPulse 3.6s ease-in-out infinite}
.la-foot{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-top:1px solid rgba(255,255,255,.06);background:rgba(8,10,22,.75);font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted);flex-wrap:wrap;gap:10px}
.la-f-l{display:flex;align-items:center;gap:8px;color:rgba(255,255,255,.8)}
.la-f-r span{color:var(--muted)}
@media(max-width:960px){
  .la-body{grid-template-columns:1fr}
  .la-dealer{grid-template-columns:120px 1fr}
  .la-top-r{width:100%}
  .la-kpi{flex:1;min-width:0}
}

/* ---------- Global mobile refinements ---------- */
html{-webkit-text-size-adjust:100%}
img{max-width:100%;height:auto}
body{overflow-x:hidden}

/* Tablet ≤ 900px */
@media(max-width:900px){
  .wrap{padding:0 22px}
  .subnav{padding:14px 22px 0}
  .hero-meta{gap:18px;margin-top:32px;font-size:11px}
  .hero-ctas .btn{padding-inline:18px}
  .marquee-track em{font-size:18px}
  .marquee-track{gap:56px}
  .marquee{padding:22px 0;margin-top:56px}
  .p-hero .cta-row{gap:10px}
  .p-hero .lede{font-size:17px;margin-bottom:32px}
  .demo-topbar{flex-wrap:wrap;gap:10px}
  .demo-topbar .dctrl{order:3;width:100%;justify-content:space-between}
  .dctrl .dtab{flex:1;text-align:center}
  .la-top{gap:12px}
  .la-kpi-v{font-size:13px}
  .kg-topbar{flex-wrap:wrap;gap:10px}
  .kg-ctrl{width:100%;justify-content:flex-start}
  .demo-cta-note{font-size:13px;text-align:center}
}

/* Mobile ≤ 640px */
@media(max-width:640px){
  .wrap{padding:0 18px}
  .subnav{padding:14px 18px 0}
  .nav{padding:14px 18px}
  .brand{font-size:17px;gap:10px}
  .brand-logo{height:28px}
  .brand-text{letter-spacing:.03em}
  .nav-cta{gap:6px}
  .nav-cta .btn{padding:8px 14px;font-size:13px}
  .nav-cta .btn svg{width:14px;height:14px}
  .nav-cta .chip{padding:6px 10px;font-size:11px}
  .lang-trigger{padding:6px 8px}
  .lang-code{display:none}
  .hero{padding-top:96px;padding-bottom:48px}
  .hero-meta{gap:14px 16px;font-size:10.5px;margin-top:26px}
  .hero-meta .tick{font-size:8px}
  .hero-ctas{gap:10px;width:100%}
  .hero-ctas .btn{width:100%;justify-content:center}
  h1.display{margin:16px 0}
  .lede{font-size:16px}
  .sect{padding:64px 0}
  .sect-head{margin-bottom:32px}
  .sect-eyebrow{font-size:10px}
  .kicker{font-size:15px}
  .footer-blurb,footer p{font-size:13px}
  .foot-inner{grid-template-columns:1fr;gap:28px;padding:48px 18px}
  .foot-bot{flex-direction:column;gap:6px;padding:20px 18px;text-align:center}
  .marquee-label{margin-top:48px;letter-spacing:.18em;font-size:10px}
  .marquee-track em{font-size:16px}
  .marquee-track{gap:40px;animation-duration:28s}
  .marquee{padding:18px 0;margin-top:12px}
  .p-hero{padding:110px 0 48px}
  .p-hero .lede{font-size:16px;margin-bottom:28px}
  .p-hero .cta-row .btn{width:100%;justify-content:center}
  .back-link{font-size:10.5px}
  .stat-row .st{padding:24px 14px}
  .stat-row .st .v{font-size:clamp(24px,8vw,34px);word-break:break-word;line-height:1.05}
  .stat-row .st .l{font-size:10px;letter-spacing:.1em}
  .feat-row,.feat-row.rev{padding:28px 22px;gap:22px}
  .feat-copy h3{font-size:22px}
  .feat-copy p{font-size:15px}
  .feat-copy ul li{font-size:13.5px}
  .feat-viz{min-height:220px;padding:16px}
  .related .rel{padding:22px}
  .related .rel h4{font-size:17px}
  .contact-shell{border-radius:16px}
  .contact-l{padding:32px 20px!important}
  .contact-form{padding:28px 20px!important}
  .contact-l h2{font-size:28px}
  .form-head{flex-wrap:wrap;gap:8px}
  .why-list{gap:10px}
  .why-item{font-size:14px}
  /* Trading demo dashboard */
  .demo-dash{border-radius:14px}
  .demo-topbar{padding:12px 14px;font-size:10.5px}
  .demo-body{gap:8px;padding:8px}
  .dcard{border-radius:12px}
  .dhd{padding:10px 12px}
  .dhero-val{font-size:26px}
  .dchart{min-height:180px}
  .dcard-chart .dchart svg{height:180px}
  .dsymrow{gap:4px;overflow-x:auto;padding-bottom:4px}
  .dsq{flex:0 0 auto}
  .demo-foot{padding:10px 12px;font-size:10px;flex-direction:column;gap:4px;align-items:flex-start}
  /* Phone mockup */
  .phone-row{padding:20px 0;gap:20px}
  .phone{transform:rotateY(-8deg) rotateX(3deg) scale(.9)}
  @keyframes phoneFloat{0%,100%{transform:rotateY(-8deg) rotateX(3deg) scale(.9) translateY(0)}50%{transform:rotateY(-6deg) rotateX(1deg) scale(.9) translateY(-8px)}}
  /* KG demo */
  .kg-body{height:auto}
  .kg-col-r{min-height:380px}
  .kg-topbar{padding:12px 14px}
  .kg-chip{font-size:10px;padding:4px 8px}
  .kg-input{padding:10px 14px;gap:8px}
  .kg-ph{font-size:13px}
  .kg-enter{display:none}
  .kg-msg{max-width:94%}
  .kg-bub{font-size:13px}
  .kg-foot{padding:8px 14px;font-size:10px;flex-wrap:wrap;gap:6px}
  /* AI leasing demo */
  .la-top{padding:12px 14px}
  .la-kpi{padding:4px 8px;min-width:0}
  .la-kpi-l{font-size:8.5px}
  .la-kpi-v{font-size:12.5px}
  .la-body{padding:10px;gap:10px}
  .la-card-chart{min-height:auto}
  .la-chart-wrap{padding:6px 10px}
  .la-chart{height:160px}
  .la-chart-foot{padding:8px 12px;font-size:10px;gap:8px}
  .la-chart-foot b{font-size:12px}
  .la-list{padding:6px}
  .la-row{padding:7px 10px;gap:8px;grid-template-columns:1fr auto}
  .la-row .la-conf{display:none}
  .la-dealers{padding:10px}
  .la-dealer{grid-template-columns:110px 1fr;gap:10px}
  .la-dnm{font-size:11.5px}
  .la-bar{height:16px}
  .la-foot{padding:8px 14px;font-size:10px;flex-direction:column;align-items:flex-start;gap:4px}
  /* Legal pages */
  .legal{margin:110px auto 60px;padding:0 20px}
  .legal h1{font-size:36px}
  .legal h2{font-size:20px;margin:28px 0 10px}
}

/* Extra-small ≤ 420px */
@media(max-width:420px){
  .nav{padding:12px 14px}
  .wrap{padding:0 14px}
  .subnav{padding:12px 14px 0}
  .brand{font-size:15px;gap:8px}
  .brand-logo{height:24px}
  .nav-cta .btn span{display:none}
  .nav-cta .btn{padding:8px 10px}
  .hero-meta{font-size:10px;gap:10px 14px}
  .sect{padding:52px 0}
  .foot-inner{padding:40px 14px}
  .stat-row{grid-template-columns:1fr 1fr}
  .stat-row .st{padding:18px 10px}
  .stat-row .st .v{font-size:clamp(22px,7vw,30px)}
  .p-hero h1,.p-hero .rot-line{font-size:clamp(34px,9vw,50px)}
  h1.display{font-size:clamp(36px,9vw,54px)}
  .feat-row,.feat-row.rev{padding:22px 16px}
  .feat-viz{min-height:180px;padding:12px}
  .contact-l h2{font-size:24px}
  .kg-chat{padding:16px 16px 10px}
  .demo-dash,.kg-dash,.la-dash{border-radius:12px}
}

/* ---------- 3D Mac Studio inside .perimeter centre ---------- */
.perimeter .perim-mac3d{position:relative;z-index:3;width:220px;height:176px;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 14px 30px rgba(139,92,246,.35))}
.perimeter .perim-mac3d canvas{width:100%!important;height:auto!important;display:block}
@media(max-width:640px){.perimeter .perim-mac3d{width:180px;height:144px}}

/* ── KG PDF chat demo ───────────────────────────────────────────────────── */
.kgchat{
  display:grid;gap:24px;max-width:640px;margin:0 auto;
  transition:max-width .4s ease,grid-template-columns .4s ease;
}
.kgchat[data-mode="chat"]{
  grid-template-columns:minmax(320px,380px) 1fr;
  max-width:1180px;align-items:start;
}
.kgright{display:flex;flex-direction:column;gap:24px}
@media(max-width:880px){
  .kgchat[data-mode="chat"]{grid-template-columns:1fr;max-width:640px}
}

.kgcard__usage{font-family:var(--mono);font-size:11px;color:#1f54e0;letter-spacing:.08em;text-transform:uppercase}
.kgcard__body--flow{padding:14px 18px}

/* SVG flow diagram */
.kgflow{display:block;width:100%;height:auto;min-height:260px}
.kgflow .kgflow-file rect{
  transition:fill .2s,stroke .2s;
  filter:drop-shadow(0 6px 18px rgba(47,107,255,.08));
}
.kgflow .kgflow-file:hover rect{fill:#eef4ff;stroke:rgba(47,107,255,.6)}
.kgflow .kgflow-rm{cursor:pointer}
.kgflow .kgflow-rm circle{transition:fill .15s,stroke .15s}
.kgflow .kgflow-rm:hover circle{fill:rgba(220,38,38,.08);stroke:rgba(220,38,38,.55)}
.kgflow .kgflow-rm:hover text{fill:#b91c1c}
.kgflow-newbox{animation:kgflow-pop .35s cubic-bezier(.2,.8,.2,1) both}
.kgflow-newpath{stroke-dasharray:200;stroke-dashoffset:200;animation:kgflow-draw .6s ease-out forwards}
@keyframes kgflow-pop{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:none}}
@keyframes kgflow-draw{to{stroke-dashoffset:0}}

/* Mac Studio 3D mount — inside SVG foreignObject */
.kgflow-mac{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.kgflow-mac canvas{max-width:100%;max-height:100%;display:block}

/* Source-preview modal */
.kgmodal{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:24px}
.kgmodal[hidden]{display:none}
.kgmodal__backdrop{position:absolute;inset:0;background:rgba(8,20,40,.45);backdrop-filter:blur(6px);cursor:pointer}
.kgmodal__panel{
  position:relative;z-index:2;width:min(1100px,95vw);height:min(86vh,900px);
  display:grid;grid-template-rows:auto 1fr;
  background:#ffffff;border:1px solid #d3dce8;border-radius:14px;overflow:hidden;
  box-shadow:0 40px 80px -20px rgba(8,20,40,.3);
  font-family:"Hanken Grotesk",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  animation:kgmodal-in .22s cubic-bezier(.2,.8,.2,1);
}
@keyframes kgmodal-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.kgmodal__hdr{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:14px 20px;border-bottom:1px solid #e4eaf2;
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;
}
.kgmodal__title{color:#0c2440;font-weight:500;margin-right:10px}
.kgmodal__sub{color:#1f54e0;letter-spacing:.1em;text-transform:uppercase;font-size:10.5px}
.kgmodal__close{
  background:transparent;border:1px solid #d3dce8;color:#586a80;
  width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:20px;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s,background .15s;
}
.kgmodal__close:hover{color:#b91c1c;border-color:rgba(185,28,28,.45);background:rgba(185,28,28,.06)}

.kgmodal__body{display:grid;grid-template-columns:minmax(260px,38%) 1fr;gap:0;min-height:0}
@media(max-width:860px){.kgmodal__body{grid-template-columns:1fr;grid-template-rows:auto 1fr}}

.kgmodal__excerpt{
  padding:18px 20px;overflow-y:auto;border-right:1px solid #e4eaf2;
  display:flex;flex-direction:column;gap:10px;
}
@media(max-width:860px){.kgmodal__excerpt{border-right:none;border-bottom:1px solid #e4eaf2;max-height:38vh}}
.kgmodal__ex-label, .kgmodal__pdf-label{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;
  text-transform:uppercase;color:#1f54e0;
}
.kgmodal__ex-text{
  padding:14px 16px;background:linear-gradient(180deg,#eef4ff,#f7faff);
  border:1px solid rgba(47,107,255,.3);border-left:3px solid #2f6bff;border-radius:8px;
  color:#29384c;font-size:14px;line-height:1.6;white-space:pre-wrap;
  font-family:inherit;
}

.kgmodal__pdfwrap{display:flex;flex-direction:column;min-height:0;padding:14px 0 0 0;background:#eef2f8}
.kgmodal__pdfwrap .kgmodal__pdf-label{padding:0 20px 10px}
/* Page preview rendered server-side with the chunk's bbox highlighted in
   yellow. We let the image scale to the wrap width, keeping aspect ratio,
   and let the wrap scroll vertically when the page is taller than the
   modal — this is the canonical "click → see source" view. */
.kgmodal__pdf-imgwrap{
  flex:1;min-height:0;overflow:auto;background:#e2e9f2;padding:0 20px 20px;
  display:flex;align-items:flex-start;justify-content:center;position:relative;
}
.kgmodal__pdf-img{
  display:block;max-width:100%;height:auto;
  border:1px solid #d3dce8;border-radius:6px;
  box-shadow:0 12px 40px -8px rgba(8,20,40,.28);
  background:#fff;
}
.kgmodal__pdf-img:not([src]),.kgmodal__pdf-img[src=""]{display:none}
.kgmodal__pdf-loading{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:#586a80;
  padding:10px 16px;border:1px solid #d3dce8;border-radius:999px;
  background:rgba(255,255,255,.92);
}

/* Markdown content inside assistant messages */
.kgchat__msg--assistant p{margin:0 0 .75em}
.kgchat__msg--assistant p:last-child{margin-bottom:0}
.kgchat__msg--assistant ul,.kgchat__msg--assistant ol{margin:.5em 0;padding-left:1.4em}
.kgchat__msg--assistant li{margin:.25em 0}
.kgchat__msg--assistant strong{color:#0c2440;font-weight:600}
.kgchat__msg--assistant em{font-style:italic}
.kgchat__msg--assistant code{
  background:#eef2f8;border:1px solid #dbe4ef;border-radius:4px;
  padding:1px 6px;font-family:var(--mono);font-size:.9em;
}
.kgchat__msg--assistant pre{
  background:#f4f7fb;border:1px solid #e4eaf2;border-radius:8px;
  padding:12px 14px;overflow-x:auto;margin:.6em 0;
}
.kgchat__msg--assistant pre code{background:none;border:none;padding:0}
.kgchat__msg--assistant a{color:#1f54e0;text-decoration:underline}
.kgchat__msg--assistant h1,.kgchat__msg--assistant h2,.kgchat__msg--assistant h3{
  font-family:inherit;margin:.5em 0 .3em;font-weight:600;color:#0c2440;
}
.kgcard{
  background:#ffffff;
  border:1px solid #e4eaf2;border-radius:18px;overflow:hidden;
  box-shadow:0 18px 44px -22px rgba(8,20,40,.18);
}
.kgcard .v-head{
  position:static;display:flex;justify-content:space-between;align-items:center;
  padding:14px 22px;border-bottom:1px solid #e4eaf2;background:#f8fafd;
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:#586a80;
  text-transform:uppercase;
}
.kgcard .v-head .dot{width:6px;height:6px;border-radius:50%;background:#16a34a;box-shadow:0 0 8px rgba(22,163,74,.55)}
.kgcard__body{padding:32px}
.kgcard__body--chat{padding:24px}

/* Drop zone */
.kgdrop{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:48px 24px;border:1.5px dashed #c9d5e6;border-radius:14px;
  background:#f8fafd;cursor:pointer;
  transition:border-color .2s,background .2s,transform .2s;text-align:center;
}
.kgdrop:hover,.kgdrop.is-drag{
  border-color:rgba(47,107,255,.55);background:#eef4ff;
}
.kgdrop__ic{width:34px;height:34px;color:#586a80;margin-bottom:4px}
.kgdrop:hover .kgdrop__ic,.kgdrop.is-drag .kgdrop__ic{color:#2f6bff}
.kgdrop__t{font-size:15px;color:#0c2440;font-weight:500}
.kgdrop__h{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:#8b99ab;text-transform:uppercase}
.kgdrop__file{margin-top:8px;font-family:var(--mono);font-size:12px;color:#1f54e0}
.kgdrop__file:empty{display:none}

/* Captcha + CTA */
.kgcaptcha{margin-top:22px;min-height:65px;display:flex;justify-content:center}
.kgcaptcha:empty{display:none}
.kgcta-row{display:flex;align-items:center;gap:18px;margin-top:24px;flex-wrap:wrap}
.kgcta-row .btn[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
/* Demo buttons: match the light .dv primary button (shared .btn is the old
   dark-design pill; the demo now lives on the light page only). */
.kgchat .btn{
  background:#2f6bff;color:#fff;font-weight:600;border-radius:14px;
  box-shadow:0 6px 18px rgba(47,107,255,.22);
}
.kgchat .btn:hover{
  background:#1f54e0;transform:translateY(-1px);
  box-shadow:0 8px 22px rgba(47,107,255,.28);
}
.kgerror{
  margin-top:18px;padding:12px 16px;border:1px solid rgba(220,38,38,.3);
  background:#fdf2f2;border-radius:10px;color:#b91c1c;font-size:14px;
}
.kgprog{display:inline-flex;align-items:center;gap:8px;color:#586a80;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.kgprog__dot{width:6px;height:6px;border-radius:50%;background:#2f6bff;opacity:.4;animation:kg-blink 1.2s infinite}
.kgprog__dot:nth-child(2){animation-delay:.2s}
.kgprog__dot:nth-child(3){animation-delay:.4s}
@keyframes kg-blink{0%,80%,100%{opacity:.2}40%{opacity:1}}

/* Chat */
.kgcard[data-role="chat"] .v-head{font-family:var(--mono);font-size:11px;color:#586a80}
.kgend{
  background:transparent;border:1px solid #d3dce8;color:#586a80;
  font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  padding:6px 12px;border-radius:6px;cursor:pointer;transition:color .15s,border-color .15s;
}
.kgend:hover{color:#0c2440;border-color:#8b99ab}

.kgmsgs{
  display:flex;flex-direction:column;gap:14px;
  max-height:520px;overflow-y:auto;padding-right:6px;margin-bottom:18px;
  scrollbar-width:thin;scrollbar-color:rgba(12,36,64,.18) transparent;
}
.kgmsgs::-webkit-scrollbar{width:6px}
.kgmsgs::-webkit-scrollbar-thumb{background:rgba(12,36,64,.18);border-radius:3px}
.kgchat__msg{
  padding:14px 18px;border-radius:14px;max-width:88%;line-height:1.55;
  font-size:15px;color:#29384c;
}
.kgchat__msg--user{
  align-self:flex-end;
  background:#e9f0ff;
  border:1px solid rgba(47,107,255,.28);
}
.kgchat__msg--assistant{
  align-self:flex-start;
  background:#f7f9fc;border:1px solid #e4eaf2;
}
.kgchat__cursor{display:inline-block;color:#2f6bff;animation:kg-cursor 1s steps(2) infinite}
.kgchat__msg-content{display:inline;white-space:pre-wrap}
.kgchat__msg--assistant .kgchat__msg-content p:first-child{margin-top:0}
.kgchat__msg--assistant .kgchat__msg-content p:last-child{margin-bottom:0}
@keyframes kg-cursor{0%,100%{opacity:0}50%{opacity:1}}

/* Thinking indicator — replaces the legacy blinking cursor while waiting
   for the first token. Spinner + rotating label. Disappears as soon as
   the first token arrives. */
.kgchat__thinking{
  display:inline-flex;align-items:center;gap:9px;
  color:#586a80;
  font-family:var(--mono);font-size:12.5px;letter-spacing:.02em;
  padding:2px 0;
}
.kgchat__spinner{
  width:14px;height:14px;border-radius:50%;
  border:2px solid rgba(47,107,255,.2);
  border-top-color:#2f6bff;
  animation:kg-spin .8s linear infinite;
  flex-shrink:0;
}
.kgchat__thinking-label{
  /* Subtle cross-fade when the JS swaps the data-i18n key+text every
     1.5-2s. We can't directly animate textContent changes, so opacity
     on hover/transition isn't enough — instead the JS swaps text and
     CSS provides a quick opacity bump via animation. */
  animation:kg-thinking-fade 1.5s ease-in-out infinite;
}
@keyframes kg-spin{
  to { transform: rotate(360deg); }
}
@keyframes kg-thinking-fade{
  0%,100% { opacity: .85; }
  50%     { opacity: .55; }
}
.kgchat__sources{
  margin-top:12px;padding-top:12px;border-top:1px solid #e4eaf2;
  list-style:none;padding-left:0;display:flex;flex-direction:column;gap:6px;
}
.kgchat__sources li{margin:0}
.kgchat__src{
  display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;
  padding:8px 10px;border-radius:8px;cursor:pointer;
  background:#ffffff;border:1px solid #e4eaf2;
  color:#29384c;font:inherit;transition:background .15s,border-color .15s;
}
.kgchat__src:hover{background:#eef4ff;border-color:rgba(47,107,255,.4)}
.kgchat__src-tag{
  flex-shrink:0;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;
  color:#1f54e0;white-space:nowrap;padding-top:2px;
}
.kgchat__src-snip{
  flex:1;font-size:12.5px;line-height:1.5;color:#586a80;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;
}
.kgchat__src-ic{
  flex-shrink:0;width:14px;height:14px;color:#8b99ab;margin-top:3px;
  opacity:.5;transition:opacity .15s,transform .15s,color .15s;
}
.kgchat__src:hover .kgchat__src-ic{opacity:1;color:#2f6bff;transform:translate(1px,-1px)}

.kginput{display:flex;gap:10px;align-items:flex-end}
.kginput input,
.kginput textarea{
  flex:1;background:#ffffff;color:#0c2440;
  border:1px solid #d3dce8;border-radius:10px;
  padding:13px 16px;font-size:15px;font-family:inherit;
  transition:border-color .15s,background .15s;
}
.kginput input:focus,
.kginput textarea:focus{outline:none;border-color:rgba(47,107,255,.6);background:#ffffff}
.kginput input::placeholder,
.kginput textarea::placeholder{color:#8b99ab}
.kginput .btn{padding-block:12px}
/* Auto-growing chat textarea. `field-sizing: content` lets modern browsers
   match content height automatically; we cap height to three lines and the
   JS in datavera-kg-chat-demo.js handles older engines (Safari < 17,
   Firefox < ~120) via direct scrollHeight measurement on input events. */
.kginput textarea{
  font-family:inherit;
  line-height:1.45;
  resize:none;
  overflow-y:auto;
  min-height:44px;
  max-height:calc(1.45em * 3 + 24px); /* 3 visible lines + vertical padding */
  field-sizing:content;
  scrollbar-width:thin;scrollbar-color:rgba(12,36,64,.2) transparent;
}
.kginput textarea::-webkit-scrollbar{width:5px}
.kginput textarea::-webkit-scrollbar-thumb{background:rgba(12,36,64,.2);border-radius:3px}

/* KG-build status chip — sits next to chat-meta inside the chat card head.
   Idle: hidden. Building: amber dot with pulse. Ready: green dot + stats.
   Failed: red dot, no stats. Frontend toggles `data-state` to drive the
   colour swap without re-rendering the markup. */
.v-head__l{display:inline-flex;align-items:center;gap:14px;min-width:0;flex-wrap:wrap}
.kg-status{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;color:#586a80;
  padding:3px 9px;border-radius:99px;
  background:#f2f5fa;border:1px solid #e0e7f0;
  white-space:nowrap;
}
.kg-status__dot{
  width:7px;height:7px;border-radius:50%;
  background:#9aa7b8;box-shadow:0 0 6px rgba(154,167,184,.5);
}
.kg-status[data-state="building"] .kg-status__dot{
  background:#d97706;box-shadow:0 0 8px rgba(217,119,6,.5);
  animation:kg-status-pulse 1.4s ease-in-out infinite;
}
.kg-status[data-state="ready"] .kg-status__dot{
  background:#16a34a;box-shadow:0 0 8px rgba(22,163,74,.5);
  animation:none;
}
.kg-status[data-state="failed"] .kg-status__dot{
  background:#dc2626;box-shadow:0 0 8px rgba(220,38,38,.5);
}
.kg-status[data-state="ready"]{color:#166534;border-color:rgba(22,163,74,.3)}
.kg-status[data-state="failed"]{color:#991b1b;border-color:rgba(220,38,38,.3)}
@keyframes kg-status-pulse{
  0%,100%{opacity:1;transform:scale(1)}
  50%{opacity:.55;transform:scale(.8)}
}

@media(max-width:720px){
  .kgcard__body{padding:22px}
  .kgdrop{padding:32px 18px}
  .kgmsgs{max-height:60vh}
}

/* KG demo — aggressive mobile tightening. The default chat layout burns too
   much space on phones: 32px card padding, 15px type, fixed-size modal,
   side-by-side input+button all chew the viewport. */
@media(max-width:640px){
  .kgchat{gap:16px}
  .kgcard__body{padding:16px}
  .kgcard__body--chat{padding:14px}
  .kgcard__body--flow{padding:10px 12px}
  .kgcard .v-head{padding:10px 14px;font-size:10px}

  .kgdrop{padding:26px 14px;gap:8px}
  .kgdrop__ic{width:28px;height:28px}
  .kgdrop__t{font-size:14px}
  .kgdrop__h{font-size:10px}

  /* Upload CTA + captcha full-width + stacked */
  .kgcaptcha{margin-top:16px}
  .kgcta-row{gap:12px;margin-top:16px}
  .kgcta-row .btn{width:100%;justify-content:center}
  .kgcta-row .kgprog{width:100%;justify-content:center}

  /* Chat bubbles */
  .kgchat__msg{max-width:94%;padding:11px 14px;font-size:14px;border-radius:12px}
  .kgmsgs{max-height:58vh;gap:10px;margin-bottom:12px}

  /* Chat input — keep button on same line but shrink both; stack below
     480px because the "Ask" button gets squeezed to unusable width. */
  .kginput{gap:8px}
  .kginput input,
  .kginput textarea{padding:11px 13px;font-size:14px}
  .kginput .btn{padding:11px 14px}

  /* Source citations */
  .kgchat__src{padding:7px 9px;gap:8px}
  .kgchat__src-tag{font-size:9.5px}
  .kgchat__src-snip{font-size:11.5px}

  /* Flow SVG — let it shrink further */
  .kgflow{min-height:200px}

  /* Modal goes near-fullscreen on phones */
  .kgmodal{padding:6px}
  .kgmodal__panel{width:100vw;height:96vh;border-radius:10px}
  .kgmodal__hdr{padding:10px 14px;font-size:11px}
  .kgmodal__excerpt{padding:12px 14px;max-height:32vh}
  .kgmodal__ex-text{font-size:13px;padding:10px 12px;line-height:1.5}
  .kgmodal__pdfwrap{padding:8px 0 0}
  .kgmodal__pdfwrap .kgmodal__pdf-label{padding:0 14px 6px}

  /* End session button smaller */
  .kgend{padding:4px 8px;font-size:9px}
}

@media(max-width:480px){
  .kgchat{max-width:100%;gap:12px;padding:0 2px}
  .kgcard__body{padding:14px}
  /* Stack the input and submit button — side-by-side becomes too tight */
  .kginput{flex-wrap:wrap}
  .kginput input,
  .kginput textarea{flex:1 1 100%;min-width:0}
  .kginput .btn{flex:1 1 100%;justify-content:center}
}

/* KG demo hero + section modifiers — was previously set via inline styles,
   which couldn't be tuned per viewport. Class-based so @media can shrink
   top padding on phones. */
.p-hero--compact{padding:120px 0 28px}
.sect--kgchat{padding:24px 0 64px}
@media(max-width:760px){
  .p-hero--compact{padding:100px 0 22px}
  .sect--kgchat{padding:16px 0 48px}
}
@media(max-width:480px){
  .p-hero--compact{padding:88px 0 14px}
  .sect--kgchat{padding:12px 0 36px}
}

/* /brief archive list. Items are <a> tags injected by datavera-newsletter.js
   from /api/brief/index after page load. Container is [data-role="archive-list"]. */
.brief-archive [data-role="archive-list"]{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.brief-archive-item{display:flex;align-items:baseline;gap:14px;padding:14px 16px;background:rgba(18,18,18,0.9);border:1px solid #1e1e1e;border-radius:10px;color:#fff;text-decoration:none;transition:border-color .15s ease,transform .15s ease}
.brief-archive-item:hover{border-color:#8B5CF6;transform:translateY(-1px)}
.brief-archive-item-week{flex:0 0 auto;color:#888;font-family:'JetBrains Mono',monospace;font-size:12px;letter-spacing:.08em}
.brief-archive-item-title{flex:1 1 auto;color:#fff;font-size:15px;line-height:1.4}

/* /brief issue body — v2 TLDR-style sectioned layout. Rendered by
   render.py on publish; lives on dark-section background. */
.brief-issue__head { padding: 8px 0 32px; border-bottom: 1px solid #1e1e1e; margin-bottom: 32px; }
.brief-issue__week { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: #888; letter-spacing: .12em; }
.brief-issue__intro { color: #fff; font-size: 16px; line-height: 1.5; margin: 10px 0 0; max-width: 720px; }

.brief-issue__section { margin-bottom: 32px; }
.brief-issue__section-h {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  letter-spacing: .15em;
  color: #fff;
  padding-bottom: 8px;
  margin: 0 0 16px;
  border-bottom: 1px solid;
  border-image: linear-gradient(90deg, #0D59F2, #8b5cf6) 1;
}

.brief-issue__item { padding: 18px 0; border-bottom: 1px solid #1a1a1a; }
.brief-issue__item:last-child { border-bottom: none; }
.brief-issue__item-h { margin: 0 0 6px; font-size: 16.5px; line-height: 1.3; letter-spacing: -0.005em; }
.brief-issue__item-h a { color: #fff; text-decoration: none; font-weight: 600; transition: color .15s ease; }
.brief-issue__item-h a:hover { color: #0D59F2; }
.brief-issue__read { color: #888; font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 400; margin-left: 8px; }
.brief-issue__summary { color: #c8c8c8; font-size: 14px; line-height: 1.55; margin: 0 0 8px; max-width: 720px; }
.brief-issue__take {
  color: #d4c5ff;
  font-size: 13px;
  font-style: italic;
  line-height: 1.5;
  margin: 0 0 8px;
  padding: 7px 12px;
  background: rgba(139,92,246,0.06);
  border-left: 2px solid #8b5cf6;
  border-radius: 0 6px 6px 0;
  max-width: 720px;
}
.brief-issue__take-label { color: #b39bff; font-style: normal; font-weight: 600; margin-right: 6px; letter-spacing: 0.01em; }
.brief-issue__publisher { color: #777; font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; margin: 0; }

.brief-issue__quick { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 12px; }
.brief-issue__quick li { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 10px 0; border-bottom: 1px solid #1a1a1a; }
.brief-issue__quick li:last-child { border-bottom: none; }
.brief-issue__quick a { color: #fff; text-decoration: none; font-weight: 600; }
.brief-issue__quick a:hover { color: #0D59F2; }


@media (max-width: 640px) {
  .brief-issue__quick li { flex-direction: column; align-items: flex-start; gap: 4px; }
  .brief-issue__intro { font-size: 16px; }
}

/* Issue page language gating: only the active <section data-lang> is shown.
   Default state hides every block until JS adds .active to the matching one. */
.brief-issue[data-lang]{ display: none; }
.brief-issue[data-lang].active{ display: block; }

/* Issue page tab nav. Underline tabs (gradient on active, mono caps).
   Lives above [data-role="brief-issue-content"] in the static template.
   Single horizontal row; horizontal scroll on narrow viewports rather than
   wrapping to multiple lines. Padding-based centering keeps the bar
   full-bleed on the dark background while content centers within ~1200px. */
.brief-tabs{
  display:flex;
  flex-wrap:nowrap;
  gap:32px;
  padding:8px max(24px, calc(50vw - 600px));
  margin:0;
  max-width:none;
  border-bottom:1px solid #1e1e1e;
  background:#0a0a0a;
  overflow-x:auto;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
/* Flush variant on the issue page: blends into the page background. The
   back-link above (.brief-issue-backbar) owns the fixed-nav clearance, so
   tabs only need a small top gap. Horizontal padding still uses the tab
   band's centering pattern so tab labels align with the issue body's
   ~1200px content frame. */
.brief-tabs--flush{
  background:transparent;
  border-bottom:none;
  margin-top:8px;
  padding:8px max(24px, calc(50vw - 600px));
}

/* Back-link strip: sits directly under the fixed nav, left-aligned to the
   exact same gutter as the DATAVERA logo (nav padding-left = 28px). This
   places "View previous newsletters" vertically beneath the brand mark,
   which is the spot readers instinctively look for a back affordance. */
.brief-issue-backbar{
  padding:96px 28px 0;
}
@media (max-width:760px){
  .brief-issue-backbar{ padding:80px 16px 0; }
}
.brief-tabs::-webkit-scrollbar{ height:0; display:none; }
.brief-tab{
  appearance:none;
  background:transparent;
  border:0;
  border-bottom:2px solid transparent;
  padding:18px 0;
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  letter-spacing:.15em;
  text-transform:uppercase;
  color:#888;
  cursor:pointer;
  transition:color .15s ease, border-color .15s ease;
}
.brief-tab:hover{ color:#fff; }
.brief-tab.active{
  color:#fff;
  border-bottom-width:2px;
  border-image:linear-gradient(90deg, #0D59F2, #8B5CF6) 1;
}
.brief-tab:focus-visible{ outline:2px solid #8B5CF6; outline-offset:4px; }

/* Section gating: each <div class="brief-issue__section" data-section="..."> is
   hidden by default and only the .active one is shown. JS sets .active on
   tab click; default tab is launches_moves. */
.brief-issue__section{ display:none; }
.brief-issue__section.active{ display:block; }

@media (max-width:760px){
  .brief-tabs{ gap:16px; overflow-x:auto; padding:0 16px; }
  .brief-tab{ font-size:11px; padding:14px 0; white-space:nowrap; }
}

/* Issue header polish: bigger week eyebrow with mono caps + accent dot. */
.brief-issue__head{ padding:18px 0 22px; }
.brief-issue__week{ position:relative; padding-left:14px; }
.brief-issue__week::before{
  content:"";
  position:absolute;
  left:0; top:50%;
  width:6px; height:6px;
  border-radius:50%;
  background:linear-gradient(135deg, #0D59F2, #8B5CF6);
  transform:translateY(-50%);
  box-shadow:0 0 12px rgba(139,92,246,.6);
}

/* Per-item polish: gradient left bar, hover lift, read-time pill,
   publisher hover underline. */
.brief-issue__item{
  position:relative;
  padding:18px 0 18px 18px;
  border-bottom:1px solid #1a1a1a;
  transition:background .15s ease, transform .15s ease;
}
.brief-issue__item::before{
  content:"";
  position:absolute;
  left:0; top:18px; bottom:18px;
  width:2px;
  background:linear-gradient(180deg, #0D59F2, #8B5CF6);
  border-radius:2px;
  opacity:.5;
  transition:opacity .15s ease;
}
.brief-issue__item:hover{ background:rgba(255,255,255,0.02); transform:translateY(-1px); }
.brief-issue__item:hover::before{ opacity:1; }

/* Read-time becomes a pill instead of a plain inline span. Override the
   original inline-span rule from earlier work by using higher specificity. */
.brief-issue__item-h .brief-issue__read{
  display:inline-block;
  padding:1px 8px;
  margin-left:8px;
  background:rgba(255,255,255,0.06);
  border-radius:999px;
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  font-weight:400;
  color:#cfcfcf;
  letter-spacing:.05em;
  vertical-align:middle;
}

/* Publisher: gradient underline on hover. */
.brief-issue__publisher{
  display:inline-block;
  position:relative;
  padding-bottom:1px;
}
.brief-issue__item:hover .brief-issue__publisher{
  color:#fff;
  background-image:linear-gradient(90deg, #0D59F2, #8B5CF6);
  background-position:0 100%;
  background-size:100% 1px;
  background-repeat:no-repeat;
}

/* Quick link rows: lighter hover treatment (no left bar). */
.brief-issue__quick li{ transition:background .15s ease; }
.brief-issue__quick li:hover{ background:rgba(255,255,255,0.02); }

/* /brief landing — subscribe card centered + max-width, with eyebrow,
   trust dots, and a gradient top edge. Sits prominently above the
   archive list. */
.brief-subscribe{
  position:relative;
  max-width:680px;
  margin:0 auto;
  padding:44px 40px;
  background:rgba(18,18,18,0.92);
  border:1px solid #1e1e1e;
  border-radius:18px;
  overflow:hidden;
  text-align:center;
}
.brief-subscribe::before{
  content:"";
  position:absolute;
  top:0; left:0; right:0;
  height:2px;
  background:linear-gradient(90deg, #0D59F2, #8B5CF6);
}
.brief-subscribe-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:0 0 18px;
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#888;
}
.brief-subscribe-eyebrow i{
  display:inline-block;
  width:6px; height:6px;
  border-radius:50%;
  background:linear-gradient(135deg, #0D59F2, #8B5CF6);
  box-shadow:0 0 10px rgba(139,92,246,.55);
}
.brief-subscribe h2{ margin:0 0 10px; color:#fff; font-size:28px; line-height:1.2; }
.brief-subscribe > p{ color:#a8a8a8; margin:0 0 24px; font-size:15px; line-height:1.55; }
.brief-form{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  justify-content:center;
  max-width:520px;
  margin:0 auto;
}
.brief-form input[type="email"]{
  flex:1 1 260px;
  padding:14px 16px;
  background:rgba(0,0,0,0.4);
  border:1px solid #2a2a2a;
  border-radius:10px;
  color:#fff;
  font-size:15px;
  font-family:inherit;
  text-align:left;
}
.brief-form input[type="email"]:focus{ border-color:#8B5CF6; outline:none; }
.brief-form button{ flex:0 0 auto; }
.brief-form-status{ margin-top:16px; color:#cfcfcf; font-size:14px; }
.brief-subscribe-trust{
  list-style:none;
  padding:0;
  margin:24px 0 0;
  display:flex;
  flex-wrap:wrap;
  gap:8px 22px;
  justify-content:center;
  color:#888;
  font-size:12.5px;
}
.brief-subscribe-trust li{ display:inline-flex; align-items:center; gap:8px; }
.brief-trust-dot{
  display:inline-block;
  width:5px; height:5px;
  border-radius:50%;
  background:linear-gradient(135deg, #22c55e, #8B5CF6);
}

/* Archive: section header with count chip, then a clean list of cards. */
.brief-archive{ margin-top:80px; }
.brief-archive-head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:16px;
  margin:0 0 20px;
  padding-bottom:14px;
  border-bottom:1px solid #1e1e1e;
}
.brief-archive-head h2{ color:#fff; margin:0; font-size:22px; letter-spacing:-0.01em; }
.brief-archive-count{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:#777;
}
.brief-archive [data-role="archive-list"]{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:0;
}
.brief-archive-item{
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:18px;
  padding:18px 22px;
  background:rgba(18,18,18,0.92);
  border:1px solid #1e1e1e;
  border-radius:12px;
  color:#fff;
  text-decoration:none;
  transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.brief-archive-item::after{
  content:"→";
  color:#666;
  font-size:18px;
  transition:color .15s ease, transform .15s ease;
}
.brief-archive-item:hover{
  transform:translateY(-2px);
  border-color:#8B5CF6;
  background:rgba(24,18,28,0.92);
  box-shadow:0 12px 32px rgba(0,0,0,0.45);
}
.brief-archive-item:hover::after{
  color:#fff;
  transform:translateX(4px);
}
.brief-archive-item-week{
  color:#888;
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.brief-archive-item-title{
  color:#fff;
  font-size:16px;
  line-height:1.4;
  font-weight:500;
}
@media (max-width:560px){
  .brief-subscribe{ padding:32px 22px; }
  .brief-subscribe h2{ font-size:24px; }
  .brief-archive-item{ grid-template-columns:1fr auto; padding:16px 18px; }
  .brief-archive-item-week{ grid-column:1 / -1; }
}

/* Demoted dev controls: kept until launch but visually small + dim. */
.brief-dev{
  margin-top:64px;
  padding:18px 20px;
  border:1px dashed #333;
  border-radius:10px;
  background:rgba(255,255,255,0.015);
}
.brief-dev-label{
  color:#666;
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.12em;
  text-transform:uppercase;
  margin:0 0 10px;
}
.brief-dev-row{ display:flex; gap:10px; flex-wrap:wrap; }
.brief-dev .btn{ font-size:12px; padding:8px 14px; }
.brief-dev p[data-role="dev-status"]{
  color:#666;
  font-size:11px;
  margin:12px 0 0;
  font-family:'JetBrains Mono', monospace;
}

/* ===== /brief landing — one-screen layout (2026-05-03) =====
   Compressed hero + 2-column action band (subscribe left, latest issues right)
   so the full conversion unit is visible without scrolling. Cards use the
   kgcard visual language: subtle top-fade gradient bg, mono-caps terminal
   head strip with a pulsing accent dot, layered shadow with inset highlight.
   Reverses the v3.1 subscribe-at-bottom decision; revisit at issue >=10. */

.p-hero--brief h1{ font-size:clamp(32px,4.6vw,56px); margin-bottom:18px; }
.p-hero--brief .lede{ font-size:17px; margin-bottom:0; max-width:760px; }

.brief-action-section{ padding:48px 0 64px; }
@media (max-width:760px){ .brief-action-section{ padding:36px 0 56px; } }

.brief-action-band{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px;
  align-items:stretch;
}
@media (max-width:880px){
  .brief-action-band{ grid-template-columns:1fr; gap:20px; }
}

/* Brief landing card: shared chrome for subscribe + archive. */
.brief-card{
  position:relative;
  display:flex;
  flex-direction:column;
  background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,0));
  border:1px solid var(--line);
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 30px 60px -30px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,.05);
}
.brief-card__head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:14px 22px;
  border-bottom:1px solid var(--line);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.14em;
  color:var(--muted);
  text-transform:uppercase;
}
.brief-card__head-l{ display:inline-flex; align-items:center; gap:10px; min-width:0; }
.brief-card__head-r{
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.16em;
  color:var(--dim);
  text-transform:uppercase;
}
.brief-card__dot{
  width:6px; height:6px;
  border-radius:50%;
  flex:0 0 auto;
  animation:dvBriefPulse 2.4s ease-in-out infinite;
}
.brief-card__dot--mint{ background:var(--mint); box-shadow:0 0 12px var(--mint); }
.brief-card__dot--cyan{ background:var(--cyan); box-shadow:0 0 12px var(--cyan); }

/* ── CMO 2026-06-02: remove glowing/pulsing accent dots site-wide ──
   Cards, eyebrows, trust lists, live tags, demo blips/packets/satellites. */
.eyebrow .dot,
.btn.btn-live .live-dot,
.stage .src .s-blink,
.xtract-header .rhs .live,
.arrow .pkt,
.viz.pulse::before,
.orbit .sat,
.form-tag .dot,
.p-eyebrow i,
.v-head .dot,
.dblip,
.orr-chip i.pulse,
.orr-core-header .dot,
.orr-particles span,
.sc-header .rhs .live,
.ph-brand .dot,
.kg-blip,
.la-blip,
.kgmodal__lead-tag .dot,
.kgcard .v-head .dot,
.kg-status__dot,
.brief-card__dot,
.brief-card__trust-dot,
.brief-trust-dot,
.home-brief__bullet-dot{ display:none !important; }
/* De-glow functional indicators and demo graph nodes (keep the element, kill glow + pulse). */
.stage .stage-rotator i.on,
.orr-core .sc-dots a.active span,
.sc-dots a.active span,
.ph-tab span.on,
.viz-sched .vs-cal-g i.on,
.viz-graph svg .kg-node,
.viz.pulse::after{ box-shadow:none !important; animation:none !important; }
@keyframes dvBriefPulse{
  0%,100%{ opacity:1; transform:scale(1); }
  50%{ opacity:.5; transform:scale(.82); }
}
.brief-card__body{ padding:28px 28px 26px; flex:1; display:flex; flex-direction:column; }

/* Body typography (shared across subscribe / book / archive variants). */
.brief-card__h{
  margin:0 0 12px;
  font-family:var(--display);
  font-size:26px;
  letter-spacing:-.02em;
  color:var(--text);
  font-weight:600;
  line-height:1.18;
  text-wrap:balance;
}
.brief-card__p{
  margin:0 0 18px;
  color:var(--muted);
  font-size:15px;
  line-height:1.55;
  font-weight:300;
  max-width:48ch;
}
.brief-card__cta{ align-self:flex-start; }
.brief-card__form{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  justify-content:flex-start;
  max-width:none;
  margin:0;
}
.brief-card__form input[type="email"]{
  flex:1 1 220px;
  padding:14px 16px;
  background:rgba(0,0,0,.35);
  border:1px solid var(--line-2);
  border-radius:10px;
  color:var(--text);
  font-size:15px;
  font-family:inherit;
  text-align:left;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.brief-card__form input[type="email"]::placeholder{ color:var(--dim); }
.brief-card__form input[type="email"]:focus{
  border-color:var(--cyan);
  outline:none;
  box-shadow:0 0 0 3px rgba(124,200,255,.12);
}
.brief-card__form button{ flex:0 0 auto; }
.brief-card .brief-form-status{ margin-top:14px; color:var(--muted); font-size:13px; }

.brief-card__trust{
  list-style:none;
  padding:0;
  margin:18px 0 0;
  display:flex;
  flex-wrap:wrap;
  gap:8px 18px;
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--muted);
}
.brief-card__trust li{ display:inline-flex; align-items:center; gap:8px; }
.brief-card__trust-dot{
  width:5px; height:5px;
  border-radius:50%;
  background:var(--grad);
  flex:0 0 auto;
}

/* Archive card body */
.brief-card__body--archive{ padding:8px 22px 14px; }
.brief-card__list{ display:flex; flex-direction:column; }
.brief-card__empty{
  margin:auto 0;
  padding:48px 0;
  text-align:center;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--dim);
}

/* Override the default standalone .brief-archive-item card chrome
   (used elsewhere) when items live inside the archive card. */
.brief-card--archive .brief-archive-item{
  background:transparent;
  border:none;
  border-bottom:1px solid var(--line);
  border-radius:0;
  padding:14px 6px;
  box-shadow:none;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:baseline;
  gap:14px;
  color:var(--text);
  text-decoration:none;
  transition:color .15s ease, padding .15s ease;
}
.brief-card--archive .brief-archive-item:last-child{ border-bottom:none; }
.brief-card--archive .brief-archive-item::after{
  content:"→";
  color:var(--dim);
  font-size:14px;
  transition:color .15s ease, transform .15s ease;
}
.brief-card--archive .brief-archive-item:hover{
  background:transparent;
  border-color:var(--line);
  transform:none;
  box-shadow:none;
  color:var(--cyan);
  padding-left:10px;
}
.brief-card--archive .brief-archive-item:hover::after{
  color:var(--cyan);
  transform:translateX(3px);
}
.brief-card--archive .brief-archive-item-week{
  color:var(--dim);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.brief-card--archive .brief-archive-item-title{
  color:var(--text);
  font-size:14.5px;
  line-height:1.4;
  font-weight:400;
  transition:color .15s ease;
}
.brief-card--archive .brief-archive-item:hover .brief-archive-item-title{
  color:var(--cyan);
}

/* Tighter dev-controls top margin since the new layout removed the long
   archive section that justified the original 64px gap. */
.brief-action-section .brief-dev{ margin-top:48px; }

@media (max-width:560px){
  .brief-card__head{ padding:12px 18px; }
  .brief-card__body{ padding:22px 22px 20px; }
  .brief-card__body--archive{ padding:6px 18px 12px; }
  .brief-card--subscribe .brief-card__h{ font-size:22px; }
}

/* /brief/<week> issue page section: tighter top padding than .sect default
   (120px) so the tabs nudge up against the issue body, and no .dark-section
   slab so the page reads as one continuous color. */
.brief-issue-section{ padding-top:24px; padding-bottom:80px; }

/* Bottom CTA on the issue page: thin wrapper around a .brief-action-band
   that holds two .brief-card--quiet columns (Book left, Subscribe right). */
.brief-issue-cta-wrap{ margin-top:80px; margin-bottom:56px; }
@media (max-width:760px){ .brief-issue-cta-wrap{ margin-top:56px; margin-bottom:40px; } }

/* Quiet variant: subtler than the landing cards. No terminal head strip
   rendered (HTML omits it), softer chrome, smaller heading, less padding.
   Reader has just finished an issue; the cards are sign-offs, not loud
   conversion blocks. */
.brief-card--quiet{
  background:rgba(255,255,255,.018);
  box-shadow:none;
  border-color:rgba(255,255,255,.06);
}
.brief-card--quiet .brief-card__body{ padding:24px 26px 22px; }
.brief-card--quiet .brief-card__h{
  font-size:18px;
  margin:0 0 8px;
  letter-spacing:-.01em;
  line-height:1.25;
}
.brief-card--quiet .brief-card__p{
  font-size:14px;
  margin:0 0 14px;
  line-height:1.55;
}
.brief-card--quiet .brief-card__cta{ font-size:13px; padding:10px 16px; }
.brief-card--quiet .brief-card__form input[type="email"]{
  font-size:14px;
  padding:11px 14px;
}
.brief-card--quiet .brief-card__form button{ font-size:13px; padding:10px 16px; }
@media (max-width:560px){
  .brief-card--quiet .brief-card__body{ padding:20px 20px 18px; }
}

/* ===== Homepage Brief band (2026-05-03) =====
   Discovery surface for the weekly brief. Sits between the customer story
   and pricing sections. Two columns: pitch + CTAs left, top-2 latest
   issues right (rendered via JS from /api/brief/index). No subscribe form
   here — that surface stays only on /brief per the strategic rule. */
.home-brief{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:48px;
  align-items:start;
}
@media (max-width:880px){
  .home-brief{ grid-template-columns:1fr; gap:32px; }
}

.home-brief__pitch{
  display:flex;
  flex-direction:column;
  gap:28px;
}
.home-brief__bullets{
  list-style:none;
  padding:0;
  margin:0;
  display:flex;
  flex-direction:column;
  gap:14px;
}
.home-brief__bullets li{
  display:flex;
  align-items:flex-start;
  gap:14px;
  color:var(--text);
  font-size:16px;
  line-height:1.5;
}
.home-brief__bullet-dot{
  width:6px; height:6px;
  border-radius:50%;
  background:var(--grad);
  flex:0 0 auto;
  margin-top:8px;
  box-shadow:0 0 10px rgba(139,92,246,.35);
}
.home-brief__cta-row{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  align-items:center;
}

/* ===== /cost · AI cost calculator (2026-05-05) =====
   Live calculator for CFO buyers. Mirrors the .brief-card visual system so
   the whole site reads as one product. Two-column band on desktop (inputs
   left, output right), stacks on narrow viewports. */

.cost-band{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:32px;
  align-items:start;
}
@media (max-width:880px){
  .cost-band{ grid-template-columns:1fr; gap:24px; }
}

.cost-card{
  position:relative;
  background:linear-gradient(180deg, rgba(255,255,255,.04) 0%, rgba(255,255,255,.02) 100%);
  border:1px solid var(--line, #1e1e1e);
  border-radius:16px;
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 24px 60px rgba(0,0,0,.45);
  overflow:hidden;
}
.cost-card__head{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 18px;
  border-bottom:1px solid rgba(255,255,255,.06);
  background:rgba(0,0,0,.3);
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.18em;
  color:#aaa;
  text-transform:uppercase;
}
.cost-card__head-l{ display:inline-flex; align-items:center; gap:10px; }
.cost-card__dot{
  width:8px; height:8px; border-radius:50%;
  background:#8B5CF6;
  box-shadow:0 0 10px currentColor;
  animation:cost-pulse 2.4s ease-in-out infinite;
}
.cost-card__dot--mint{ background:#22c55e; }
.cost-card__dot--cyan{ background:#7df9ff; }
@keyframes cost-pulse {
  0%,100%{ opacity:1; transform:scale(1); }
  50%{ opacity:.55; transform:scale(.85); }
}

.cost-card__body{
  padding:24px 22px;
  display:flex; flex-direction:column; gap:18px;
}

/* ----- Inputs ----- */
.cost-field{
  display:flex; flex-direction:column; gap:6px;
}
.cost-field__label{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.16em;
  color:#bbb;
  text-transform:uppercase;
}
.cost-field input,
.cost-field select{
  appearance:none; -webkit-appearance:none; -moz-appearance:none;
  background-color:#0e0e10;
  border:1px solid rgba(255,255,255,.12);
  border-radius:10px;
  color:#fff;
  font-family:'Inter', sans-serif;
  font-size:18px;
  font-weight:500;
  padding:12px 14px;
  outline:none;
  transition:border-color .15s ease, background-color .15s ease;
}
.cost-field input:focus,
.cost-field select:focus{
  border-color:#8B5CF6;
  background-color:#15101e;
}
.cost-field select{
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%23bbb' stroke-width='2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
  background-size:16px;
  padding-right:42px;
  cursor:pointer;
  /* Hint to the OS that the open dropdown should use a dark color scheme.
     Chrome 81+ and Firefox 96+ honour this for the popup. */
  color-scheme:dark;
}
/* The opened dropdown menu (the popup with the options) is rendered by the
   browser/OS and ignores most parent CSS. Explicit background + color on
   <option> is the only reliable way to make the popup match the dark page. */
.cost-field select option,
.cost-field select optgroup{
  background-color:#0e0e10;
  color:#fff;
  font-weight:500;
}
.cost-field select option:checked{
  background-color:#1f1530;
  color:#fff;
}
.cost-field__hint{
  font-size:12px;
  color:#888;
  line-height:1.4;
}

/* ----- Output ----- */
.cost-row{
  display:flex; align-items:baseline; justify-content:space-between;
  gap:14px;
  padding:14px 0;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.cost-row:last-of-type{ border-bottom:none; }
.cost-row__label{
  font-size:14px;
  color:#ccc;
  line-height:1.4;
}
.cost-row__value{
  font-family:'Space Grotesk', 'Inter', sans-serif;
  font-size:28px;
  font-weight:700;
  color:#fff;
  white-space:nowrap;
  letter-spacing:-.01em;
}
.cost-row--vendor .cost-row__label{ color:#aaa; }
.cost-row__value--variable{
  color:#fff;
}
.cost-row--datavera .cost-row__value{
  color:#7df9ff;
}

.cost-headline{
  margin-top:8px;
  padding:14px 16px;
  background:rgba(125,249,255,.05);
  border-left:2px solid #7df9ff;
  border-radius:6px;
  font-size:14px;
  line-height:1.55;
  color:#ddd;
}
.cost-warning{
  margin-top:10px;
  padding:10px 14px;
  background:rgba(212,160,23,.08);
  border-left:2px solid #D4A017;
  border-radius:6px;
  font-size:13px;
  line-height:1.5;
  color:#D4A017;
}

/* ----- Why fixed beats variable ----- */
/* ============================================================
   Benchmark section on /cost. Four charts in a 2x2 thumb grid;
   each thumb opens a modal with the full chart + supporting copy.
   ============================================================ */

.bench-svg{
  width:100%;
  height:auto;
  display:block;
}

/* Thumb grid: 2x2 on desktop, single column on narrow screens. */
.bench-grid{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:18px;
  margin-top:24px;
}
@media (max-width:880px){
  .bench-grid{ grid-template-columns:1fr; }
}

/* Thumb card. Native <button> reset, then full glassmorphism card. */
.bench-thumb{
  all:unset;
  cursor:pointer;
  display:flex;
  flex-direction:column;
  gap:12px;
  background:rgba(18,18,18,.9);
  border:1px solid #1e1e1e;
  border-radius:14px;
  padding:20px 22px;
  transition:border-color .15s ease, transform .15s ease, box-shadow .15s ease;
  position:relative;
}
.bench-thumb:hover{
  border-color:rgba(125,249,255,.35);
  transform:translateY(-2px);
  box-shadow:0 6px 24px rgba(0,0,0,.35);
}
.bench-thumb:focus-visible{
  outline:none;
  border-color:rgba(125,249,255,.6);
  box-shadow:0 0 0 2px rgba(125,249,255,.25);
}
.bench-thumb__title{
  font-size:14px;
  font-weight:600;
  color:#eee;
  letter-spacing:-.005em;
  line-height:1.35;
}
.bench-thumb__canvas{
  width:100%;
  background:rgba(0,0,0,.2);
  border-radius:8px;
  padding:8px;
  overflow:hidden;
}
.bench-thumb__canvas svg{
  width:100%;
  height:auto;
  display:block;
}
.bench-thumb__hint{
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  color:#666;
  letter-spacing:.16em;
  text-transform:uppercase;
}
.bench-thumb:hover .bench-thumb__hint{
  color:#7df9ff;
}

/* Modal overlay. Fixed full-screen, centered panel. */
.bench-modal{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.bench-modal[hidden]{ display:none; }
.bench-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.85);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  cursor:pointer;
  animation:bench-fade .18s ease;
}
.bench-modal__panel{
  position:relative;
  background:rgba(12,12,12,.98);
  border:1px solid #2a2a2a;
  border-radius:16px;
  padding:30px 34px 26px;
  width:min(1100px, 95vw);
  max-height:90vh;
  overflow-y:auto;
  z-index:1;
  box-shadow:0 24px 80px rgba(0,0,0,.6);
  animation:bench-pop .22s ease;
}
@keyframes bench-fade { from { opacity:0; } to { opacity:1; } }
@keyframes bench-pop {
  from { opacity:0; transform:scale(.96) translateY(8px); }
  to   { opacity:1; transform:scale(1) translateY(0); }
}
.bench-modal__close{
  position:absolute;
  top:14px;
  right:14px;
  width:36px;
  height:36px;
  border-radius:8px;
  background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.1);
  color:#ccc;
  font-size:22px;
  line-height:1;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:background .15s, color .15s, border-color .15s;
}
.bench-modal__close:hover{
  background:rgba(255,255,255,.08);
  color:#fff;
  border-color:rgba(255,255,255,.2);
}
.bench-modal__title{
  font-size:20px;
  font-weight:600;
  color:#eee;
  margin:0 40px 8px 0;
  letter-spacing:-.01em;
}
.bench-modal__sub{
  color:#888;
  font-size:14px;
  line-height:1.55;
  margin:0 0 18px;
}
.bench-modal__canvas{
  width:100%;
}
.bench-modal__canvas svg{
  width:100%;
  height:auto;
  display:block;
}
.bench-modal__source{
  color:#555;
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  margin:14px 0 0;
  letter-spacing:.01em;
}

/* Inline benchmark explainer. Two-column grid of "what each acronym means"
   so a CFO who doesn't live in ML papers can read the bar chart. */
.bench-explainer{
  display:grid;
  grid-template-columns:repeat(2, 1fr);
  gap:10px 22px;
  margin:18px 0 0;
  padding:14px 18px;
  background:rgba(0,0,0,.28);
  border:1px solid rgba(255,255,255,.05);
  border-radius:8px;
}
.bench-explainer__row strong{
  display:block;
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  color:#bbb;
  font-weight:600;
  letter-spacing:.06em;
  margin-bottom:2px;
}
.bench-explainer__row span{
  display:block;
  color:#888;
  font-size:12.5px;
  line-height:1.55;
}
@media (max-width:680px){
  .bench-explainer{ grid-template-columns:1fr; }
}

/* Honesty + anchor footer below the charts. */
.bench-honesty{
  margin-top:24px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px;
}
.bench-honesty__caveat,
.bench-honesty__anchor{
  background:rgba(18,18,18,.7);
  border:1px solid #1e1e1e;
  border-radius:10px;
  padding:18px 20px;
  font-size:14px;
  line-height:1.6;
  color:#bbb;
  margin:0;
}
.bench-honesty__anchor{
  border-color:rgba(125,249,255,.2);
  background:rgba(125,249,255,.03);
}
.bench-honesty__caveat b,
.bench-honesty__anchor b{
  color:#eee;
}
@media (max-width:880px){
  .bench-honesty{ grid-template-columns:1fr; }
}

.cost-why-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:24px;
  margin-top:36px;
}
@media (max-width:980px){
  .cost-why-grid{ grid-template-columns:1fr; }
}
.cost-why-card{
  position:relative;
  background:rgba(18,18,18,.9);
  border:1px solid #1e1e1e;
  border-radius:14px;
  padding:28px 24px;
}
.cost-why-card__num{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.2em;
  color:#8B5CF6;
  display:block;
  margin-bottom:12px;
}
.cost-why-card h3{
  font-size:20px; line-height:1.25;
  margin:0 0 10px;
  color:#fff;
  font-weight:600;
}
.cost-why-card p{
  font-size:14px; line-height:1.6;
  color:#aaa;
  margin:0;
}

/* ----- How we calculate (rates table) ----- */
.cost-rates{
  margin-top:32px;
  background:rgba(18,18,18,.7);
  border:1px solid #1e1e1e;
  border-radius:14px;
  padding:28px;
}
.cost-rates__table{
  width:100%;
  border-collapse:collapse;
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
}
.cost-rates__table th{
  text-align:left;
  padding:10px 12px;
  border-bottom:1px solid rgba(255,255,255,.1);
  color:#888;
  font-weight:500;
  letter-spacing:.1em;
  text-transform:uppercase;
  font-size:11px;
}
.cost-rates__table td{
  padding:14px 12px;
  border-bottom:1px solid rgba(255,255,255,.04);
  color:#ddd;
}
.cost-rates__table tr:last-child td{ border-bottom:none; }
.cost-rates__table tr:first-child td{
  color:#fff; font-weight:600;
}

/* Alternative-vendor rows: dim cost detail, lift "what you build" so the load is visible */
.cost-rates__table tbody tr.cost-rates__row--alt td:last-child{
  color:#9aa0b4;
  font-size:12.5px;
  line-height:1.55;
}
.cost-rates__table tbody tr.cost-rates__row--alt td:nth-child(3){
  color:#d5d9e6;
}

/* Datavera rows: highlighted band, gradient price, green "nothing to build" cell */
.cost-rates__table tbody tr.cost-rates__row--us{
  background:linear-gradient(180deg,rgba(139,92,246,.14),rgba(139,92,246,.04));
}
.cost-rates__table tbody tr.cost-rates__row--us td{
  color:#fff;
  padding-top:18px;
  padding-bottom:18px;
}
.cost-rates__table tbody tr.cost-rates__row--us td:first-child{
  position:relative;
  padding-left:18px;
}
.cost-rates__table tbody tr.cost-rates__row--us td:first-child::before{
  content:"";
  position:absolute;
  left:0;
  top:14px;
  bottom:14px;
  width:3px;
  background:var(--grad);
  border-radius:2px;
}
.cost-rates__table tbody tr.cost-rates__row--us td:nth-child(3){
  color:#34d399;
  font-weight:500;
}
.cost-rates__price{
  font-family:var(--display);
  font-size:clamp(18px,1.6vw,22px);
  font-weight:600;
  color:#fff;
  letter-spacing:-.01em;
  line-height:1.15;
  display:inline-block;
  white-space:nowrap;
}
@media(max-width:820px){
  .cost-rates__price{font-size:17px;white-space:normal}
  .cost-rates__table tbody tr.cost-rates__row--us td{padding-top:14px;padding-bottom:14px}
}
.cost-rates__note{
  margin-top:18px;
  font-size:13px;
  line-height:1.6;
  color:#888;
}
.cost-rates__intro{
  margin:0 0 14px;
  font-size:13px;
  line-height:1.6;
  color:#888;
}
.cost-honesty{
  margin-top:24px;
  padding:18px 22px;
  background:rgba(13,89,242,.05);
  border-left:2px solid #0D59F2;
  border-radius:8px;
}
.cost-honesty p{
  margin:0;
  font-size:14.5px;
  line-height:1.65;
  color:#ddd;
}
.cost-honesty b{ color:#fff; }

/* ----- Bottom CTA band (mirror brief.body.html bottom CTA) ----- */
.cost-action-band{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px;
  margin-top:8px;
}
@media (max-width:880px){
  .cost-action-band{ grid-template-columns:1fr; }
}
.cost-card--book .cost-card__body,
.cost-card--security .cost-card__body{
  padding:28px 26px;
}
.cost-card__h{
  font-size:22px; line-height:1.3;
  margin:0 0 8px;
  color:#fff;
  font-weight:600;
}
.cost-card__p{
  font-size:14.5px; line-height:1.6;
  color:#aaa;
  margin:0 0 18px;
}

/* Hero h1 sizing on /cost (matches the rest of subpages without overriding) */
.p-hero--compact .p-hero-inner h1{
  font-size:clamp(36px, 5vw, 64px);
}

/* Tab toggle between the two calculators. Underline-style, monospace caps,
   matches the visual language of /brief section tabs. */
.cost-tabs{
  display:flex;
  gap:4px;
  border-bottom:1px solid rgba(255,255,255,.1);
  flex-wrap:nowrap;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
}
.cost-tab-btn{
  background:none;
  border:none;
  padding:14px 18px;
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#888;
  cursor:pointer;
  border-bottom:2px solid transparent;
  transition:color .15s, border-color .15s;
  white-space:nowrap;
}
.cost-tab-btn:hover{ color:#ddd; }
.cost-tab-btn.active{
  color:#fff;
  border-image:linear-gradient(90deg, #0D59F2, #8B5CF6) 1;
}

/* Plan-info card under the per-seat dropdown. Renders the description +
   source link for the selected enterprise plan. */
.cost-plan-info{
  margin-top:10px;
  padding:12px 14px;
  background:rgba(0,0,0,.3);
  border:1px solid rgba(255,255,255,.06);
  border-radius:8px;
  font-size:13px;
  line-height:1.55;
  color:#bbb;
}
.cost-plan-info b{ color:#fff; }
.cost-plan-info a{
  color:#7df9ff;
  text-decoration:underline;
  text-decoration-color:rgba(125,249,255,.3);
}
.cost-plan-info a:hover{
  text-decoration-color:#7df9ff;
}

/* Honesty paragraph that lives directly under each calculator. Different
   from the bottom-of-page honesty block (.cost-honesty) so we can place
   one per tab without colliding. */
.cost-honesty-tab{
  margin-top:24px;
  padding:22px 26px;
  background:rgba(139,92,246,.05);
  border-left:2px solid #8B5CF6;
  border-radius:8px;
}
.cost-honesty__h{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#8B5CF6;
  margin:0 0 14px;
  font-weight:500;
}
.cost-honesty__p{
  margin:0 0 12px;
  font-size:14.5px;
  line-height:1.65;
  color:#ddd;
}
.cost-honesty__p:last-child{ margin-bottom:0; }
.cost-honesty-tab b{ color:#fff; }

/* Hero pill — risk-reversal banner directly below the lede. The free
   30-day pilot is the strongest hook on the page; this surfaces it
   above the fold so a scanning CFO sees it before scrolling. */
.hero-pill{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-top:18px;
  padding:10px 18px;
  background:rgba(34,197,94,.08);
  border:1px solid rgba(34,197,94,.25);
  border-radius:999px;
  color:#cfe;
  font-size:14px;
  line-height:1.4;
  max-width:100%;
}
.hero-pill__dot{
  width:8px; height:8px; border-radius:50%;
  background:#22c55e;
  box-shadow:0 0 10px #22c55e;
  flex:none;
}
.hero-pill b{ color:#fff; }

/* Inline CTA strip placed at decision moments (after the calculator,
   after the benchmarks). Captures the buyer when conviction peaks. */
.cost-cta-strip{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin-top:28px;
  padding:22px 26px;
  background:rgba(125,249,255,.04);
  border:1px solid rgba(125,249,255,.18);
  border-radius:14px;
}
.cost-cta-strip__l{ flex:1; min-width:0; }
.cost-cta-strip__eyebrow{
  display:block;
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#7df9ff;
  font-weight:500;
  margin-bottom:6px;
}
.cost-cta-strip__p{
  margin:0;
  font-size:14.5px;
  line-height:1.55;
  color:#ddd;
}
.cost-cta-strip .btn{
  flex:none;
  white-space:nowrap;
}
@media (max-width:760px){
  .cost-cta-strip{
    flex-direction:column;
    align-items:flex-start;
  }
  .cost-cta-strip .btn{ align-self:stretch; justify-content:center; }
}

/* Sub-section headers inside "How we calculate" (one for per-seat plans,
   one for API rates). */
.cost-rates-h{
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#8B5CF6;
  margin:36px 0 14px;
  font-weight:500;
}
.cost-rates-h:first-of-type{ margin-top:24px; }

.cost-rates__table small{
  display:block;
  font-size:11px;
  color:#888;
  font-family:'Inter', sans-serif;
  font-weight:400;
  margin-top:2px;
}
.cost-rates__table a{
  color:#7df9ff;
  text-decoration:none;
  border-bottom:1px solid rgba(125,249,255,.3);
}
.cost-rates__table a:hover{
  border-bottom-color:#7df9ff;
}

/* ===== /cost · unified single-calculator layout (2026-05-05) =====
   Inputs strip on top, output table with three sections below. */
.cost-band-unified{
  display:flex;
  flex-direction:column;
  gap:24px;
}
.cost-card--inputs-wide,
.cost-card--output-wide{
  width:100%;
}

/* Three inputs in a horizontal row on desktop; stacks on narrow. */
.cost-card__body--row{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:22px 26px;
  align-items:start;
}
@media (max-width:880px){
  .cost-card__body--row{ grid-template-columns:1fr; }
}

/* Output card body holds three labelled sections (plans / api / datavera)
   plus the headline narrative below them. */
.cost-card__body--rows{
  display:flex;
  flex-direction:column;
  gap:8px;
}

.cost-section-h{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#888;
  margin:18px 0 6px;
  font-weight:500;
  padding-bottom:6px;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.cost-section-h:first-child{ margin-top:0; }
.cost-section-h--dv{ color:#7df9ff; }

.cost-rows{
  display:flex;
  flex-direction:column;
}

/* Override the prior .cost-row borders since we now group rows into
   sections; rows inside a section share thin separators, last row clean. */
.cost-rows .cost-row{
  border-bottom:1px solid rgba(255,255,255,.04);
  padding:12px 0;
}
.cost-rows .cost-row:last-child{ border-bottom:none; }

.cost-row--plan .cost-row__value,
.cost-row--api  .cost-row__value{
  color:#fff;
  font-size:22px;
}
.cost-row--datavera .cost-row__value{
  color:#7df9ff;
  -webkit-text-fill-color:#7df9ff;
  font-size:22px;
}

/* The cheapest row gets a subtle green accent and a small "CHEAPEST" badge.
   Mint #22c55e is the same green used elsewhere for "live" indicators. */
.cost-row--cheapest{
  background:rgba(34,197,94,.06);
  margin:0 -12px;
  padding-left:12px !important;
  padding-right:12px !important;
  border-radius:6px;
  border-left:2px solid #22c55e;
  border-bottom-color:transparent !important;
}
.cost-row--cheapest .cost-row__value{
  -webkit-text-fill-color:#22c55e !important;
  background:none !important;
  color:#22c55e;
}

.cost-row__label{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  flex:1;
}
.cost-row__badge{
  display:inline-flex;
  align-items:center;
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
  padding:3px 7px;
  border-radius:4px;
  font-weight:500;
  white-space:nowrap;
}
.cost-row__badge--cheap{
  background:rgba(34,197,94,.15);
  color:#22c55e;
  border:1px solid rgba(34,197,94,.3);
}
.cost-row__badge--warn{
  background:rgba(212,160,23,.12);
  color:#D4A017;
  border:1px solid rgba(212,160,23,.3);
}

/* Headline narrative tightens its margins inside the output card so it
   reads as a footnote to the table, not a separate section. */
.cost-card__body--rows .cost-headline{
  margin-top:18px;
}

/* Token-volume summary sits at the very top of the output card and walks
   the reader through the inputs-to-tokens chain. Two monospace lines so
   the math is visually obvious. */
.cost-volume-summary{
  margin-bottom:8px;
}
.cost-volume-summary .cost-section-h{
  margin-top:0;
}
.cost-volume-line{
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  color:#bbb;
  line-height:1.7;
  word-break:break-word;
}
.cost-volume-line:last-child{
  color:#7df9ff;
  font-weight:500;
}

/* Per-row layout: the existing label+value flex moves into .cost-row__top,
   and the new .cost-row__formula sits underneath in small monospace grey. */
.cost-rows .cost-row{
  display:flex;
  flex-direction:column;
  gap:4px;
  align-items:stretch;
}
.cost-row__top{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:14px;
}
.cost-row__formula{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  color:#777;
  line-height:1.6;
  word-break:break-word;
  letter-spacing:.01em;
}
.cost-row--cheapest .cost-row__formula{
  color:#22c55e;
  opacity:.85;
}

/* ============================================================
   Cost-comparison table (replaces stacked card-rows). Two columns:
   option name (with subtitle + inline badges) and right-aligned
   12-month cost. Math row sits underneath each option, hidden by
   default; one toggle button on the card header reveals all.
   ============================================================ */

.cost-card__body--table{
  display:flex;
  flex-direction:column;
  gap:14px;
  padding-top:6px;
}

/* Card head needs space for the math toggle on the right. */
.cost-card__head{ position:relative; }
.cost-math-toggle{
  margin-left:auto;
  background:transparent;
  border:1px solid rgba(255,255,255,.12);
  color:#bbb;
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.12em;
  text-transform:uppercase;
  padding:6px 12px;
  border-radius:6px;
  cursor:pointer;
  transition:border-color .15s, color .15s, background .15s;
}
.cost-math-toggle:hover{
  border-color:rgba(125,249,255,.35);
  color:#7df9ff;
  background:rgba(125,249,255,.04);
}
.cost-math-toggle[aria-pressed="true"]{
  border-color:rgba(125,249,255,.4);
  color:#7df9ff;
  background:rgba(125,249,255,.06);
}

.cost-volume-line--single{
  font-family:'JetBrains Mono', monospace;
  font-size:13px;
  color:#bbb;
  line-height:1.6;
  border-bottom:1px solid rgba(255,255,255,.06);
  padding-bottom:10px;
  margin-bottom:6px;
  word-break:break-word;
}

/* ============================================================
   Cost grid (replaces the previous flat table). The grid is a stack of
   tier sections; each tier is a heading + a column of "row cards". Each
   row card is a 3-zone layout: vendor identity / capability bar / price.
   The capability bar is the visual story: Datavera fills all seven cells,
   alternatives only fill what they actually ship, exposing the gap.
   ============================================================ */

.cost-grid{
  display:flex;
  flex-direction:column;
  gap:36px;
  margin-top:6px;
}

/* Tier section heads. Eyebrow-style title with a thin rule on the left
   for an editorial register. Kicker on the right is a one-line tldr. */
.cost-tier__head{
  margin-bottom:14px;
}
.cost-tier__title-line{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
}
.cost-tier__rule{
  flex:0 0 26px;
  height:1px;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.35));
}
.cost-tier__title{
  margin:0;
  font-family:'JetBrains Mono', ui-monospace, monospace;
  font-size:12px;
  font-weight:600;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#e9e9e9;
  line-height:1.2;
}
.cost-tier__kicker{
  font-family:'JetBrains Mono', monospace;
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:#7df9ff;
  margin-left:auto;
  padding:4px 10px;
  border:1px solid rgba(125,249,255,.22);
  border-radius:999px;
  background:rgba(125,249,255,.05);
}
.cost-tier__intro{
  margin:10px 0 0;
  font-size:13px;
  line-height:1.6;
  color:#9aa0a6;
  max-width:820px;
}
.cost-tier__rows{
  display:flex;
  flex-direction:column;
  gap:12px;
}

/* ----------------------------------------------------------------
   Row card. Default state for non-DV vendors: dim, partial, secondary.
   The card_grid inside is a 3-column layout that collapses on narrow
   viewports.
   ---------------------------------------------------------------- */
.cost-card-row{
  position:relative;
  border:1px solid rgba(255,255,255,.07);
  border-radius:14px;
  background:linear-gradient(180deg, rgba(15,17,24,.92), rgba(10,12,18,.95));
  padding:20px 22px;
  transition:border-color .2s ease, transform .2s ease, box-shadow .2s ease;
  overflow:hidden;
}
.cost-card-row::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:radial-gradient(120% 80% at 0% 0%, rgba(255,255,255,.04), transparent 55%);
  pointer-events:none;
}
.cost-card-row:hover{
  border-color:rgba(255,255,255,.14);
  transform:translateY(-1px);
}

.cost-card__head{
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  margin-bottom:14px;
  /* Override the parent .cost-card__head rule so this inherits its own
     baseline (the parent rule applies to the section card, not row cards). */
  position:static;
  border-bottom:none;
  padding:0;
}
.cost-card__id{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:0;
  flex:1 1 auto;
}
.cost-card__rule{
  width:6px;
  height:24px;
  border-radius:2px;
  background:rgba(255,255,255,.12);
  flex:0 0 auto;
}
.cost-card__title{
  margin:0;
  font-family:'JetBrains Mono', ui-monospace, monospace;
  font-size:15px;
  font-weight:600;
  letter-spacing:.01em;
  color:#e9e9e9;
  line-height:1.25;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.cost-card__badges{
  display:inline-flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
}

/* ----------------------------------------------------------------
   Three-zone body layout
   ---------------------------------------------------------------- */
.cost-card__grid{
  display:grid;
  grid-template-columns: minmax(0, 22%) minmax(0, 1fr) minmax(220px, 24%);
  gap:24px;
  align-items:flex-start;
}
@media (max-width:920px){
  .cost-card__grid{
    grid-template-columns:1fr;
    gap:18px;
  }
}

.cost-card__lede{
  min-width:0;
}
.cost-card__cap{
  margin:0;
  font-size:13px;
  line-height:1.55;
  color:#9aa0a6;
}
.cost-card-row.is-anchor .cost-card__cap{
  color:#dde1ea;
}

/* ----------------------------------------------------------------
   Capability bar — the visual hook. 7 cells in a single horizontal row,
   each marked as included / not on this plan / build it yourself.
   Datavera = all cells lit. The eye reads "complete" vs "partial" before
   it reads any number.
   ---------------------------------------------------------------- */
.cost-bar{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:0;
}
.cost-bar__cells{
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:6px;
  min-width:0;
}
@media (max-width:560px){
  .cost-bar__cells{ grid-template-columns:repeat(4, 1fr); }
}
.cost-bar__summary{
  font-family:'JetBrains Mono', monospace;
  font-size:11.5px;
  letter-spacing:.02em;
  color:#7c828c;
  line-height:1.5;
}
.cost-card-row.is-anchor .cost-bar__summary{
  color:#a8e9f4;
}

.cost-cap{
  position:relative;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px;
  padding:10px 6px 8px;
  border-radius:8px;
  border:1px solid rgba(255,255,255,.07);
  background:rgba(255,255,255,.02);
  text-align:center;
  min-width:0;
}
.cost-cap__mark{
  width:18px;
  height:18px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.04);
  position:relative;
  flex:0 0 auto;
  transition:background .2s ease, border-color .2s ease;
}
.cost-cap__label{
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:#7c828c;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:100%;
}

/* "in" — included: cyan checkmark, slight glow */
.cost-cap--in{
  border-color:rgba(125,249,255,.32);
  background:rgba(125,249,255,.08);
}
.cost-cap--in .cost-cap__mark{
  background:#7df9ff;
  border-color:#7df9ff;
  box-shadow:0 0 12px rgba(125,249,255,.55);
}
.cost-cap--in .cost-cap__mark::after{
  content:"";
  position:absolute;
  left:5px; top:8px;
  width:7px; height:3px;
  border-left:2px solid #062028;
  border-bottom:2px solid #062028;
  transform:rotate(-45deg);
}
.cost-cap--in .cost-cap__label{
  color:#cdeef5;
}

/* "out" — gap: dim, slashed */
.cost-cap--out{
  border-color:rgba(255,255,255,.05);
  background:rgba(255,255,255,.012);
  opacity:.85;
}
.cost-cap--out .cost-cap__mark{
  background:transparent;
  border-color:rgba(120,120,120,.35);
}
.cost-cap--out .cost-cap__mark::after{
  content:"";
  position:absolute;
  left:50%; top:50%;
  width:14px; height:1.5px;
  background:rgba(150,150,150,.55);
  transform:translate(-50%, -50%) rotate(-45deg);
}
.cost-cap--out .cost-cap__label{
  color:#5d6168;
  text-decoration:line-through;
  text-decoration-thickness:1px;
  text-decoration-color:rgba(120,120,120,.45);
}

/* "diy" — buyer must build it themselves: amber warning */
.cost-cap--diy{
  border-color:rgba(212,160,23,.18);
  background:rgba(212,160,23,.04);
}
.cost-cap--diy .cost-cap__mark{
  background:transparent;
  border-color:rgba(212,160,23,.55);
}
.cost-cap--diy .cost-cap__mark::after{
  content:"…";
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  font-family:'JetBrains Mono', monospace;
  font-size:14px;
  line-height:1;
  color:#D4A017;
  letter-spacing:1px;
  margin-top:-3px;
}
.cost-cap--diy .cost-cap__label{
  color:#bd9a3a;
}

/* ----------------------------------------------------------------
   Price column. Right-aligned, large monospace numeral, with optional
   ALL-IN stamp (DV) or engineering addendum (others).
   ---------------------------------------------------------------- */
.cost-card__price{
  display:flex;
  flex-direction:column;
  gap:8px;
  text-align:right;
  align-items:flex-end;
  min-width:0;
}
@media (max-width:920px){
  .cost-card__price{
    text-align:left;
    align-items:flex-start;
  }
}
.cost-card__stamp{
  display:inline-flex;
  align-items:center;
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  font-weight:700;
  letter-spacing:.18em;
  text-transform:uppercase;
  padding:5px 10px;
  border-radius:4px;
  background:rgba(125,249,255,.12);
  color:#7df9ff;
  border:1px solid rgba(125,249,255,.42);
  white-space:nowrap;
}
.cost-card__amountline{
  display:flex;
  align-items:baseline;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
@media (max-width:920px){
  .cost-card__amountline{ justify-content:flex-start; }
}
.cost-card__amount{
  font-family:'JetBrains Mono', monospace;
  font-size:28px;
  font-weight:700;
  letter-spacing:-.02em;
  color:#fff;
  line-height:1;
  white-space:nowrap;
}
.cost-card__per{
  font-family:'JetBrains Mono', monospace;
  font-size:12px;
  letter-spacing:.04em;
  color:#7c828c;
  white-space:nowrap;
}
.cost-card__quote{
  font-family:'JetBrains Mono', monospace;
  font-size:14px;
  font-style:italic;
  color:#7c828c;
}
.cost-card__addendum{
  font-family:'JetBrains Mono', monospace;
  font-size:11.5px;
  line-height:1.55;
  color:#bd9a3a;
  max-width:240px;
  white-space:normal;
}
@media (max-width:920px){
  .cost-card__addendum{ max-width:none; }
}

/* ----------------------------------------------------------------
   Math line. Hidden until the math toggle is on. Lives below the grid.
   ---------------------------------------------------------------- */
.cost-card__math{
  display:none;
  margin-top:14px;
  padding-top:12px;
  border-top:1px dashed rgba(255,255,255,.07);
  font-family:'JetBrains Mono', monospace;
  font-size:11.5px;
  line-height:1.7;
  color:#7c828c;
  letter-spacing:.01em;
  word-break:break-word;
}
.cost-grid[data-show-math="true"] .cost-card__math{ display:block; }
.cost-card__math-pay{ color:#bbb; }
.cost-card__math-sep{ color:#3a3e46; }

/* ----------------------------------------------------------------
   Datavera anchor row. The visual hero. Cyan accent ring, bigger price,
   subtle radial glow, a left rule that anchors it as "the answer".
   ---------------------------------------------------------------- */
.cost-card-row.is-anchor{
  border-color:rgba(125,249,255,.45);
  background:
    radial-gradient(140% 90% at 100% 0%, rgba(125,249,255,.10), transparent 55%),
    linear-gradient(180deg, rgba(11,18,24,.95), rgba(7,11,16,.98));
  box-shadow:
    0 0 0 1px rgba(125,249,255,.10) inset,
    0 14px 40px -22px rgba(125,249,255,.45);
  padding:24px 26px;
}
.cost-card-row.is-anchor::after{
  content:"";
  position:absolute;
  left:0; top:18px; bottom:18px;
  width:3px;
  border-radius:0 3px 3px 0;
  background:linear-gradient(180deg, #7df9ff, rgba(125,249,255,.2));
  box-shadow:0 0 14px rgba(125,249,255,.55);
}
.cost-card-row.is-anchor .cost-card__rule{
  background:#7df9ff;
  box-shadow:0 0 10px rgba(125,249,255,.6);
}
.cost-card-row.is-anchor .cost-card__title{
  color:#fff;
}
.cost-card-row.is-anchor .cost-card__amount{
  color:#7df9ff;
  font-size:32px;
}
.cost-card-row.is-anchor .cost-card__per{
  color:#a8e9f4;
}
.cost-card-row.is-anchor:hover{
  border-color:rgba(125,249,255,.65);
}

/* ----------------------------------------------------------------
   Cheapest (when not Datavera). A discreet mint-green accent — never
   strong enough to challenge the Datavera anchor for primacy. The
   cheapest badge already lives in the badge row.
   ---------------------------------------------------------------- */
.cost-card-row.is-cheapest:not(.is-anchor){
  border-color:rgba(34,197,94,.28);
}
.cost-card-row.is-cheapest:not(.is-anchor) .cost-card__rule{
  background:#22c55e;
}
.cost-card-row.is-cheapest:not(.is-anchor) .cost-card__amount{
  color:#22c55e;
}

/* When the Datavera row is also cheapest: anchor styling wins, but we
   nudge the badge tint so it still reads. */
.cost-card-row.is-anchor.is-cheapest .cost-card__amount{
  color:#7df9ff;
}

/* ----------------------------------------------------------------
   Mobile tightening
   ---------------------------------------------------------------- */
@media (max-width:560px){
  .cost-card-row{ padding:18px 16px; }
  .cost-card-row.is-anchor{ padding:20px 18px; }
  .cost-card__amount{ font-size:24px; }
  .cost-card-row.is-anchor .cost-card__amount{ font-size:28px; }
  .cost-card__title{ font-size:14px; white-space:normal; }
  .cost-cap{ padding:8px 4px 6px; }
  .cost-cap__label{ font-size:9px; }
  .cost-tier__title{ font-size:11px; }
  .cost-tier__kicker{ font-size:10px; }
}

/* Badges (cheapest / minseats / rate-limited / would-not-keep-up / overage) */
.cost-badge{
  display:inline-flex;
  align-items:center;
  font-family:'JetBrains Mono', monospace;
  font-size:10px;
  letter-spacing:.12em;
  text-transform:uppercase;
  padding:3px 7px;
  border-radius:4px;
  font-weight:500;
  white-space:nowrap;
}
.cost-badge--cheap{
  background:rgba(34,197,94,.15);
  color:#22c55e;
  border:1px solid rgba(34,197,94,.3);
}
.cost-badge--warn{
  background:rgba(212,160,23,.12);
  color:#D4A017;
  border:1px solid rgba(212,160,23,.3);
}
.cost-badge--bad{
  background:rgba(239,68,68,.14);
  color:#ef4444;
  border:1px solid rgba(239,68,68,.32);
}
.cost-badge--fixed{
  background:rgba(125,249,255,.14);
  color:#7df9ff;
  border:1px solid rgba(125,249,255,.32);
  font-weight:600;
}
.cost-badge--swiss{
  background:rgba(255,255,255,.06);
  color:#e5e5e5;
  border:1px solid rgba(255,255,255,.18);
}
.cost-badge--diy{
  background:rgba(139,92,246,.12);
  color:#a78bfa;
  border:1px solid rgba(139,92,246,.3);
}
.cost-badge--platform{
  background:linear-gradient(90deg, rgba(13,89,242,.18), rgba(125,249,255,.16));
  color:#ffd9bf;
  border:1px solid rgba(13,89,242,.4);
  font-weight:700;
  letter-spacing:.06em;
}

