
html{--sp_pt:#55abec;--sp_fg:#ecf0f4;--sp_bg:#0c1217;--sp_sf:#1c2731;--sp_mu:#99a9b8;--sp_p:#268bd9;color-scheme:dark;--sp_p2:#36b5d9;--sp_on:#092134;--sp_a:#e96d4e;--sp_bd:#2a3946}
html{--sp_hf:"Source Han Sans CN","Noto Sans CJK SC","WenQuanYi Micro Hei","Microsoft YaHei",sans-serif;--sp_r:26px;--sp_g:1.05rem;--sp_f:"Source Han Sans CN","Noto Sans CJK SC","WenQuanYi Micro Hei","Microsoft YaHei",sans-serif;--sp_w:1160px}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:4.05rem;-webkit-text-size-adjust:100%}
body{font:15px/1.75 var(--sp_f);margin:0;overflow-wrap:anywhere;background:var(--sp_bg);color:var(--sp_fg)}
a{color:var(--sp_pt);text-underline-offset:3px}
a:focus-visible,summary:focus-visible,button:focus-visible{outline:2px solid var(--sp_pt);outline-offset:2px;border-radius:3px}
h2,h3,h1{line-height:1.3;font-family:var(--sp_hf);color:var(--sp_fg)}
.sp_skip{color:var(--sp_on);top:0;left:-999px;z-index:20;position:absolute;padding:.45rem .9rem;background:var(--sp_p)}
.sp_skip:focus{left:.9rem}
.sp_bar{top:0;border-bottom:1px solid var(--sp_bd);background:color-mix(in srgb,var(--sp_bg) 92%,transparent);z-index:10;position:sticky;backdrop-filter:blur(8px)}
.sp_bar_in{align-items:center;min-height:3.05rem;padding:.5rem .9rem;max-width:calc(var(--sp_w) + 160px);display:flex;margin:0 auto;gap:.8rem}
.sp_brand{text-decoration:none;align-items:center;gap:.5rem;white-space:nowrap;display:flex;font-weight:700;color:var(--sp_fg)}
.sp_brand .sp_logo{width:26px;flex:none;height:26px}
.sp_path{align-items:center;border-left:1px solid var(--sp_bd);gap:.35rem;padding-left:.8rem;font:13px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;min-width:0;display:flex;color:var(--sp_mu)}
.sp_path span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp_path b{font-weight:500;color:var(--sp_fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp_bar_cta{text-decoration:none;color:var(--sp_on);border-radius:var(--sp_r);margin-left:auto;flex:none;font-weight:600;padding:.35rem .75rem;background:var(--sp_p);font-size:13px}
.sp_shell{gap:calc(var(--sp_g)*2.4);max-width:calc(var(--sp_w) + 160px);grid-template-columns:230px minmax(0,1fr) 210px;margin:0 auto;padding:0 .9rem;display:grid}
.sp_side{overflow:auto;align-self:start;top:3.05rem;position:sticky;padding:1.45rem 0 1.8rem;max-height:calc(100vh - 3.05rem);font-size:14px}
.sp_side>details>summary{display:none}
.sp_sidet{color:var(--sp_mu);letter-spacing:.12em;font-family:var(--sp_f);text-transform:uppercase;margin:0 0 .55rem;font-size:11px}
.sp_tree ul,.sp_tree{list-style:none;margin:0;padding:0}
.sp_tree>li{margin-bottom:.15rem}
.sp_tree a{text-decoration:none;align-items:center;border-radius:var(--sp_r);display:flex;gap:.45rem;padding:.3rem .55rem;color:var(--sp_fg)}
.sp_tree a:hover{background:color-mix(in srgb,var(--sp_p) 12%,transparent)}
.sp_tree svg{width:15px;flex:none;stroke:var(--sp_mu);height:15px}
.sp_tree ul{border-left:1px solid var(--sp_bd);margin:.15rem 0 .3rem .95rem;padding-left:.65rem}
.sp_tree ul a{padding:.2rem .45rem;color:var(--sp_mu);display:block;font-size:13px}
.sp_side_meta{margin-top:1.25rem;color:var(--sp_mu);padding-top:.9rem;border-top:1px dashed var(--sp_bd);font-size:12px}
.sp_main{padding:1.6rem 0 2.7rem;min-width:0}
.sp_kicker{letter-spacing:.06em;margin:0 0 .7rem;color:var(--sp_pt);font:12px/1 ui-monospace,SFMono-Regular,Menlo,monospace}
.sp_main h1{font-size:clamp(1.5rem,1.1rem + 1.8vw,2.1rem);letter-spacing:-.01em;margin:0 0 .65rem}
.sp_lead{max-width:44em;font-size:.95rem;margin:0 0 1.1rem;color:var(--sp_mu)}
.sp_meta{margin-bottom:1.45rem;display:flex;border-bottom:1px solid var(--sp_bd);color:var(--sp_mu);padding-bottom:1.1rem;gap:.35rem 1.1rem;flex-wrap:wrap;font-size:13px}
.sp_intro{grid-template-columns:minmax(0,1fr) 220px;align-items:stretch;display:grid;margin-bottom:2.15rem;gap:1.1rem}
.sp_onpage{border:1px solid var(--sp_bd);border-left:3px solid var(--sp_p);background:var(--sp_sf);border-radius:var(--sp_r);padding:.9rem 1.1rem}
.sp_onpage h2{margin:0 0 .45rem;font-size:14px}
.sp_onpage ol{margin:0;padding-left:1.15rem;columns:2;column-gap:1.45rem;font-size:14px}
.sp_onpage li{break-inside:avoid;padding:.1rem 0}
.sp_fig{margin:0;border:1px solid var(--sp_bd);border-radius:var(--sp_r);background:color-mix(in srgb,var(--sp_p) 7%,var(--sp_bg));display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.sp_fig .sp_decor{height:auto;display:block;width:100%}
.sp_fig figcaption{border-top:1px solid var(--sp_bd);color:var(--sp_mu);padding:.3rem .65rem;font-size:12px}
.sp_sec{margin:0 0 2.5rem}
.sp_article h2,.sp_sec>h2{position:relative;margin:0 0 .8rem;padding-bottom:.4rem;border-bottom:1px solid var(--sp_bd);font-size:1.25rem}
.sp_hash{text-decoration:none;transition:opacity .15s;font-weight:400;margin-left:.3rem;color:var(--sp_p);opacity:.0}
.sp_hash:focus,h2:hover .sp_hash{opacity:1}
.sp_sub{margin:-.4rem 0 .9rem;color:var(--sp_mu);font-size:14px}
.sp_dl{list-style:none;margin:0;padding:0;border:1px solid var(--sp_bd);border-radius:var(--sp_r);overflow:hidden}
.sp_dl li+li{border-top:1px solid var(--sp_bd)}
.sp_dl a{text-decoration:none;align-items:center;padding:.7rem .9rem;display:grid;gap:.7rem;background:var(--sp_sf);color:var(--sp_fg);grid-template-columns:2rem minmax(0,1fr) auto}
.sp_dl a:hover{background:color-mix(in srgb,var(--sp_p) 10%,var(--sp_sf))}
.sp_dl svg{width:22px;height:22px;stroke:var(--sp_pt)}
.sp_dl b{font-weight:600;display:block}
.sp_dl small{font-size:12.5px;color:var(--sp_mu)}
.sp_dl em{color:var(--sp_on);border-radius:999px;padding:.2rem .6rem;font-weight:600;background:var(--sp_p);font-style:normal;font-size:12px}
.sp_article{margin:0 0 2.5rem}
.sp_article h3{margin:1.45rem 0 .45rem;font-size:1rem}
.sp_article p{margin:0 0 .9rem}
.sp_article ul,.sp_article ol{margin:0 0 .9rem;padding-left:1.25rem}
.sp_article li{margin:.25rem 0}
.sp_callouts{display:grid;gap:.7rem}
.sp_note{--sp_c:var(--sp_p2);border:1px solid var(--sp_bd);border-left:4px solid var(--sp_c);background:color-mix(in srgb,var(--sp_c) 7%,var(--sp_bg));border-radius:var(--sp_r);padding:.75rem 1rem}
.sp_note.sp_pro{--sp_c:var(--sp_p)}
.sp_note.sp_con{--sp_c:var(--sp_a)}
.sp_verdict{align-items:center;letter-spacing:.04em;gap:.35rem;font-weight:700;display:inline-flex;color:var(--sp_fg);font-size:12px}
.sp_verdict::before{font:700 11px/1 Georgia,serif;border-radius:50%;color:var(--sp_on);height:1.05rem;place-items:center;content:"i";background:var(--sp_c);display:inline-grid;width:1.05rem}
.sp_note.sp_con .sp_verdict::before{content:"!"}
.sp_note.sp_pro .sp_verdict::before{content:"✓"}
.sp_note h3{margin:.25rem 0 .2rem;font-size:.9rem}
.sp_note p{color:var(--sp_mu);margin:0;font-size:14px}
.sp_steps_box{background:var(--sp_sf);border:1px solid var(--sp_bd);border-radius:var(--sp_r);padding:1.1rem 1.25rem}
.sp_stepset h3{font-size:.95rem;margin:0 0 .9rem}
.sp_steps{list-style:none;margin:0;padding:0;counter-reset:sp_n}
.sp_steps li{position:relative;counter-increment:sp_n;padding:0 0 1rem 2.5rem}
.sp_steps li::before{border-radius:50%;color:var(--sp_on);top:0;left:0;place-items:center;font:700 13px/1 ui-monospace,Menlo,monospace;display:grid;width:1.7rem;position:absolute;height:1.7rem;content:counter(sp_n);background:var(--sp_p)}
.sp_steps li::after{content:"";position:absolute;left:.85rem;top:1.9rem;bottom:.2rem;border-left:2px dotted var(--sp_bd)}
.sp_steps li:last-child{padding-bottom:0}
.sp_steps li:last-child::after{display:none}
.sp_steps b,.sp_steps strong{display:block;line-height:1.7rem}
.sp_steps p{margin:.1rem 0 0;color:var(--sp_mu);font-size:14px}
.sp_gloss{border-top:1px solid var(--sp_bd);margin:0}
.sp_gloss div{gap:.9rem;padding:.65rem 0;border-bottom:1px solid var(--sp_bd);display:grid;grid-template-columns:10em minmax(0,1fr)}
.sp_gloss dt{color:var(--sp_pt);font:600 14px/1.6 ui-monospace,SFMono-Regular,Menlo,var(--sp_f)}
.sp_gloss dd{margin:0;font-size:14px}
.sp_tablewrap{overflow-x:auto;border:1px solid var(--sp_bd);border-radius:var(--sp_r)}
.sp_compare{width:100%;border-collapse:collapse;font-size:14px;min-width:27rem}
.sp_compare caption{text-align:left;caption-side:top;padding:.55rem .8rem;color:var(--sp_mu);font-size:13px}
.sp_compare td,.sp_compare th{text-align:left;vertical-align:top;border-top:1px solid var(--sp_bd);padding:.55rem .8rem}
.sp_compare thead th{background:var(--sp_sf);font-size:13px}
.sp_compare tbody th{font-weight:600}
.sp_faq details{border-bottom:1px solid var(--sp_bd)}
.sp_faq summary{padding:.7rem 0;list-style:none;display:flex;font-weight:600;gap:.55rem;cursor:pointer}
.sp_faq summary::-webkit-details-marker{display:none}
.sp_faq summary::before{content:"+";flex:none;color:var(--sp_pt);width:.9rem;font-family:ui-monospace,Menlo,monospace}
.sp_faq details[open] summary::before{content:"−"}
.sp_faq details p{margin:0 0 .8rem 1.45rem;color:var(--sp_mu);font-size:14px}
.sp_rel{gap:.45rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(10.8rem,1fr))}
.sp_rel a{display:block;padding:.5rem .7rem;border:1px solid var(--sp_bd);border-radius:var(--sp_r);text-decoration:none;font-size:14px;background:var(--sp_sf)}
.sp_rel a::before{color:var(--sp_mu);content:"→ "}
.sp_rel a:hover{border-color:var(--sp_p)}
.sp_latest{margin:0 0 2.5rem}
.sp_latest h2{margin:0 0 .8rem;padding-bottom:.4rem;border-bottom:1px solid var(--sp_bd);font-size:1.25rem}
.sp_latest ul{list-style:none;margin:0;padding:0}
.sp_latest li{border-bottom:1px dashed var(--sp_bd);padding:.4rem 0}
.sp_latest a{text-decoration:none}
.sp_pager{grid-template-columns:1fr 1fr;display:grid;gap:.7rem;margin-top:.9rem}
.sp_pager a{display:block;border:1px solid var(--sp_bd);border-radius:var(--sp_r);padding:.7rem .9rem;text-decoration:none;color:var(--sp_fg)}
.sp_pager a:hover{border-color:var(--sp_p)}
.sp_pager small{color:var(--sp_mu);display:block;font-size:12px}
.sp_pager b{color:var(--sp_pt)}
.sp_pager a+a{text-align:right}
.sp_toc{overflow:auto;align-self:start;top:3.05rem;padding:1.6rem 0 1.8rem;position:sticky;max-height:calc(100vh - 3.05rem);font-size:13px}
.sp_toc h2{font-weight:600;color:var(--sp_mu);font-family:var(--sp_f);margin:0 0 .55rem;font-size:12px}
.sp_toc ul{border-left:1px solid var(--sp_bd);list-style:none;padding:0;margin:0 0 1.45rem}
.sp_toc li a{text-decoration:none;margin-left:-1px;padding:.25rem 0 .25rem .7rem;color:var(--sp_mu);display:block;line-height:1.45;border-left:2px solid transparent}
.sp_toc li a:hover{color:var(--sp_fg)}
.sp_toc li a[aria-current]{color:var(--sp_pt);border-left-color:var(--sp_p);font-weight:600}
.sp_see a{padding:.2rem 0;display:block;font-size:13px}
.sp_foot{border-top:1px solid var(--sp_bd);color:var(--sp_mu);background:var(--sp_sf);font-size:13px}
.sp_foot_in{max-width:calc(var(--sp_w) + 160px);display:flex;justify-content:space-between;margin:0 auto;gap:.45rem 1.35rem;padding:1.1rem .9rem;flex-wrap:wrap}
.sp_foot a{color:var(--sp_mu)}
@media (max-width:1180px){.sp_shell{grid-template-columns:210px minmax(0,1fr)}.sp_toc{max-height:none;grid-column:2;padding:0 0 1.8rem;position:static}.sp_toc_h,#sp_toc_list{display:none}}
@media (max-width:820px){
.sp_shell{flex-direction:column;display:flex}
.sp_main{order:1}.sp_toc{order:2}
.sp_side{max-height:none;overflow:visible;padding:0 0 1.35rem;position:static;order:3}
.sp_side>details{border:1px solid var(--sp_bd);border-radius:var(--sp_r);background:var(--sp_sf)}
.sp_side>details>summary{align-items:center;list-style:none;display:flex;font-weight:600;padding:.55rem .8rem;justify-content:space-between;cursor:pointer}
.sp_side>details>summary::-webkit-details-marker{display:none}
.sp_side>details>summary::after{color:var(--sp_mu);content:"▾"}
.sp_side>details[open]>summary::after{content:"▴"}
.sp_side>details>div{padding:0 .55rem .7rem}
.sp_sidet{display:none}
.sp_intro{grid-template-columns:1fr}
.sp_fig{max-width:280px}
.sp_path{display:none}
}
@media (max-width:520px){
.sp_onpage ol{columns:1}
.sp_gloss div{gap:.15rem;grid-template-columns:1fr}
.sp_pager{grid-template-columns:1fr}
.sp_pager a+a{text-align:left}
.sp_dl em{display:none}
.sp_steps_box{padding:.9rem}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
.sp_bar_nav{font-size:.8rem;margin-left:auto;display:flex;gap:1rem}
.sp_bar_nav a{text-decoration:none;color:var(--sp_mu)}
.sp_bar_nav a:hover{color:var(--sp_pt)}
.sp_shell:not(:has(>.sp_toc)){grid-template-columns:240px minmax(0,1fr)}
.sp_foot_c{align-items:center;gap:.25rem;flex-direction:column;text-align:center}

.sp_article h2,.sp_sec>h2{border-bottom:0;padding-bottom:0}.sp_main h1{letter-spacing:-.02em}
.sp_ext{margin:.8rem 0 0;color:var(--sp_mu);font-size:.75rem}.sp_ext span{margin-right:.45rem;opacity:.8}.sp_ext a{color:var(--sp_mu)}
h1{text-wrap:balance}