:root{
  --ink:#000;--ink-700:#4A4A4A;--ink-600:#6B6B6B;--ink-500:#8F8F8F;--ink-300:#B8B8B8;--ink-200:#D9D9D9;--ink-100:#E8E8E8;--ink-50:#F8F8F7;--paper:#FFF;
  --pos:#1F6F4A;--crit:#A32222;--caution:#A2681B;--info:#1F4E79;
  --display:'Space Grotesk',system-ui,sans-serif;--mono:'IBM Plex Mono',ui-monospace,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.7 var(--display);-webkit-font-smoothing:antialiased}
a{color:var(--ink)}a:hover{color:var(--ink-600)}
.label{font:700 11px/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase}
.top{position:sticky;top:0;z-index:5;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--ink-100)}
.bar{height:60px;display:flex;align-items:center;gap:24px;padding:0 32px;max-width:1320px;margin:0 auto}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand b{font:800 17px/1 var(--display);letter-spacing:-.02em;display:block}
.brand small{font:700 9px/1 var(--mono);letter-spacing:.3em;display:block;margin-top:3px;color:var(--ink-600)}
.env{margin-left:auto;color:var(--ink-600)}
.app{text-decoration:none;border:1px solid var(--ink);padding:9px 12px}.app:hover{background:var(--ink);color:#fff}
.shell{display:grid;grid-template-columns:260px minmax(0,1fr);gap:56px;max-width:1320px;margin:0 auto;padding:0 32px}
.side{position:sticky;top:60px;align-self:start;max-height:calc(100vh - 60px);overflow:auto;padding:32px 0;border-right:1px solid var(--ink-100)}
.side summary{display:none}
.ng{margin-bottom:22px;padding-right:16px}
.ng .label{display:block;color:var(--ink-500);margin-bottom:8px}
.ng a{display:flex;gap:10px;text-decoration:none;font-size:14px;line-height:1.35;padding:6px 0 6px 10px;border-left:2px solid transparent;color:var(--ink-700)}
.ng a:hover{color:var(--ink)}
.ng a[aria-current="page"]{border-left-color:var(--ink);color:var(--ink);font-weight:700}
.nn{font:500 11px/1.6 var(--mono);color:var(--ink-500)}
main{padding:40px 0 64px;min-width:0;max-width:860px}
.kicker{border-top:3px solid var(--ink);padding-top:10px;display:inline-block;color:var(--ink-600)}
h1{font:800 44px/1.06 var(--display);letter-spacing:-.03em;margin:14px 0 14px}
h2{font:800 26px/1.15 var(--display);letter-spacing:-.02em;margin:48px 0 10px;scroll-margin-top:76px}
h3{font:700 17px/1.3 var(--display);margin:28px 0 6px}
p{margin:10px 0}
.lead{font-size:18px;color:var(--ink-700);max-width:68ch}
ul,ol{padding-left:22px}li{margin:4px 0}
code{font:500 13.5px/1.5 var(--mono);background:var(--ink-50);padding:1px 5px}
pre{font:400 13px/1.6 var(--mono);background:var(--ink-50);border:1px solid var(--ink-100);padding:16px 18px;overflow-x:auto}
pre code{background:none;padding:0}
table{width:100%;border-collapse:collapse;font-size:14px;margin:14px 0;display:block;overflow-x:auto}
thead,tbody{display:table;width:100%;table-layout:auto}
th{font:700 10px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-600);text-align:left;padding:10px 12px 10px 0;border-bottom:1px solid var(--ink);vertical-align:bottom}
td{padding:10px 12px 10px 0;border-bottom:1px solid var(--ink-100);vertical-align:top}
td.n,th.n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
.addr{font:400 12.5px/1.5 var(--mono);word-break:break-all;text-decoration:none;border-bottom:1px solid var(--ink-300)}
.callout{border:1px solid var(--ink);padding:16px 18px;margin:20px 0;position:relative}
.callout .t{position:absolute;top:-9px;left:14px;background:var(--paper);padding:0 6px;font:700 11px/16px var(--mono);letter-spacing:.14em}
.callout.warn{border-color:var(--caution)}.callout.warn .t{color:var(--caution)}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:16px 0}
.card{border:1px solid var(--ink-100);padding:16px 18px}
.card .label{color:var(--ink-500)}
.card b.v{display:block;font:700 22px/1.2 var(--mono);font-variant-numeric:tabular-nums;margin-top:8px}
.card p{font-size:14px;color:var(--ink-700);margin:6px 0 0}
figure{margin:24px 0}
figcaption{font:400 12px/1.5 var(--mono);color:var(--ink-600);margin-top:8px}
svg.dia,svg.chart{width:100%;height:auto;display:block;font-family:var(--mono)}
svg .bx{fill:var(--paper);stroke:var(--ink);stroke-width:1.25}
svg .bx.hi{fill:var(--ink-50);stroke-width:2}
svg .bx.dim{stroke:var(--ink-300)}
svg .tt{font:700 13px var(--display);fill:var(--ink)}
svg .ts{font:400 11px var(--mono);fill:var(--ink-600)}
svg .ln{stroke:var(--ink);stroke-width:1.25;fill:none}
svg .ln.d{stroke-dasharray:4 3;stroke:var(--ink-500)}
svg .lt{font:400 10.5px var(--mono);fill:var(--ink-600)}
svg .ct{font:700 12px var(--display);fill:var(--ink)}
svg .cl{font:400 10.5px var(--mono);fill:var(--ink-600)}
svg .ax{stroke:var(--ink-300);stroke-width:1}
svg .gr{stroke:var(--ink-100);stroke-width:1}
svg .cv{fill:none;stroke:var(--ink-500);stroke-width:1.2;stroke-dasharray:4 3}
svg .cv2{fill:none;stroke:var(--ink-500);stroke-width:1.8}
svg .st{fill:none;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
svg .cv-l{font:600 11px var(--mono);fill:var(--ink)}
.ascii{font:400 13px/1.35 var(--mono);white-space:pre;overflow-x:auto;background:var(--ink-50);border:1px solid var(--ink-100);padding:14px 16px}
.ok{color:var(--pos)}.no{color:var(--crit)}
.steps{counter-reset:s;list-style:none;padding:0}
.steps>li{counter-increment:s;display:grid;grid-template-columns:40px minmax(0,1fr);padding:14px 0;border-top:1px solid var(--ink-100);margin:0}
.steps>li::before{content:counter(s,decimal-leading-zero);font:700 12px/1.9 var(--mono);color:var(--ink-500)}
.pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:64px;border-top:1px solid var(--ink)}
.pager a{display:block;padding:16px 0;text-decoration:none;font-weight:700}
.pager a .label{display:block;color:var(--ink-500);margin-bottom:4px;font-weight:700}
.pager a.r{text-align:right}
footer{margin-top:40px;padding-top:16px;border-top:1px solid var(--ink-100);font-size:12px;color:var(--ink-600)}
@media (max-width:900px){
  .shell{grid-template-columns:minmax(0,1fr);gap:0;padding:0 16px}
  .side{position:static;max-height:none;border-right:0;border-bottom:1px solid var(--ink-100);padding:12px 0}
  .side summary{display:block;cursor:pointer;padding:6px 0}
  .bar{padding:0 16px;gap:12px}.env{display:none}.app{margin-left:auto}
  h1{font-size:32px}h2{font-size:22px}
  .grid2,.grid3{grid-template-columns:minmax(0,1fr)}
}
