:root{--canvas:#0f1117;--elevated:#121826;--well:#1a1c26;--code-bg:#0f172a;--ink:#f5f5f5;--body:#d1d5db;--mute:#a1a6b0;--faint:#7d8494;--hairline:#2a2c38;--link:#38bdf8;--link-deep:#f5f5f5;--link-soft:rgba(56,189,248,.15);--r-sm:6px;--r-md:12px;--r-pill:100px;--shadow-whisper:0 1px 1px rgba(0,0,0,.3);--shadow-float:0 2px 2px rgba(0,0,0,.3),0 8px 16px -4px rgba(0,0,0,.45);--sans:Ubuntu,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;--mono:"Ubuntu Mono",ui-monospace,SFMono-Regular,Menlo,monospace;--measure:68ch}*{margin:0;padding:0;box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--canvas);color:var(--body);font-family:var(--sans);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}a{color:inherit;text-decoration:none}::selection{background:var(--link);color:#0f1117}:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}strong{font-weight:600;color:var(--ink)}header{display:flex;align-items:center;justify-content:space-between;max-width:880px;margin:0 auto;padding:16px 20px;background:var(--canvas);border-bottom:1px solid var(--hairline)}.brand{display:inline-flex;align-items:center;font-size:16px;font-weight:600;color:var(--ink);letter-spacing:-.01em}.brand:hover{color:var(--mute)}header nav{display:flex;gap:4px}header nav a{font-size:14px;font-weight:500;color:var(--body);padding:6px 12px;border-radius:var(--r-pill);transition:color .15s,background .15s}header nav a:hover{color:var(--ink);background:var(--well)}.intro{max-width:880px;margin:0 auto;padding:48px 20px 40px;border-bottom:1px solid var(--hairline)}.meta{font-family:var(--mono);font-size:12.5px;font-weight:500;color:var(--mute);letter-spacing:.04em;text-transform:uppercase;margin-bottom:14px}.intro h1{font-family:var(--sans);font-size:clamp(2rem, 5vw, 2.75rem);font-weight:600;line-height:1.1;letter-spacing:-.03em;color:var(--ink);max-width:640px;margin:0 0 20px}.intro .lede{font-size:18px;line-height:1.7;color:var(--body);max-width:640px;margin:0 0 16px}.intro .lede:last-child{margin-bottom:0}.intro .lede a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(56,189,248,.4);transition:text-decoration-color .15s,color .15s}.intro .lede a:hover{color:var(--link-deep);text-decoration-color:var(--link-deep)}.intro pre{display:inline-block;background:var(--code-bg);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--shadow-whisper);padding:14px 18px;font-family:var(--mono);font-size:15px;color:var(--ink)}.layout{max-width:880px;margin:0 auto;padding:0 20px;display:grid;grid-template-columns:1fr;gap:0}.content{min-width:0}.side-nav{display:flex;flex-wrap:wrap;gap:4px 4px;padding-top:28px;padding-bottom:20px;border-bottom:1px solid var(--hairline);margin-bottom:8px}.side-title{display:none;font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin-bottom:14px}.side-nav a{display:block;font-size:14px;line-height:1.45;color:var(--mute);padding:5px 10px;background:var(--well);border-radius:var(--r-pill);border-left:none;transition:color .15s,border-color .15s}.side-nav a:hover{color:var(--ink)}.side-nav a.sub-link{font-size:14px;padding-left:10px}.side-nav a.active{background:var(--link-soft);color:var(--link-deep);border-left:none;font-weight:500}.content section{padding:48px 0;border-bottom:1px solid var(--hairline);scroll-margin-top:24px}.content section:last-child{border-bottom:none}.content h2,.content h3,.content h4,.content h5{font-family:var(--sans);font-weight:600;color:var(--ink);letter-spacing:-.02em;margin-top:2em;margin-bottom:.55em;line-height:1.3}.content h2{font-size:1.5rem;letter-spacing:-.025em;margin-top:0}.content h3{font-size:1.2rem;letter-spacing:-.015em}.content h4{font-size:1.125rem;letter-spacing:-.01em;color:var(--ink)}.content h5{font-family:var(--mono);font-size:.875rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;color:var(--mute)}.content h2~h3:first-of-type,.content section>h2+h3{margin-top:1.4em}.num{font-family:var(--mono);color:var(--link);margin-right:6px;font-weight:500}.content p{color:var(--body);max-width:var(--measure);margin-bottom:1.1em;font-size:17px;line-height:1.7}main ol,main ul{color:var(--body);padding-left:1.5em;margin:0 0 1.2em;font-size:17px;line-height:1.7;max-width:var(--measure)}.content li{margin-bottom:.45em}.content li::marker{color:var(--faint)}main li>ol,main li>ul{margin-top:.45em;margin-bottom:0}.content a,.lede a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(56,189,248,.4);transition:color .15s,text-decoration-color .15s}.content a:hover,.lede a:hover{color:var(--link-deep);text-decoration-color:var(--link-deep)}.content blockquote{margin:1.4em 0;padding:14px 20px;background:var(--elevated);border:1px solid var(--hairline);border-left:3px solid var(--link);border-radius:0 var(--r-sm) var(--r-sm) 0;color:var(--body);max-width:var(--measure)}.content blockquote p:last-child{margin-bottom:0}.content hr{border:none;border-top:1px solid var(--hairline);margin:2.5em 0}.content code{font-family:var(--mono);background:var(--well);color:var(--ink);padding:.15em .4em;border-radius:4px;font-size:.9em}pre{background:var(--code-bg);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--shadow-whisper);padding:1.1em 1.25em;overflow-x:auto;margin:1.4em 0 .6em;max-width:100%}pre code{background:0 0;padding:0;font-family:var(--mono);font-size:15px;line-height:1.7;color:var(--ink)}table{display:block;overflow-x:auto;border-collapse:collapse;width:100%;min-width:0;font-size:15px;background:var(--elevated);border:1px solid var(--hairline);border-radius:var(--r-md);box-shadow:var(--shadow-whisper);margin:1.4em 0 .6em}thead th{text-align:left;padding:.75em 1.1em;background:var(--well);color:var(--mute);font-family:var(--mono);font-weight:500;font-size:12px;letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid var(--hairline);white-space:nowrap}tbody td{padding:.75em 1.1em;border-bottom:1px solid var(--hairline);color:var(--body);vertical-align:top;line-height:1.6}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:rgba(56,189,248,.06)}td:first-child{color:var(--ink);font-weight:500;white-space:nowrap}table a{color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;text-decoration-color:rgba(56,189,248,.4)}table a:hover{color:var(--link-deep);text-decoration-color:var(--link-deep)}footer{max-width:880px;margin:48px auto 0;padding:40px 20px 48px;border-top:1px solid var(--hairline)}.footer-inner{display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.footer-links{display:flex;list-style:none;gap:20px}.footer-links a{font-size:14px;color:var(--mute);transition:color .15s}.footer-links a:hover{color:var(--ink)}@media (min-width:641px){.footer-inner{flex-direction:row}}.error-intro{max-width:880px;margin:0 auto;padding:110px 24px 130px;text-align:center}.error-title{font-family:var(--mono);font-size:clamp(1.75rem, 5vw, 2.5rem);font-weight:500;color:var(--ink);letter-spacing:-.02em;margin:0 0 18px}.error-message{font-size:17px;color:var(--body);max-width:440px;margin:0 auto;line-height:1.7}.error-links{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:36px}.error-links a{font-size:14px;font-weight:500;color:var(--link);padding:8px 18px;border:1px solid var(--hairline);border-radius:var(--r-pill);background:var(--elevated);box-shadow:var(--shadow-whisper);transition:color .15s,border-color .15s,box-shadow .15s}.error-links a:hover{color:var(--link-deep);border-color:var(--link-soft)}@media (min-width:721px){.layout{grid-template-columns:180px 1fr;gap:56px;padding:0 24px}.side-nav{display:block;position:sticky;top:24px;align-self:start;padding-top:48px;padding-bottom:0;border-bottom:none;margin-bottom:0;gap:0}.side-title{display:block}.side-nav a{font-size:15px;padding:5px 0 5px 12px;background:0 0;border-radius:0;border-left:1.5px solid var(--hairline)}.side-nav a.active{background:0 0;color:var(--link);border-left:1.5px solid var(--link)}.side-nav a.sub-link{padding-left:24px}header{padding:20px 24px}.intro{padding:72px 24px 56px}footer{padding:20px 24px 56px}.content h2{font-size:1.75rem}.content h3{font-size:1.3125rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,::after,::before{transition-duration:NaNs!important;animation-duration:NaNs!important}}