
:root{--fn-primary:#ff2d8a;--fn-accent:#ff2d8a;--fn-accent-hover:#ff5ea6;--fn-accent-ink:#0b0b0c;--fn-accent-muted:#2a1220;
--fn-bg:#0b0b0c;--fn-bg-alt:#111113;--fn-surface:#17171a;--fn-border:#2a2a2e;--fn-rule:#f2efe8;
--fn-text:#f2efe8;--fn-text-2:#b9b4aa;--fn-text-3:#8f8a80;--fn-ok:#9ad1a8;--fn-warn:#e0c07a;--fn-bad:#e08a8a;
--fn-mono:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
--fn-body:"Helvetica Neue",Helvetica,Arial,"Liberation Sans",system-ui,sans-serif;
--fn-text-xs:0.75rem;--fn-text-sm:0.875rem;--fn-text-base:1.0625rem;--fn-text-lg:1.125rem;--fn-text-xl:1.375rem;--fn-text-2xl:1.75rem;--fn-text-3xl:2.25rem;--fn-text-4xl:3rem;--fn-text-5xl:4.25rem;
--fn-s1:4px;--fn-s2:8px;--fn-s3:12px;--fn-s4:16px;--fn-s5:24px;--fn-s6:32px;--fn-s7:48px;--fn-s8:64px;--fn-s9:96px;
--fn-maxw:1120px;--fn-read:68ch;--fn-rail:280px;color-scheme:dark}
html.paper{--fn-primary:#c8005c;--fn-accent:#c8005c;--fn-accent-hover:#a3004b;--fn-accent-ink:#f2efe8;--fn-accent-muted:#f7dbe7;
--fn-bg:#f2efe8;--fn-bg-alt:#ebe7de;--fn-surface:#e9e5dc;--fn-border:#cfcac0;--fn-rule:#0b0b0c;
--fn-text:#0b0b0c;--fn-text-2:#4a4741;--fn-text-3:#625e57;--fn-ok:#2f6b3f;--fn-warn:#7a5a10;--fn-bad:#9a2f2f;color-scheme:light}
*,*::before,*::after{box-sizing:border-box;border-radius:0}
html{scroll-behavior:smooth;scroll-padding-top:84px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fn-bg);color:var(--fn-text);font-family:var(--fn-body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;transition:background-color 120ms,color 120ms}
img,svg{max-width:100%}
a{color:var(--fn-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color 120ms,background-color 120ms,border-color 120ms}a:hover{color:var(--fn-accent-hover)}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--fn-accent);outline-offset:2px}
h1,h2,h3{font-family:var(--fn-mono);line-height:1.1;margin:0 0 .5em;color:var(--fn-text)}
h1{font:700 clamp(2rem,5.2vw,3.75rem)/1 var(--fn-mono);letter-spacing:-.03em;max-width:22ch}
h2{font-weight:700;font-size:clamp(1.375rem,2.6vw,1.75rem);letter-spacing:-.01em}
h3{font-weight:500;font-size:1.05rem;text-transform:uppercase;letter-spacing:.06em}
h2 .n{color:var(--fn-accent);font-weight:500;margin-right:14px}
p{margin:0 0 1.1em}
code,kbd{font-family:var(--fn-mono);font-size:.9em;background:var(--fn-surface);border:1px solid var(--fn-border);padding:1px 5px;color:var(--fn-text)}
.fn-skip{position:absolute;left:-999px;top:0;z-index:300;background:var(--fn-accent);color:var(--fn-accent-ink);font:700 14px/1 var(--fn-mono);padding:10px 16px;text-decoration:none}
.fn-skip:focus{left:0}.fn-skip:hover{color:var(--fn-accent-ink)}.fn-skip:focus-visible{outline:2px solid var(--fn-text);outline-offset:2px}
.fn-wrap{max-width:var(--fn-maxw);margin:0 auto;padding:0 24px}
.fn-label{font:500 12px/1.4 var(--fn-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--fn-text-3);margin:0 0 10px}
.fn-label b{color:var(--fn-accent);font-weight:500}
.fn-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* issue line, original-document line, stamp */
.fn-issue{margin:0;padding:14px 0;border-bottom:2px solid var(--fn-rule);font:500 12.5px/1.4 var(--fn-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--fn-text-3)}
.fn-issue span{overflow-wrap:anywhere}
.fn-issue span+span::before{content:"/";color:var(--fn-border);margin:0 12px}
.fn-issue .cur{color:var(--fn-accent)}
.fn-orig{margin:10px 0 0;max-width:90ch;font:400 12px/1.55 var(--fn-mono);color:var(--fn-text-3);overflow-wrap:anywhere}.fn-orig span{color:var(--fn-text-2)}
.fn-stamp,.fn-status{margin:18px 0 0;padding:8px 0;border-top:1px solid var(--fn-border);border-bottom:1px solid var(--fn-border);font:500 12px/1.5 var(--fn-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--fn-text-3);max-width:62ch}
.fn-stamp span+span::before,.fn-status span+span::before{content:"/";margin:0 10px;color:var(--fn-border)}
.fn-stamp span,.fn-status span{white-space:nowrap}
/* masthead */
.fn-mast{position:sticky;top:0;z-index:100;background:var(--fn-bg);border-bottom:2px solid var(--fn-rule);transition:background-color 120ms,border-color 120ms}
.fn-mast-in{display:flex;align-items:center;gap:20px;height:60px;max-width:var(--fn-maxw);margin:0 auto;padding:0 24px}
.fn-logo{display:inline-flex;align-items:center;min-height:44px;font:700 18px/1 var(--fn-mono);letter-spacing:.08em;color:var(--fn-text);text-decoration:none;white-space:nowrap}
.fn-logo:hover{color:var(--fn-text)}.fn-logo b{color:var(--fn-accent);font-weight:700}
.fn-logo i{display:inline-block;width:10px;height:16px;margin-left:8px;background:var(--fn-accent)}
.fn-nav{margin-left:auto;display:flex;gap:2px;align-items:stretch}
.fn-nav a{white-space:nowrap;display:flex;align-items:center;min-height:44px;padding:0 12px;font:400 12.5px/1 var(--fn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fn-text-2);text-decoration:none;border-bottom:2px solid transparent}
.fn-nav a:hover{color:var(--fn-text)}.fn-nav a.on{color:var(--fn-accent);border-bottom-color:var(--fn-accent)}
.fn-theme{background:none;border:0;min-width:44px;min-height:44px;padding:0 8px;font:400 12.5px/1 var(--fn-mono);letter-spacing:.06em;color:var(--fn-text-2);cursor:pointer;transition:color 120ms}
.fn-theme:hover{color:var(--fn-accent)}
.fn-mnav{display:none;margin-left:auto}
.fn-mnav summary{display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0 4px;list-style:none;cursor:pointer;font:400 12.5px/1 var(--fn-mono);letter-spacing:.06em;color:var(--fn-text-2);transition:color 120ms}
.fn-mnav summary::-webkit-details-marker{display:none}.fn-mnav summary::marker{content:""}
.fn-mnav summary:hover{color:var(--fn-text)}.fn-mnav summary .o{display:none}
.fn-mnav[open] summary{color:var(--fn-accent)}.fn-mnav[open] summary .c{display:none}.fn-mnav[open] summary .o{display:inline}
.fn-mnav-panel{position:fixed;left:0;right:0;top:62px;background:var(--fn-bg);border-bottom:2px solid var(--fn-rule);padding:0 24px 12px;max-height:calc(100vh - 62px);overflow:auto}
.fn-mnav-panel a{display:flex;justify-content:space-between;align-items:center;min-height:46px;border-bottom:1px solid var(--fn-border);font:400 14px/1 var(--fn-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--fn-text);text-decoration:none}
.fn-mnav-panel a::after{content:"";width:8px;height:8px;border-right:2px solid var(--fn-accent);border-top:2px solid var(--fn-accent);transform:rotate(45deg);margin-right:4px}
.fn-mnav-panel a:hover,.fn-mnav-panel a.on{color:var(--fn-accent)}
@media(min-width:900px) and (max-width:1079px){.fn-mast-in{gap:12px}.fn-nav a{padding:0 7px;font-size:12px;letter-spacing:.05em}.fn-theme{padding:0 4px}}
@media(max-width:899px){.fn-nav{display:none}.fn-mnav{display:block;margin-left:0}.fn-theme{margin-left:auto}}
/* rows: the card replacement */
.fn-rows{list-style:none;margin:0;padding:0;border-top:2px solid var(--fn-rule);border-bottom:2px solid var(--fn-rule)}
.fn-rows li{display:grid;grid-template-columns:3.5ch 1fr auto;column-gap:16px;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--fn-border)}
.fn-rows li:last-child{border-bottom:0}
.fn-rows .n{font:500 14px/1 var(--fn-mono);color:var(--fn-accent)}
.fn-rows li>div{min-width:0;line-height:1.4}.fn-rows.big li>div{line-height:1.2}
.fn-rows .t{padding:6px 0;font:500 17px/1.4 var(--fn-body);color:var(--fn-text);text-decoration:none;text-underline-offset:3px;text-decoration-thickness:1px}
.fn-rows .t:hover{color:var(--fn-accent);text-decoration:underline}
.fn-rows .m{font:400 12px/1 var(--fn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fn-text-3);white-space:nowrap}
.fn-rows .d{margin:4px 0 0;font-size:15px;line-height:1.55;color:var(--fn-text-2);max-width:62ch}
.fn-rows.big li{padding:20px 0}
.fn-rows.big .t{font:700 clamp(1.25rem,2.4vw,1.75rem)/1.2 var(--fn-mono);letter-spacing:-.01em}
@media(max-width:639px){.fn-rows li{grid-template-columns:3.5ch 1fr}.fn-rows .m{grid-column:2;margin-top:6px;white-space:normal}}
/* buttons */
.fn-btns{display:flex;flex-wrap:wrap;gap:12px;margin:32px 0 0}
.fn-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;font:500 13px/1 var(--fn-mono);text-transform:uppercase;letter-spacing:.08em;text-decoration:none;border:1px solid var(--fn-text);color:var(--fn-text);background:transparent;cursor:pointer}
.fn-btn:hover{background:var(--fn-text);color:var(--fn-bg)}.fn-btn:active{transform:translateY(1px)}
.fn-btn-primary{background:var(--fn-accent);border-color:var(--fn-accent);color:var(--fn-accent-ink)}
.fn-btn-primary:hover{background:var(--fn-accent-hover);border-color:var(--fn-accent-hover);color:var(--fn-accent-ink)}
.fn-btn-primary:focus-visible{outline-color:var(--fn-text)}
/* homepage */
.fn-home-head{padding:40px 0 32px}
.fn-home-head h1{margin:18px 0 22px}
.fn-stand{font-size:20px;line-height:1.55;color:var(--fn-text-2);max-width:62ch;margin:0;text-wrap:pretty}
.fn-section{padding-top:48px}.fn-section-first{padding-top:0}
.fn-section h2{font:700 clamp(1.375rem,2.6vw,1.75rem)/1.2 var(--fn-mono);letter-spacing:-.01em;margin:0 0 20px;padding-top:20px;border-top:2px solid var(--fn-rule)}
.fn-h2a{color:inherit;text-decoration:none}.fn-h2a:hover{color:var(--fn-accent)}
.fn-cols{display:grid;grid-template-columns:1fr 1fr;column-gap:48px}
.fn-cols .fn-rows{border-top:0}
.fn-hubidx{row-gap:0}
.fn-hubidx>div{display:grid;grid-template-rows:subgrid;grid-row:span 2;padding-bottom:40px}
.fn-hubidx>div:nth-last-child(-n+2){padding-bottom:0}
.fn-hubidx h2{margin-bottom:0}.fn-hubidx .fn-rows{align-self:start}
.fn-hubidx .fn-rows li,.fn-arch .fn-rows li{min-height:76px}
.fn-arch .fn-stand{margin:0 0 18px}
.fn-prose2{columns:2;column-gap:48px;font-size:16.5px;line-height:1.65}
.fn-prose2 p{margin:0 0 18px;break-inside:avoid;text-wrap:pretty;orphans:3;widows:3}.fn-prose2 p:last-child{margin-bottom:0}
.fn-note{max-width:var(--fn-read);margin:0}
@media(max-width:799px){.fn-cols{grid-template-columns:1fr}.fn-hubidx>div:nth-last-child(2){padding-bottom:40px}.fn-hubidx .fn-rows li,.fn-arch .fn-rows li{min-height:0}.fn-arch .fn-cols .fn-rows:first-child{border-bottom:1px solid var(--fn-border)}.fn-prose2{columns:1}}
@media(max-width:639px){.fn-stand{font-size:17px}}
/* steps */
.fn-steps{list-style:none;margin:0;padding:0;border-top:2px solid var(--fn-rule);max-width:var(--fn-read)}
.fn-steps li{display:grid;grid-template-columns:3.5ch 1fr;column-gap:16px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--fn-border);font-size:16px;line-height:1.6;color:var(--fn-text)}
.fn-steps .n{font:500 14px/1 var(--fn-mono);color:var(--fn-accent)}
.fn-steps h3{margin:0;font:500 .95rem/1.35 var(--fn-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--fn-text)}
.fn-prose .fn-steps p{margin:6px 0 0;font-size:16px;line-height:1.6;color:var(--fn-text-2)}
/* page head, breadcrumb, lede */
.fn-head{max-width:var(--fn-maxw);margin:0 auto;padding:28px 24px}
.fn-head h1{margin:14px 0 18px}
.fn-crumb{font:400 12.5px/1.5 var(--fn-mono);color:var(--fn-text-3);margin:14px 0;display:flex;flex-wrap:wrap;align-items:center;gap:0 10px}
.fn-crumb a{color:var(--fn-text-2);text-decoration:none;display:inline-flex;align-items:center;min-height:32px}
.fn-crumb a:hover{color:var(--fn-accent)}.fn-crumb b{color:var(--fn-text);font-weight:500}.fn-crumb .sep{color:var(--fn-border)}
.fn-lede{font-size:19px;line-height:1.55;color:var(--fn-text-2);max-width:62ch;margin:0;text-wrap:pretty}
/* article layout + marginalia */
.fn-art{display:grid;grid-template-columns:minmax(0,var(--fn-read)) var(--fn-rail);gap:56px;max-width:var(--fn-maxw);margin:0 auto;padding:0 24px 64px;justify-content:start;align-items:start}
.fn-art .fn-prose>h2:first-child{margin-top:0}
.fn-margin{position:sticky;top:84px;align-self:start;font-size:15px;padding-bottom:24px}
.fn-margin .fn-label{margin:22px 0 8px}.fn-margin .fn-label:first-child{margin-top:0}
.fn-margin .fn-qa{margin:0;font-size:15px;line-height:1.55;color:var(--fn-text)}
.fn-margin dl{display:grid;grid-template-columns:auto 1fr;gap:0 14px;margin:0}
.fn-margin dt,.fn-margin dd{padding:8px 0;border-top:1px solid var(--fn-border);margin:0}
.fn-margin dt:first-of-type,.fn-margin dt:first-of-type+dd{border-top:0}
.fn-margin dt{font:500 11.5px/1.6 var(--fn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fn-text-3)}
.fn-margin dd{font-size:14.5px;line-height:1.5;color:var(--fn-text)}
.fn-margin dl.fn-docs{grid-template-columns:1fr}
.fn-margin dl.fn-docs dt{font:400 12px/1.5 var(--fn-mono);text-transform:none;letter-spacing:0;padding-bottom:2px}
.fn-margin dl.fn-docs dd{border-top:0;padding-top:0;font-size:14.5px}
.fn-margin a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.fn-margin code{background:none;border:0;padding:0;color:var(--fn-text);font-size:.9em}
.fn-toc a{display:block;padding:5px 0 5px 2ch;text-indent:-2ch;font:400 13px/1.45 var(--fn-mono);color:var(--fn-text-2);text-decoration:none}
.fn-toc a::before{content:"  ";white-space:pre}
.fn-toc a:hover,.fn-toc a.cur{color:var(--fn-accent)}.fn-toc a.cur::before{content:"> "}
.fn-toc-m{display:none;border:1px solid var(--fn-border);padding:10px 14px;margin:0 0 8px;font:400 13px/1.45 var(--fn-mono)}
.fn-toc-m summary{min-height:32px;display:flex;align-items:center;cursor:pointer;font:500 12px/1 var(--fn-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--fn-text-2)}
.fn-toc-m summary:hover{color:var(--fn-accent)}.fn-toc-m[open] summary{color:var(--fn-accent);margin-bottom:6px}
.fn-prose .fn-toc-m a{display:block;padding:6px 0;border-top:1px solid var(--fn-border);color:var(--fn-text-2);text-decoration:none}
.fn-prose .fn-toc-m a:hover{color:var(--fn-accent)}
@media(max-width:1079px){.fn-art{grid-template-columns:minmax(0,var(--fn-read));gap:0}.fn-margin{display:contents}.fn-margin>.fn-plate{order:-3;margin:0 0 20px;max-width:200px}.fn-rail-qa{order:-2;border-top:2px solid var(--fn-rule);padding-top:14px}.fn-rail-facts,.fn-rail-docs{order:-1;border-bottom:2px solid var(--fn-rule);padding:18px 0 20px;margin-bottom:28px}.fn-rail-toc{display:none}.fn-rail-src{order:1;margin-top:36px}.fn-rail-rel{order:2}.fn-toc,.fn-margin .fn-toc-l{display:none}.fn-toc-m{display:block}}
/* prose */
.fn-prose{max-width:var(--fn-read);font-size:17px;line-height:1.7;min-width:0}
.fn-prose h2{font:700 clamp(1.25rem,2.4vw,1.6rem)/1.2 var(--fn-mono);letter-spacing:-.01em;margin:44px 0 0;padding-top:20px;border-top:2px solid var(--fn-rule)}
.fn-prose p{margin:18px 0 0;text-wrap:pretty}
.fn-prose ul:not([class]),.fn-prose ol:not([class]){padding-left:1.3em;margin:18px 0 0}
.fn-prose ul:not([class]) li+li,.fn-prose ol:not([class]) li+li{margin-top:.5em}
.fn-prose .fn-rows,.fn-prose .fn-steps{margin-top:20px}
/* figures */
.fn-fig{margin:28px 0 0;background:var(--fn-bg-alt);border:1px solid var(--fn-border);padding:16px}
.fn-fig svg{display:block;width:100%;height:auto}
.fn-fig figcaption{margin-top:12px;font:400 12.5px/1.5 var(--fn-mono);color:var(--fn-text-3)}
.fn-fig .ttl{font:500 12px var(--fn-mono);letter-spacing:.1em;fill:var(--fn-text-2)}
.fn-fig .lbl{font:400 12px var(--fn-mono);fill:var(--fn-text-2)}
.fn-fig .yr{font:500 12px var(--fn-mono);fill:var(--fn-text-2)}
.fn-fig .yr-hot{font:700 12px var(--fn-mono);fill:var(--fn-accent)}
.fn-fig .bar{fill:var(--fn-text-2)}
.fn-fig .over{stroke:var(--fn-text-2);stroke-width:1.5}
.fn-fig .hatch{stroke:var(--fn-border);stroke-width:2}
.fn-fig .gap{fill:var(--fn-bg-alt)}
.fn-fig .hair{stroke:var(--fn-text-2);stroke-width:1.5;fill:none;stroke-linecap:square}
.fn-fig .node,.fn-fig .ev{fill:var(--fn-bg-alt);stroke:var(--fn-text-2);stroke-width:1.5}
.fn-fig .conn{stroke:var(--fn-text-2);stroke-width:1.5;stroke-dasharray:4 4;fill:none}
.fn-fig .hot{stroke:var(--fn-accent)}
.fn-fig .hot-fill{fill:var(--fn-accent)}
.fn-fig .hot-dash{stroke:var(--fn-accent);stroke-width:2;stroke-dasharray:4 4}
.fn-fig .fn-fig-n{display:none}
@media(max-width:639px){.fn-fig{padding:12px}.fn-fig .fn-fig-w{display:none}.fn-fig .fn-fig-n{display:block;max-width:440px}.fn-fig .fn-fig-n .lbl,.fn-fig .fn-fig-n .yr,.fn-fig .fn-fig-n .yr-hot{font-size:13px}}
/* callout */
.fn-call{margin:24px 0 0;background:var(--fn-accent-muted);border-top:2px solid var(--fn-accent);padding:12px 18px 14px}
.fn-call .k{display:block;font:500 11.5px/1.4 var(--fn-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--fn-accent);margin-bottom:6px}
/* paper: #c8005c on the #f7dbe7 callout ground is 4.498:1 (fails AA); label and links use accent-hover #a3004b (6.1:1) */
html.paper .fn-call .k,html.paper .fn-call a{color:var(--fn-accent-hover)}html.paper .fn-call a:hover{color:var(--fn-text)}
.fn-prose .fn-call p{margin:0;font-size:15.5px;line-height:1.6;color:var(--fn-text)}
/* terminal */
.fn-term{margin:28px 0 0;background:var(--fn-surface);border:1px solid var(--fn-border)}
.fn-term .cap{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:0 6px 0 14px;min-height:44px;border-bottom:1px solid var(--fn-border);font:500 11.5px/1.4 var(--fn-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--fn-text-3)}
.fn-term .cap span{min-width:0;overflow-wrap:anywhere;padding:8px 0}
.fn-copy{flex:none;background:none;border:0;min-height:44px;min-width:44px;padding:0 8px;font:400 12px/1 var(--fn-mono);letter-spacing:.04em;text-transform:none;color:var(--fn-text-2);cursor:pointer;transition:color 120ms}
.fn-copy:hover{color:var(--fn-accent)}
.fn-term pre{margin:0;padding:14px;overflow-x:auto;white-space:pre;tab-size:2;font:400 14px/1.55 var(--fn-mono);color:var(--fn-text)}
.fn-term pre:focus-visible{outline:2px solid var(--fn-accent);outline-offset:-2px}
.fn-term pre::before{content:"$ ";color:var(--fn-accent)}
.fn-term pre+pre{border-top:1px solid var(--fn-border)}.fn-term pre+pre::before{content:none}
.fn-term.is-session pre::before{content:none}.fn-term .p{color:var(--fn-text-3)}.fn-term .p b{color:var(--fn-accent);font-weight:400}.fn-term .r{color:var(--fn-text-2)}
/* tables */
.fn-tablewrap{overflow-x:auto;border:1px solid var(--fn-border);margin:28px 0 0;max-width:var(--fn-read)}
.fn-table{width:100%;min-width:520px;border-collapse:collapse;caption-side:bottom}
.fn-table caption{text-align:left;padding:10px 12px;font:400 12.5px/1.5 var(--fn-mono);color:var(--fn-text-3);border-top:1px solid var(--fn-border)}
.fn-table th{text-align:left;vertical-align:bottom;padding:10px 12px;font:500 11.5px/1.3 var(--fn-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--fn-text-2);background:var(--fn-bg-alt);border-bottom:2px solid var(--fn-accent)}
.fn-table td{padding:10px 12px;font-size:15px;line-height:1.5;vertical-align:top;border-bottom:1px solid var(--fn-border);color:var(--fn-text)}
.fn-table tbody tr:nth-child(even) td{background:var(--fn-bg-alt)}.fn-table tbody tr:last-child td{border-bottom:0}
.fn-table td:first-child{font-weight:500}
.fn-gen{min-width:640px}
.fn-gen td:first-child{font-family:var(--fn-mono);font-weight:500;font-size:14px}
.fn-gen td:nth-child(2){font-family:var(--fn-mono);font-size:13.5px;color:var(--fn-text-2);font-variant-numeric:tabular-nums}
.fn-cli{min-width:600px}.fn-cli td:last-child{color:var(--fn-text-2)}
.fn-cli td.cmd{padding-top:4px;padding-bottom:4px}
.fn-cli .c{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:36px}
.fn-cli .c code{background:none;border:0;padding:0;font-size:14px;color:var(--fn-text);white-space:nowrap}
.fn-copy-s{min-height:36px;padding:0 4px}
.fn-gen th:first-child,.fn-gen td:first-child,.fn-cli th:first-child,.fn-cli td:first-child{position:sticky;left:0;z-index:1;background:var(--fn-bg)}
.fn-gen th:first-child,.fn-cli th:first-child{background:var(--fn-bg-alt);z-index:2}
.fn-gen tbody tr:nth-child(even) td:first-child,.fn-cli tbody tr:nth-child(even) td:first-child{background:var(--fn-bg-alt)}
/* FAQ, sources, byline, related */
.fn-faq-item{padding:14px 0;border-bottom:1px solid var(--fn-border)}
.fn-faq-item h3{margin:0;text-transform:none;letter-spacing:0;font:700 1.02rem/1.4 var(--fn-mono);color:var(--fn-text)}
.fn-prose .fn-faq-item p{margin:6px 0 0;font-size:15.5px;line-height:1.6;color:var(--fn-text-2)}
.fn-prose .fn-sources h2,.fn-prose .fn-related h2{font-size:1.05rem}
.fn-prose .fn-related h2{border-top:0;padding-top:0}
.fn-sources ul{margin:12px 0 0;padding-left:1.3em;font-size:14.5px;line-height:1.55;color:var(--fn-text-2)}
.fn-sources li+li{margin-top:.5em}
.fn-byline{display:grid;grid-template-columns:auto 1fr;gap:18px;border-top:2px solid var(--fn-rule);padding-top:18px;margin-top:40px;font-size:15px;line-height:1.6;color:var(--fn-text-2);max-width:var(--fn-read)}
.fn-byline .fn-label{margin:0;line-height:1.6}
.fn-prose .fn-byline p,.fn-byline p{margin:0}
.fn-byline strong{color:var(--fn-text);font-weight:500}
.fn-byline .fn-rev,.fn-prose .fn-byline .fn-rev{margin-top:6px;font:400 12px/1.5 var(--fn-mono);color:var(--fn-text-3)}
.fn-related{margin-top:48px}.fn-related .fn-rows{margin-top:14px}
/* static, 404, 410 */
.fn-narrow{max-width:var(--fn-read);margin:0 auto;padding:0 24px 64px;min-height:50vh;box-sizing:content-box}
.fn-narrow>.fn-issue{margin-top:28px}
.fn-narrow h1{margin:14px 0 22px;max-width:none}
.fn-static p{margin:1.1em 0 0;overflow-wrap:break-word}
.fn-static .fn-first{margin:0;font-size:19px;line-height:1.6;color:var(--fn-text-2);max-width:62ch}
.fn-static .fn-first+p{border-top:2px solid var(--fn-rule);padding-top:1.1em;margin-top:1.4em}
.fn-static p>strong:first-child{font-family:var(--fn-mono);font-weight:500;font-size:.82em;text-transform:uppercase;letter-spacing:.08em;color:var(--fn-text)}
.fn-static .fn-anchor{border-top:2px solid var(--fn-accent);padding-top:1.1em}
.fn-static .fn-updated{color:var(--fn-text-2)}
.fn-contact{border-top:2px solid var(--fn-rule);padding-top:24px;margin-top:40px}
.fn-contact .fn-label{margin:0}
.fn-contact p+p{margin-top:10px}
.fn-email{color:var(--fn-text)}
.fn-nf,.fn-gone{min-height:60vh}
.fn-nf h1,.fn-gone h1{margin:18px 0}
.fn-nf .fn-term .cap{padding:8px 14px;min-height:0}
.fn-nf .fn-term pre{color:var(--fn-text-2)}.fn-nf .fn-term pre::before{content:none}
.fn-nf .fn-rows{margin-top:28px}.fn-nf .fn-rows li{grid-template-columns:3.5ch 1fr}
.fn-nf .fn-lbl{margin:32px 0 0}.fn-nf .fn-lbl+.fn-rows{margin-top:10px}
.fn-nf .fn-btns,.fn-gone .fn-btns{margin-top:24px}
.fn-gone .fn-status{margin-top:28px;padding:10px 0;font-size:12.5px;letter-spacing:.1em}
@media(max-width:639px){body{font-size:16px}.fn-mast-in{padding:0 16px;gap:12px}.fn-wrap{padding:0 16px}.fn-mnav-panel{padding:0 16px 12px}
.fn-head{padding:24px 16px}.fn-art{padding:0 16px 48px}.fn-lede{font-size:17px}.fn-prose{font-size:16px;line-height:1.65}
.fn-stamp span,.fn-status span{white-space:normal}.fn-narrow{padding:0 16px 48px}.fn-static .fn-first{font-size:17px}
.fn-nf .fn-btns{flex-direction:column}.fn-nf .fn-btn,.fn-gone .fn-btn{justify-content:center}.fn-gone .fn-btn{width:100%}}
/* footer */
.fn-foot{border-top:2px solid var(--fn-rule);margin-top:48px}
.fn-foot-in{max-width:var(--fn-maxw);margin:0 auto;padding:40px 24px 20px;display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 1fr;gap:28px}
.fn-foot .fn-foot-h{font-family:var(--fn-mono);font-size:11.5px;line-height:1.3;letter-spacing:.12em;text-transform:uppercase;color:var(--fn-text-3);margin:0 0 10px;font-weight:500}
.fn-foot-col a{display:flex;align-items:center;min-height:32px;padding:5px 0;font:400 14.5px/1.35 var(--fn-body);color:var(--fn-text-2);text-decoration:none;border-bottom:1px solid var(--fn-border)}
.fn-foot-col a:hover{color:var(--fn-accent)}
.fn-foot-brand p{margin:12px 0 0;max-width:40ch;font-size:14px;line-height:1.55;color:var(--fn-text-3)}
.fn-foot-bar{border-top:1px solid var(--fn-border)}
.fn-foot-bar-in{max-width:var(--fn-maxw);margin:0 auto;padding:16px 24px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;font:400 12px/1.4 var(--fn-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--fn-text-3)}
@media(max-width:899px){.fn-foot-in{grid-template-columns:1fr 1fr}.fn-foot-brand{grid-column:1/-1}}
@media(max-width:639px){.fn-foot-in{padding:32px 16px 20px}.fn-foot-bar-in{padding:16px}}
@media(max-width:559px){.fn-foot-in{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
@media print{.fn-mast,.fn-foot,.fn-skip,.fn-toc,.fn-toc-m,.fn-btns,.fn-copy{display:none!important}
body,.fn-table td,.fn-table th,.fn-table tbody tr:nth-child(even) td{background:#fff!important;color:#000!important}
a{color:#000!important}.fn-issue,.fn-prose h2{border-color:#000}.fn-margin{position:static}
.fn-term,.fn-tablewrap{border:1px solid #000!important;background:#fff!important}.fn-term .cap{border-bottom:1px solid #000;color:#000}
.fn-term pre,.fn-term .p,.fn-term .r,.fn-term pre::before,.fn-term .p b{color:#000!important}}

.fn-plate{margin:0 0 22px;border:2px solid var(--fn-rule);background:var(--fn-bg-alt);width:100%;max-width:var(--fn-rail)}
.fn-plate img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.fn-plate figcaption{display:flex;gap:12px;padding:8px 12px;border-top:2px solid var(--fn-rule);font:500 11.5px/1.4 var(--fn-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--fn-text-3)}
.fn-plate figcaption span{color:var(--fn-accent)}
.fn-narrow .fn-plate{margin:0 0 28px;max-width:220px}
.fn-rail-src .fn-sources h2,.fn-rail-rel .fn-related h2{font:500 12px/1.6 var(--fn-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--fn-text-3);border-top:0;padding-top:0;margin:22px 0 6px}
.fn-rail-src .fn-sources ul{margin:0;padding-left:1.2em;font-size:13.5px;line-height:1.5}
.fn-rail-rel .fn-related{margin-top:0}.fn-rail-rel .fn-rows{margin-top:6px;border-top:1px solid var(--fn-border);border-bottom:0}
.fn-rail-rel .fn-rows li{padding:9px 0;grid-template-columns:3ch 1fr}.fn-rail-rel .fn-rows .m{grid-column:2;margin-top:4px;white-space:normal}.fn-rail-rel .fn-rows .t{font-size:15px;padding:2px 0}
.fn-home-head h1{font-size:clamp(1.6rem,3.2vw,2.4rem);max-width:30ch}
.fn-about-grid{display:grid;grid-template-columns:minmax(0,1fr) var(--fn-rail);gap:48px;align-items:start}
.fn-about-grid .fn-plate{margin:6px 0 0}.fn-about-grid .fn-prose2{columns:1}
@media(max-width:799px){.fn-about-grid{grid-template-columns:minmax(0,1fr)}.fn-about-grid .fn-plate{max-width:200px}}
.fn-home-rel .fn-related{margin-top:0;max-width:var(--fn-read)}
