
:root{
  --hue:158;
  /* Universal hex base — renders in every browser (Safari<15.4, legacy Edge/Chrome).
     The @supports block below upgrades these to wide-gamut OKLCH where available. */
  --bg:#06100a;--bg2:#0b1710;--surface:#111e16;--surface2:#19281f;
  --ink:#edf4ef;--ink-muted:#a1afa6;--accent:#31d78c;--accent-ink:#05160c;
  --gold:#f1bf4e;--border:#2a362f;--danger:#e8605b;
  /* alpha/gradient helpers (rgba — universal, no oklch) */
  --nav-bg:rgba(6,16,10,.86);--accent-glow:rgba(49,215,140,.15);
  --hero-glow:rgba(30,90,60,.45);--warn-border:rgba(232,96,91,.5);--warn-bg:rgba(232,96,91,.12);
  --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;
  --space-8:2rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;
  --text-sm:clamp(.83rem,.8rem + .2vw,.9rem);
  --text-base:clamp(1rem,.95rem + .3vw,1.075rem);
  --text-lg:clamp(1.2rem,1.05rem + .6vw,1.45rem);
  --text-xl:clamp(1.55rem,1.25rem + 1.4vw,2.2rem);
  --text-2xl:clamp(2.1rem,1.55rem + 3vw,3.4rem);
  --measure:70ch;--radius:14px;
  --ease:cubic-bezier(.22,1,.36,1);--dur:240ms;
}
/* Wide-gamut upgrade: applied only where oklch() is supported; hex above is the fallback. */
@supports (color: oklch(0.5 0.1 180)){
  :root{
    --bg:oklch(0.16 0.02 var(--hue));--bg2:oklch(0.19 0.022 var(--hue));
    --surface:oklch(0.22 0.024 var(--hue));--surface2:oklch(0.26 0.026 var(--hue));
    --ink:oklch(0.96 0.01 var(--hue));--ink-muted:oklch(0.74 0.02 var(--hue));
    --accent:oklch(0.78 0.17 var(--hue));--accent-ink:oklch(0.18 0.03 var(--hue));
    --gold:oklch(0.83 0.14 85);--border:oklch(0.32 0.02 var(--hue));--danger:oklch(0.66 0.17 25);
  }
}
*,*::before,*::after{box-sizing:border-box}*{margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font-size:var(--text-base);line-height:1.65;
  font-family:"Inter",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-weight:380;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,h4{line-height:1.12;letter-spacing:-.02em;text-wrap:balance;font-weight:680}
h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl);margin-top:var(--space-12);margin-bottom:var(--space-4)}
h3{font-size:var(--text-lg);margin-top:var(--space-8);margin-bottom:var(--space-3)}
p{max-width:var(--measure);text-wrap:pretty;margin-bottom:var(--space-4);color:var(--ink-muted)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
img{max-width:100%;height:auto;display:block}
strong{color:var(--ink);font-weight:620}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{max-width:1120px;margin:0 auto;padding:0 var(--space-6)}
.narrow{max-width:820px}
/* nav */
header.site{position:sticky;top:0;z-index:20;background:var(--nav-bg);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}
.nav{display:flex;align-items:center;gap:var(--space-6);height:64px}
.brand{display:flex;align-items:center;gap:var(--space-3);font-weight:720;color:var(--ink);font-size:1.1rem;letter-spacing:-.02em}
.brand .mark{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),#2bb3d1);
  display:grid;place-items:center;color:var(--accent-ink);font-weight:800;font-size:1rem}
.nav ul{display:flex;gap:var(--space-5,1.15rem);list-style:none;margin-left:auto;align-items:center;flex-wrap:wrap}
.nav a{color:var(--ink-muted);font-size:.92rem;font-weight:500}
.nav a:hover{color:var(--ink);text-decoration:none}
.nav .cta{background:var(--accent);color:var(--accent-ink);padding:.5rem 1rem;border-radius:999px;font-weight:650}
.nav .cta:hover{filter:brightness(1.08)}
.navtoggle{display:none;margin-left:auto;background:none;border:1px solid var(--border);color:var(--ink);
  border-radius:8px;padding:.4rem .6rem;font-size:1.1rem;cursor:pointer}
@media(max-width:860px){
  .nav ul{display:none;position:absolute;top:64px;left:0;right:0;flex-direction:column;
    background:var(--bg2);border-bottom:1px solid var(--border);padding:var(--space-4);margin:0;gap:var(--space-2)}
  .nav ul.open{display:flex}.navtoggle{display:block}
  .nav ul a{padding:.5rem 0;display:block}
}
/* age gate */
.agebar{background:var(--bg2);border-bottom:1px solid var(--border);font-size:.82rem;color:var(--ink-muted);text-align:center;padding:.4rem 1rem}
.agebar strong{color:var(--gold)}
/* hero */
.hero{padding:var(--space-16) 0 var(--space-12);position:relative}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;
  background:radial-gradient(1200px 500px at 70% -10%,var(--hero-glow),transparent 60%)}
.eyebrow-pill{display:inline-flex;align-items:center;gap:.5rem;background:var(--surface);border:1px solid var(--border);
  border-radius:999px;padding:.35rem .85rem;font-size:.82rem;color:var(--ink-muted);margin-bottom:var(--space-6)}
.eyebrow-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent)}
.hero h1{max-width:16ch}
.lede{font-size:var(--text-lg);color:var(--ink-muted);max-width:60ch;margin-top:var(--space-4)}
.codegrid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin:var(--space-8) 0;max-width:720px}
@media(max-width:620px){.codegrid{grid-template-columns:1fr}}
.codecard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-6)}
.codecard.main{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset,0 12px 40px var(--accent-glow)}
.codecard .tag{font-size:.74rem;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);font-weight:650}
.codecard.alt .tag{color:var(--ink-muted)}
.codeval{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:2rem;font-weight:700;color:var(--ink);
  letter-spacing:.02em;margin:.4rem 0 .2rem;display:flex;align-items:center;gap:.6rem}
.copybtn{background:var(--surface2);border:1px solid var(--border);color:var(--ink-muted);border-radius:8px;
  padding:.4rem .7rem;font-size:.72rem;cursor:pointer;font-weight:600;min-height:32px;-webkit-appearance:none;appearance:none}
.copybtn:hover{color:var(--ink);border-color:var(--accent)}
.codecard p{font-size:.9rem;margin:.4rem 0 var(--space-4)}
.btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--accent);color:var(--accent-ink);
  padding:.7rem 1.3rem;border-radius:999px;font-weight:680;font-size:.95rem}
.btn:hover{filter:brightness(1.08);text-decoration:none}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--border)}
.btn.block{display:flex;width:100%;justify-content:center}
.btn.gold{background:var(--gold);color:#332600}
/* answer box (snippet bait) */
.answer{background:var(--surface);border:1px solid var(--border);border-left:none;border-radius:var(--radius);
  padding:var(--space-6);margin:var(--space-8) 0;position:relative}
.answer::before{content:"Quick answer";position:absolute;top:-11px;left:16px;background:var(--accent);color:var(--accent-ink);
  font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:.15rem .6rem;border-radius:6px}
.answer p{color:var(--ink);font-size:1.08rem;margin:0}
/* tables */
.tablewrap{overflow-x:auto;margin:var(--space-6) 0;border:1px solid var(--border);border-radius:var(--radius)}
table{border-collapse:collapse;width:100%;font-size:.94rem;min-width:520px}
caption{text-align:left;color:var(--ink-muted);font-size:.85rem;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}
th,td{padding:.8rem 1rem;text-align:left;border-bottom:1px solid var(--border)}
thead th{background:var(--bg2);color:var(--ink);font-weight:640;font-size:.82rem;text-transform:uppercase;letter-spacing:.03em}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--surface)}
td strong{color:var(--accent)}
.check{color:var(--accent);font-weight:700}.cross{color:var(--danger);font-weight:700}
/* feature strip */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);margin:var(--space-8) 0}
@media(max-width:760px){.stats{grid-template-columns:1fr 1fr}}
.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-6)}
.stat .n{font-size:1.7rem;font-weight:740;color:var(--ink);letter-spacing:-.02em}
.stat .l{font-size:.85rem;color:var(--ink-muted);margin-top:.2rem}
/* steps */
ol.steps{list-style:none;counter-reset:s;padding:0;margin:var(--space-6) 0;max-width:var(--measure)}
ol.steps li{counter-increment:s;position:relative;padding:0 0 var(--space-6) 3.2rem;border-left:1px solid var(--border);margin-left:1rem}
ol.steps li:last-child{border-left-color:transparent}
ol.steps li::before{content:counter(s);position:absolute;left:calc(-1rem - 1px);top:-.2rem;transform:translateX(-50%);
  width:2rem;height:2rem;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;
  font-weight:720;font-size:.9rem}
ol.steps li h4{margin:0 0 .3rem}ol.steps li p{margin:0}
/* faq */
.faq details{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:var(--space-3);overflow:hidden}
.faq summary{cursor:pointer;padding:var(--space-4) var(--space-6);font-weight:600;color:var(--ink);list-style:none;
  display:flex;justify-content:space-between;align-items:center;gap:1rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--accent);font-size:1.3rem;font-weight:400;transition:transform var(--dur)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding:0 var(--space-6) var(--space-4);margin:0}
/* callout */
.note{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:var(--space-4) var(--space-6);
  margin:var(--space-6) 0;font-size:.92rem;color:var(--ink-muted)}
.note.warn{border-color:var(--warn-border);background:var(--warn-bg)}
.note strong{color:var(--ink)}
/* author box */
.author{display:flex;gap:var(--space-4);align-items:center;background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:var(--space-6);margin:var(--space-12) 0 0}
.author .av{width:56px;height:56px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--accent),#37a6d4);display:grid;place-items:center;
  color:var(--accent-ink);font-weight:750;font-size:1.3rem}
.author .meta{font-size:.9rem}.author .meta .nm{color:var(--ink);font-weight:640}
.author .meta .rl{color:var(--ink-muted)}
/* section intro */
.kicker{color:var(--accent);font-weight:640;font-size:.85rem;letter-spacing:.02em;margin-bottom:var(--space-2)}
.crumbs{font-size:.82rem;color:var(--ink-muted);padding:var(--space-6) 0 0}
.crumbs a{color:var(--ink-muted)}.crumbs span{color:var(--ink)}
/* prose lists */
.prose ul{margin:0 0 var(--space-4) 1.2rem;color:var(--ink-muted);max-width:var(--measure)}
.prose ul li{margin-bottom:var(--space-2)}
/* cta band */
.ctaband{background:linear-gradient(135deg,var(--surface),var(--bg2));border:1px solid var(--border);
  border-radius:var(--radius);padding:var(--space-12);margin:var(--space-16) 0;text-align:center}
.ctaband h2{margin-top:0}.ctaband .btn{margin-top:var(--space-4)}
/* footer */
footer.site{border-top:1px solid var(--border);margin-top:var(--space-24);padding:var(--space-12) 0 var(--space-8);
  background:var(--bg2);font-size:.88rem}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--space-8)}
@media(max-width:760px){.fgrid{grid-template-columns:1fr}}
footer h4{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-muted);margin:0 0 var(--space-3);font-weight:600}
footer ul{list-style:none;padding:0;margin:0}footer li{margin-bottom:.4rem}
footer a{color:var(--ink-muted)}footer a:hover{color:var(--ink)}
.disclaimer{border-top:1px solid var(--border);margin-top:var(--space-8);padding-top:var(--space-6);color:var(--ink-muted);
  font-size:.8rem;line-height:1.7}
.rg{display:flex;gap:var(--space-3);flex-wrap:wrap;margin:var(--space-4) 0}
.rg span{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.2rem .55rem;font-size:.72rem;font-weight:600;color:var(--ink-muted)}
.updated{font-size:.8rem;color:var(--ink-muted);margin-top:var(--space-2)}
/* Cross-browser + mobile hardening */
button{font-family:inherit}
.btn{-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:44px}
.tablewrap{-webkit-overflow-scrolling:touch}
.copybtn{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
@supports(padding:max(0px)){
  .wrap{padding-left:max(var(--space-6),env(safe-area-inset-left));
        padding-right:max(var(--space-6),env(safe-area-inset-right))}
}
@media(hover:none){tbody tr:hover{background:transparent}}
@media(max-width:860px){
  /* Tap targets ≥ 48px on mobile (GSC mobile-usability) */
  .nav ul a{min-height:48px;display:flex;align-items:center}
  .nav .cta{justify-content:center}
  .faq summary{min-height:52px}
  footer li a{display:inline-block;padding:.35rem 0;min-height:40px}
  .rg{gap:.5rem}
}
@media(max-width:520px){
  .codeval{font-size:1.6rem;flex-wrap:wrap}
  .ctaband{padding:var(--space-8) var(--space-4)}
  h1{word-break:normal;overflow-wrap:break-word}
}
