*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0}img,svg{max-width:100%;display:block}img{height:auto}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p,ul,figure{margin:0}ul{padding:0;list-style:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--focus,#2563eb);outline-offset:2px}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:#000;padding:8px 12px;z-index:100}.skip:focus{left:8px}
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal{opacity:1;transform:none;transition:none}*{animation:none!important;transition:none!important}}
:root{--bg:#fff;--bg2:#f6f8fb;--ink:#1a2330;--mut:#5b6778;--line:#e3e8ef;--acc:#0f6fdc;--acc-bg:#e8f1fd;--code:#0f1724;--codefg:#dbe4f0;--warn:#fff6e0;--warnb:#f0b429;--focus:#0f6fdc}
[data-theme=dark]{--bg:#0e131b;--bg2:#151c27;--ink:#e6ebf2;--mut:#9aa6b8;--line:#263142;--acc:#5aa6ff;--acc-bg:#16263d;--code:#0a0f16;--warn:#2a2414;--warnb:#b58a1d}
body{font:16px/1.7 -apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--acc)}code,kbd,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:14px;height:60px;padding:0 20px;background:var(--bg);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;text-decoration:none;color:var(--ink)}.brand span{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--acc);color:#fff}.brand em{font-style:normal;font-weight:400;color:var(--mut)}
.search-btn{margin-left:auto;display:flex;align-items:center;gap:10px;width:min(320px,40vw);padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg2);color:var(--mut);cursor:pointer}.search-btn span{flex:1;text-align:left}kbd{font-size:12px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:1px 6px;background:var(--bg)}.theme,.menu{background:none;border:1px solid var(--line);border-radius:10px;padding:8px;cursor:pointer;display:grid;place-items:center;color:var(--ink)}.theme:hover,.menu:hover{background:var(--bg2)}.menu{display:none}
.shell{display:grid;grid-template-columns:260px minmax(0,1fr);max-width:1400px;margin:0 auto}.side{position:sticky;top:60px;align-self:start;height:calc(100vh - 60px);overflow:auto;padding:26px 16px 40px 20px;border-right:1px solid var(--line)}.side h4{margin:22px 0 6px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}.side h4:first-child{margin-top:0}.side a{display:block;padding:6px 12px;border-radius:8px;text-decoration:none;color:var(--ink);font-size:15px}.side a:hover{background:var(--bg2)}.side a[aria-current]{background:var(--acc-bg);color:var(--acc);font-weight:600}
.doc{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:40px;padding:40px 36px 80px}.crumb{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--acc);margin:0 0 6px}article h1{font-size:38px;line-height:1.15;margin:0 0 12px}.lead{font-size:19px;color:var(--mut);margin:0 0 28px}article h2{font-size:24px;margin:40px 0 12px;padding-top:6px;scroll-margin-top:80px}article p{margin:0 0 14px}article ul{list-style:disc;padding-left:22px;margin:0 0 16px}article li{margin:4px 0}article :not(pre)>code{background:var(--bg2);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:.88em}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;margin:0 0 20px}.card{display:block;padding:18px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink);transition:border-color .2s,transform .2s,box-shadow .2s}.card:hover{border-color:var(--acc);transform:translateY(-2px);box-shadow:0 12px 24px -18px var(--acc)}.card h3{margin:0 0 4px;font-size:17px;color:var(--acc)}.card p{margin:0;color:var(--mut);font-size:14px}
.code{position:relative;margin:0 0 20px}.code::before{content:attr(data-lang);position:absolute;left:14px;top:8px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#7c8aa0}.code pre{margin:0;background:var(--code);color:var(--codefg);border-radius:12px;padding:34px 18px 16px;overflow-x:auto;font-size:14px;line-height:1.65}.copy{position:absolute;right:10px;top:8px;background:#1b2536;color:#c6d3e6;border:1px solid #2c3a52;border-radius:7px;padding:3px 10px;font-size:12px;cursor:pointer}.copy:hover{background:var(--acc);color:#fff;border-color:var(--acc)}
table{width:100%;border-collapse:collapse;margin:0 0 20px;font-size:15px}th,td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line)}th{background:var(--bg2);font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.note{background:var(--acc-bg);border-left:4px solid var(--acc);border-radius:8px;padding:12px 16px;margin:0 0 20px}.note.warn{background:var(--warn);border-color:var(--warnb)}.note b{margin-right:6px}.m{display:inline-block;font:700 12px ui-monospace,monospace;padding:2px 8px;border-radius:6px;color:#fff}.get{background:#16a34a}.post{background:#2563eb}.del{background:#dc2626}
.toc{position:sticky;top:90px;align-self:start;font-size:14px}.toc h4{margin:0 0 8px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}.toc ul{list-style:none;padding:0;margin:0;border-left:1px solid var(--line)}.toc a{display:block;padding:4px 0 4px 14px;margin-left:-1px;border-left:2px solid transparent;color:var(--mut);text-decoration:none}.toc a:hover{color:var(--ink)}.toc a.on{color:var(--acc);border-color:var(--acc)}
.pager{margin-top:50px;padding-top:20px;border-top:1px solid var(--line);color:var(--mut);font-size:15px}.vote{border:1px solid var(--line);background:var(--bg2);border-radius:8px;padding:4px 12px;cursor:pointer;margin-left:6px}.vote:hover{border-color:var(--acc)}
.sd{position:fixed;inset:0;z-index:60;background:rgba(10,16,26,.55);display:flex;justify-content:center;padding:12vh 16px 0}.sd[hidden]{display:none}.sd-box{width:min(620px,100%);max-height:70vh;overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:16px;padding:14px;align-self:flex-start;box-shadow:0 40px 80px -30px #000}#sq{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:var(--bg2);color:var(--ink);font-size:17px}#sr{margin:10px 0}#sr a{display:block;padding:10px 12px;border-radius:10px;text-decoration:none;color:var(--ink)}#sr a:hover,#sr a:focus{background:var(--acc-bg)}#sr b{display:block}#sr span{font-size:13px;color:var(--mut)}.none{padding:14px;color:var(--mut)}.sd-h{margin:0;font-size:12px;color:var(--mut);text-align:center}
@media (max-width:1100px){.doc{grid-template-columns:minmax(0,1fr)}.toc{display:none}}
@media (max-width:860px){.menu{display:grid}.shell{grid-template-columns:1fr}.side{display:none;position:fixed;inset:60px 0 0 0;z-index:25;height:auto;background:var(--bg);width:min(300px,86vw);box-shadow:30px 0 60px -30px #000}.side.open{display:block}.doc{padding:28px 18px 60px}article h1{font-size:30px}.search-btn{width:auto;margin-left:auto}.search-btn span,.search-btn kbd{display:none}.brand em{display:none}}
