@charset "UTF-8";
:root{--bg:#f7f6f0;--paper:#fffefb;--ink:#263d35;--muted:#65746d;--green:#153e35;--accent:#236451;--gold:#d6b875;--line:#dde3d9;--soft:#eaf0e6;--sans:Inter,"Segoe UI",system-ui,sans-serif;--serif:Georgia,"Times New Roman",serif;--mono:"Cascadia Code",Consolas,monospace}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:102px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.7 var(--sans)}a{color:var(--accent);text-underline-offset:3px}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid #c18529;outline-offset:4px}::selection{background:#e6d6ad;color:#16392e}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-100px;left:20px;background:white;padding:12px;z-index:100}.skip:focus{top:8px}[hidden]{display:none!important}
.topbar{height:78px;position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:32px;background:var(--green);color:white;padding:0 32px;border-bottom:1px solid #33574c}.brand{display:flex;align-items:center;gap:12px;min-width:204px;text-decoration:none;color:#fff9e9;font:700 23px/1 var(--serif);letter-spacing:-.5px}.brand small{display:block;font:600 9px/1.7 var(--sans);letter-spacing:2.1px;color:#d4ddce;margin-top:5px}.brand-icon{display:grid;place-items:center;width:38px;height:42px;color:var(--gold)}.brand-icon svg{width:35px;height:35px}.search-wrap{position:relative;max-width:510px;flex:1}.search-wrap input{border:1px solid #49675d;border-radius:6px;background:#294b40;color:white;padding:10px 43px 10px 17px;width:100%;font-size:14px;min-height:43px}.search-wrap input::placeholder{color:#cfdbd1;opacity:1}.search-wrap>kbd{position:absolute;right:14px;top:10px;border:1px solid #70847b;color:#c6d4ca;padding:0 6px;border-radius:3px;font:13px/22px var(--mono);pointer-events:none}.toplinks{margin-left:auto;display:flex;gap:22px;align-items:center;font-size:13px;white-space:nowrap}.toplinks a{color:#f4f5ec;text-decoration:none}.language{font-weight:700;border:1px solid #557064;padding:4px 10px;border-radius:4px}.download{font-weight:600}.download span{margin-left:8px;color:var(--gold)}.mobile-menu{display:none;border:1px solid #759285;background:transparent;color:white;border-radius:4px;padding:6px 10px}
.layout{display:grid;grid-template-columns:236px minmax(0,1000px) 175px;max-width:1535px;margin:auto;min-height:calc(100vh - 78px)}#sidebar{position:sticky;top:78px;align-self:start;height:calc(100vh - 78px);padding:35px 18px 24px 26px;border-right:1px solid var(--line);overflow-y:auto}.sidebar-label{text-transform:uppercase;letter-spacing:1.7px;font-size:10px;font-weight:750;color:#778477;margin:0 12px 16px}#sidebar nav{display:grid;gap:3px}#sidebar nav a{display:flex;align-items:baseline;gap:12px;border-radius:5px;padding:9px 11px;color:#516357;font-size:13px;line-height:1.55;text-decoration:none}#sidebar nav a span{font:11px var(--mono);color:#83907f}#sidebar nav a:hover{background:#ebeee5;color:var(--green)}#sidebar nav a[aria-current]{background:#e4eddf;color:#244f36;font-weight:650;box-shadow:inset 3px 0 #467946}.nav-home{margin-bottom:10px}.version{margin:30px 12px 0;border-top:1px solid var(--line);padding-top:23px;font-size:11px}.version strong{margin-left:4px}.version small{display:block;font-size:10px;margin:4px 0 0 12px;color:var(--muted)}.version-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#5c9157;margin-right:7px}.repo-link{display:flex;justify-content:space-between;margin:23px 12px 0;font-size:12px;color:var(--muted);text-decoration:none}main{min-width:0;padding:42px 44px 0}.page-toc{position:sticky;top:112px;align-self:start;padding:12px 16px 20px 0;font-size:11px;line-height:1.65;max-height:calc(100vh - 120px);overflow-y:auto}.page-toc .sidebar-label{margin-left:0}.page-toc nav{display:grid;gap:12px;border-left:1px solid var(--line);padding-left:14px}.page-toc a{color:var(--muted);text-decoration:none}.page-toc a:hover{color:var(--accent)}
.hero{position:relative;isolation:isolate;overflow:hidden;background:#e9eee2;border:1px solid #d7e1cf;border-radius:8px;padding:38px 37px 39px;min-height:315px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:1.65px;color:#487050;display:flex;align-items:center;gap:14px;margin:0 0 17px}.eyebrow span{font-size:9px;letter-spacing:.8px;border-left:1px solid #adbea8;padding-left:14px;font-weight:550}.hero h1{font:400 clamp(36px,3.7vw,54px)/1.08 var(--serif);letter-spacing:-1.9px;max-width:520px;margin:0 0 22px;color:#244c35}.hero>p{max-width:445px;font-size:14px;color:#53684e;line-height:1.8;margin:0 0 27px}.hero-actions{display:flex;align-items:center;gap:24px;font-size:12px;flex-wrap:wrap}.hero-actions a{text-decoration:none;font-weight:600}.primary{display:inline-flex;gap:26px;align-items:center;background:var(--green);color:white;padding:11px 17px;border-radius:4px;box-shadow:0 3px 0 #102f28}.primary:hover{background:#245a44}.hero-art{position:absolute;z-index:-1;right:-22px;bottom:-9px;opacity:.12;color:#42693e;width:230px;transform:rotate(-4deg)}.hero-art svg{width:100%;height:225px}.hero-art>span{display:block;font:600 9px var(--mono);letter-spacing:4px;text-align:center;transform:translateY(-30px)}.home-section{margin-top:43px}.section-heading>span{font:10px var(--mono);color:#768573;letter-spacing:1px}.section-heading h2{font:400 29px/1.2 var(--serif);letter-spacing:-.8px;margin:9px 0 10px;color:#2b4c37}.section-heading p{font-size:13px;color:var(--muted);margin:0 0 21px}.chapters{display:grid;grid-template-columns:1fr 1fr;gap:13px}.chapter-card{position:relative;display:block;background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:21px 23px 21px;text-decoration:none;transition:border-color .15s,transform .15s}.chapter-card:hover{border-color:#729370;transform:translateY(-2px)}.chapter-number{font:10px var(--mono);letter-spacing:1px;color:#84927c}.chapter-card h3{font-size:15px;font-weight:650;line-height:1.45;margin:7px 20px 8px 0;color:#294d36}.chapter-card p{font-size:12px;color:#6a7768;line-height:1.7;margin:0;max-width:280px}.card-arrow{position:absolute;right:20px;top:25px;color:#7c9476;font-size:16px}.compat-note{display:flex;gap:20px;background:#f1eddf;border:1px solid #e2dcc6;border-radius:6px;margin-top:29px;padding:22px 25px}.note-symbol{color:#9c793b;font-size:26px;line-height:1.4}.compat-note h2{font-size:15px;margin:0 0 7px;font-weight:650}.compat-note p{font-size:12px;line-height:1.8;color:#746b53;margin:0 0 10px}.compat-note a{font-size:12px;font-weight:650;color:#775d28}.steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:21px;margin:22px 0 30px}.steps-grid a{text-decoration:none;border-top:2px solid #b9c9af;padding-top:15px}.steps-grid a:hover{border-color:#467946}.steps-grid span{font:11px var(--mono);color:#7d8f74}.steps-grid h3{font-size:13px;line-height:1.5;margin:7px 0}.steps-grid p{font-size:12px;color:var(--muted);line-height:1.7;margin:0}.version-note{font-size:11px;color:#7b8574;padding-top:18px;border-top:1px solid var(--line)}
.article-header{padding-bottom:27px;border-bottom:1px solid var(--line);margin-bottom:28px}.article-header h1{font:400 clamp(32px,3.4vw,46px)/1.12 var(--serif);letter-spacing:-1.3px;color:#244c35;margin:0 0 16px}.article-header>p{color:var(--muted);font-size:16px;line-height:1.75;max-width:720px;margin:0}.prose{font-size:14px;line-height:1.85;overflow-wrap:break-word}.prose h2{font:400 28px/1.25 var(--serif);letter-spacing:-.55px;color:#244c35;margin:42px 0 18px;scroll-margin-top:103px}.prose h2:first-child{margin-top:0}.prose h3{font-size:17px;font-weight:650;line-height:1.5;margin:27px 0 10px;color:#264c37}.prose h4{font-size:14px;margin:24px 0 10px}.prose p{margin:12px 0 18px}.prose strong{font-weight:650;color:#24452f}.prose ul,.prose ol{padding-left:24px;margin:14px 0 23px}.prose li{margin:9px 0;padding-left:3px}.prose li::marker{color:#5f7f54;font-weight:650}.prose code{font:12px/1.7 var(--mono);background:#eaf0e6;color:#38633e;padding:2px 5px;border-radius:3px;overflow-wrap:anywhere}.prose kbd{font:12px var(--mono);border:1px solid #b7c6ad;border-bottom-width:2px;padding:2px 6px;border-radius:3px}.code-wrap{position:relative;margin:20px 0}.prose pre{margin:0;overflow:auto;padding:43px 20px 20px;background:#19382f;color:#e3ecda;border-radius:5px;font:12px/1.85 var(--mono);border:1px solid #294b3d;tab-size:2}.prose pre code{background:none;padding:0;border:none;color:inherit;font:inherit;overflow-wrap:normal}.copy-code{position:absolute;top:9px;right:10px;background:#2c5041;border:1px solid #54725d;border-radius:3px;color:#e0ead9;padding:3px 9px;font-size:10px}.copy-code:hover{background:#3f614d}.table-scroll{overflow-x:auto;margin:20px 0 27px;border:1px solid var(--line);border-radius:5px;max-width:100%}table{border-collapse:collapse;width:100%;font-size:12px;line-height:1.7;background:var(--paper)}th{text-align:left;background:#eaf0e5;color:#38533a;font-size:11px;padding:12px 14px;font-weight:650}td{padding:12px 14px;border-top:1px solid #e4e8de;vertical-align:top;min-width:110px}td:first-child{color:#314f35}tr:nth-child(even) td{background:#fafbf5}.prose blockquote,.prose .note,.prose .callout,.prose aside{margin:22px 0;padding:12px 19px;background:#f1eddf;border:1px solid #e2dcc6;border-left:3px solid #b19557;border-radius:4px;color:#665a3d}.prose .note p:last-child,.prose .callout p:last-child{margin-bottom:8px}.prose details{border:1px solid var(--line);border-radius:5px;padding:12px 16px;margin:12px 0;background:var(--paper)}.prose summary{cursor:pointer;font-weight:600}.pager{display:flex;gap:16px;margin-top:45px;border-top:1px solid var(--line);padding-top:25px}.pager a{flex:1;display:block;max-width:50%;border:1px solid var(--line);border-radius:5px;padding:16px;font-size:14px;text-decoration:none;background:#fffdf8}.pager a:last-child{margin-left:auto;text-align:right}.pager small{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.pager a:hover{border-color:#789873}footer{display:flex;align-items:baseline;gap:16px;margin-top:40px;padding:22px 0 26px;border-top:1px solid var(--line);font-size:10px;line-height:1.8;color:#6b7a65;flex-wrap:wrap}footer p{margin:0;margin-right:auto}footer span{color:#89917f}footer a{color:#6b7a65;text-decoration:none}
#search-results{position:absolute;left:0;right:-80px;top:51px;max-height:70vh;overflow:auto;border:1px solid #b9cbb0;border-radius:6px;background:var(--paper);color:var(--ink);padding:17px;box-shadow:0 14px 40px #173d352d}#search-status{font-size:11px;margin:0 0 10px;color:var(--muted)}#search-links{display:grid;gap:3px}#search-links a{padding:11px;border-radius:4px;text-decoration:none;display:block;color:var(--ink)}#search-links a:hover,#search-links a:focus{background:#ecf2e6}#search-links strong{display:block;font-size:13px}#search-links small{display:block;font-size:10px;line-height:1.6;color:var(--muted);margin:3px 0}#search-links p{font-size:11px;line-height:1.6;margin:3px 0}#close-search{display:block;margin:12px 0 0 auto;padding:4px 12px;border:1px solid var(--line);border-radius:4px;background:#edf2e6;color:var(--green);font-size:11px}
@media(min-width:1480px){.hero h1{max-width:540px}.hero>p{max-width:490px}.hero-art{right:15px;width:250px}.hero-art svg{height:250px}}
@media(max-width:1200px){.layout{grid-template-columns:215px minmax(0,1fr)}.page-toc{display:none}main{padding:35px 37px 0}#sidebar{padding-left:18px}.topbar{padding:0 25px;gap:24px}.brand{min-width:166px}.hero-art{right:0;width:200px}.hero>p{max-width:80%}}
@media(max-width:780px){.topbar{height:auto;min-height:72px;flex-wrap:wrap;gap:12px;padding:14px 19px}.brand{min-width:0;font-size:21px}.brand-icon{width:28px}.brand small{font-size:8px}.toplinks{gap:13px;margin-left:auto}.toplinks .download{display:none}.mobile-menu{display:block;font-size:11px}.search-wrap{order:4;flex-basis:100%;max-width:none}.search-wrap input{min-height:37px;padding:7px 40px 7px 12px;font-size:13px}.search-wrap>kbd{top:7px}.layout{display:block}#sidebar{display:none;position:fixed;z-index:45;top:127px;left:0;width:280px;max-width:85vw;height:calc(100vh - 127px);background:var(--bg);box-shadow:8px 0 30px #19382f20;padding:25px 18px}#sidebar.open{display:block}main{padding:23px 21px 0}.hero{padding:30px 25px;min-height:310px}.hero h1{font-size:40px;max-width:370px}.hero>p{max-width:92%}.hero-art{width:170px;right:-40px;opacity:.08}.hero-art svg{height:170px}.hero-actions{gap:17px}.chapters{gap:11px}.chapter-card{padding:17px}.chapter-card h3{font-size:14px}.chapter-card p{font-size:11px}.card-arrow{right:15px;top:20px}.section-heading h2{font-size:27px}.steps-grid{gap:15px}.compat-note{padding:19px;gap:14px}.home-section{margin-top:32px}.article-header h1{font-size:37px}.article-header>p{font-size:14px}.prose h2{font-size:26px;scroll-margin-top:145px}.prose{font-size:14px}.page-toc{display:none}html{scroll-padding-top:145px}#search-results{left:0;right:0;top:45px;max-height:60vh}.eyebrow{font-size:9px;letter-spacing:1px}.eyebrow span{font-size:8px}.pager a{font-size:12px;padding:12px}footer{font-size:9px}}
@media(max-width:440px){main{padding:18px 14px 0}.hero{padding:27px 21px}.hero h1{font-size:37px}.hero>p{max-width:100%;font-size:13px}.hero-actions{gap:18px;font-size:11px}.hero-actions .primary{gap:15px}.chapters{grid-template-columns:1fr}.chapter-card{padding:18px 20px}.chapter-card h3{font-size:15px}.chapter-card p{font-size:12px;max-width:95%}.steps-grid{grid-template-columns:1fr}.steps-grid a{display:grid;grid-template-columns:25px 1fr;gap:4px 9px;padding-top:11px}.steps-grid h3{margin:0}.steps-grid p{grid-column:2}.steps-grid span{line-height:2}.article-header h1{font-size:33px}.prose pre{font-size:11px}.pager{gap:9px}.topbar{padding:12px 15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{.topbar,#sidebar,.page-toc,.pager,.copy-code,.hero-art,.skip{display:none!important}.layout{display:block}body{background:white;color:#111;font-size:11pt}main{padding:0}.hero{background:white;border:0;padding:0}.chapters{grid-template-columns:1fr 1fr}.prose{font-size:11pt}.prose pre{white-space:pre-wrap;color:#111;background:#f3f3f3;padding:12px}.prose h2{break-after:avoid}.table-scroll{overflow:visible}.prose table{font-size:9pt}.prose a{color:#111}.prose a[href^="http"]:after{content:" (" attr(href) ")";font-size:8pt}footer{font-size:8pt}.code-wrap{break-inside:avoid}}
