@import url('https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
/* ============================================================
   a8core.css — common stylesheet for the A8 Core™ marketing site
   Covers: home, demo, NDA, investor desk, and all Resources /
   Company / Legal pages. (The API reference is a standalone
   docs template with its own embedded styles.)
   ============================================================ */

:root{--verd-fill:#38A98F;--crit-bg:#2A1016;--warn-bg:#2E1C0E;--amber:var(--pending);--ok-bg:#10301F;--pending-bg:#2A1C0E;
    --ink-950:#060E14;
    --ink-900:#0B1620;
    --ink-800:#12232E;
    --surface:#162A36;
    --surface-2:#1A303D66;
    --line:#1E3846;
    --line-soft:#172B36;
    --blue:#6FC3AE;
    --blue-bright:#8FD6C3;
    --blue-deep:#2F8B76;
    --mint:#34E0A6;
    --mint-dim:#1F8F6A;
    --txt:#e8eefb;
    --txt-2:#aebbd4;
    --txt-3:#7385a3;
    --white:#fff;

    --maxw:1200px;
    --gut:clamp(20px,5vw,68px);

    --disp:"Sora",system-ui,sans-serif;
    --body:"Inter",system-ui,-apple-system,sans-serif;
    --mono:"JetBrains Mono",ui-monospace,monospace;
  ;--ledger-950:#060E14;--ledger-900:#0B1620;--ledger-850:#0E1C26;--ledger-800:#12232E;--verd:#6FC3AE;--verd-bright:#8FD6C3;--verd-deep:#2F8B76;--verd-dark:#1F8A72;--verd-glow:rgba(111,195,174,.18);--ok:#34E0A6;--pending:#E0B04A;--warn:#FFB37A;--crit:#FF9AA5;--info:var(--verd)}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0;background:var(--ink-900);color:var(--txt);font-family:var(--body);line-height:1.6;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;}
svg{display:block;}
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut);}
h1,h2,h3,h4{font-family:var(--disp);font-weight:600;line-height:1.08;letter-spacing:-.02em;margin:0;}
h2{font-size:clamp(1.8rem,3.7vw,2.8rem);}
h3{font-size:1.18rem;letter-spacing:-.01em;}
p{margin:0;}
.eyebrow{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--blue);}
.mono{font-family:var(--mono);}
.btn{display:inline-flex;align-items:center;gap:.5em;font-family:var(--body);font-weight:600;font-size:.92rem;padding:.82em 1.4em;border-radius:7px;border:1px solid transparent;cursor:pointer;transition:transform .15s,background .2s,border-color .2s,color .2s;white-space:nowrap;}
.btn-pri{background:var(--verd);color:var(--ledger-950);}
.btn-pri:hover{background:var(--verd-bright);}
.btn-ghost{border-color:var(--line);color:var(--txt);}
.btn-ghost:hover{border-color:var(--verd);color:var(--verd-bright);}
/* status ribbon */
  .ribbon{background:var(--ink-950);border-bottom:1px solid var(--line-soft);font-family:var(--mono);font-size:.7rem;color:var(--txt-3);letter-spacing:.04em;}
.ribbon .wrap{display:flex;align-items:center;gap:.6em;height:34px;}
.dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 0 rgba(52,224,166,.6);animation:pulse 2.4s infinite;}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(52,224,166,.5);}70%{box-shadow:0 0 0 7px rgba(52,224,166,0);}100%{box-shadow:0 0 0 0 rgba(52,224,166,0);}}
.ribbon b{color:var(--txt-2);font-weight:500;}
.ribbon .sep{color:var(--line);}
/* nav */
  header.nav{position:sticky;top:0;z-index:60;background:rgba(11,22,32,.82);backdrop-filter:blur(12px);border-bottom:1px solid var(--line-soft);}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:66px;}
.brand{display:flex;align-items:center;gap:.65em;}
.brand-mark{width:32px;height:32px;border-radius:8px;background:linear-gradient(150deg,var(--ledger-800),var(--ledger-950));border:1px solid var(--line);display:grid;place-items:center;}
.brand-mark svg{width:23px;height:23px;}
.brand-logo{height:44px;width:auto;display:block;}
.brand-txt{font-family:var(--disp);font-weight:700;font-size:.96rem;color:#fff;letter-spacing:-.01em;}
.brand-txt small{display:block;font-family:var(--mono);font-weight:400;font-size:.6rem;letter-spacing:.16em;color:var(--txt-3);text-transform:uppercase;margin-top:1px;}
.nav-links{display:flex;gap:1.9rem;}
.nav-links a{font-size:.88rem;font-weight:500;color:var(--txt-2);transition:color .15s;}
.nav-links a:hover{color:#fff;}
.nav-r{display:flex;align-items:center;gap:1.2rem;}
.nav-r a.txtlink{font-size:.88rem;font-weight:500;color:var(--txt-2);}
.nav-r a.txtlink:hover{color:#fff;}
.menu-btn{display:none;background:none;border:0;cursor:pointer;flex-direction:column;gap:5px;padding:6px;}
.menu-btn span{width:22px;height:2px;background:#fff;display:block;}
/* hero */
  .hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-soft);
    background:
      radial-gradient(900px 480px at 84% -8%, rgba(111,195,174,.16), transparent 62%),
      radial-gradient(700px 420px at 6% 12%, rgba(52,224,166,.06), transparent 60%),
      var(--ink-900);}
.grid-bg{position:absolute;inset:0;background-image:linear-gradient(var(--line-soft) 1px,transparent 1px),linear-gradient(90deg,var(--line-soft) 1px,transparent 1px);background-size:54px 54px;opacity:.32;mask-image:radial-gradient(circle at 70% 20%,#000,transparent 75%);}
.hero-in{position:relative;display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(30px,5vw,60px);align-items:center;padding:clamp(56px,8vw,96px) 0 clamp(52px,7vw,84px);}
.tagchip{display:inline-flex;align-items:center;gap:.55em;border:1px solid var(--line);background:var(--surface-2);border-radius:100px;padding:.4em .9em .4em .65em;font-family:var(--mono);font-size:.68rem;letter-spacing:.06em;color:var(--txt-2);}
.tagchip .mini{width:6px;height:6px;border-radius:50%;background:var(--mint);}
.hero h1{font-size:clamp(2.4rem,5.4vw,4.05rem);font-weight:700;color:#fff;margin:1.1rem 0 1.1rem;max-width:15ch;}
.hero h1 .grad{background:linear-gradient(100deg,var(--blue-bright),var(--mint));-webkit-background-clip:text;background-clip:text;color:transparent;}
.hero-sub{font-size:clamp(1.02rem,1.25vw,1.16rem);color:var(--txt-2);max-width:50ch;}
.hero-cta{display:flex;gap:.85rem;margin-top:2rem;flex-wrap:wrap;}
.hero-meta{margin-top:1.5rem;font-family:var(--mono);font-size:.72rem;color:var(--txt-3);letter-spacing:.02em;}
/* api console */
  .console{border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,var(--ink-800),var(--ink-950));box-shadow:0 30px 80px -30px rgba(0,0,0,.8),0 0 0 1px rgba(111,195,174,.05);overflow:hidden;}
.console-bar{display:flex;align-items:center;gap:.5em;padding:11px 14px;border-bottom:1px solid var(--line-soft);background:var(--ledger-950);}
.tl{width:11px;height:11px;border-radius:50%;}
.tl.r{background:var(--crit);}
.tl.y{background:var(--pending);}
.tl.g{background:var(--ok);}
.console-title{margin-left:.6em;font-family:var(--mono);font-size:.7rem;color:var(--txt-3);letter-spacing:.04em;}
.console-title b{color:var(--txt-2);font-weight:500;}
.console-body{font-family:var(--mono);font-size:.78rem;line-height:1.75;padding:16px 16px 18px;min-height:330px;}
.cl{white-space:pre-wrap;word-break:break-word;}
.c-com{color:var(--txt-3);}
.c-verb{color:var(--blue-bright);font-weight:600;}
.c-path{color:var(--txt-2);}
.c-str{color:var(--txt);}
.c-ok{color:var(--mint);font-weight:600;}
.c-mut{color:var(--txt-3);}
.c-event{color:var(--mint);}
.caret{display:inline-block;width:8px;height:1.05em;background:var(--mint);vertical-align:-2px;margin-left:2px;animation:blink 1s step-end infinite;}
@keyframes blink{50%{opacity:0;}}
/* proof bar */
  .proof{background:var(--ink-950);border-bottom:1px solid var(--line-soft);}
.proof-in{display:grid;grid-template-columns:repeat(4,1fr);}
.proof .it{padding:26px var(--gut);border-right:1px solid var(--line-soft);}
.proof .it:last-child{border-right:0;}
.proof .n{font-family:var(--disp);font-weight:700;font-size:1.55rem;color:#fff;letter-spacing:-.02em;}
.proof .n em{font-style:normal;color:var(--blue);}
.proof .l{font-size:.8rem;color:var(--txt-3);margin-top:5px;}
section{padding:clamp(60px,8.5vw,108px) 0;}
.head{max-width:64ch;}
.head h2{margin:.55em 0 .6em;color:#fff;}
.head .lead{color:var(--txt-2);font-size:1.08rem;}
/* pillars */
  .pillars{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:50px;}
.pillar{border:1px solid var(--line-soft);border-radius:12px;background:var(--surface);padding:28px 26px;transition:border-color .2s,transform .18s;}
.pillar:hover{border-color:var(--blue);transform:translateY(-2px);}
.pillar .ic{width:38px;height:38px;border-radius:9px;background:rgba(111,195,174,.12);display:grid;place-items:center;color:var(--blue);margin-bottom:18px;}
.pillar .ic svg{width:20px;height:20px;}
.pillar h3{color:#fff;margin-bottom:.5em;}
.pillar p{color:var(--txt-2);font-size:.94rem;}
/* account types */
  .acct{background:var(--ink-950);border-block:1px solid var(--line-soft);}
.acct-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:46px;}
.acard{border:1px solid var(--line-soft);border-radius:10px;background:var(--ink-900);padding:18px 16px;transition:border-color .2s,background .2s;}
.acard:hover{border-color:var(--blue);background:var(--surface);}
.acard .t{font-family:var(--disp);font-weight:600;font-size:.96rem;color:#fff;}
.acard .d{font-size:.74rem;color:var(--txt-3);margin-top:4px;}
/* provider model */
  .provider .grid2{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(30px,5vw,64px);align-items:center;}
.ptree{border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,var(--surface),var(--ink-950));padding:24px;}
.ptier{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;}
.pnode{border:1px solid var(--line);border-radius:8px;padding:9px 13px;font-family:var(--mono);font-size:.74rem;color:var(--txt);background:var(--ink-800);text-align:center;}
.pnode.root{border-color:var(--blue);color:#fff;background:linear-gradient(180deg,rgba(111,195,174,.18),rgba(111,195,174,.04));}
.pnode.leaf{font-size:.68rem;color:var(--txt-2);}
.pnode .sub{display:block;font-size:.6rem;color:var(--txt-3);margin-top:2px;letter-spacing:.04em;}
.pconn{height:22px;width:1px;background:var(--line);margin:6px auto;}
.feat-list{list-style:none;padding:0;margin:1.5em 0 0;display:grid;gap:.85em;}
.feat-list li{display:flex;gap:.7em;color:var(--txt-2);font-size:.95rem;}
.feat-list li svg{flex:none;width:18px;height:18px;color:var(--mint);margin-top:3px;}
/* developer / api */
  .dev{background:var(--ink-950);border-block:1px solid var(--line-soft);}
.ep-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:44px;}
.ep{border:1px solid var(--line-soft);border-radius:11px;background:var(--ink-900);padding:22px 20px;}
.ep .k{font-family:var(--mono);font-size:.72rem;color:var(--blue);letter-spacing:.06em;text-transform:uppercase;}
.ep h3{color:#fff;font-size:1.04rem;margin:.5em 0 .45em;}
.ep p{color:var(--txt-2);font-size:.88rem;}
.ep .verb{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:.7rem;color:var(--mint);border:1px solid var(--line);border-radius:5px;padding:.2em .55em;}
.plug{display:flex;flex-wrap:wrap;gap:9px;margin-top:40px;align-items:center;}
.plug .lbl{font-family:var(--mono);font-size:.72rem;color:var(--txt-3);margin-right:.4em;}
.plug .chip{font-family:var(--mono);font-size:.76rem;color:var(--txt-2);border:1px solid var(--line);border-radius:6px;padding:.4em .8em;background:var(--ink-900);}
/* security band */
  .secblk{background:
      radial-gradient(700px 360px at 100% 0%, rgba(52,224,166,.07), transparent 60%),
      var(--ink-900);}
.secblk .grid2{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(30px,5vw,68px);align-items:center;}
.secblk h2{color:#fff;}
.secblk .lead{color:var(--txt-2);font-size:1.06rem;margin-top:1em;}
.ctrls{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
.ctrl{border:1px solid var(--line-soft);border-radius:10px;background:var(--surface);padding:18px 18px;}
.ctrl .k{font-family:var(--disp);font-weight:600;font-size:.96rem;color:#fff;}
.ctrl p{font-size:.82rem;color:var(--txt-3);margin-top:.45em;}
.compl{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px;}
.compl .b{font-family:var(--mono);font-size:.72rem;color:var(--mint);border:1px solid var(--mint-dim);border-radius:5px;padding:.3em .65em;background:rgba(52,224,166,.05);}
/* who builds */
  .who{background:var(--ink-950);border-top:1px solid var(--line-soft);}
.who-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:44px;}
.wcard{border:1px solid var(--line-soft);border-radius:11px;background:var(--ink-900);padding:22px 20px;transition:border-color .2s,transform .18s;}
.wcard:hover{border-color:var(--blue);transform:translateY(-2px);}
.wcard .n{font-family:var(--mono);font-size:.7rem;color:var(--txt-3);}
.wcard h3{color:#fff;font-size:1.02rem;margin:.4em 0 .4em;}
.wcard p{color:var(--txt-2);font-size:.86rem;}
/* architecture */
  .arch{border-block:1px solid var(--line-soft);
    background:
      radial-gradient(760px 380px at 0% 0%, rgba(111,195,174,.09), transparent 60%),
      radial-gradient(680px 360px at 100% 26%, rgba(52,224,166,.06), transparent 60%),
      var(--ink-950);}
.arch-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:48px;}
.acell{position:relative;border:1px solid var(--line-soft);border-radius:12px;background:var(--surface);padding:24px 22px;transition:border-color .2s,transform .18s;}
.acell:hover{border-color:var(--blue);transform:translateY(-2px);}
.acell .ic{width:34px;height:34px;border-radius:8px;background:rgba(111,195,174,.12);display:grid;place-items:center;color:var(--blue);margin-bottom:14px;}
.acell .ic svg{width:18px;height:18px;}
.acell h3{color:#fff;font-size:1.02rem;margin-bottom:.5em;padding-right:64px;}
.acell p{color:var(--txt-2);font-size:.88rem;}
.acell .badge{position:absolute;top:22px;right:18px;font-family:var(--mono);font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;color:var(--mint);border:1px solid var(--mint-dim);border-radius:5px;padding:.22em .5em;background:rgba(52,224,166,.06);}
.achips{display:flex;flex-wrap:wrap;gap:6px;margin-top:15px;}
.achips span{font-family:var(--mono);font-size:.68rem;color:var(--txt-2);border:1px solid var(--line);border-radius:5px;padding:.28em .55em;background:var(--ink-900);}
.arch-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line-soft);border:1px solid var(--line-soft);border-radius:12px;overflow:hidden;margin-top:16px;}
.arch-strip .s{background:var(--ink-900);padding:20px 22px;}
.arch-strip .s .n{font-family:var(--disp);font-weight:700;font-size:1.3rem;color:#fff;letter-spacing:-.02em;}
.arch-strip .s .n em{font-style:normal;color:var(--mint);}
.arch-strip .s .l{font-size:.76rem;color:var(--txt-3);margin-top:4px;}
.arch-foot{font-family:var(--mono);font-size:.71rem;color:var(--txt-3);text-align:center;margin-top:22px;letter-spacing:.02em;line-height:1.7;}
.arch-base{margin-top:42px;text-align:center;}
.lbl{font-family:var(--mono);font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--txt-3);text-align:center;}
.stack-row{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center;margin-top:18px;}
.stack-row span{font-family:var(--mono);font-size:.82rem;color:var(--txt-2);}
/* founder / IP */
  .founder .grid2{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,5vw,64px);align-items:center;}
.founder blockquote{font-family:var(--disp);font-weight:500;font-size:clamp(1.3rem,2.6vw,1.85rem);line-height:1.32;color:#fff;margin:0;max-width:24ch;letter-spacing:-.01em;}
.founder .who-l{font-family:var(--mono);font-size:.8rem;color:var(--txt-3);margin-top:1.5em;}
.founder .who-l b{display:block;color:#fff;font-family:var(--disp);font-weight:600;font-size:1rem;letter-spacing:-.01em;}
.ipcard{border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,var(--surface),var(--ink-950));padding:26px;}
.ipcard .eyebrow{margin-bottom:1.1em;display:block;}
.ipcard .row{display:flex;justify-content:space-between;padding:13px 0;border-top:1px solid var(--line-soft);}
.ipcard .row:first-of-type{border-top:0;}
.ipcard .row .k{color:var(--txt-2);font-size:.9rem;}
.ipcard .row .v{font-family:var(--mono);color:#fff;font-size:.9rem;}
/* final cta */
  .final{position:relative;overflow:hidden;text-align:center;border-top:1px solid var(--line-soft);
    background:radial-gradient(800px 420px at 50% 0%, rgba(111,195,174,.18), transparent 65%),var(--ink-950);}
.final h2{color:#fff;max-width:20ch;margin:.5em auto .6em;font-size:clamp(2rem,4.2vw,3.1rem);}
.final p{color:var(--txt-2);max-width:54ch;margin:0 auto;font-size:1.08rem;}
.final .hero-cta{justify-content:center;margin-top:2.2rem;}
/* footer */
  footer.ft{background:var(--ink-950);border-top:1px solid var(--line-soft);padding:58px 0 30px;}
.ft-top{display:flex;justify-content:space-between;gap:44px;flex-wrap:wrap;}
.ft-cols{display:flex;gap:clamp(30px,5vw,72px);flex-wrap:wrap;}
.ft-col h4{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--txt-3);margin:0 0 1.1em;font-weight:500;}
.ft-col a{display:block;color:var(--txt-2);font-size:.88rem;margin-bottom:.65em;}
.ft-col a:hover{color:#fff;}
.ft-bottom{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;margin-top:48px;padding-top:24px;border-top:1px solid var(--line-soft);font-size:.74rem;color:var(--txt-3);}
.ft-bottom a{color:var(--txt-2);}
.ft-bottom a:hover{color:#fff;}
.ft-social{display:flex;gap:1.1em;}
.rv{opacity:0;transform:translateY(15px);transition:opacity .6s,transform .6s;}
.rv.in{opacity:1;transform:none;}
@media (max-width:960px){
    .hero-in,.provider .grid2,.secblk .grid2,.founder .grid2{grid-template-columns:1fr;}
    .console{order:2;}
    .pillars,.ctrls{grid-template-columns:1fr 1fr;}
    .ep-grid,.who-grid{grid-template-columns:1fr 1fr;}
    .acct-grid{grid-template-columns:repeat(3,1fr);}
    .arch-grid{grid-template-columns:1fr 1fr;}
    .arch-strip{grid-template-columns:1fr 1fr;}
    .proof-in{grid-template-columns:1fr 1fr;}
    .proof .it:nth-child(2){border-right:0;}
    .proof .it{border-bottom:1px solid var(--line-soft);}
  }
@media (max-width:760px){
    .nav-links,.nav-r a.txtlink{display:none;}
    .menu-btn{display:flex;}
    .nav-links.open{display:flex;position:absolute;top:66px;left:0;right:0;flex-direction:column;gap:1.1rem;background:var(--ink-950);padding:18px var(--gut);border-bottom:1px solid var(--line-soft);}
    .ribbon .hide-sm{display:none;}
  }
@media (max-width:560px){
    .pillars,.ctrls,.ep-grid,.who-grid{grid-template-columns:1fr;}
    .acct-grid{grid-template-columns:1fr 1fr;}
    .arch-grid{grid-template-columns:1fr;}
    .arch-strip{grid-template-columns:1fr;}
    .proof-in{grid-template-columns:1fr;}
    .proof .it{border-right:0;}
  }
@media (prefers-reduced-motion:reduce){
    .rv{opacity:1;transform:none;transition:none;}
    .dot,.caret{animation:none;}
    html{scroll-behavior:auto;}
  }
/* ---- nav dropdowns ---- */
  .nav-dd{position:relative;}
.nav-dd-t{background:none;border:0;color:var(--txt-2);font-family:var(--body);font-size:.95rem;cursor:pointer;display:inline-flex;align-items:center;gap:5px;padding:0;}
.nav-dd:hover .nav-dd-t,.nav-dd-t:hover{color:var(--txt);}
.nav-dd-menu{position:absolute;top:calc(100% + 16px);left:50%;transform:translateX(-50%) translateY(6px);min-width:222px;background:var(--ink-800);border:1px solid var(--line);border-radius:13px;padding:8px;display:flex;flex-direction:column;gap:1px;opacity:0;visibility:hidden;transition:.17s ease;box-shadow:0 26px 64px -32px #000;z-index:70;}
.nav-dd::after{content:"";position:absolute;top:100%;left:0;right:0;height:18px;}
.nav-dd:hover .nav-dd-menu,.nav-dd:focus-within .nav-dd-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.nav-dd-menu a{padding:9px 12px;border-radius:8px;color:var(--txt-2);font-size:.92rem;white-space:nowrap;}
.nav-dd-menu a:hover{background:var(--surface);color:var(--blue-bright);}
/* ---- footer 5-col ---- */
  .ft-cols-5{display:grid;grid-template-columns:repeat(5,1fr);gap:28px;}
@media(max-width:900px){.ft-cols-5{grid-template-columns:repeat(2,1fr);gap:26px 20px;}}
/* ---- shared page components ---- */
  main.pg{min-height:60vh;}
.page-hero{padding:clamp(50px,7vw,96px) 0 clamp(24px,3vw,40px);border-bottom:1px solid var(--line-soft);}
.page-hero.center{text-align:center;}
.page-hero .eyebrow{margin-bottom:14px;}
.page-hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.1rem,4.6vw,3.3rem);letter-spacing:-.03em;line-height:1.05;margin:0 0 14px;}
.page-hero h1 .g{background:linear-gradient(100deg,var(--blue-bright),var(--mint));-webkit-background-clip:text;background-clip:text;color:transparent;}
.page-hero .lede{font-size:clamp(1.04rem,1.7vw,1.2rem);color:var(--txt-2);max-width:66ch;}
.page-hero.center .lede{margin-inline:auto;}
.sec{padding:clamp(40px,6vw,76px) 0;}
.sec h2{font-size:clamp(1.6rem,3vw,2.3rem);margin:0 0 8px;}
.sec .sec-sub{color:var(--txt-2);max-width:64ch;margin-bottom:34px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start;}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;align-items:start;}
@media(max-width:860px){.grid3{grid-template-columns:1fr;}.grid2{grid-template-columns:1fr;}}
.card{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:15px;padding:24px;transition:border-color .18s,transform .18s;}
.card:hover{border-color:var(--verd);}
.card .ic{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:var(--ledger-800);border:1px solid var(--line);color:var(--blue);margin-bottom:14px;}
.card h3{font-size:1.08rem;margin:0 0 7px;}
.card p{color:var(--txt-2);font-size:.94rem;}
.card a.more{color:var(--blue-bright);font-size:.9rem;font-family:var(--mono);display:inline-block;margin-top:12px;}
/* prose for legal/long-form */
  .prose{max-width:760px;}
.prose h2{font-family:var(--disp);font-weight:600;font-size:1.4rem;margin:38px 0 12px;letter-spacing:-.01em;}
.prose h3{font-size:1.08rem;margin:26px 0 8px;color:var(--txt);}
.prose p,.prose li{color:var(--txt-2);font-size:.97rem;line-height:1.72;}
.prose p{margin:0 0 14px;}
.prose ul,.prose ol{margin:0 0 16px;padding-left:22px;}
.prose li{margin-bottom:7px;}
.prose a{color:var(--blue-bright);}
.prose strong{color:var(--txt);}
.prose .upd{font-family:var(--mono);font-size:.74rem;color:var(--txt-3);text-transform:uppercase;letter-spacing:.12em;margin-bottom:6px;}
.toc{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:13px;padding:18px 20px;margin-bottom:30px;}
.toc h4{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3);margin:0 0 10px;}
.toc a{display:block;color:var(--txt-2);font-size:.92rem;padding:3px 0;}
.toc a:hover{color:var(--blue-bright);}
.pill-row{display:flex;flex-wrap:wrap;gap:8px;}
.pill{font-family:var(--mono);font-size:.7rem;color:var(--txt-2);background:var(--ledger-800);border:1px solid var(--line-soft);border-radius:999px;padding:5px 12px;}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
@media(max-width:680px){.kpis{grid-template-columns:1fr;}}
.kpi{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:14px;padding:24px;text-align:center;}
.kpi b{font-family:var(--disp);font-weight:700;font-size:2.2rem;color:var(--txt);display:block;letter-spacing:-.02em;}
.kpi span{color:var(--txt-3);font-size:.88rem;}
.cta-band{margin:0 0 0;padding:clamp(40px,6vw,72px) 0;background:linear-gradient(120deg,var(--ledger-800),var(--ledger-900));border-top:1px solid var(--line);text-align:center;}
.cta-band h2{margin:0 0 12px;}
.cta-band p{color:var(--txt-2);margin:0 auto 22px;max-width:52ch;}
.btn-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
@media(max-width:760px){.nav-dd-menu{position:static;opacity:1;visibility:visible;transform:none;box-shadow:none;border:0;padding:6px 0 6px 12px;min-width:0;background:none;}.nav-dd-t{padding:8px 0;}}
.btn-ghost2{background:transparent;border:1px solid var(--line);color:var(--txt);}
.btn-ghost2:hover{border-color:var(--blue-deep);color:var(--blue-bright);}
.lead-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px;}
.lead-list li{display:flex;gap:12px;color:var(--txt-2);font-size:.96rem;}
.lead-list li svg{flex:0 0 auto;color:var(--mint);margin-top:2px;}
.sec .grid2{grid-template-columns:repeat(2,1fr);gap:20px;align-items:start;}
.sec .grid3{grid-template-columns:repeat(3,1fr);gap:20px;align-items:start;}
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media(max-width:900px){.blog-grid{grid-template-columns:1fr;}}
.card.post{display:flex;flex-direction:column;gap:9px;}
.card.post .tag{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);}
.card.post h3{font-size:1.12rem;margin:0;}
.card.post .meta{font-family:var(--mono);font-size:.72rem;color:var(--txt-3);margin-top:auto;}
.rtable{width:100%;border-collapse:collapse;font-size:.93rem;}
.rtable th,.rtable td{text-align:left;padding:13px 14px;border-bottom:1px solid var(--line-soft);color:var(--txt-2);}
.rtable th{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3);}
.rtable td.mono{font-family:var(--mono);color:var(--txt);}
.sev{font-family:var(--mono);font-size:.74rem;padding:3px 9px;border-radius:999px;border:1px solid;}
.sev-critical{color:var(--crit);border-color:var(--crit-bg);background:#2a1018;}
.sev-high{color:#ffb37a;border-color:#5a3a1a;background:#2a1c0e;}
.sev-medium{color:var(--pending);border-color:#5a4f1a;background:#2a2510;}
.sev-low{color:#9fe0c0;border-color:#1f8f6a;background:#10301f;}
.roles{border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;}
.role{display:grid;grid-template-columns:160px 1fr 180px 30px;align-items:center;gap:14px;padding:16px 20px;border-bottom:1px solid var(--line-soft);}
.role:last-child{border-bottom:0;}
.role:hover{background:var(--surface-2);}
.rteam{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);}
.rtitle{color:var(--txt);font-size:.98rem;}
.rloc{color:var(--txt-3);font-size:.86rem;}
.rgo{color:var(--mint);justify-self:end;}
@media(max-width:760px){.role{grid-template-columns:1fr;gap:4px;}.rgo{display:none;}}
.contact-grid .ccard{display:flex;flex-direction:column;gap:7px;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:15px;padding:24px;transition:.18s;}
.contact-grid .ccard:hover{border-color:var(--line);transform:translateY(-2px);}
.ccard .ic{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:var(--ledger-800);border:1px solid var(--line);color:var(--blue);margin-bottom:8px;}
.ccard h3{font-size:1.06rem;margin:0;}
.ccard p{color:var(--txt-2);font-size:.92rem;}
.ccard .cl{font-family:var(--mono);font-size:.8rem;color:var(--blue-bright);margin-top:auto;padding-top:6px;}
.contact-row{display:grid;grid-template-columns:1.5fr .9fr;gap:30px;align-items:start;}
@media(max-width:860px){.contact-row{grid-template-columns:1fr;}}
.cform-wrap{background:linear-gradient(180deg,var(--ink-800),var(--ink-950));border:1px solid var(--line);border-radius:16px;padding:28px;}
.fg2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media(max-width:560px){.fg2{grid-template-columns:1fr;}}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.field label{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3);}
.field .req{color:var(--mint);}
.field input,.field textarea{background:var(--ledger-950);border:1px solid var(--line);border-radius:9px;padding:12px 14px;color:var(--txt);font-family:var(--body);font-size:.98rem;resize:vertical;}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--verd);box-shadow:0 0 0 3px var(--verd-glow);}
.err{color:#ff9aa5;font-size:.86rem;min-height:1em;margin-bottom:8px;}
.meta-line{font-family:var(--mono);font-size:.72rem;color:var(--txt-3);margin-top:14px;}
.meta-line a{color:var(--blue);}
.csent{display:none;text-align:center;padding:20px 0;}
.csent .seal{width:56px;height:56px;border-radius:50%;background:#10301f;border:1px solid var(--mint-dim);color:var(--mint);display:grid;place-items:center;margin:0 auto 14px;}
.csent h3{margin:0 0 6px;}
.csent p{color:var(--txt-2);}
.cinfo{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:16px;padding:24px;}
.cinfo .k{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3);margin:16px 0 6px;}
.cinfo .k:first-child{margin-top:0;}
.cinfo p{color:var(--txt-2);font-size:.94rem;line-height:1.7;margin:0;}
.cinfo a{color:var(--blue-bright);}
.legal-layout{display:grid;grid-template-columns:230px 1fr;gap:40px;align-items:start;}
@media(max-width:860px){.legal-layout{grid-template-columns:1fr;}.legal-layout .toc{position:static;}}
.legal-layout .toc{position:sticky;top:20px;}
/* demo page */
  .demo-hero{padding:clamp(56px,8vw,104px) 0 30px;}
.demo-hero .eyebrow{margin-bottom:16px;}
.demo-hero h1{font-family:var(--disp);font-weight:700;font-size:clamp(2.3rem,5.2vw,3.7rem);letter-spacing:-.03em;line-height:1.04;margin:0 0 18px;}
.demo-hero h1 .g{background:linear-gradient(100deg,var(--blue-bright),var(--mint));-webkit-background-clip:text;background-clip:text;color:transparent;}
.demo-hero .lede{font-size:clamp(1.05rem,1.7vw,1.22rem);color:var(--txt-2);max-width:60ch;}
.demo-grid{display:grid;grid-template-columns:1.55fr .85fr;gap:34px;align-items:start;padding-bottom:90px;}
@media(max-width:920px){.demo-grid{grid-template-columns:1fr;}}
.sched-card{background:linear-gradient(180deg,var(--ink-800),var(--ink-950));border:1px solid var(--line);border-radius:18px;padding:8px;overflow:hidden;box-shadow:0 30px 80px -40px #000;}
.sched-card .calendly-inline-widget{min-width:320px;height:680px;border-radius:12px;overflow:hidden;}
.cal-fallback{height:680px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;color:var(--txt-2);border-radius:12px;background:radial-gradient(120% 90% at 50% 0,#16203455,transparent);}
.cal-fallback .ic{width:54px;height:54px;border-radius:14px;display:grid;place-items:center;background:var(--ledger-800);border:1px solid var(--line);color:var(--blue);}
.cal-fallback b{color:var(--txt);font-family:var(--disp);font-weight:600;font-size:1.1rem;}
.cal-note{font-family:var(--mono);font-size:.72rem;color:var(--txt-3);text-align:center;padding:10px 6px 4px;}
.aside h3{font-family:var(--disp);font-weight:600;font-size:1.15rem;margin:0 0 14px;}
.xp{list-style:none;margin:0 0 26px;padding:0;display:flex;flex-direction:column;gap:14px;}
.xp li{display:flex;gap:12px;align-items:flex-start;color:var(--txt-2);font-size:.97rem;}
.xp li svg{flex:0 0 auto;margin-top:2px;color:var(--mint);}
.aside-card{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:14px;padding:20px 20px 18px;}
.aside-card .k{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3);margin-bottom:10px;}
.aside-card a.line{display:block;color:var(--txt);font-size:.96rem;padding:5px 0;border-bottom:1px solid var(--line-soft);}
.aside-card a.line:last-child{border-bottom:0;}
.aside-card a.line:hover{color:var(--blue-bright);}
.trust-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.chip{font-family:var(--mono);font-size:.68rem;color:var(--txt-2);background:var(--ledger-800);border:1px solid var(--line-soft);border-radius:999px;padding:5px 11px;}
.nav-dd{position:relative;}
.ft-cols-5{display:grid;grid-template-columns:repeat(5,1fr);gap:28px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
.aznav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:30px;position:sticky;top:0;background:var(--ink-900);padding:10px 0;z-index:5;}
.aznav a{font-family:var(--mono);font-size:.8rem;color:var(--txt-2);background:var(--ledger-800);border:1px solid var(--line-soft);border-radius:7px;width:30px;height:30px;display:grid;place-items:center;}
.aznav a:hover{color:var(--blue-bright);border-color:var(--blue-deep);}
.glossary{margin:0;}
.gletter{display:grid;grid-template-columns:64px 1fr;gap:18px;padding:22px 0;border-top:1px solid var(--line-soft);}
@media(max-width:640px){.gletter{grid-template-columns:1fr;gap:8px;}}
.gL{font-family:var(--disp);font-weight:700;font-size:2rem;color:var(--blue-deep);line-height:1;}
.gterm{padding:9px 0;border-bottom:1px solid #131c30;}
.gterm:last-child{border-bottom:0;}
.gterm dt{font-family:var(--disp);font-weight:600;font-size:1.02rem;color:var(--txt);margin-bottom:4px;}
.gterm dd{margin:0;color:var(--txt-2);font-size:.95rem;line-height:1.65;}
.acct-note{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:15px;padding:24px 26px;margin-bottom:30px;}
.acct-note h3{font-family:var(--disp);font-weight:600;font-size:1.1rem;margin:0 0 7px;}
.acct-note p{color:var(--txt-2);font-size:.95rem;margin:0 0 16px;max-width:70ch;}
.acct-chips{display:flex;flex-wrap:wrap;gap:8px;}
.achip{font-family:var(--mono);font-size:.72rem;color:var(--txt-2);background:var(--ledger-800);border:1px solid var(--line-soft);border-radius:999px;padding:6px 13px;}
.acct-cats .cat{padding:22px 20px;display:flex;flex-direction:column;}
.acct-cats .cat .t{font-size:1.02rem;margin-bottom:7px;line-height:1.2;}
.acct-cats .cat .d{font-size:.84rem;color:var(--txt-2);line-height:1.5;margin-top:0;}
/* capabilities */
  .caps{padding:clamp(56px,8vw,104px) 0;border-top:1px solid var(--line-soft);}
.caps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:38px;}
@media(max-width:920px){.caps-grid{grid-template-columns:1fr;}}
.cap{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:16px;padding:26px;transition:border-color .18s,transform .18s;}
.cap:hover{border-color:var(--card-line-hover);transform:translateY(-2px);}
.cap-ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--ledger-800);border:1px solid var(--line);color:var(--blue);margin-bottom:15px;}
.cap h3{font-family:var(--disp);font-weight:600;font-size:1.1rem;margin:0 0 8px;letter-spacing:-.01em;}
.cap p{color:var(--txt-2);font-size:.95rem;line-height:1.62;margin:0;}
.inv-hero{border-bottom:0;}
.inv-cta{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-top:26px;}
.conf-badge{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:#ffb37a;border:1px solid #5a3a1a;background:#2a1c0e;border-radius:999px;padding:6px 13px;}
.kpis4{grid-template-columns:repeat(4,1fr);}
@media(max-width:780px){.kpis4{grid-template-columns:repeat(2,1fr);}}
.trust-note{margin-top:20px;color:var(--txt-2);font-size:.96rem;text-align:center;}
.trust-note a{color:var(--blue-bright);}
.trust-note strong{color:var(--txt);}
.card.hl{background:linear-gradient(180deg,var(--ink-800),var(--ink-950));border-color:var(--line);}
.mbars{display:flex;flex-direction:column;gap:20px;margin-top:10px;}
.mbar-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;gap:14px;}
.mname{color:var(--txt);font-size:1rem;font-family:var(--disp);font-weight:600;}
.mval{color:var(--txt-3);font-family:var(--mono);font-size:.82rem;}
.mtrack{height:10px;background:var(--ledger-950);border:1px solid var(--line-soft);border-radius:999px;overflow:hidden;}
.mfill{display:block;height:100%;background:linear-gradient(90deg,var(--blue-deep),var(--mint));border-radius:999px;}
.ask-row{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line-soft);font-size:.92rem;}
.ask-row:last-child{border-bottom:0;}
.ask-k{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--txt-3);}
.ask-v{color:var(--txt-2);}
.ask-v em{color:var(--txt-3);}
.uof-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
@media(max-width:780px){.uof-grid{grid-template-columns:repeat(2,1fr);}}
.uof{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:14px;padding:22px;}
.uof b{font-family:var(--disp);font-weight:700;font-size:1.9rem;color:var(--txt);display:block;letter-spacing:-.02em;}
.uof .ut{display:block;color:var(--blue-bright);font-size:.92rem;margin:6px 0 6px;font-weight:600;}
.uof .ud{color:var(--txt-3);font-size:.84rem;line-height:1.5;}
.dataroom{display:grid;grid-template-columns:1.4fr .9fr;gap:30px;align-items:center;}
@media(max-width:820px){.dataroom{grid-template-columns:1fr;}}
.dr-card{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:16px;padding:24px;}
.dr-card .k{font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3);}
.conf-notice{color:var(--txt-3);font-size:.82rem;line-height:1.6;max-width:90ch;border-top:1px solid var(--line-soft);padding-top:20px;}
.conf-notice strong{color:var(--txt-2);}
.note{color:var(--txt-3);font-size:.84rem;}
.boiler{display:flex;gap:16px;align-items:flex-start;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:14px;padding:22px 24px;}
.boiler p{color:var(--txt-2);font-size:.97rem;line-height:1.7;margin:0;}
.boiler .btn-ghost{flex:0 0 auto;background:transparent;border:1px solid var(--line);color:var(--txt);border-radius:9px;padding:9px 16px;font-family:var(--disp);font-weight:600;font-size:.85rem;cursor:pointer;}
.boiler .btn-ghost:hover{border-color:var(--verd);color:var(--verd-bright);}
.help-cta2b{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;background:linear-gradient(120deg,var(--ledger-800),var(--ledger-900));border:1px solid var(--line);border-radius:15px;padding:26px 28px;}
/* NDA page */
  .nda-wrap{max-width:920px;margin:0 auto;padding-inline:var(--gut);}
.nda-head{padding:clamp(48px,7vw,90px) 0 8px;}
.nda-head .eyebrow{margin-bottom:14px;}
.nda-head h1{font-family:var(--disp);font-weight:700;font-size:clamp(2rem,4.4vw,3rem);letter-spacing:-.03em;margin:0 0 12px;}
.nda-head .sub{color:var(--txt-2);font-size:1.04rem;}
.nda-body{padding:6px 0 70px;}
.doc{background:var(--surface-2);border:1px solid var(--line);border-radius:18px;padding:clamp(24px,4vw,46px);margin:16px 0 30px;}
.doc .recital{color:var(--txt-2);font-size:.99rem;margin-bottom:14px;}
.doc .recital strong{color:var(--txt);}
.doc ol{counter-reset:c;list-style:none;margin:18px 0 0;padding:0;}
.doc ol li{counter-increment:c;position:relative;padding:0 0 16px 40px;color:var(--txt-2);font-size:.95rem;line-height:1.62;}
.doc ol li::before{content:counter(c);position:absolute;left:0;top:0;width:26px;height:26px;border-radius:7px;background:var(--ledger-800);border:1px solid var(--line);color:var(--blue);font-family:var(--mono);font-size:.78rem;display:grid;place-items:center;}
.doc ol li strong{color:var(--txt);}
.sig{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:26px;padding-top:22px;border-top:1px solid var(--line);}
@media(max-width:640px){.sig{grid-template-columns:1fr;}}
.sig h4{font-family:var(--disp);font-weight:600;font-size:.96rem;margin:0 0 8px;color:var(--txt);}
.sig .b{color:var(--txt-2);font-size:.9rem;line-height:1.7;}
.sig .b a{color:var(--blue);}
/* accept form */
  .accept{background:linear-gradient(180deg,var(--ink-800),var(--ink-950));border:1px solid var(--line);border-radius:18px;padding:clamp(24px,4vw,40px);margin-bottom:70px;}
.accept h2{font-size:1.5rem;margin:0 0 8px;}
.accept .intro{color:var(--txt-2);font-size:.95rem;margin-bottom:22px;}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
@media(max-width:640px){.fgrid{grid-template-columns:1fr;}}
.field{display:flex;flex-direction:column;gap:6px;}
.field.full{grid-column:1/-1;}
.field label .req{color:var(--mint);}
.field input{background:var(--ledger-950);border:1px solid var(--line);border-radius:9px;padding:12px 14px;color:var(--txt);font-family:var(--body);font-size:.98rem;transition:border-color .15s,box-shadow .15s;}
.field input:focus{outline:none;border-color:var(--verd);box-shadow:0 0 0 3px var(--verd-glow);}
.field input.sign{font-family:"Sora",cursive;font-size:1.15rem;letter-spacing:.01em;}
.agree{display:flex;gap:11px;align-items:flex-start;margin:20px 0 4px;color:var(--txt-2);font-size:.92rem;grid-column:1/-1;}
.agree input{margin-top:3px;width:17px;height:17px;accent-color:var(--blue-deep);flex:0 0 auto;}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px;align-items:center;}
.err{color:#ff9aa5;font-size:.86rem;min-height:1em;grid-column:1/-1;}
.btn-ghost{background:transparent;border:1px solid var(--line);color:var(--txt);border-radius:10px;padding:13px 20px;font-family:var(--disp);font-weight:600;font-size:.92rem;cursor:pointer;}
.btn-ghost:hover{border-color:var(--verd);color:var(--verd-bright);}
button.btn-pri{border:0;cursor:pointer;font-family:var(--disp);}
.meta-line{font-family:var(--mono);font-size:.72rem;color:var(--txt-3);margin-top:16px;}
/* confirmation */
  .confirm{display:none;text-align:center;padding:18px 0 6px;}
.confirm .seal{width:62px;height:62px;border-radius:50%;background:#10301f;border:1px solid var(--mint-dim);color:var(--mint);display:grid;place-items:center;margin:0 auto 16px;}
.confirm h2{margin:0 0 8px;}
.confirm p{color:var(--txt-2);max-width:52ch;margin:0 auto 8px;}
.confirm .idbox{display:inline-block;font-family:var(--mono);font-size:.9rem;color:var(--blue-bright);background:var(--ledger-950);border:1px solid var(--line);border-radius:9px;padding:9px 16px;margin:14px 0;}
/* print */
  @media print{
    body{background:#fff !important;color:#000 !important;}
    .status-bar,.nav,.ft,.accept .fgrid,.accept .agree,.accept .actions,.accept .err,.accept .intro,.menu-btn{display:none !important;}
    .doc,.accept{border:0 !important;background:#fff !important;padding:0 !important;color:#000 !important;}
    .doc .recital,.doc ol li,.sig .b{color:#000 !important;}
    .doc ol li::before{background:#fff !important;color:#000 !important;border-color:#000 !important;}
    .nda-head h1,.doc ol li strong,.sig h4,.confirm h2{color:#000 !important;}
    .confirm{display:block !important;}
    a{color:#000 !important;}
  }
.news{display:flex;flex-direction:column;gap:2px;}
.ni{display:grid;grid-template-columns:110px 1fr;gap:22px;padding:24px 0;border-bottom:1px solid var(--line-soft);}
.ni:hover .nt{color:var(--blue-bright);}
.nd{font-family:var(--mono);font-size:.78rem;color:var(--txt-3);padding-top:3px;}
.nt{font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);}
.ni h3{font-size:1.18rem;margin:6px 0 7px;}
.ni p{color:var(--txt-2);font-size:.95rem;}
.help-cta2b{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:15px;padding:26px 28px;}
@media(max-width:640px){.ni{grid-template-columns:1fr;gap:6px;}}
.rlist{display:flex;flex-direction:column;gap:12px;}
.rrow b{display:block;color:var(--txt);font-size:.96rem;}
.rrow span{color:var(--txt-2);font-size:.9rem;}
.note{color:var(--txt-3);font-size:.86rem;margin-top:26px;max-width:80ch;}
.note a{color:var(--blue-bright);}
.status-banner{display:inline-flex;align-items:center;gap:9px;margin-top:18px;background:#10301f;border:1px solid var(--mint-dim);color:var(--mint);border-radius:999px;padding:8px 16px;font-size:.9rem;}
.status-banner .dot{width:8px;height:8px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 3px #34e0a633;}
.status-list{border:1px solid var(--line-soft);border-radius:14px;overflow:hidden;}
.strow{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line-soft);}
.strow:last-child{border-bottom:0;}
.sname{color:var(--txt);font-size:.96rem;}
.sstat{display:inline-flex;align-items:center;gap:8px;color:var(--mint);font-size:.88rem;font-family:var(--mono);}
.sdot{width:8px;height:8px;border-radius:50%;background:var(--mint);}
.note .mono,.note{color:var(--txt-3);}
.search-box{display:flex;align-items:center;gap:10px;max-width:560px;margin:22px auto 0;background:var(--ledger-950);border:1px solid var(--line);border-radius:12px;padding:13px 16px;}
.search-box input{flex:1;background:none;border:0;color:var(--txt);font-family:var(--body);font-size:1rem;outline:none;}
.help-cta{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:15px;padding:26px 28px;}
.cert-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
@media(max-width:820px){.cert-row{grid-template-columns:repeat(2,1fr);}}
.cert{background:var(--surface-2);border:1px solid var(--line-soft);border-radius:14px;padding:22px;text-align:center;}
.cert .ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--ledger-800);border:1px solid var(--line);color:var(--mint);margin:0 auto 12px;}
.cert b{display:block;color:var(--txt);font-family:var(--disp);font-size:1rem;margin-bottom:5px;}
.cert span{color:var(--txt-3);font-size:.85rem;}
.help-cta2{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;background:linear-gradient(120deg,var(--ledger-800),var(--ledger-900));border:1px solid var(--line);border-radius:15px;padding:26px 28px;}
/* ============================================================
   A8 Core™ additions. APPEND-ONLY: no existing rule is modified.
   ============================================================ */

/* --- container gutter ---------------------------------------------
   .wrap sets padding-inline:var(--gut).  Four later rules use a `padding`
   SHORTHAND whose inline value is 0, silently discarding it:
       .hero-in  .page-hero  .sec  .demo-hero
   Editing those rules is WRONG: 24 `.sec` and 1 `.page-hero` on this site are
   NOT inside a .wrap (on /media/ the wrap is a CHILD of section.page-hero), and
   would gain a second, doubled gutter.
   Compound selectors (0,2,0) beat the base rules (0,1,0) and match only the
   elements that are both.  Vertical padding is untouched.
   ------------------------------------------------------------------ */
.wrap.hero-in,
.wrap.page-hero,
.wrap.sec,
.wrap.demo-hero{padding-inline:var(--gut);}

/* .proof-in is not a .wrap at all, so it spans the whole viewport.
   Its .it children already pad by var(--gut), so constraining the container
   is enough: the "45" label lands on the same left edge as the logo. */
.proof-in{max-width:var(--maxw);margin:0 auto;}

/* --- eligibility glyph tokens (this palette has no gold token) --- */
:root{
  --ael-p:#34e0a6;   /* mint      — permitted   */
  --ael-c:#e0b04a;   /* gold      — conditional */
  --ael-n:#7385a3;   /* slate     — not eligible */
}

/* --- accessibility ------------------------------------------------ */
/* No skip link is added here: the Astra theme already renders one
   (Skip to content, targeting #content). Adding a second would give
   keyboard users two competing first stops. */
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,
textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--blue-bright);outline-offset:2px;border-radius:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
.statuslink{display:inline-flex;align-items:center;gap:.5em;color:inherit}

/* --- glossary jump nav -------------------------------------------- */
.aznav{position:sticky;top:66px;z-index:40;background:var(--ink-950);
  border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  padding:8px 0;display:flex;flex-wrap:wrap;gap:2px;margin:0 0 26px}
body.admin-bar .aznav{top:98px}
.gletter{scroll-margin-top:126px}
.atype{scroll-margin-top:126px}
body.admin-bar .gletter,body.admin-bar .atype{scroll-margin-top:158px}

/* --- account-type drilldowns -------------------------------------- */
.asset-legend{font-size:.86rem;color:var(--txt-2)}
.natgroups{margin-top:22px}
.natgrp{margin:0 0 30px}
.natgrp h4{font-size:1.02rem;margin:0 0 4px}
.natn{color:var(--txt-3);font-weight:400}
.natdesc{color:var(--txt-2);font-size:.9rem;margin:0 0 14px;max-width:70ch}
.atype{border:1px solid var(--line-soft);border-radius:10px;margin:0 0 8px;background:var(--surface-2)}
.atype>summary{cursor:pointer;padding:12px 14px;list-style:none;display:flex;gap:.6em;align-items:baseline}
.atype>summary::-webkit-details-marker{display:none}
.atype>summary::before{content:"\25B8";color:var(--txt-3);display:inline-block;transition:transform .15s}
.atype[open]>summary::before{transform:rotate(90deg)}
.atype summary code,.atype code{font-family:var(--mono);font-size:.78rem;color:var(--blue-bright)}
.atbody{padding:2px 14px 16px;border-top:1px solid var(--line-soft)}
.atbasis{color:var(--txt-2);font-size:.9rem;margin:12px 0}
.atbody h5{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--txt-3);margin:18px 0 8px}
.atkv,.atlim{width:100%;border-collapse:collapse;font-size:.88rem;margin:0}
.atkv th,.atlim th{text-align:left;color:var(--txt-3);font-weight:600;padding:6px 8px;vertical-align:top}
.atkv td,.atlim td{padding:6px 8px;vertical-align:top;border-top:1px solid var(--line-soft)}
.atlim thead th{border-bottom:1px solid var(--line)}
.atlim tr.limnote td{color:var(--txt-3);font-size:.8rem;border-top:0;padding-top:0}
.atassets{list-style:none;padding:0;margin:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:5px;font-size:.88rem}
.atassets li{display:flex;gap:.55em;align-items:center}
.atassets.none{color:var(--txt-3);font-size:.88rem}
.ael{font-size:.9em;line-height:1}
.ael.p{color:var(--ael-p)}
.ael.c{color:var(--ael-c)}
.ael.n,.ael.x{color:var(--ael-n)}
.atnote,.acct-foot{color:var(--txt-3);font-size:.84rem;max-width:78ch}
.atrestrict{margin:0;padding-left:18px;font-size:.88rem}
.atrestrict li{margin-bottom:5px}
.atrestrict li.auth{list-style:none;margin-left:-18px;color:var(--txt-3);font-size:.82rem}
.atmore{margin:16px 0 0;font-family:var(--mono);font-size:.82rem}

/* --- support search ----------------------------------------------- */
.search-box{position:relative}
#supResults{position:absolute;left:0;right:0;top:100%;margin-top:8px;text-align:left;
  background:var(--surface-2);border:1px solid var(--line-soft);border-radius:12px;
  max-height:340px;overflow:auto;z-index:30;display:none}
#supResults.open{display:block}
#supResults a{display:block;padding:10px 14px;border-bottom:1px solid var(--line-soft);color:var(--txt)}
#supResults a:last-child{border-bottom:0}
#supResults a:hover,#supResults a[aria-selected="true"]{background:rgba(111,195,174,.12)}
#supResults .k{display:block;font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--txt-3);margin-bottom:2px}
#supResults .none{padding:12px 14px;color:var(--txt-3);font-size:.9rem}

@media (max-width:760px){
  .aznav{top:66px}
  .atassets{grid-template-columns:1fr}
}

/* Stage A — sitewide blue-line hover on content boxes */
.aside-card:hover,.atype:hover,.boiler:hover,.cert:hover,.cinfo:hover,.dr-card:hover,.idbox:hover,.ipcard:hover,.kpi:hover,.roles:hover,.sched-card:hover,.uof:hover,.toc:hover,.arch-strip:hover,.help-cta:hover,.help-cta2:hover,.help-cta2b:hover,.status-banner:hover,.acct-note:hover,.cform-wrap:hover,.ccard:hover,.doc:hover,.seal:hover{box-shadow:0 0 0 1.5px var(--blue);border-color:var(--blue);transition:box-shadow .18s ease,border-color .18s ease}

/* ============================================================
   A8 Core wordmark - live text in Sora, hardened like B5's .b5logo
   (!important to win against site rules). "A8" = coordinate hue,
   "Core" = anchor word (never recolored), TM = slate. Selectable,
   scalable, themeable - never a PNG.
   ============================================================ */
.a8logo{font-family:'Sora',var(--disp,system-ui),sans-serif !important;display:inline-flex !important;align-items:baseline;line-height:1;white-space:nowrap;text-decoration:none !important;font-size:1.35rem !important;letter-spacing:-.01em}
.a8logo .a8{color:#6FC3AE !important;font-weight:800 !important;letter-spacing:-.03em}
.a8logo .core{color:#E8EEFB !important;font-weight:500 !important;letter-spacing:.01em;margin-left:.40em !important}
.a8logo .tm{font-size:.30em;font-weight:600 !important;color:#7385A3 !important;vertical-align:baseline;position:relative;top:-1.05em;left:.04em}
.ft .a8logo{font-size:1.4rem !important}
html body .ft .a8logo{font-size:1.4rem !important}
/* light-ground: coordinate -> verdigris dark; anchor -> near-black; add class="a8logo on-light" */
.a8logo.on-light .a8{color:#1F8A72 !important}
.a8logo.on-light .core{color:#0B1620 !important}
.a8logo.on-light .tm{color:#8A97AD !important}
/* Footer brand block: logo stacked over tagline, forms the left column
   (to the left of the nav columns) - mirrors B5's .ft-brand. */
.ft-brand{max-width:32ch}
.ft-brand .brand{margin-bottom:14px;display:inline-flex}
.ft-desc{color:#7385A3;font-size:.9rem;line-height:1.55;max-width:34ch;margin:14px 0 0}
/* ===== A8 Core logo ===== */
html body a.a8logo{font-family:'Sora',sans-serif !important;display:inline-flex !important;gap:0 !important;column-gap:0 !important;align-items:baseline !important;line-height:1 !important;white-space:nowrap !important;text-decoration:none !important;letter-spacing:-.01em !important;}
html body header a.brand.a8logo,html body .nav a.brand.a8logo,html body .ft a.brand.a8logo,html body a.brand.a8logo,html body .brand.a8logo{gap:0 !important;column-gap:0 !important;}
html body a.a8logo span.a8{color:#6FC3AE !important;font-weight:800 !important;letter-spacing:-.03em !important;}
html body a.a8logo span.core{color:#E8EEFB !important;font-weight:500 !important;letter-spacing:.01em !important;margin-left:.40em !important;}
html body a.a8logo span.tm{font-size:.30em !important;font-weight:600 !important;color:#7385A3 !important;vertical-align:baseline !important;position:relative !important;top:-1.05em !important;left:.04em !important;}
html body a.a8logo.on-light span.a8{color:#1F8A72 !important;}
html body a.a8logo.on-light span.core{color:#0B1620 !important;}
html body a.a8logo.on-light span.tm{color:#8A97AD !important;}
html body .nav a.brand.a8logo span.core,html body .ft a.brand.a8logo span.core{margin-left:.40em !important;}
html body .nav a.brand.a8logo{font-size:1.5rem !important;}
html body .ft a.brand.a8logo{font-size:1.4rem !important;}


/* ===== A8 Core responsive hardening (Stage C QA) ===== */
@media (max-width:900px){
  table,table.mx,table.kv{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  pre,.endpoint,.code,.sample{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  code,.path,kbd{overflow-wrap:anywhere;word-break:break-word}
  a{overflow-wrap:anywhere}
  img,svg,iframe{max-width:100%;height:auto}
  .toc a{display:inline-block;max-width:100%}
}
@media (max-width:900px){
  .nav-dd-menu a,.nav-links a,.ndm-col a{white-space:normal !important;display:block;max-width:100%;overflow-wrap:anywhere;box-sizing:border-box}
  .nav-dd-menu{max-width:calc(100vw - 24px)}
}
@media (max-width:560px){
  .ft-top{gap:22px !important}
  .ft-cols,.ft-cols-5{display:grid !important;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
  .ft-col{min-width:0}
  .ft-eco{overflow-wrap:anywhere}
}

/* A8 colour system v1 — signature + contrast */


.btn-ghost{color:var(--verd) !important;}
.btn-ghost:hover{border-color:var(--verd) !important;}





/* ==== Standardised card hover ============================================
   One token, one duration, one rule. Matches the established reference
   treatment already used by .pillar / .acard / .wcard / .acell.
   These cards are non-interactive <div>s, so they get the hover affordance
   and keyboard parity via :focus-within, but deliberately NO cursor:pointer.
   ======================================================================= */
:root{
  --card-line-hover:var(--blue);
  --card-t:.2s;
}
.ep,.ctrl{
  transition:border-color var(--card-t) ease;
}
@media (hover:hover) and (pointer:fine){
  .ep:hover,.ctrl:hover{border-color:var(--card-line-hover);}
}
.ep:focus-within,.ctrl:focus-within,.cap:focus-within{
  border-color:var(--card-line-hover);
}
/* ==== end standardised card hover ====================================== */


/* ==== A8 Core canonical component layer =================================
   One card system, one button system, one focus treatment.
   Hover is gated to real hover devices; keyboard parity via :focus-within.
   Informational cards get the affordance but never cursor:pointer.
   ====================================================================== */
:root{ --card-line:var(--line-soft); --card-line-hover:var(--verd); --card-t:.2s; }

.a8-card,
.card,.cap,.ep,.ctrl,.pillar,.acard,.wcard,.acell,.kpi,.help-cta,.help-cta2,
.uof,.ipcard,.aside-card,.atype,.boiler,.cert,.cinfo,.dr-card,.roles,
.sched-card,.toc,.doc,.acct-note,.cform-wrap,.status-banner,.arch-strip{
  transition:border-color var(--card-t) ease, background-color var(--card-t) ease;
}
@media (hover:hover) and (pointer:fine){
  .a8-card:hover,
  .card:hover,.cap:hover,.ep:hover,.ctrl:hover,.kpi:hover,.help-cta:hover,
  .help-cta2:hover,.cform-wrap:hover{ border-color:var(--card-line-hover); }
}
.a8-card:focus-within,
.card:focus-within,.cap:focus-within,.ep:focus-within,.ctrl:focus-within,
.kpi:focus-within,.help-cta:focus-within,.cform-wrap:focus-within{
  border-color:var(--card-line-hover);
}

/* buttons — single system */
.btn{font-family:var(--body);font-weight:600;border-radius:10px;
     transition:background-color .18s ease,border-color .18s ease,color .18s ease;}
.btn-pri{background:var(--verd);color:var(--ledger-950);border:1px solid var(--verd);}
.btn-pri:hover{background:var(--verd-bright);color:var(--ledger-950);}
.btn-pri:active{background:var(--verd-deep);color:var(--txt);}
.btn-ghost{background:transparent;color:var(--verd);border:1px solid var(--line);}
.btn-ghost:hover{border-color:var(--verd);color:var(--verd-bright);}
.btn-ghost:active{border-color:var(--verd-bright);}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;}

/* focus — one ring everywhere */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,
select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--verd-bright);outline-offset:2px;
}

/* forms */
.field input,.field textarea,.field select{
  background:var(--ledger-950);border:1px solid var(--line);color:var(--txt);
  transition:border-color .18s ease,box-shadow .18s ease;
}
.field input::placeholder,.field textarea::placeholder{color:var(--txt-3);}
.field input:focus,.field textarea:focus,.field select:focus{
  outline:none;border-color:var(--verd);box-shadow:0 0 0 3px var(--verd-glow);
}
.field .err,.field [aria-invalid="true"]{border-color:var(--crit);}
.field .req{color:var(--verd);}

@media (prefers-reduced-motion:reduce){
  .a8-card,.card,.cap,.ep,.ctrl,.kpi,.help-cta,.btn{transition:none;}
}
/* ==== end canonical component layer =================================== */


/* ==== Primary button — filled-control ramp ============================
   rest  #38A98F  6.30:1 on ground · ink 6.70:1
   hover #6FC3AE  8.78:1 · ink 9.34:1
   press #2F8B76  4.41:1 · ink 4.70:1
   --verd stays the ACCENT (links, focus, card hover, wordmark).
   ==================================================================== */
.btn-pri{background:var(--verd-fill);color:var(--ledger-950);border:1px solid var(--verd-fill);}
.btn-pri:hover{background:var(--verd);color:var(--ledger-950);border-color:var(--verd);}
.btn-pri:active{background:var(--verd-deep);color:var(--ledger-950);border-color:var(--verd-deep);}
/* ==== end primary button ============================================= */


/* ==== Code panels — defensive integration override =====================
   Critical background/colour pairs are literal, not tokens, so a missing
   variable or a theme rule can never leave light text on a white well.
   Measured on #060E14: default 10.05:1 · string 16.71:1 · keyword 9.34:1
   · number 9.70:1 · comment 5.19:1 · verb 11.64:1 — all AA or better.
   ===================================================================== */
html body .code,
html body .sc,
html body pre{
  background:#060E14 !important;
  color:#AEBBD4 !important;
  border-color:#1E3846 !important;
}
html body .code pre,
html body .sc pre,
html body pre code{
  background:transparent !important;
  color:inherit !important;
}
html body .code-h,
html body .sc-h{
  background:#0B1620 !important;
  color:#AEBBD4 !important;
  border-bottom-color:#172B36 !important;
}
html body :not(pre) > code{
  background:#12232E !important;
  color:#AEBBD4 !important;
  border:1px solid #1E3846 !important;
  border-radius:6px;
  padding:.12em .42em;
}
html body .c-key,html body .cl.c-key{color:#6FC3AE !important;}
html body .c-str{color:#E8EEFB !important;}
html body .c-num{color:#E0B04A !important;}
html body .c-com,html body .c-mut{color:#7385A3 !important;}
html body .c-verb{color:#8FD6C3 !important;}
html body .c-ok{color:#34E0A6 !important;}
html body .c-path{color:#AEBBD4 !important;}
html body .c-event{color:var(--mint) !important;}
html body .code-h .tl,html body .sc-h .tl{background:#1E3846 !important;}
/* ==== end code panels ================================================= */


/* ==== De-emphasis without opacity ======================================
   Opacity on text multiplies against the background; stacked on --txt-3 it
   produced 1.40-2.33:1. State is now carried by colour and glyph.
   --txt-3 measures 4.88:1 on the ledger ground. Disabled controls keep
   their opacity — WCAG exempts them.
   ===================================================================== */
.dir a.off b,.dir a.off em,.enum span.off b,.enum span.off em{color:var(--txt-3);}
.soon,.legend i.n,.legend i.x,.mx td.n,.mx td.x{opacity:1;color:var(--txt-3);}
.dir a.off,.enum span.off{opacity:1;}
/* ==== end de-emphasis ================================================= */

/* =========================================================================
   A8 Core - Products Mega Menu (v2)
   Scoped entirely to .nav-mega / .nm-*. Nothing here can reach any other
   card, dropdown or navigation item. Every colour is an existing A8 token;
   type, radius, transitions and the button base are the site's own.
   Panel ground is --ledger-850 (not --ledger-800) for one measured reason:
   the muted category label --txt-3 scores 4.30:1 on #12232E (AA fail) and
   4.63:1 on #0E1C26 (AA pass) - see the report's contrast table.
   ====================================================================== */
:root{ --nm-w:940px; --nm-edge:24px; --nm-t:.18s; }

/* the trigger ---------------------------------------------------------- */
html body header.nav .nav-dd-products{position:static;}          /* panel anchors to the header, not the button */
html body header.nav .nav-dd-products::after{content:none;display:none;} /* kill the 18px hover bridge: panel is flush, no gap to bridge */
html body header.nav .nm-t{cursor:pointer;}
html body header.nav .nm-t .nav-dd-c{transition:transform var(--nm-t) ease;}
html body header.nav .nav-dd-products.nm-open .nm-t{color:var(--txt);}
html body header.nav .nav-dd-products.nm-open .nm-t .nav-dd-c{transform:rotate(180deg);}

/* the panel ------------------------------------------------------------ */
html body header.nav .nav-mega{
  position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(-6px);
  z-index:70;
  width:min(var(--nm-w), calc(100vw - (var(--nm-edge) * 2)));
  min-width:0; max-width:calc(100vw - (var(--nm-edge) * 2));
  background:var(--ledger-850,#0E1C26);
  border:1px solid var(--line,#1E3846);
  border-radius:16px;
  box-shadow:0 26px 64px -32px #000;
  text-align:left;
  opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity var(--nm-t) ease, transform var(--nm-t) ease, visibility var(--nm-t);
}
html body header.nav .nav-mega .nm-inner{
  max-height:calc(100vh - 140px); overflow-y:auto; overscroll-behavior:contain;
  border-radius:inherit;
}
/* open state: CSS-only fallback is hover/focus; with JS the class is authoritative */
html body header.nav .nav-dd-products:hover > .nav-mega,
html body header.nav .nav-dd-products:focus-within > .nav-mega,
html body header.nav .nav-dd-products.nm-open > .nav-mega{
  opacity:1; visibility:visible; pointer-events:auto;
  transform:translateX(-50%) translateY(0);
}
html.nm-js body header.nav .nav-dd-products:hover > .nav-mega,
html.nm-js body header.nav .nav-dd-products:focus-within > .nav-mega{
  opacity:0; visibility:hidden; pointer-events:none;
  transform:translateX(-50%) translateY(-6px);
}
html.nm-js body header.nav .nav-dd-products.nm-open > .nav-mega{
  opacity:1; visibility:visible; pointer-events:auto;
  transform:translateX(-50%) translateY(0);
}
/* JS-measured horizontal anchor: aligns under the trigger, clamped to the viewport */
html.nm-js body header.nav .nav-mega.nm-anchored{left:var(--nm-x,50%); transform:translateY(-6px);}
html.nm-js body header.nav .nav-dd-products.nm-open > .nav-mega.nm-anchored{transform:translateY(0);}

/* 1 - introductory header --------------------------------------------- */
html body header.nav .nav-mega .nm-head{
  display:flex; align-items:center; justify-content:space-between; gap:28px;
  padding:30px 32px 26px;
  border-bottom:1px solid var(--line-soft,#172B36);
}
html body header.nav .nav-mega .nm-intro{flex:1 1 60%; min-width:0;}
html body header.nav .nav-mega .nm-title{
  font-family:var(--disp),sans-serif; font-size:17px; font-weight:700;
  letter-spacing:-.01em; line-height:1.25; color:var(--txt,#E8EEFB); margin:0 0 6px;
}
html body header.nav .nav-mega .nm-sub{
  font-family:var(--body),sans-serif; font-size:13px; line-height:1.55;
  color:var(--txt-2,#AEBBD4); margin:0; max-width:48ch;
}
html body header.nav .nav-mega .nm-cta{
  flex:0 0 auto; max-width:40%;
  border-color:var(--verd-deep,#2F8B76);
  background:rgba(111,195,174,.08);
  color:var(--verd,#6FC3AE);
  font-size:13.5px; padding:1.2em 1.35em;
}
html body header.nav .nav-mega .nm-cta:hover,
html body header.nav .nav-mega .nm-cta:focus-visible{
  border-color:var(--verd,#6FC3AE); background:rgba(111,195,174,.14);
  color:var(--verd-bright,#8FD6C3);
}

/* 2 - three-column product navigation --------------------------------- */
html body header.nav .nav-mega .nm-cols{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0 34px; padding:22px 32px 16px;
}
html body header.nav .nav-mega .nm-col{min-width:0;}
html body header.nav .nav-mega .nm-h{
  font-family:var(--mono),monospace; font-size:11px; font-weight:500;
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--txt-3,#7385A3); margin:0 0 10px;
}
html body header.nav .nav-mega .nm-list{list-style:none; margin:0; padding:0;}
html body header.nav .nav-mega .nm-list li{margin:0; padding:0;}
html body header.nav .nav-mega .nm-list a{
  display:block; position:relative;
  padding:11px 10px; margin-inline:-10px; border-radius:7px;
  font-family:var(--body),sans-serif; font-size:13.5px; font-weight:500;
  line-height:1.4; color:var(--txt-2,#AEBBD4);
  text-decoration:none;
  transition:color var(--nm-t) ease, background-color var(--nm-t) ease;
}
html body header.nav .nav-mega .nm-nw{white-space:nowrap;}
@media (hover:hover) and (pointer:fine){
  html body header.nav .nav-mega .nm-list a:hover{
    color:var(--txt,#E8EEFB); background-color:rgba(111,195,174,.07);
  }
}
html body header.nav .nav-mega .nm-list a:focus-visible{
  color:var(--txt,#E8EEFB); background-color:rgba(111,195,174,.07);
}
/* current page: colour PLUS a rule, never colour alone */
html body header.nav .nav-mega .nm-list a[aria-current="page"]{
  color:var(--verd,#6FC3AE); font-weight:600;
}
html body header.nav .nav-mega .nm-list a[aria-current="page"]::before{
  content:""; position:absolute; left:-10px; top:8px; bottom:8px; width:2px;
  border-radius:2px; background:var(--verd,#6FC3AE);
}

/* 3 - bottom utility navigation --------------------------------------- */
html body header.nav .nav-mega .nm-foot{
  display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
  gap:4px 16px;
  border-top:1px solid var(--line-soft,#172B36);
  padding:19px 20px 21px;
}
html body header.nav .nav-mega .nm-foot a{
  display:inline-flex; align-items:center; gap:.5em; justify-self:start;
  padding:9px 12px; border-radius:7px;
  font-family:var(--body),sans-serif; font-size:13px; font-weight:600;
  color:var(--verd,#6FC3AE); text-decoration:none;
  transition:color var(--nm-t) ease, background-color var(--nm-t) ease;
}
@media (hover:hover) and (pointer:fine){
  html body header.nav .nav-mega .nm-foot a:hover{
    color:var(--verd-bright,#8FD6C3); background-color:rgba(111,195,174,.07);
  }
}
html body header.nav .nav-mega .nm-foot a:focus-visible{
  color:var(--verd-bright,#8FD6C3); background-color:rgba(111,195,174,.07);
}
html body header.nav .nav-mega .nm-ar{
  display:inline-block; transition:transform var(--nm-t) ease;
}
@media (hover:hover) and (pointer:fine){
  html body header.nav .nav-mega a:hover .nm-ar{transform:translateX(3px);}
}

/* focus ring: the site's canonical one, restated so the panel never loses it */
html body header.nav .nav-mega a:focus-visible,
html body header.nav .nm-t:focus-visible{
  outline:2px solid var(--verd-bright,#8FD6C3); outline-offset:2px;
}

/* short viewports / high zoom: two columns rather than a clipped panel */
@media (max-width:1040px) and (min-width:761px){
  html body header.nav .nav-mega .nm-cols{grid-template-columns:repeat(2,minmax(0,1fr));}
  html body header.nav .nav-mega .nm-head{gap:18px;}
  html body header.nav .nav-mega .nm-sub{max-width:40ch;}
}

/* --------------------------------------------------------------------- */
/* Mobile: Products becomes an accordion inside the existing hamburger    */
/* menu. The desktop panel is never squeezed onto a phone.                */
/* --------------------------------------------------------------------- */
@media (max-width:760px){
  html body header.nav .nav-dd-products{position:relative;}
  html body header.nav .nm-t{
    display:flex !important; align-items:center; justify-content:space-between;
    width:100%; min-height:44px; padding:8px 0 !important; text-align:left;
  }
  html body header.nav .nav-mega{
    position:static; left:auto; top:auto; transform:none !important;
    width:100%; max-width:100%;
    opacity:1; visibility:visible; pointer-events:auto;
    background:transparent; border:0; border-radius:0; box-shadow:none;
    display:none;
  }
  html body header.nav .nav-dd-products.nm-open > .nav-mega{display:block;}
  html.nm-js body header.nav .nav-dd-products:hover > .nav-mega,
  html.nm-js body header.nav .nav-dd-products:focus-within > .nav-mega{
    opacity:1; visibility:visible; pointer-events:auto;
  }
  html body header.nav .nav-mega .nm-inner{max-height:none; overflow:visible;}
  html body header.nav .nav-mega .nm-head{
    flex-direction:column; align-items:flex-start; gap:14px;
    padding:6px 0 16px; border-bottom-color:var(--line-soft,#172B36);
  }
  html body header.nav .nav-mega .nm-title{display:none;}   /* the trigger already says Products */
  html body header.nav .nav-mega .nm-sub{display:none;}
  html body header.nav .nav-mega .nm-cta{
    max-width:100%; width:100%; justify-content:center; min-height:44px;
  }
  html body header.nav .nav-mega .nm-cols{
    grid-template-columns:1fr; gap:18px 0; padding:16px 0 8px;
  }
  html body header.nav .nav-mega .nm-list a{
    min-height:44px; display:flex; align-items:center;
    padding:10px 10px; font-size:14px;
  }
  html body header.nav .nav-mega .nm-foot{
    grid-template-columns:1fr; gap:2px; padding:14px 0 6px;
  }
  html body header.nav .nav-mega .nm-foot a{min-height:44px; padding:10px 12px;}
}

/* the hamburger panel must scroll, not run off the page, when Products expands.
   (a8core-docs.css already does this for the 61 docs pages; the other 112 had
   no guard, and an expandable section makes one necessary.) */
@media (max-width:760px){
  html body header.nav .nav-links.open{
    max-height:calc(100dvh - 72px); overflow-y:auto; -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
  }
}

@media (prefers-reduced-motion:reduce){
  html body header.nav .nav-mega,
  html body header.nav .nav-mega .nm-ar,
  html body header.nav .nm-t .nav-dd-c,
  html body header.nav .nav-mega .nm-list a,
  html body header.nav .nav-mega .nm-foot a{transition:none !important;}
  html body header.nav .nav-mega{transform:translateX(-50%) !important;}
  html.nm-js body header.nav .nav-mega.nm-anchored{transform:none !important;}
}

/* print: the panel is chrome, never paper */
@media print{ html body header.nav .nav-mega{display:none !important;} }
/* ===================== end Products Mega Menu (v2) ==================== */


/* ==========================================================================
   A8 CORE - classes referenced by authored page content but defined nowhere.
   Added 2026-07-24. Audited by diffing used-classes against every selector in
   a8core.css and a8core-docs.css.
   ========================================================================== */

/* --- HONEYPOT. Must be visually hidden. The markup already carries
   aria-hidden="true" and tabindex="-1", so assistive technology and the keyboard
   are handled; this is the visual half. NOT .sr-only, which deliberately keeps
   content in the accessibility tree -- the opposite of what a honeypot needs. */
html body .hp-field{position:absolute !important;left:-9999px !important;
  top:auto !important;width:1px !important;height:1px !important;
  overflow:hidden !important;opacity:0 !important;pointer-events:none !important}

/* --- disclaimer paragraph: on every one of the 16 pages ------------------- */
.prose p.disc,p.disc{margin-top:28px;padding-top:16px;
  border-top:1px solid var(--line-soft);color:var(--txt-3);font-size:.84rem;
  line-height:1.6}
.prose p.disc strong,p.disc strong{color:var(--txt-2)}

/* --- callout box --------------------------------------------------------- */
.prose .callout,.callout{margin:18px 0;padding:15px 18px;background:var(--surface-2);
  border:1px solid var(--line);border-left:3px solid var(--blue);
  border-radius:0 10px 10px 0}
.prose .callout p,.callout p{margin:0;font-size:.92rem;color:var(--txt-2);
  line-height:1.65}
.prose .callout p + p,.callout p + p{margin-top:10px}
.prose .callout strong,.callout strong{color:var(--txt)}

/* --- data table ---------------------------------------------------------- */
.prose table.api-tbl,table.api-tbl{width:100%;border-collapse:collapse;
  margin:16px 0 22px;font-size:.9rem}
table.api-tbl th{text-align:left;font-family:var(--mono);font-size:.7rem;
  letter-spacing:.08em;text-transform:uppercase;color:var(--txt-3);
  padding:9px 12px;border-bottom:1px solid var(--line);background:var(--surface-2)}
table.api-tbl td{padding:10px 12px;border-bottom:1px solid var(--line-soft);
  color:var(--txt-2);vertical-align:top}
table.api-tbl tr:last-child td{border-bottom:0}
table.api-tbl td strong{color:var(--txt)}
table.api-tbl td code{font-family:var(--mono);color:var(--blue-bright);
  font-size:.86rem}
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl-scroll table.api-tbl{min-width:640px}

/* --- action row ---------------------------------------------------------- */
.prose p.acct-cta,p.acct-cta{display:flex;flex-wrap:wrap;gap:12px;margin:26px 0 0}

/* --- signing form wrapper ------------------------------------------------ */
.legal-sign{margin:18px 0 0;padding:22px;background:var(--surface-2);
  border:1px solid var(--line);border-radius:14px}
.legal-sign .note{margin-top:12px}
@media(max-width:620px){.legal-sign{padding:16px}}
/* ================= end referenced-but-undefined fixes ==================== */

/* ====================================================================
   RESPONSIVE CONTAINMENT — added 2026-07-26
   `aside.toc` on the legal / long-form pages kept a desktop width at narrow
   viewports because its grid track was a bare `1fr` (= minmax(auto,1fr)),
   whose min-content floor is set by the widest table-of-contents entry.
   Original design values are preserved exactly: the 230px sidebar and the
   860px collapse breakpoint are unchanged. Only the track floors change.
   ==================================================================== */
.legal-layout{grid-template-columns:minmax(0,230px) minmax(0,1fr);}
aside.toc,.legal-layout .toc{min-width:0;max-width:100%;}
.legal-layout .toc :is(a,li){overflow-wrap:anywhere;}
@media(max-width:860px){
  .legal-layout{grid-template-columns:minmax(0,1fr);}
}

/* ---- pass 2: marketing grid containment + mobile collapse enforcement ----
   The 860px collapse for .grid2/.grid3/.kpis/.ep-grid is overridden by later
   re-declarations and by .sec-scoped variants, so it never applied. Re-asserted
   here with enough specificity to win, and every grid item gets min-width:0 so
   a bare 1fr track can shrink below its content's min-content width. No column
   ratio, gap or breakpoint is changed. */
body .grid2,body .grid3,body .kpis,body .ep-grid{min-width:0;}
body .grid2>*,body .grid3>*,body .kpis>*,body .ep-grid>*{min-width:0;}
body .grid2>*>*,body .grid3>*>*,body .kpis>*>*,body .ep-grid>*>*{min-width:0;}
body .card,body .kpi,body .ep{min-width:0;overflow-wrap:anywhere;}
@media(max-width:860px){
  body .grid2,body .grid3,body .kpis,body .ep-grid,
  body .sec .grid2,body .sec .grid3,
  body .secblk .grid2,body .provider .grid2,body .founder .grid2,
  body .hero-in{grid-template-columns:minmax(0,1fr);}
}
/* .btn sets white-space:nowrap, so a long label cannot wrap and overflows a
   320px viewport. Allowed to wrap only where it is needed. */
@media(max-width:430px){
  body .btn{white-space:normal;max-width:100%;text-align:center;}
}

/* pass 2b: two more grid families with the same min-content track floor.
   /demo/ - section.wrap used as a grid computed a single fixed-width track
   wider than a 320px viewport, the floor being the .sched-card's min-content
   width. /investors/ - .uof-grid computed two tracks totalling more than its
   own container. Neutralising the items' automatic minimum size fixes both
   without touching any declared track ratio. */
body .wrap>*,body .uof-grid,body .uof-grid>*,body .sched-card{min-width:0;}
@media(max-width:860px){
  body .uof-grid{grid-template-columns:minmax(0,1fr);}
}

/* pass 2c: WCAG 2.2 AA 1.4.3 - the muted text token --txt-3 (#7385a3) measured
   3.96-4.43:1 against the six dark surfaces it is used on, below the 4.5:1
   minimum for body-size text. Every one of the 790 measured contrast failures
   across 28 pages resolved to this single token. Brightened by 11.8% with the
   hue held exactly (same R:G:B relationship), which clears 4.66:1 on the
   lightest surface and 6.01:1 on the darkest. No other token is changed. */
:root{--txt-3:#8195B6;}

/* pass 2d: three measured WCAG 2.2 AA failures, each fixed at its cause.

   1.4.3 - a primary CTA inside .prose rendered at 1.74:1. `.prose a` sets
   color:var(--blue-bright), whose value is identical to var(--verd-bright), and
   its two-class specificity beats `.btn-pri`'s single class, so light teal text
   landed on the teal button. Each button's intended colour is restored at
   higher specificity; no colour value is invented.

   2.5.8 - the rotating hero's slide dots are 11-14px. The visual dot is left
   exactly as designed and the hit area is expanded to the required minimum with
   a transparent ::before overlay, the technique the SC anticipates.

   2.4.7 - <summary> computed outline:none with no replacement indicator. */
body .prose a.btn-pri{color:var(--ledger-950);}
body .prose a.btn-ghost{color:var(--txt);}
body .hero-dots button{position:relative;}
body .hero-dots button::before{content:"";position:absolute;left:50%;top:50%;
  width:24px;height:24px;transform:translate(-50%,-50%);background:transparent;}
body summary:focus-visible{outline:2px solid var(--verd);outline-offset:2px;}

/* ---- pass 4: navigation chrome, consolidated -------------------------------
   This block was inlined as <style id="a8core-navfix"> on 70 of 191 pages and
   absent from the other 121, including every /api-reference/ page and the
   reusable docs-chrome block. Moved here so one definition serves the whole
   site. Byte-for-byte the same declarations; nothing added, nothing dropped. */
html,body{overflow-x:clip !important;}
html{scroll-padding-top:84px;}
header.nav{position:sticky !important;top:0 !important;z-index:60;}
body.admin-bar header.nav{top:32px !important;}
@media screen and (max-width:782px){body.admin-bar header.nav{top:46px !important;}}
header.nav a, header.nav .nav-dd-menu a, .ribbon a, footer.ft a, a.btn, a.btn-pri, .ccard{text-decoration:none !important;}
header.nav .nav-links{align-items:center !important;}
header.nav .nav-links > a{display:inline-flex !important;align-items:center !important;line-height:1.6 !important;font-size:.88rem !important;font-weight:500 !important;}
header.nav .nav-dd{display:inline-flex !important;align-items:center !important;}
header.nav .nav-dd-t{display:inline-flex !important;align-items:center !important;font-family:inherit !important;font-size:.88rem !important;font-weight:500 !important;line-height:1.6 !important;letter-spacing:inherit !important;color:inherit !important;gap:4px !important;padding:0 !important;background:none !important;border:0 !important;cursor:pointer !important;}
header.nav .nav-dd-menu{left:0 !important;right:auto !important;transform:translateY(6px) !important;}
header.nav .nav-links > .nav-dd:last-child .nav-dd-menu{left:auto !important;right:0 !important;}
@media(max-width:760px){.nav-links.open{max-height:calc(100dvh - 64px);overflow-y:auto;-webkit-overflow-scrolling:touch;}}

/* ---- pass 6: align the endpoint chips across each .ep-grid row -------------
   Kept as the fallback for engines without CSS subgrid: the chips stay
   bottom-aligned even where their line counts differ. */
body .ep-grid>.ep{display:flex;flex-direction:column;}
body .ep-grid>.ep p{margin-bottom:14px;}
body .ep-grid>.ep .verb{margin-top:auto;align-self:flex-start;}
body .ep-grid>.ep .verb{min-height:calc(3.2em + .4em + 2px);}

/* ---- pass 7: .ep-grid card alignment, done properly ------------------------
   Pass 6 bottom-aligned the chips with flexbox, which fixed three of the four
   measured width bands but left one line-height (17.9px) wherever a chip wraps
   to a different number of lines than its neighbours. Measured chip line counts
   per card across widths: 1024 [3,3,3,1,2,2] · 1100 [2,3,2,1,1,2] ·
   1200 [2,2,2,1,1,1] · 1440-2560 [2,3,2,1,1,1] · 900 [2,1,1,1,1,1].
   No min-height can absorb that without leaving blank lines at other widths.

   CSS subgrid does absorb it. Every one of the six cards has exactly four
   children (.k, h3, p, .verb), so each card can span four parent rows and adopt
   them as its own: the eyebrow, heading, paragraph and chip then share a track
   per band, and the 1fr paragraph row takes up the slack. justify-self:start
   keeps each chip hugging its text instead of stretching to the card width;
   the default align-self:stretch makes every chip in a band the same height, so
   tops and bottoms both line up.

   The parent row count depends on the column count, so each of the three column
   bands is stated explicitly. The flexbox rules above remain as the fallback for
   engines without subgrid, where the chips stay bottom-aligned. */
@supports (grid-template-rows: subgrid){
  html body .ep-grid>.ep{display:grid;grid-template-rows:subgrid;}
  html body .ep-grid>.ep>h3{margin:0;}
  html body .ep-grid>.ep>p{margin:0;}
  /* align-self:stretch is essential and easy to miss: pass 6's fallback sets
     align-self:flex-start, which left each chip at its natural height inside
     the shared track, so tops aligned and bottoms did not. Stretching every
     chip to the track makes the heights equal, which aligns both edges. */
  html body .ep-grid>.ep>.verb{margin-top:0;justify-self:start;align-self:stretch;min-height:0;}
  @media (min-width:961px){
    html body .ep-grid{grid-template-rows:repeat(2,auto auto 1fr auto);}
    html body .ep-grid>.ep{grid-row:span 4;}
  }
  @media (min-width:561px) and (max-width:960px){
    html body .ep-grid{grid-template-rows:repeat(3,auto auto 1fr auto);}
    html body .ep-grid>.ep{grid-row:span 4;}
  }
  @media (max-width:560px){
    html body .ep-grid{grid-template-rows:repeat(6,auto auto 1fr auto);}
    html body .ep-grid>.ep{grid-row:span 4;}
  }
}


/* ==========================================================================
   pass 9 -- brand logo, centralised
   Was <style id="a8logo-inline"> on /home/, /api-access/, /api-terms/ and
   reusable block 3686 (which serves all 61 docs pages); 127 pages never had it.
   MEASURED, and it corrected my own assumption: those 127 pages already computed
   the SAME wordmark as /home/, because this file's own 25 .a8logo rules already
   produce it. So this is a maintainability change, not a visual fix -- one place
   to edit instead of four, and no page renders differently.
   Moved here verbatim; the four inline copies are removed. Byte-identical text,
   appended last so it keeps the cascade position it had inline.
   Revert: delete this block and restore the four inline copies.
   ========================================================================== */
html body a.a8logo{font-family:'Sora',sans-serif !important;display:inline-flex !important;gap:0 !important;column-gap:0 !important;align-items:baseline !important;line-height:1 !important;white-space:nowrap !important;text-decoration:none !important;letter-spacing:-.01em !important;}html body header a.brand.a8logo,html body .nav a.brand.a8logo,html body .ft a.brand.a8logo,html body a.brand.a8logo,html body .brand.a8logo{gap:0 !important;column-gap:0 !important;}html body a.a8logo span.a8{color:#6FC3AE !important;font-weight:800 !important;letter-spacing:-.03em !important;}html body a.a8logo span.core{color:#E8EEFB !important;font-weight:500 !important;letter-spacing:.01em !important;margin-left:.40em !important;}html body a.a8logo span.tm{font-size:.30em !important;font-weight:600 !important;color:#7385A3 !important;vertical-align:baseline !important;position:relative !important;top:-1.05em !important;left:.04em !important;}html body a.a8logo.on-light span.a8{color:#1F8A72 !important;}html body a.a8logo.on-light span.core{color:#0B1620 !important;}html body a.a8logo.on-light span.tm{color:#8A97AD !important;}html body .nav a.brand.a8logo span.core,html body .ft a.brand.a8logo span.core{margin-left:.40em !important;}html body .nav a.brand.a8logo{font-size:1.5rem !important;}html body .ft a.brand.a8logo{font-size:1.4rem !important;}


/* ==========================================================================
   pass 9 -- job-description components (.jd-*)
   Was inline, byte-identical, on 11 pages: /careers/ and the ten role pages.
   3,238 B x 11 = 35,618 B of duplicated markup, one edit per page to change.
   Zero selector collisions with anything already in this file (measured).
   ========================================================================== */
.jd-meta{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 6px}
.jd-pill{display:inline-flex;align-items:center;gap:8px;font:500 .82rem/1 Inter,system-ui,sans-serif;color:var(--txt-2);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.10);border-radius:999px;padding:10px 15px}
.jd-pill b{color:#fff;font-weight:600}
.jd-apply{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px;align-items:center}
.jd-own{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:6px}
.jd-own .oc{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:20px 20px 10px}
.jd-own .oc h3{font:600 1.02rem/1.3 Sora,system-ui,sans-serif;color:#fff;margin:0 0 12px;display:flex;align-items:center;gap:10px}
.jd-own .oc h3::before{content:"";width:9px;height:9px;border-radius:3px;background:linear-gradient(135deg,#6FC3AE,#34e0a6);flex:none}
.jd-own .oc ul{list-style:none;margin:0;padding:0}
.jd-own .oc li{position:relative;padding:7px 0 7px 18px;color:var(--txt-2);font-size:.92rem;border-top:1px solid rgba(255,255,255,.055)}
.jd-own .oc li:first-child{border-top:0}
.jd-own .oc li::before{content:"";position:absolute;left:0;top:14px;width:6px;height:6px;border-radius:50%;background:#34e0a6;opacity:.75}
.jd-quals{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:6px}
.jd-quals h3{font:600 .82rem/1 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--txt-3);margin:0 0 14px}
.jd-list{list-style:none;margin:0;padding:0}
.jd-list li{padding:9px 0 9px 26px;position:relative;color:var(--txt-2);font-size:.96rem;border-top:1px solid rgba(255,255,255,.05)}
.jd-list li:first-child{border-top:0}
.jd-list li::before{content:"";position:absolute;left:2px;top:15px;width:10px;height:10px;border-radius:50%;border:2px solid #34e0a6}
.jd-grp{margin-top:26px}.jd-grp:first-child{margin-top:0}
.jd-grp h3{font:600 1.05rem/1.3 Sora,system-ui,sans-serif;color:#fff;margin:0 0 4px}
.jd-lead{color:var(--txt-2);font-size:1rem;margin:0 0 4px}
.jd-stack{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:6px}
.jd-stack .sg h4{font:600 .76rem/1 'JetBrains Mono',monospace;letter-spacing:.09em;text-transform:uppercase;color:var(--txt-3);margin:0 0 12px}
.jd-chips{display:flex;flex-wrap:wrap;gap:8px}
.jd-chip{font:500 .8rem/1 'JetBrains Mono',monospace;color:var(--verd-bright);background:rgba(111,195,174,.10);border:1px solid rgba(111,195,174,.22);border-radius:8px;padding:8px 11px}
.jd-time{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:6px}
.jd-phase{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:22px}
.jd-phase .ph-k{font:600 .74rem/1 'JetBrains Mono',monospace;letter-spacing:.07em;text-transform:uppercase;color:#6FC3AE;margin-bottom:14px}
.jd-phase ul{list-style:none;margin:0;padding:0}
.jd-phase li{padding:8px 0 8px 22px;position:relative;color:var(--txt-2);font-size:.92rem;border-top:1px solid rgba(255,255,255,.05)}
.jd-phase li:first-child{border-top:0}
.jd-phase li::before{content:"\2192";position:absolute;left:0;color:#34e0a6;font-weight:700}
@media(max-width:880px){.jd-own,.jd-time,.jd-stack,.jd-quals{grid-template-columns:1fr}}


/* ==========================================================================
   pass 9 -- community page components
   Was inline, byte-identical, on /developer-slack/, /office-hours/, /events/.
   ========================================================================== */
.cm-wrap{max-width:760px}
.cm-bc{display:flex;gap:8px;align-items:center;font:500 .85rem/1 Inter,system-ui,sans-serif;color:var(--txt-3);margin-bottom:10px}
.cm-bc a{color:var(--txt-3);text-decoration:none}
.cm-wrap h2{margin:40px 0 8px}.cm-wrap h3{margin:24px 0 6px;font:600 1.05rem/1.3 Sora,system-ui,sans-serif;color:#fff}
.cm-wrap p{color:var(--txt-2);line-height:1.65}.cm-wrap a.ln{color:#6FC3AE;text-decoration:none}
.cm-list{list-style:none;margin:10px 0;padding:0}
.cm-list li{position:relative;padding:8px 0 8px 24px;color:var(--txt-2);border-top:1px solid rgba(255,255,255,.05);line-height:1.55}
.cm-list li:first-child{border-top:0}
.cm-list li::before{content:"";position:absolute;left:2px;top:15px;width:8px;height:8px;border-radius:50%;border:2px solid #34e0a6}
.cm-chan{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:14px 0}
.cm-chan div{padding:14px 16px;border:1px solid rgba(255,255,255,.08);border-radius:12px;background:rgba(255,255,255,.025)}
.cm-chan b{color:var(--verd-bright);font:600 .9rem/1 'JetBrains Mono',monospace}.cm-chan span{display:block;color:var(--txt-2);font-size:.9rem;margin-top:6px}
table.cm-t{width:100%;border-collapse:collapse;margin:14px 0;font-size:.93rem}
table.cm-t th{text-align:left;padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.14);color:var(--txt-3);font:600 .74rem/1 'JetBrains Mono',monospace;letter-spacing:.05em;text-transform:uppercase}
table.cm-t td{padding:12px 14px;border-bottom:1px solid rgba(255,255,255,.06);color:var(--txt-2);vertical-align:top}
.cm-form{margin:18px 0;max-width:560px}
.cm-form label{display:block;font:600 .78rem/1 'JetBrains Mono',monospace;letter-spacing:.04em;text-transform:uppercase;color:var(--txt-3);margin:14px 0 7px}
.cm-form input,.cm-form textarea{width:100%;box-sizing:border-box;padding:12px 15px;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);color:#e8eefb;font:500 1rem Inter,system-ui,sans-serif;outline:none}
.cm-form textarea{min-height:96px;resize:vertical}
.cm-form .btn{margin-top:18px;border:0;cursor:pointer}
.cm-note{color:var(--txt-3);font-size:.88rem;margin-top:12px}
.cm-call{display:flex;gap:12px;margin:18px 0;padding:15px 17px;border-radius:12px;border:1px solid rgba(111,195,174,.28);background:rgba(111,195,174,.06);max-width:680px}
.cm-call svg{flex:none;width:22px;height:22px;color:#6FC3AE}.cm-call p{margin:0;color:var(--txt-2);font-size:.95rem;line-height:1.55}
.cm-soon{text-align:center;max-width:600px;margin:0 auto}
@media(max-width:680px){.cm-chan{grid-template-columns:1fr}}


/* ==========================================================================
   pass 10 -- docs-guide components (.sp-*), centralised
   Was <style> inline on 6 pages (getting-started, authentication, accounts-funding, …), byte-identical on every one.
   3616 B x 6 = 21696 B of duplicated markup before this.

   ONE THING WAS CHANGED, and only this: `.sc` and `.sc pre` are scoped to
   `.sp-wrap` because the OTHER family's block defines the same two selectors
   with different values (margin and font-size). Every .sc element on these
   pages was verified by rendering to sit inside .sp-wrap. Nothing else in the
   block is altered.

   Revert: delete this section and restore the inline copies from pass 9.
   ========================================================================== */
.sp-bc{display:flex;gap:8px;align-items:center;font:500 .85rem/1 Inter,system-ui,sans-serif;color:var(--txt-3);margin-bottom:10px}
.sp-bc a{color:var(--txt-3);text-decoration:none}.sp-bc a:hover{color:var(--verd-bright)}
.sp-wrap h2{margin:42px 0 10px}.sp-wrap h3{margin:26px 0 8px;font:600 1.05rem/1.3 Sora,system-ui,sans-serif;color:#fff}
.sp-wrap p{color:var(--txt-2);line-height:1.65}
.sp-wrap a.ln{color:#6FC3AE;text-decoration:none}
.sp-wrap ul.sp-list{list-style:none;margin:10px 0;padding:0}
.sp-wrap ul.sp-list li{position:relative;padding:8px 0 8px 24px;color:var(--txt-2);border-top:1px solid rgba(255,255,255,.05);line-height:1.55}
.sp-wrap ul.sp-list li:first-child{border-top:0}
.sp-wrap ul.sp-list li::before{content:"";position:absolute;left:2px;top:15px;width:8px;height:8px;border-radius:50%;border:2px solid #34e0a6}
.sp-steps{counter-reset:s;list-style:none;margin:12px 0;padding:0}
.sp-steps li{counter-increment:s;position:relative;padding:6px 0 18px 46px;color:var(--txt-2);line-height:1.6}
.sp-steps li::before{content:counter(s);position:absolute;left:0;top:2px;width:30px;height:30px;border-radius:50%;background:rgba(111,195,174,.12);border:1px solid rgba(111,195,174,.3);color:var(--verd-bright);font:600 .9rem/30px 'JetBrains Mono',monospace;text-align:center}
 .sp-wrap .sc{margin:14px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--ledger-850)}
.sc-h{display:flex;align-items:center;gap:7px;padding:11px 15px;border-bottom:1px solid var(--line);font:600 .78rem/1 'JetBrains Mono',monospace;color:var(--txt-3)}
.sc-h .tl{width:11px;height:11px;border-radius:50%;background:#26324d;display:inline-block}
 .sp-wrap .sc pre{margin:0;padding:16px 18px;overflow-x:auto;font:500 .86rem/1.6 'JetBrains Mono',monospace;color:var(--txt-2);white-space:pre}
.sc .k{color:var(--verd-bright)}.sc .s{color:#34e0a6}.sc .n{color:#e0b04a}.sc .c{color:var(--txt-3)}.sc .m{color:#9fb0d4}
.sp-call{display:flex;gap:12px;margin:16px 0;padding:15px 17px;border-radius:12px;border:1px solid;background:rgba(255,255,255,.025)}
.sp-call .ci{flex:none;width:22px;height:22px}
.sp-call p{margin:0;font-size:.93rem}
.sp-call.info{border-color:rgba(111,195,174,.3)}.sp-call.info .ci{color:#6FC3AE}
.sp-call.warn{border-color:rgba(224,176,74,.32)}.sp-call.warn .ci{color:#e0b04a}
.sp-call.ok{border-color:rgba(52,224,166,.3)}.sp-call.ok .ci{color:#34e0a6}
table.sp-t{width:100%;border-collapse:collapse;margin:14px 0;font-size:.92rem}
table.sp-t th{text-align:left;padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.14);color:var(--txt-3);font:600 .76rem/1 'JetBrains Mono',monospace;letter-spacing:.05em;text-transform:uppercase}
table.sp-t td{padding:11px 14px;border-bottom:1px solid rgba(255,255,255,.06);color:var(--txt-2);vertical-align:top}
table.sp-t code{color:var(--verd-bright);font-size:.88em}
.sp-wrap code{background:rgba(111,195,174,.10);border:1px solid rgba(111,195,174,.18);border-radius:5px;padding:1px 6px;font:500 .85em 'JetBrains Mono',monospace;color:var(--verd-bright)}
.sp-next{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.sp-next a{display:block;padding:16px 18px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(255,255,255,.025);text-decoration:none}
.sp-next a span{display:block;font:600 .72rem/1 'JetBrains Mono',monospace;color:var(--txt-3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:7px}
.sp-next a b{color:#fff;font:600 1rem/1.3 Sora,system-ui,sans-serif;display:block}
.sp-next a:hover{border-color:rgba(111,195,174,.4)}
@media(max-width:760px){.sp-next{grid-template-columns:1fr}}


/* ==========================================================================
   pass 10 -- insight-article components (.bl-*), centralised
   Was <style> inline on 6 pages (response-envelope-explained, account-types-as-a-primitive, …), byte-identical on every one.
   3304 B x 6 = 19824 B of duplicated markup before this.

   ONE THING WAS CHANGED, and only this: `.sc` and `.sc pre` are scoped to
   `.bl-body` because the OTHER family's block defines the same two selectors
   with different values (margin and font-size). Every .sc element on these
   pages was verified by rendering to sit inside .bl-body. Nothing else in the
   block is altered.

   Revert: delete this section and restore the inline copies from pass 9.
   ========================================================================== */
.bl-hero{max-width:780px}
.bl-tag{display:inline-block;font:600 .72rem/1 'JetBrains Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--verd-bright);background:rgba(111,195,174,.12);border:1px solid rgba(111,195,174,.25);border-radius:999px;padding:7px 13px}
.bl-hero h1{font:700 clamp(2rem,4.6vw,3rem)/1.12 Sora,system-ui,sans-serif;color:#fff;margin:20px 0 16px}
.bl-dek{font:400 1.22rem/1.55 Inter,system-ui,sans-serif;color:var(--txt-2);max-width:64ch;margin:0}
.bl-by{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin:24px 0 0;color:var(--txt-3);font:500 .92rem/1 Inter,system-ui,sans-serif}
.bl-by .d{width:4px;height:4px;border-radius:50%;background:var(--line)}
.bl-rule{height:1px;background:rgba(255,255,255,.08);margin:34px 0 0;max-width:720px}
.bl-body{max-width:720px}
.bl-body p{color:var(--txt-2);font-size:1.07rem;line-height:1.78;margin:20px 0}
.bl-body h2{font:700 1.55rem/1.25 Sora,system-ui,sans-serif;color:#fff;margin:46px 0 4px}
.bl-body h3{font:600 1.16rem/1.3 Sora,system-ui,sans-serif;color:#fff;margin:30px 0 2px}
.bl-body ul{margin:18px 0;padding:0;list-style:none}
.bl-body ul li{position:relative;padding:8px 0 8px 24px;color:var(--txt-2);line-height:1.62}
.bl-body ul li::before{content:"";position:absolute;left:2px;top:15px;width:7px;height:7px;border-radius:50%;background:#34e0a6}
.bl-body blockquote{margin:30px 0;padding:4px 0 4px 24px;border-left:3px solid #6FC3AE;color:#e3e9f7;font:600 1.28rem/1.5 Sora,system-ui,sans-serif}
.bl-body code{background:rgba(111,195,174,.10);border:1px solid rgba(111,195,174,.18);border-radius:5px;padding:1px 6px;font:500 .85em 'JetBrains Mono',monospace;color:var(--verd-bright)}
.bl-body a{color:#6FC3AE;text-decoration:none}.bl-body a:hover{text-decoration:underline}
 .bl-body .sc{margin:22px 0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--ledger-850);max-width:720px}
.sc-h{display:flex;align-items:center;gap:7px;padding:11px 15px;border-bottom:1px solid var(--line);font:600 .78rem/1 'JetBrains Mono',monospace;color:var(--txt-3)}
.sc-h .tl{width:11px;height:11px;border-radius:50%;background:#26324d;display:inline-block}
 .bl-body .sc pre{margin:0;padding:16px 18px;overflow-x:auto;font:500 .85rem/1.6 'JetBrains Mono',monospace;color:var(--txt-2);white-space:pre}
.sc .k{color:var(--verd-bright)}.sc .s{color:#34e0a6}.sc .n{color:#e0b04a}.sc .c{color:var(--txt-3)}.sc .m{color:#9fb0d4}
.bl-call{display:flex;gap:12px;margin:24px 0;padding:16px 18px;border-radius:12px;border:1px solid rgba(111,195,174,.28);background:rgba(111,195,174,.06);max-width:720px}
.bl-call svg{flex:none;width:22px;height:22px;color:#6FC3AE}.bl-call p{margin:0;color:var(--txt-2);font-size:.97rem;line-height:1.6}
.bl-rel{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;max-width:760px}
.bl-rel a{display:block;padding:20px;border:1px solid rgba(255,255,255,.08);border-radius:16px;background:rgba(255,255,255,.025);text-decoration:none}
.bl-rel a span{font:600 .7rem/1 'JetBrains Mono',monospace;letter-spacing:.07em;text-transform:uppercase;color:var(--txt-3)}
.bl-rel a b{display:block;margin-top:8px;color:#fff;font:600 1.08rem/1.32 Sora,system-ui,sans-serif}
.bl-rel a:hover{border-color:rgba(111,195,174,.4)}
@media(max-width:760px){.bl-rel{grid-template-columns:1fr}}


/* ==========================================================================
   pass 11 -- Products panel, fx components and intake-form styling
   Was <style id="a8fx-inline"> inlined on 7 pages: 8,941 B x 7 = 62,587 B, the
   last multi-page inline block on the site. Sections 2, 3 and 4 of that block
   are reproduced here VERBATIM.

   Section 1 of the block ("Nav fixes") is deliberately NOT reproduced: it was a
   second copy of the navfix rules pass 4 already moved into this file, and the
   build proved every one of its rules is present here byte-identically before
   dropping it.

   Post 128 also carries an identical copy of most of these rules. That copy is
   still in force and untouched -- emptying post 128 is a separate pass with its
   own acceptance gate.

   Revert: delete this section and restore the inline <style id="a8fx-inline">
   blocks on the 7 pages from the pass-10 archive.
   ========================================================================== */
/* ---- 2. Products panel --------------------------------------------------- */
.nav-dd-mega{
  min-width:720px;max-width:calc(100vw - 32px);
  padding:0;overflow:hidden;
  border-radius:16px;
  text-align:left;
}
.nav-dd-mega .ndm-head{
  display:flex;align-items:center;justify-content:space-between;gap:22px;
  padding:20px 24px 16px;
  border-bottom:1px solid var(--line-soft, rgba(128,140,160,.18));
}
.nav-dd-mega .ndm-intro h4{margin:0 0 5px;font-size:16px;font-weight:700;color:var(--txt,#e8eefb);}
.nav-dd-mega .ndm-intro p{margin:0;font-size:13px;line-height:1.55;color:var(--txt-2);max-width:44ch;}
.nav-dd-mega .ndm-open{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;
  padding:12px 16px;border-radius:10px;
  border:1px solid var(--blue-deep, rgba(47,139,118,.55));
  background:rgba(47,139,118,.10);
  color:var(--blue-bright,var(--verd)) !important;
  font-size:13.5px;font-weight:600;white-space:nowrap;
  transition:border-color .15s ease, background .15s ease;
}
.nav-dd-mega .ndm-open:hover{border-color:var(--blue,#2F8B76);background:rgba(47,139,118,.16);}
.nav-dd-mega .ndm-cols{
  display:grid;grid-template-columns:repeat(3,minmax(190px,1fr));
  gap:4px 26px;padding:16px 24px 8px;
}
.nav-dd-mega .ndm-h{
  font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--txt-3);margin:6px 0 7px;font-weight:700;
}
.nav-dd-mega .ndm-col a{display:block;padding:5px 0;font-size:13.5px;}
.nav-dd-mega .ndm-foot{
  display:flex;flex-wrap:wrap;gap:8px 24px;
  border-top:1px solid var(--line-soft, rgba(128,140,160,.18));
  margin-top:10px;padding:12px 24px 14px;
}
.nav-dd-mega .ndm-foot a{font-size:12.5px;color:var(--blue-bright,var(--verd));}
@media(max-width:820px){
  
  
  
}

/* ---- 3. fx components ---------------------------------------------------- */
.fx-status{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;}
.fx-chip{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:4px 10px;border-radius:999px;border:1px solid rgba(128,140,160,.35);color:var(--txt-3);}
.fx-chip.st-dp{border-color:rgba(52,224,166,.5);color:var(--ok);}
.fx-chip.st-ip{border-color:rgba(111,195,174,.5);color:var(--verd);}
.fx-dep{font-size:13px;color:var(--txt-3);}
.fx-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));margin-top:18px;}
.fx-grid.fx-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));}
.fx-card{
  border:1px solid rgba(128,140,160,.22);border-radius:12px;
  padding:16px 16px 14px;background:rgba(128,140,160,.05);
  transition:border-color .16s ease, transform .16s ease, background .16s ease;
}
.fx-card:hover{border-color:var(--blue,#2F8B76);transform:translateY(-2px);}
.fx-card h3{margin:0 0 6px;font-size:15px;}
.fx-card p{margin:0;font-size:13.5px;line-height:1.55;color:var(--txt-2);}
.fx-steps{counter-reset:fx;margin-top:18px;display:grid;gap:12px;}
.fx-steps .fx-card{position:relative;padding-left:52px;}
.fx-steps .fx-card:before{counter-increment:fx;content:counter(fx);position:absolute;left:16px;top:16px;width:24px;height:24px;border-radius:50%;border:1px solid rgba(128,140,160,.4);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--txt-3);}
.fx-note{border:1px solid rgba(128,140,160,.25);border-left:3px solid rgba(111,195,174,.6);border-radius:8px;padding:12px 14px;font-size:13px;line-height:1.6;color:var(--txt-2);margin-top:22px;}
.fx-table{width:100%;border-collapse:collapse;margin-top:18px;font-size:14px;}
.fx-table th,.fx-table td{text-align:left;padding:10px 12px;border-bottom:1px solid rgba(128,140,160,.18);vertical-align:top;}
.fx-table th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--txt-3);}
.fx-table tbody tr{transition:background .15s ease;}
.fx-table tbody tr:hover{background:rgba(47,139,118,.07);}
.fx-flow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:18px;font-size:13.5px;}
.fx-flow .n{border:1px solid rgba(128,140,160,.3);border-radius:8px;padding:8px 12px;background:rgba(128,140,160,.06);transition:border-color .16s ease;}
.fx-flow .n:hover{border-color:var(--blue,#2F8B76);}
.fx-flow .a{color:var(--txt-3);}
.fx-calc{border:1px solid rgba(128,140,160,.25);border-radius:14px;padding:20px;margin-top:20px;background:rgba(128,140,160,.05);transition:border-color .16s ease;}
.fx-calc:hover{border-color:var(--blue,#2F8B76);}
.fx-calc .fg{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.fx-calc label{display:block;font-size:12px;letter-spacing:.04em;color:var(--txt-3);margin-bottom:5px;}
.fx-calc input,.fx-calc select{width:100%;box-sizing:border-box;padding:9px 10px;border-radius:8px;border:1px solid rgba(128,140,160,.35);background:transparent;color:inherit;font:inherit;}
.fx-out{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-top:18px;}
.fx-out .o{border:1px solid rgba(128,140,160,.22);border-radius:10px;padding:12px;transition:border-color .16s ease, transform .16s ease;}
.fx-out .o:hover{border-color:var(--blue,#2F8B76);transform:translateY(-2px);}
.fx-out .o b{display:block;font-size:18px;margin-bottom:2px;}
.fx-out .o span{font-size:12px;color:var(--txt-3);}
.fx-tool{border:1px solid rgba(128,140,160,.25);border-radius:14px;padding:18px 20px;margin-top:16px;transition:border-color .16s ease, transform .16s ease;}
.fx-tool:hover{border-color:var(--blue,#2F8B76);transform:translateY(-2px);}
.fx-tool h3{margin:0 0 4px;font-size:16px;}
.fx-tool .fx-q{margin:12px 0;}
.fx-tool .fx-q p{margin:0 0 6px;font-size:14px;}
.fx-tool select{max-width:100%;box-sizing:border-box;padding:9px 10px;border-radius:8px;border:1px solid rgba(128,140,160,.35);background:transparent;color:inherit;font:inherit;}
.fx-tool .fx-res{margin-top:12px;padding:12px 14px;border-radius:8px;border:1px solid rgba(128,140,160,.3);font-size:13.5px;line-height:1.6;display:none;}
.fx-tool .fx-res.on{display:block;}

/* ---- 4. fi intake forms --------------------------------------------------- */
.fi-intake .field{margin-bottom:14px;}
.fi-intake select{width:100%;box-sizing:border-box;padding:11px 12px;border-radius:8px;border:1px solid rgba(128,140,160,.35);background:transparent;color:inherit;font:inherit;}
.fi-intake select option{background:var(--ledger-850);color:#e8eefb;}
.fi-sent{display:none;text-align:center;padding:34px 20px;border:1px solid rgba(52,224,166,.4);border-radius:14px;}
.fi-sent h3{margin:10px 0 6px;}
.fi-hp{position:absolute !important;left:-9999px !important;width:1px;height:1px;overflow:hidden;}

/* JS-driven open state (touch / keyboard); mirrors the :hover open rule */
.nav-dd.dd-open .nav-dd-menu{opacity:1;visibility:visible;}

/* ==========================================================================
   pass 12 -- service-family figure (.svcf)
   Replaces the retired ISCP-era raster graphic. Rebuilt as inline SVG in a
   responsive grid rather than one fixed-layout image, which is the grammar the
   rest of this site already uses (686 inline <svg>, zero <img>) and which
   inherits the containment work from passes 2 and 5. Brand colours are written
   as tokens with literal fallbacks, so the figure survives being dropped onto a
   page whose sheet does not define them.
   ========================================================================== */
.svcf{margin:26px 0 30px;padding:0;border:1px solid var(--line,#1e2d3d);border-radius:16px;
  background:var(--ledger-850,#111c28);overflow:hidden}
.svcf-g{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin:0;padding:0;list-style:none;min-width:0}
.svcf-c{min-width:0;padding:22px 18px 24px;border-left:1px solid var(--line,#1e2d3d);text-align:center}
.svcf-c:first-child{border-left:0}
.svcf-ic{display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto 14px;
  border:1px solid var(--line,#1e2d3d);border-radius:14px;background:var(--ledger-900,#0b1620);
  color:var(--verd-bright,#8fd6c3)}
.svcf-i{width:26px;height:26px;display:block}
.svcf-i .ac{stroke:var(--verd,#6fc3ae)}
.svcf-n{margin:0 0 7px;font:600 .95rem/1.25 Sora,system-ui,sans-serif;letter-spacing:.01em;
  color:var(--txt-1,#e8eefb)}
.svcf-d{margin:0;font:400 .82rem/1.5 Inter,system-ui,sans-serif;color:var(--txt-2,#aebbd4)}
.svcf-cap{padding:13px 18px;border-top:1px solid var(--line,#1e2d3d);background:var(--ledger-900,#0b1620);
  font:500 .78rem/1.5 Inter,system-ui,sans-serif;color:var(--txt-3,#8195b6);text-align:left}
@media(max-width:1080px){
  .svcf-g{grid-template-columns:repeat(3,minmax(0,1fr))}
  .svcf-c:nth-child(3n+1){border-left:0}
  .svcf-c:nth-child(n+4){border-top:1px solid var(--line,#1e2d3d)}
}
@media(max-width:640px){
  .svcf-g{grid-template-columns:minmax(0,1fr)}
  .svcf-c{border-left:0;text-align:left;display:grid;grid-template-columns:56px minmax(0,1fr);
    gap:0 15px;align-items:start;padding:18px}
  .svcf-c+.svcf-c{border-top:1px solid var(--line,#1e2d3d)}
  .svcf-ic{margin:0}
  .svcf-n{grid-column:2;margin-top:2px}
  .svcf-d{grid-column:2}
}


/* ==========================================================================
   pass 20 -- links inside the service-family figure caption
   Pass 19 added an anchor to .svcf-cap and it rendered in --txt-3, the same
   colour as the caption text around it: a link identified by nothing, which is
   a WCAG 1.4.1 problem, not merely a cosmetic one. .svcf-cap sets the colour and
   nothing styled an <a> inside it.
   Added to BOTH sheets on purpose. Only /api-reference/ uses the figure today
   and it loads a8core-docs.css only -- but the pass-12 .svcf block is in both
   sheets precisely so the component works on either page family, and letting the
   two copies diverge is how a shared component rots.
   ========================================================================== */
.svcf-cap a{color:var(--verd-bright,#8fd6c3);text-decoration:underline;}
.svcf-cap a:hover{color:var(--verd,#6fc3ae);}


/* ===================================================================
   pass 4 -- native <option> colours for .field select.
   .field select already inherits the dark ground and var(--txt), but the
   OPTION list is painted by the platform, so a light text colour on a
   platform-white popup is unreadable. .fi-intake already solved this for
   its own family; .field never did, and pass 4 introduces the first
   <select> into a .field form (the /contact/ topic picker).
   Append-only. Deleting this block reverts to platform defaults.
   =================================================================== */
.field select option,
.field select optgroup{background:var(--ledger-850);color:var(--txt);}

/* ===== consistency pass 2026-08-01 (all measured in Chromium 141) =========

   1. NATIVE SELECT POPUPS. Measured on the compliance page: <option> computed
      background-color rgba(0,0,0,0) and color rgb(174,187,212). A transparent
      option is painted WHITE by the OS, so light-grey text sits on white and is
      unreadable. `.fi-intake select option` and `.field select optgroup` were
      already covered; `.fx-tool select` never was. Scoped to every select so a
      third family cannot reappear with the same defect.                      */
/*    The CLOSED control needs class-level specificity: `.fx-tool select`
      (0,1,1) outranks `html body select` (0,0,3), so an element-level rule
      loses and the closed box keeps --txt-2 on a transparent ground.        */
html body select,
html body .fx-tool select,
html body .fx-calc select,
html body .fi-intake select,
html body .field select{background-color:var(--ledger-850);color:var(--txt)}
html body select option,
html body select optgroup{background-color:var(--ledger-850);color:var(--txt)}
html body select option:disabled{color:var(--txt-3)}

/*  2. INTERACTIVE CONTROL LABELS. A checkbox or radio label is a control you
      must read to choose, not background prose. These computed --txt-2
      (9.89:1 -- passing, but visibly fainter than the copy around them);
      promoted to --txt (16.44:1), matching the other form families.          */
html body .fx-tool .fx-q p,
html body .fx-tool .fx-q label,
html body .fx-q label,
html body .fx-calc label{color:var(--txt)}
html body .fx-tool .fx-q input[type="checkbox"],
html body .fx-tool .fx-q input[type="radio"]{accent-color:var(--verd);margin-right:.45em}

/*  3. CARD HOVER PARITY. `.card` and `.fx-card` carry a hover transition;
      `.mm-stat .s`, `.feat`, `.dep`, `.panel` and `.rail` had none -- the
      "6 rails" box could not respond at all. `.mm-stat .s` also carried
      `transition: all`, which animates properties nothing intends to change;
      narrowed to the three that do.                                          */
html body .mm-stat .s,
html body .feat,
html body .dep,
html body .panel,
html body .rail{transition:border-color .16s ease,transform .16s ease,background-color .16s ease}
html body .mm-stat .s:hover,
html body .feat:hover,
html body .dep:hover,
html body .panel:hover,
html body .rail:hover{border-color:var(--verd);transform:translateY(-2px)}
@media (prefers-reduced-motion:reduce){
  html body .mm-stat .s,html body .feat,html body .dep,
  html body .panel,html body .rail{transition:none}
  html body .mm-stat .s:hover,html body .feat:hover,html body .dep:hover,
  html body .panel:hover,html body .rail:hover{transform:none}
}
