:root{--bg: #131313;--card: #1c1c1c;--card-hover: #222222;--line: #262626;--text: #ffffff;--body: #d9d9d9;--muted: #9aa0a6;--dim: #6b7178;--accent: #9d2ff5;--font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "Cascadia Mono", Consolas, "Liberation Mono", Menlo, monospace;--col: 720px;--side: 240px;--r: 8px;--head: 56px}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{font:400 15px/1.6 var(--font);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:inherit}img,svg{display:block}:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:4px}.surface{background:var(--card);border-radius:var(--r);transition:background .18s}.surface:hover{background:var(--card-hover)}.print-only{display:none}.head{position:sticky;top:0;z-index:20;height:var(--head);background:var(--bg);border-bottom:1px solid var(--line)}.head-in{height:100%;width:min(1100px,100% - 32px);margin:0 auto;display:flex;align-items:center;gap:16px}.brand{display:inline-flex;align-items:center;gap:10px;height:100%}.brand img{height:22px;width:auto}.menu-btn{display:none;width:36px;height:36px;align-items:center;justify-content:center;border-radius:var(--r)}.menu-btn svg{width:18px;height:18px}.head-links{margin-left:auto;display:flex;align-items:center;gap:20px;font-size:13px;color:var(--muted)}.head-links a{display:inline-flex;align-items:center;height:32px}.head-links a:hover{color:var(--text)}.lang{display:flex;align-items:center;gap:14px;margin-left:12px;height:20px}.lang a{position:relative;font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--dim);padding:6px 0 8px}.lang a:hover,.lang a.is-on{color:var(--text)}.lang a.is-on:after{content:"";position:absolute;left:0;right:0;bottom:2px;height:2px;background:var(--accent)}.wrap{width:min(1100px,100% - 32px);margin:0 auto;display:grid;grid-template-columns:var(--side) minmax(0,var(--col));gap:48px;padding:28px 0 48px;justify-content:space-between;min-height:calc(100vh - var(--head) - 90px)}.side{position:sticky;top:calc(var(--head) + 24px);align-self:start}.side a{display:flex;align-items:center;height:32px;padding:0 12px;border-left:2px solid transparent}.side a rect{transition:fill .15s}.side a:hover rect{fill:var(--text)}.side a.is-active{border-left-color:var(--accent)}.side a.is-active rect{fill:var(--text)}.main{min-width:0}.md h2[id],.md h3[id]{scroll-margin-top:calc(var(--head) + 16px)}.draft{margin:0 0 22px;padding:10px 14px;border-radius:var(--r);font-size:13px;color:var(--text);background:var(--card)}.mc-words{display:flex;flex-wrap:wrap;align-items:center}.page-title{margin:4px 0 8px;font-size:inherit}.md h2 .mc-words{padding-top:2px}.page-meta{margin:0 0 26px;color:var(--dim);font-size:13px}.dev-note{margin:-14px 0 22px;font-size:12px;color:var(--dim)}.md{color:var(--body)}.md p{margin:0 0 14px}.md h2{margin:34px 0 12px}.md h2:first-child{margin-top:0}.md h3{margin:22px 0 8px;font-size:15px;font-weight:700;color:var(--text)}.md ul,.md ol{margin:0 0 14px;padding-left:22px}.md li{margin:4px 0}.md li::marker{color:var(--dim)}.md a{color:var(--text);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--dim);overflow-wrap:anywhere}.md a:hover{text-decoration-color:var(--text)}.md code{font:500 13px/1 var(--mono);background:var(--card);padding:3px 6px;border-radius:4px;color:var(--text)}.md strong{color:var(--text);font-weight:600}.md hr{border:0;border-top:1px solid var(--line);margin:28px 0}.tbl-wrap{overflow-x:auto;margin:0 0 18px}.md table{width:100%;border-collapse:collapse;font-size:14px}.md th{text-align:left;padding:6px 14px 8px 0;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);border-bottom:1px solid var(--line);white-space:nowrap}.md td{padding:8px 14px 8px 0;border-bottom:1px solid var(--line);vertical-align:top}.md td:last-child,.md th:last-child{padding-right:0}.md blockquote{margin:0 0 14px;padding:0 0 0 22px}.md blockquote p:last-child{margin-bottom:0}.ph{background:var(--text);color:#000;font:600 12.5px/1.5 var(--mono);padding:1px 4px;box-decoration-break:clone;-webkit-box-decoration-break:clone}.sources{margin:36px 0 0;padding-top:14px;border-top:1px solid var(--line);font-size:12px;color:var(--dim)}.sources ul{margin:6px 0 0;padding-left:18px}.sources li{margin:2px 0;font-family:var(--mono);font-size:11.5px;color:var(--muted)}.footer{border-top:1px solid var(--line);padding:16px 20px 28px;display:grid;gap:8px;justify-items:center;text-align:center}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 18px;font-size:13px;color:var(--muted)}.footer-links a:hover{color:var(--text)}.footer-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 8px;color:var(--dim);font-size:11px}.footer-meta span+span:before{content:"·";margin-right:8px}.footer-meta a{color:var(--muted);text-decoration:underline;text-underline-offset:2px}.footer-meta a:hover{color:var(--text)}.credit{display:inline-flex;align-items:center;gap:5px;margin-left:4px}.head-icon{flex:none}@media(max-width:900px){.wrap{grid-template-columns:1fr;gap:0;padding-top:20px}.side{display:none;position:static;padding:0 0 16px;margin-bottom:20px;border-bottom:1px solid var(--line)}.side.is-open{display:block}.menu-btn{display:inline-flex}.head-links{display:none}.lang{margin-left:auto}}@media(max-width:480px){.footer-meta{flex-direction:column;align-items:center}.footer-meta span+span:before{content:none}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}@media print{@page{margin:18mm 16mm}html,body{background:#fff;color:#000}body{font:10.5pt/1.5 var(--font)}.head,.side,.footer,.dev-note,.sources,.lang{display:none!important}.print-only{display:block}.wrap{display:block;width:auto;padding:0;min-height:0}.draft{background:none;color:#000;padding:0;font-weight:600}.page-title rect,.md h2 rect{fill:#000}.page-meta,.print-url{margin:0 0 4pt;color:#000;font-size:9pt}.print-url{margin-bottom:16pt}.md,.md strong,.md h3,.md a{color:#000}.md a{text-decoration:none}.md a[href^=http]:after{content:" (" attr(href) ")";font-size:8.5pt}.md code{background:none;color:#000;padding:0}.md th,.md td{border-bottom:.5pt solid #000;color:#000}.md h2,.md h3{break-after:avoid}.md p,.md li,.md blockquote{break-inside:avoid}.ph{background:none;color:#000;text-decoration:underline}}
