:root{
  --paper:#F7F8F6; --ink:#141B24; --ink-soft:#4A5462;
  --hl:#FFE24A; --hl-soft:#FFF3B8; --ref:#2451B3;
  --line:#D8DCD9; --card:#FFFFFF;
  --serif:"Newsreader", Georgia, serif;
  --sans:"Inter", -apple-system, sans-serif;
  --mono:"IBM Plex Mono", ui-monospace, monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased}
a{color:var(--ref)}
a:focus-visible,button:focus-visible{outline:2px solid var(--ref);outline-offset:3px}
.wrap{max-width:1060px;margin:0 auto;padding:0 24px}
.narrow{max-width:720px}
mark{background:linear-gradient(120deg,var(--hl) 0%,var(--hl) 100%);background-repeat:no-repeat;background-size:100% 62%;background-position:0 68%;padding:0 2px;color:inherit}
sup.fn{font-family:var(--mono);font-size:.62em;color:var(--ref);font-weight:500;margin-left:1px}
sup.fn a{text-decoration:none}
header{border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:20}
.nav{display:flex;align-items:center;justify-content:space-between;height:64px}
.logo{font-family:var(--serif);font-weight:600;font-size:1.45rem;letter-spacing:-.01em;color:var(--ink);text-decoration:none}
.logo mark{background-size:100% 45%}
.nav ul{display:flex;gap:24px;list-style:none;flex-wrap:wrap}
.nav ul a{color:var(--ink-soft);text-decoration:none;font-size:.9rem;font-weight:500}
.nav ul a:hover,.nav ul a[aria-current]{color:var(--ink)}
@media(max-width:760px){.nav ul{display:none}}
.hero{padding:76px 0 60px;display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
@media(max-width:880px){.hero{grid-template-columns:1fr;padding:48px 0 40px}}
.kicker{font-family:var(--mono);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
h1{font-family:var(--serif);font-weight:500;font-size:clamp(2.2rem,4.6vw,3.3rem);line-height:1.12;letter-spacing:-.015em;margin:14px 0 20px}
h1 em{font-style:italic;font-weight:400}
.lede{color:var(--ink-soft);font-size:1.08rem;max-width:48ch}
.cta-row{margin-top:30px;display:flex;gap:14px;flex-wrap:wrap}
.btn{display:inline-block;padding:13px 24px;border-radius:4px;font-weight:600;font-size:.92rem;text-decoration:none}
.btn-ink{background:var(--ink);color:var(--paper)}
.btn-ink:hover{background:#000}
.btn-ghost{border:1px solid var(--line);color:var(--ink);background:var(--card)}
.answer-card{background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 28px rgba(20,27,36,.07);overflow:hidden}
.answer-bar{display:flex;align-items:center;gap:8px;padding:11px 16px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:.72rem;color:var(--ink-soft)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--line)}
.answer-q{padding:16px 20px 0;font-size:.9rem;color:var(--ink-soft)}
.answer-q b{color:var(--ink)}
.answer-body{padding:12px 20px 18px;font-family:var(--serif);font-size:1.02rem;line-height:1.6}
.answer-src{border-top:1px dashed var(--line);padding:12px 20px 16px;font-family:var(--mono);font-size:.7rem;color:var(--ink-soft);line-height:1.9}
.answer-src span{color:var(--ref)}
section{padding:64px 0;border-top:1px solid var(--line)}
main > section:first-child{border-top:none}
h2{font-family:var(--serif);font-weight:500;font-size:clamp(1.65rem,3vw,2.25rem);letter-spacing:-.01em;line-height:1.15;margin-bottom:18px}
h3{font-family:var(--serif);font-weight:600;font-size:1.2rem;margin:26px 0 8px}
.section-kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);display:block;margin-bottom:10px}
p+p{margin-top:14px}
.def{font-family:var(--serif);font-size:1.25rem;line-height:1.55}
table{width:100%;border-collapse:collapse;margin-top:26px;background:var(--card);border:1px solid var(--line);font-size:.92rem}
th,td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
th{font-family:var(--mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:500}
tr:last-child td{border-bottom:none}
td.up{color:#1A7A3C;font-weight:600;font-family:var(--mono);font-size:.85rem;white-space:nowrap}
td.down{color:#B3372A;font-weight:600;font-family:var(--mono);font-size:.85rem}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:30px}
.grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:30px}
@media(max-width:880px){.grid,.grid2{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:24px}
.card h3{margin:0 0 8px}
.card p{font-size:.92rem;color:var(--ink-soft)}
.card .tag{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ref);display:block;margin-bottom:10px}
details{background:var(--card);border:1px solid var(--line);border-radius:8px;margin-top:12px;padding:0 22px}
summary{cursor:pointer;font-weight:600;font-size:1rem;padding:18px 0;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px}
summary::after{content:"+";font-family:var(--mono);color:var(--ink-soft);font-size:1.1rem}
details[open] summary::after{content:"–"}
details p{padding-bottom:18px;color:var(--ink-soft);font-size:.95rem}
.refs{font-size:.88rem;color:var(--ink-soft);list-style-position:outside;margin-left:20px}
.refs li{margin-top:10px;padding-left:8px}
blockquote{border-left:3px solid var(--hl);background:var(--card);padding:18px 22px;margin:22px 0;font-family:var(--serif);font-size:1.08rem}
blockquote cite{display:block;margin-top:10px;font-family:var(--mono);font-size:.72rem;font-style:normal;color:var(--ink-soft)}
.breadcrumb{font-family:var(--mono);font-size:.72rem;color:var(--ink-soft);padding:18px 0 0}
.breadcrumb a{color:var(--ink-soft);text-decoration:none}
.breadcrumb a:hover{color:var(--ink)}
.article-meta{font-family:var(--mono);font-size:.72rem;color:var(--ink-soft);margin-bottom:24px}
.toc{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:20px 24px;margin:26px 0;font-size:.9rem}
.toc strong{font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.toc ol{margin:10px 0 0 20px}
.toc li{margin-top:5px}
code{font-family:var(--mono);font-size:.85em;background:var(--hl-soft);padding:1px 5px;border-radius:3px}
pre{background:var(--ink);color:#E8EDF2;padding:20px;border-radius:8px;overflow-x:auto;font-family:var(--mono);font-size:.8rem;line-height:1.7;margin:20px 0}
pre code{background:none;padding:0;color:inherit}
footer{border-top:1px solid var(--line);padding:34px 0 44px;color:var(--ink-soft);font-size:.85rem}
footer nav ul{list-style:none;display:flex;gap:20px;flex-wrap:wrap;margin:12px 0}
footer nav a{color:var(--ink-soft);text-decoration:none}
footer nav a:hover{color:var(--ink)}
.demo-note{font-family:var(--mono);font-size:.72rem;margin-top:12px;color:#8A9199}
.dl{margin-top:20px}
.dl dt{font-weight:600;margin-top:16px}
.dl dd{color:var(--ink-soft);margin-left:0;font-size:.95rem}
