@font-face{font-family:"Archivo";src:url("fonts/archivo-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Archivo";src:url("fonts/archivo-500.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Archivo";src:url("fonts/archivo-600.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Archivo";src:url("fonts/archivo-700.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/plexmono-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/plexmono-500.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("fonts/plexmono-600.woff2") format("woff2");font-weight:600;font-display:swap}

:root{
  --ink:#0A111E; --panel:#101A2B; --panel2:#152137; --sunk:#0D1524;
  --line:#22314B; --line2:#2E4062;
  --text:#E9EFF8; --body:#A9B8CD; --muted:#7F90A8; --dim:#5A6B85;
  --acc:#A176FF; --acc-soft:rgba(161,118,255,.13); --acc-line:rgba(161,118,255,.42);
  --up:#3ED6A6; --up-soft:rgba(62,214,166,.10);
  --warn:#F2B441; --warn-soft:rgba(242,180,65,.10); --stop:#E4573D; --stop-soft:rgba(228,87,61,.10);
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --sans:"Archivo","Helvetica Neue",system-ui,-apple-system,sans-serif;
  --sp:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{background:var(--ink);color:var(--body);font-family:var(--sans);font-size:17px;line-height:1.68;
  -webkit-font-smoothing:antialiased;
  background-image:radial-gradient(ellipse 80% 46% at 50% -8%,rgba(161,118,255,.09),transparent 68%);
  background-repeat:no-repeat}
.wrap{max-width:720px;margin:0 auto;padding:0 20px}
a{color:var(--acc)}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:3px}
h1,h2,h3{color:var(--text);letter-spacing:-.028em;font-weight:700}

/* masthead */
.top{padding:20px 0 0}
.topin{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.nav{display:flex;align-items:center;gap:10px}
.logo,.navlink{
  font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);background:none;border:1px solid var(--line);padding:6px 9px;border-radius:3px;
  text-decoration:none;cursor:pointer;transition:color .14s,border-color .14s,background .14s}
.logo:hover,.navlink:hover{color:var(--text);border-color:var(--line2)}
.logo.on,.navlink.on{color:var(--acc);border-color:var(--acc-line);background:var(--acc-soft);font-weight:600}
.logo.on:hover,.navlink.on:hover{color:var(--acc);border-color:var(--acc)}
.rev{font-family:var(--mono);font-size:10.5px;color:var(--dim);letter-spacing:.06em}
.rev b{color:var(--muted);font-weight:500}

/* index hero */
.ihero{position:relative;z-index:1;padding:54px 0 34px}
.kick{font-family:var(--mono);font-size:11px;letter-spacing:.19em;text-transform:uppercase;color:var(--acc);margin-bottom:20px}
.ihero h1{font-size:clamp(31px,5.4vw,46px);line-height:1.06;max-width:17ch}
.ihero p{margin-top:18px;max-width:56ch;color:var(--body);font-size:17px}

/* list */
.list{padding-bottom:60px}
.item{display:block;text-decoration:none;background:var(--panel);border:1px solid var(--line);
  border-radius:6px;padding:22px 24px;margin-bottom:12px;
  transition:border-color .14s,background .14s,transform .14s var(--sp)}
.item:hover{border-color:var(--acc-line);background:var(--acc-soft);transform:translateY(-2px)}
.imeta{font-family:var(--mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;
  color:var(--dim);margin-bottom:9px}
.item h2{font-size:20.5px;line-height:1.24;margin-bottom:9px;letter-spacing:-.022em}
.item p{font-size:15px;line-height:1.6;color:var(--muted);margin:0}
.more{display:inline-block;margin-top:13px;font-family:var(--mono);font-size:11.5px;color:var(--acc);letter-spacing:.06em}

/* article */
article{padding:44px 0 20px}
.crumb{font-family:var(--mono);font-size:11px;letter-spacing:.09em;color:var(--dim);margin-bottom:22px}
.crumb a{color:var(--muted);text-decoration:none}
.crumb a:hover{color:var(--acc)}
article h1{font-size:clamp(30px,5.2vw,44px);line-height:1.08;margin-bottom:16px}
.byline{font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--dim);padding-bottom:22px;border-bottom:1px solid var(--line);margin-bottom:28px}
.stand{font-size:19px;line-height:1.6;color:var(--text);margin-bottom:26px}
article h2{font-size:23px;margin:38px 0 13px;letter-spacing:-.022em}
article h3{font-size:18px;margin:28px 0 10px;font-weight:600}
article p{margin-bottom:16px}
article ul,article ol{margin:0 0 18px 22px}
article li{margin-bottom:9px}
article b,article strong{color:var(--text);font-weight:600}
.pull{border-left:2px solid var(--acc);padding:4px 0 4px 18px;margin:24px 0;
  font-size:18px;line-height:1.55;color:var(--text)}
.box{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:18px 20px;margin:24px 0}
.box.warn{background:var(--warn-soft);border-color:rgba(242,180,65,.32)}
.box.good{background:var(--up-soft);border-color:rgba(62,214,166,.32)}
.box h4{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--dim);font-weight:500;margin-bottom:11px}
.box.warn h4{color:var(--warn)} .box.good h4{color:var(--up)}
.box p:last-child,.box ul:last-child{margin-bottom:0}
table{width:100%;border-collapse:collapse;margin:22px 0;font-size:15px}
th,td{text-align:left;padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-family:var(--mono);font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--dim);font-weight:500}
td b{color:var(--text)}
.scroll{overflow-x:auto}

.cta{display:block;background:var(--acc-soft);border:1px solid var(--acc-line);border-radius:6px;
  padding:24px 26px;margin:34px 0 0;text-decoration:none;transition:transform .16s var(--sp),box-shadow .16s var(--sp)}
.cta:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(161,118,255,.2)}
.cta h4{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--acc);margin-bottom:10px}
.cta strong{display:block;color:var(--text);font-size:20px;font-weight:700;letter-spacing:-.02em;margin-bottom:8px}
.cta span{display:block;color:var(--muted);font-size:15px;line-height:1.55}
.cta em{display:inline-block;margin-top:12px;font-style:normal;font-family:var(--mono);font-size:11.5px;color:var(--acc);letter-spacing:.06em}

.related{margin-top:38px;border-top:1px solid var(--line);padding-top:24px}
.related h4{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--dim);font-weight:500;margin-bottom:14px}
.related a{display:block;color:var(--text);text-decoration:none;font-size:16px;font-weight:500;
  padding:11px 0;border-bottom:1px solid var(--line);transition:color .14s}
.related a:last-child{border-bottom:none}
.related a:hover{color:var(--acc)}

footer{border-top:1px solid var(--line);margin-top:44px;padding:26px 0 60px}
.disc{font-size:12.5px;color:var(--muted);line-height:1.7}
.disc p{margin-bottom:11px}
.disc p:last-child{margin-bottom:0}
.disc b{color:var(--body);font-weight:600}
.legal a{color:var(--acc)}

/* grouped index */
.group{margin-bottom:38px}
.ghead{font-size:13px;font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;
  color:var(--acc);font-weight:600;margin-bottom:6px}
.gsub{font-size:14.5px;color:var(--muted);margin-bottom:16px;max-width:56ch}
.list{padding-bottom:60px}

/* topic jump strip */
.topics{display:flex;gap:8px;flex-wrap:wrap;margin-top:26px}
.topic{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;
  letter-spacing:.04em;color:var(--muted);background:var(--panel);border:1px solid var(--line);
  padding:9px 13px;border-radius:100px;text-decoration:none;
  transition:color .14s,border-color .14s,background .14s,transform .14s var(--sp)}
.topic:hover{color:var(--acc);border-color:var(--acc-line);background:var(--acc-soft);transform:translateY(-1px)}
.topic span{font-size:10.5px;color:var(--dim);background:var(--sunk);border-radius:100px;
  padding:2px 7px;min-width:20px;text-align:center}
.topic:hover span{color:var(--acc)}
.group{scroll-margin-top:24px}



/* masthead background — a network of connected nodes, shared by article
   pages and the guides index. Same treatment everywhere, different seed per page. */
.abgwrap{position:absolute;top:0;left:0;right:0;height:300px;overflow:hidden;pointer-events:none;z-index:0}
.anet{position:absolute;left:50%;top:0;transform:translateX(-50%);width:100vw;min-width:1400px;height:300px;opacity:.55}
.top,article,.ihero{position:relative;z-index:1}


/* sparse full-page scatter — small self-contained SVG clusters, same visual
   proportions as the masthead network, placed a few times down the margins.
   No dynamic sizing, so nothing can stretch or warp. */
.scatterbg{position:absolute;top:0;left:0;right:0;height:100%;pointer-events:none;z-index:0;overflow:visible}
.scluster{position:absolute;width:150px;height:150px;opacity:.5}
@media(max-width:980px){.scatterbg{display:none}}
