:root{color-scheme:dark;--term-bg:#0d1117;--term-panel:#161b22;--term-panel-2:#1c2128;--term-panel-3:#21262d;--term-line:#30363d;--term-line-light:#3d444d;--term-fg:#e6edf3;--term-dim:#8b949e;--term-cyan:#58a6ff;--term-cyan-weak:#1f6feb;--term-green:#3fb950;--term-orange:#d29922;--term-purple:#bc8cff;--term-red:#f85149;--term-cyan-bright:#39c5cf;--term-code-bg:#11161d;--term-code-line:#1f2630;--term-shadow:0 8px 30px rgba(1,4,9,0.45);--term-radius:12px;--term-mono:ui-monospace,"SF Mono","Cascadia Code","JetBrains Mono",Consolas,"Courier New",monospace;--font-body:system-ui,-apple-system,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;}*{margin:0;padding:0;box-sizing:border-box;}html{scroll-behavior:smooth;}html,body{overflow-x:clip;}body{font-family:var(--font-body);background-color:var(--term-bg);background-image:linear-gradient(rgba(110,130,160,0.05) 1px,transparent 1px),linear-gradient(90deg,rgba(110,130,160,0.05) 1px,transparent 1px);background-size:36px 36px;color:var(--term-fg);line-height:1.75;font-size:1rem;-webkit-font-smoothing:antialiased;}img,svg,video{max-width:100%;height:auto;display:block;}a{color:var(--term-cyan);text-decoration:none;}a:hover{text-decoration:underline;}::selection{background:rgba(88,166,255,0.3);}:focus-visible{outline:2px solid var(--term-cyan);outline-offset:2px;border-radius:4px;}.container{max-width:1160px;margin:0 auto;padding:0 24px;}h1,h2,h3,h4{line-height:1.35;font-weight:700;}.skip-link{position:absolute;left:-999px;top:0;background:var(--term-cyan);color:#fff;padding:10px 18px;border-radius:0 0 8px 0;z-index:100;font-weight:600;}.skip-link:focus{left:0;color:#fff;}.site-header{position:sticky;top:0;z-index:50;background:rgba(13,17,23,0.85);backdrop-filter:blur(12px);border-bottom:1px solid var(--term-line);}.nav-wrap{display:flex;align-items:center;justify-content:space-between;height:64px;}.brand{display:flex;align-items:center;gap:10px;color:var(--term-fg);font-weight:700;font-size:1.125rem;}.brand:hover{text-decoration:none;}.brand-mark{color:var(--term-cyan);}.brand-text em{font-style:normal;color:var(--term-cyan);font-family:var(--term-mono);font-size:0.9375rem;margin-left:4px;}.site-nav{display:flex;gap:4px;}.site-nav a{color:var(--term-dim);font-size:0.9375rem;padding:7px 12px;border-radius:8px;font-weight:500;transition:color .15s,background .15s;}.site-nav a:hover{color:var(--term-fg);background:var(--term-panel-3);text-decoration:none;}.site-nav a.active{color:var(--term-fg);background:var(--term-panel-3);}.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:1px solid var(--term-line);border-radius:8px;padding:9px;cursor:pointer;}.nav-toggle span{display:block;width:20px;height:2px;background:var(--term-fg);border-radius:2px;transition:transform .2s,opacity .2s;}.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg);}.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0;}.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}.breadcrumb{font-size:0.875rem;color:var(--term-dim);padding:16px 0 0;max-width:1160px;margin:0 auto;}.container + .breadcrumb,.breadcrumb + .container{padding-top:24px;}main > .breadcrumb{padding-left:24px;padding-right:24px;}.breadcrumb a{color:var(--term-dim);padding:4px 2px;}.breadcrumb a:hover{color:var(--term-cyan);}.breadcrumb span[aria-current="page"]{color:var(--term-fg);}.page-hero{padding:88px 0 64px;background-color:var(--term-bg);background-image:radial-gradient(ellipse 80% 60% at 75% -10%,rgba(88,166,255,0.14),transparent 60%),radial-gradient(ellipse 60% 50% at 15% 10%,rgba(63,185,80,0.08),transparent 55%),linear-gradient(rgba(110,130,160,0.05) 1px,transparent 1px),linear-gradient(90deg,rgba(110,130,160,0.05) 1px,transparent 1px);background-size:100% 100%,100% 100%,36px 36px,36px 36px;border-bottom:1px solid var(--term-line);}.hero-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:56px;align-items:center;}.hero-kicker{display:inline-flex;align-items:center;gap:8px;font-family:var(--term-mono);font-size:0.8125rem;letter-spacing:1px;color:var(--term-green);border:1px solid var(--term-line);padding:5px 12px;border-radius:999px;background:var(--term-panel);}.hero-kicker .pulse{width:7px;height:7px;border-radius:50%;background:var(--term-green);animation:pulse 1.6s infinite;}@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.35;}}.page-hero h1{font-size:2.75rem;line-height:1.2;margin:20px 0 16px;letter-spacing:-0.5px;}.page-hero h1 .grad{background:linear-gradient(90deg,var(--term-cyan),var(--term-green));-webkit-background-clip:text;background-clip:text;color:transparent;}.lead{font-size:1.125rem;color:var(--term-dim);max-width:620px;margin-bottom:28px;}.hero-actions{display:flex;gap:12px;flex-wrap:wrap;}.btn{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:0.9375rem;padding:10px 22px;border-radius:8px;border:1px solid transparent;cursor:pointer;transition:transform .12s,box-shadow .12s,background .12s;min-height:44px;}.btn:hover{text-decoration:none;transform:translateY(-1px);}.btn-primary{background:var(--term-cyan);color:#0d1117;}.btn-primary:hover{box-shadow:0 6px 20px rgba(88,166,255,0.35);}.btn-secondary{background:var(--term-panel);color:var(--term-fg);border-color:var(--term-line);}.btn-secondary:hover{border-color:var(--term-cyan);}.btn-ghost{background:transparent;color:var(--term-cyan);border-color:var(--term-line-light);}.btn-ghost:hover{border-color:var(--term-cyan);}.term-window{border-radius:12px;overflow:hidden;border:1px solid var(--term-line);box-shadow:var(--term-shadow);background:var(--term-code-bg);font-family:var(--term-mono);}.term-bar{display:flex;align-items:center;gap:7px;background:var(--term-panel-2);padding:10px 14px;border-bottom:1px solid var(--term-line);}.dot{width:11px;height:11px;border-radius:50%;}.dot-r{background:#ff5f57;}.dot-y{background:#febc2e;}.dot-g{background:#28c840;}.term-title{margin-left:10px;font-size:0.75rem;color:var(--term-dim);}.term-body{padding:18px 20px 20px;font-size:0.8125rem;line-height:1.7;overflow-x:auto;color:var(--term-fg);tab-size:2;}.tk-c{color:var(--term-dim);}.tk-k{color:var(--term-purple);}.tk-s{color:var(--term-green);}.tk-p{color:var(--term-cyan-bright);}.tk-n{color:var(--term-orange);}.tk-fn{color:var(--term-cyan);}.tk-g{color:var(--term-green);}.section{padding:72px 0;}.section-alt{background:var(--term-panel);border-top:1px solid var(--term-line);border-bottom:1px solid var(--term-line);}.section-head{display:flex;align-items:center;gap:14px;margin-bottom:36px;flex-wrap:wrap;}.eyebrow{font-family:var(--term-mono);font-size:0.8125rem;letter-spacing:2px;color:var(--term-cyan);text-transform:uppercase;}.section-head h2{font-size:1.875rem;margin:0;}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}.feature-card{background:var(--term-panel);border:1px solid var(--term-line);border-radius:var(--term-radius);padding:26px;transition:border-color .15s,transform .15s;}.feature-card:hover{border-color:var(--term-cyan);transform:translateY(-2px);}.feature-icon{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.375rem;font-family:var(--term-mono);font-weight:700;margin-bottom:16px;background:var(--term-panel-3);color:var(--term-cyan);border:1px solid var(--term-line);}.feature-card h3{font-size:1.0625rem;margin-bottom:8px;}.feature-card p{font-size:0.875rem;color:var(--term-dim);}.split{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;}.split h2{font-size:1.75rem;margin-bottom:14px;}.split p{color:var(--term-dim);margin-bottom:12px;}.code-block{background:var(--term-code-bg);border:1px solid var(--term-line);border-radius:10px;overflow:hidden;margin:16px 0;}.code-head{display:flex;gap:6px;align-items:center;background:var(--term-panel-2);padding:8px 14px;border-bottom:1px solid var(--term-line);font-family:var(--term-mono);font-size:0.75rem;color:var(--term-dim);}.code-head .mini{width:9px;height:9px;border-radius:50%;background:var(--term-line-light);}.code-block pre{padding:16px 18px;overflow-x:auto;font-family:var(--term-mono);font-size:0.84375rem;line-height:1.7;color:var(--term-fg);}.code-block code{font-family:inherit;}.quick-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:40px;}.step-card{background:var(--term-panel);border:1px solid var(--term-line);border-radius:var(--term-radius);padding:20px;position:relative;}.step-num{font-family:var(--term-mono);font-weight:800;font-size:1.625rem;color:var(--term-cyan);opacity:0.75;}.step-card h3{font-size:0.9375rem;margin:8px 0 6px;}.step-card p{font-size:0.8125rem;color:var(--term-dim);}.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}.article-card{display:block;background:var(--term-panel);border:1px solid var(--term-line);border-radius:var(--term-radius);padding:24px;transition:border-color .15s,transform .15s;}.article-card:hover{border-color:var(--term-cyan);transform:translateY(-2px);text-decoration:none;}.article-card .tag{font-family:var(--term-mono);font-size:0.75rem;color:var(--term-green);display:inline-block;margin-bottom:10px;}.article-card h3{color:var(--term-fg);font-size:1.0625rem;margin-bottom:8px;}.article-card p{color:var(--term-dim);font-size:0.875rem;}.table-wrap{overflow-x:auto;margin:16px 0;}table{width:100%;border-collapse:collapse;font-size:0.90625rem;background:var(--term-panel);border:1px solid var(--term-line);border-radius:10px;overflow:hidden;}th,td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--term-line);}th{background:var(--term-panel-2);font-weight:600;}tr:last-child td{border-bottom:none;}td a{padding:4px 0;}tbody tr:hover{background:var(--term-panel-2);}.callout{border:1px solid var(--term-line);border-left:4px solid var(--term-cyan);border-radius:10px;padding:14px 18px;margin:18px 0;background:var(--term-panel);font-size:0.9375rem;}.callout-info{border-left-color:var(--term-cyan);}.callout-warn{border-left-color:var(--term-orange);}.callout-tip{border-left-color:var(--term-green);}.callout strong{font-weight:600;}.article-body h2{font-size:1.5rem;margin:40px 0 14px;padding-top:8px;border-top:1px solid var(--term-line);padding-top:28px;}.article-body h2:first-of-type{border-top:none;padding-top:0;}.article-body h3{font-size:1.1875rem;margin:26px 0 10px;}.article-body p{margin:12px 0;color:var(--term-fg);}.article-body ul,.article-body ol{margin:12px 0 12px 24px;}.article-body li{margin:6px 0;}.article-body code{font-family:var(--term-mono);font-size:0.88em;background:var(--term-panel-3);color:var(--term-orange);padding:2px 6px;border-radius:5px;overflow-wrap:anywhere;word-break:break-word;}.article-body a{text-decoration:underline;text-underline-offset:2px;}.toc{background:var(--term-panel);border:1px solid var(--term-line);border-radius:10px;padding:18px 22px;margin:20px 0 28px;font-size:0.90625rem;}.toc strong{display:block;margin-bottom:10px;color:var(--term-dim);font-family:var(--term-mono);font-size:0.75rem;letter-spacing:1px;}.toc ol{margin-left:20px;columns:2;column-gap:36px;}.toc li{margin:4px 0;break-inside:avoid;}.toc a{color:var(--term-dim);}.toc a:hover{color:var(--term-cyan);}@media (max-width:640px){.toc ol{columns:1;}}.article-meta{margin:0.9rem 0 0;font-size:0.92rem;color:var(--term-dim);font-family:var(--term-mono);}.article-meta .commit-date{color:var(--term-green);}.timeline-list{display:grid;gap:20px;}.timeline-entry{background:var(--term-panel);border:1px solid var(--term-line);border-radius:var(--term-radius);padding:20px 24px;}.timeline-entry time.commit-date{font-family:var(--term-mono);font-size:0.8rem;color:var(--term-green);}.timeline-entry h2{font-size:1.125rem;margin:6px 0 6px;color:var(--term-fg);}.timeline-entry p{margin:0;color:var(--term-dim);font-size:0.9rem;}.related-reads{margin-top:44px;border-top:1px solid var(--term-line);padding-top:28px;}.related-reads h3{font-size:1.125rem;margin-bottom:16px;color:var(--term-dim);font-family:var(--term-mono);letter-spacing:1px;}.related-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;}.related-card{display:block;background:var(--term-panel);border:1px solid var(--term-line);border-radius:10px;padding:18px 20px;min-height:48px;}.related-card:hover{border-color:var(--term-cyan);text-decoration:none;}.related-card span{display:block;font-size:0.75rem;color:var(--term-green);font-family:var(--term-mono);margin-bottom:6px;}.related-card strong{color:var(--term-fg);font-size:0.9375rem;}.article-pager{display:flex;justify-content:space-between;gap:16px;margin-top:40px;border-top:1px solid var(--term-line);padding-top:24px;flex-wrap:wrap;}.pager-index{background:var(--term-panel);border:1px solid var(--term-line);border-radius:10px;padding:14px 20px;color:var(--term-dim);font-size:0.875rem;text-align:center;min-height:48px;}.pager-index:hover{border-color:var(--term-cyan);color:var(--term-fg);text-decoration:none;}.pager-index b{display:block;font-size:0.75rem;font-weight:400;color:var(--term-green);font-family:var(--term-mono);margin-bottom:2px;}.faq-item{background:var(--term-panel);border:1px solid var(--term-line);border-radius:10px;margin-bottom:12px;overflow:hidden;}.faq-item summary{padding:16px 20px;cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;align-items:center;}.faq-item summary::-webkit-details-marker{display:none;}.faq-item summary::after{content:"+";font-size:1.25rem;color:var(--term-cyan);transition:transform .2s;}.faq-item[open] summary::after{transform:rotate(45deg);}.faq-answer{padding:0 20px 18px;color:var(--term-dim);font-size:0.9375rem;}.faq-answer a{padding:4px 0;}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}.form-group label{font-size:0.875rem;font-weight:600;}.form-group input,.form-group textarea{background:var(--term-panel);border:1px solid var(--term-line);border-radius:8px;padding:12px 14px;color:var(--term-fg);font-family:inherit;font-size:0.9375rem;}.form-group input:focus,.form-group textarea:focus{outline:2px solid var(--term-cyan);outline-offset:-1px;border-color:transparent;}.form-group textarea{resize:vertical;min-height:130px;}.form-hint{margin:0.8rem 0 0;font-size:0.9rem;color:var(--term-dim);}.form-hint.ok{color:var(--term-green);}.form-hint.warn{color:var(--term-orange);}.dl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}.dl-card{background:var(--term-panel);border:1px solid var(--term-line);border-radius:var(--term-radius);padding:26px;text-align:center;transition:border-color .15s,transform .15s;}.dl-card:hover{border-color:var(--term-cyan);transform:translateY(-2px);text-decoration:none;}.dl-card .dl-icon{font-size:1.875rem;margin-bottom:10px;}.dl-card h3{font-size:1rem;margin-bottom:6px;}.dl-card p{font-size:0.8125rem;color:var(--term-dim);}.qr-dl{display:grid;grid-template-columns:auto 1fr;gap:34px;align-items:center;background:var(--term-panel);border:1px solid var(--term-line);border-radius:var(--term-radius);padding:30px;}.qr-dl-figure{margin:0;text-align:center;}.qr-dl-figure img{display:block;width:184px;height:auto;margin:0 auto;background:#fff;border-radius:10px;padding:8px;}.qr-dl-figure figcaption{margin-top:12px;font-size:0.8125rem;color:var(--term-dim);}.qr-dl-body{min-width:0;}.qr-dl-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:14px;}.qr-dl-key{flex:none;font-family:var(--term-mono);font-size:0.75rem;letter-spacing:.04em;color:var(--term-dim);text-transform:uppercase;}.qr-dl-url{font-family:var(--term-mono);font-size:0.9rem;color:var(--term-fg);background:var(--term-code-bg);border:1px solid var(--term-line);border-radius:8px;padding:7px 12px;word-break:break-all;}.qr-dl-url:hover{border-color:var(--term-cyan);text-decoration:none;}.qr-dl-code{font-family:var(--term-mono);font-size:1rem;font-weight:600;letter-spacing:.08em;color:var(--term-cyan);background:var(--term-code-bg);border:1px solid var(--term-line);border-radius:8px;padding:5px 14px;}.qr-dl-btn{margin-top:6px;}.qr-dl-note{margin-top:16px;font-size:0.8125rem;color:var(--term-dim);}.notfound{text-align:center;padding:110px 0 90px;}.notfound .code404{font-family:var(--term-mono);font-size:6rem;font-weight:800;color:var(--term-cyan);line-height:1;}.notfound h1{font-size:1.75rem;margin:18px 0 10px;}.notfound p{color:var(--term-dim);margin-bottom:30px;}.notfound-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}.popular-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:44px;}.popular-card{background:var(--term-panel);border:1px solid var(--term-line);border-radius:10px;padding:16px;font-size:0.875rem;color:var(--term-fg);}.popular-card:hover{border-color:var(--term-cyan);text-decoration:none;}.popular-card span{display:block;font-size:0.6875rem;color:var(--term-green);font-family:var(--term-mono);margin-bottom:4px;}.sitemap-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 32px;margin-top:18px;}.sitemap-grid a{color:var(--term-dim);padding:5px 0;font-size:0.9375rem;}.sitemap-grid a:hover{color:var(--term-cyan);}@media (max-width:640px){.sitemap-grid{grid-template-columns:1fr;}}.site-footer{border-top:1px solid var(--term-line);background:var(--term-panel);margin-top:40px;}.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:32px;padding:52px 24px 36px;}.footer-brand{font-weight:800;font-size:1.125rem;}.footer-brand em{font-style:normal;color:var(--term-cyan);font-family:var(--term-mono);margin-left:4px;}.footer-tag{color:var(--term-dim);font-size:0.84375rem;margin-top:8px;}.footer-col h2{font-size:0.875rem;margin-bottom:14px;color:var(--term-fg);}.footer-col a{display:block;color:var(--term-dim);font-size:0.875rem;padding:4px 0;}.footer-col a:hover{color:var(--term-cyan);}.footer-bottom{border-top:1px solid var(--term-line);padding:20px 24px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--term-dim);font-size:0.8125rem;}.footer-bottom a{color:var(--term-dim);}.footer-bottom a:hover{color:var(--term-cyan);}.back-top{position:fixed;right:24px;bottom:24px;width:44px;height:44px;border-radius:10px;border:1px solid var(--term-line);background:var(--term-panel);color:var(--term-fg);font-size:1.125rem;cursor:pointer;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .2s,transform .2s,visibility .2s;z-index:40;}.back-top.show{opacity:1;visibility:visible;transform:translateY(0);}.back-top:hover{border-color:var(--term-cyan);}@media print{header,footer,.back-top,.article-pager,.toc,.related-reads,.breadcrumb,.hero-actions,.quick-steps,.skip-link,.term-window,.nav-wrap{display:none !important;}body{background:#fff;color:#000;font-size:12pt;}.container,.section,.page-hero{max-width:100%;padding:0;}.page-hero{padding:0;border-bottom:none;}.article-body a::after{content:" (" attr(href) ")";font-size:9pt;color:#555;}pre,blockquote,.callout,table{page-break-inside:avoid;}a{color:#000;}}@media (max-width:960px){.hero-grid,.split{grid-template-columns:1fr;gap:36px;}.feature-grid,.card-grid,.dl-grid{grid-template-columns:repeat(2,1fr);}.quick-steps{grid-template-columns:repeat(2,1fr);}.popular-grid{grid-template-columns:repeat(2,1fr);}.footer-grid{grid-template-columns:1fr 1fr;}}@media (max-width:760px){.site-nav{display:none;position:absolute;top:64px;left:0;right:0;background:var(--term-bg);border-bottom:1px solid var(--term-line);flex-direction:column;padding:12px 24px 20px;gap:2px;}.site-nav.open{display:flex;}.nav-toggle{display:flex;}.page-hero h1{font-size:2rem;}.section{padding:52px 0;}.feature-grid,.card-grid,.dl-grid{grid-template-columns:1fr;}.quick-steps{grid-template-columns:1fr;}.related-grid{grid-template-columns:1fr;}.form-grid{grid-template-columns:1fr;}.popular-grid{grid-template-columns:1fr;}.footer-grid{grid-template-columns:1fr;}.article-pager{flex-direction:column;}.footer-bottom{flex-direction:column;}.qr-dl{grid-template-columns:1fr;gap:24px;padding:24px;}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms !important;animation-iteration-count:1 !important;transition-duration:0.01ms !important;scroll-behavior:auto !important;}}.footer-bottom a{display:inline-block;padding:4px 2px;}figure.site-shot{margin:2.6rem auto;max-width:300px;text-align:center;}figure.site-shot img{width:100%;height:auto;border-radius:var(--term-radius);border:1px solid var(--term-line);box-shadow:var(--term-shadow);}figure.site-shot figcaption{margin-top:0.7rem;font-size:0.85rem;line-height:1.65;color:var(--term-dim);}.app-compare{width:100%;border-collapse:collapse;margin:22px 0 16px;font-size:.92rem;background:var(--term-panel);border:1px solid var(--term-line);border-radius:12px;overflow:hidden;}.app-compare th,.app-compare td{text-align:left;padding:.7rem .9rem;border-bottom:1px solid var(--term-line);vertical-align:top;}.app-compare th{font-weight:700;background:var(--term-panel-2);color:var(--term-fg);white-space:nowrap;}.app-compare td{color:var(--term-fg);}.app-compare th:first-child{color:var(--term-fg);}.app-compare tr td:first-child{font-weight:700;color:var(--term-cyan);white-space:nowrap;}@media (max-width:520px){.app-compare{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;}}