:root{
  color-scheme:light;
  --bg:#F9FAF9;
  --panel:#FFFFFF;
  --panel-2:#F1F3F1;
  --side:#FBFCFB;
  --border:#E3E6E3;
  --border-strong:#D2D7D3;
  --accent:#19A35C;
  --accent-dark:#0F7A43;
  --accent-soft:#5CCF93;
  --ink:#16181D;
  --ink-2:#2B2F36;
  --muted:#5E646C;
  --faint:#8A9098;
  --success:#2E9D63;
  --warn:#E0A21A;
  --error:#D6453D;
  --idle:#BCC2BE;
  --on-ink:#FFFFFF;
  --on-ink-muted:rgba(255,255,255,.64);
  --on-ink-line:rgba(255,255,255,.16);
  --glass:rgba(255,255,255,.74);
  --wash:rgba(25,163,92,.055);
  --spot:rgba(25,163,92,.11);
  --glow:rgba(25,163,92,.12);
  --halo-ok:rgba(46,157,99,.18);
  --halo-warn:rgba(224,162,26,.20);
  --halo-idle:rgba(140,148,142,.18);
  --tint-green:rgba(46,157,99,.15);
  --tint-amber:rgba(224,162,26,.20);
  --warn-ink:#87600A;
  --tint-slate:#E6EAEE;
  --slate-ink:#3D4550;
  --addr-bg:rgba(255,255,255,.72);
  --flag-red:#D6453D;
  --flag-blue:#24418A;
  --flag-white:#FFFFFF;
  --veil:rgba(22,24,29,.30);
  --clear:transparent;
  --ring:0 0 0 1px rgba(22,24,29,.10);
  --shadow-xs:0 1px 2px rgba(22,24,29,.05);
  --shadow-card:0 1px 2px rgba(22,24,29,.04),0 14px 30px -18px rgba(25,163,92,.28);
  --shadow-float:0 1px 2px rgba(22,24,29,.04),0 22px 46px -16px rgba(25,163,92,.22),0 8px 18px -10px rgba(22,24,29,.08);
  --shadow-window:0 1px 2px rgba(22,24,29,.04),0 30px 80px -26px rgba(25,163,92,.22),0 64px 130px -44px rgba(25,163,92,.10);
  --shadow-cta:inset 0 1px 0 rgba(255,255,255,.16),0 10px 22px -10px rgba(15,122,67,.45);
  --inset-hi:inset 0 1px 0 rgba(255,255,255,.95);
  --dot-inset:inset 0 0 0 .5px rgba(22,24,29,.14);
  --r-xs:5px;
  --r-sm:7px;
  --r-md:10px;
  --r-lg:12px;
  --r-xl:14px;
  --r-pill:999px;
  --r-circle:50%;
  --font-display:'Inter','Noto Sans SC','PingFang SC','Hiragino Sans','Microsoft YaHei','Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif;
  --font-body:'Inter','Noto Sans SC','PingFang SC','Hiragino Kaku Gothic ProN','Microsoft YaHei','Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif;
  --font-mono:'JetBrains Mono','SFMono-Regular',Menlo,Consolas,'Liberation Mono',monospace;
  --text-xs:11.5px;
  --text-sm:13.5px;
  --text-nav:14.5px;
  --text-button:15px;
  --text-base:16px;
  --text-lede:16.5px;
  --text-h3:22px;
  --text-h2:clamp(28px,3vw,40px);
  --text-h1:68px;
  --weight-body:400;
  --weight-medium:500;
  --weight-semibold:600;
  --weight-bold:700;
  --weight-display:800;
  --gutter:24px;
  --wrap:1200px;
  --head-height:64px;
  --notice-height:40px;
  --head-edge:104px;
  --anchor-offset:88px;
  --toc-offset:88px;
  --toc-landing:160px;
  --space-1:8px;
  --space-2:16px;
  --space-3:24px;
  --space-4:32px;
  --space-6:48px;
  --space-8:64px;
  --space-10:80px;
  --ease: cubic-bezier(.2,.7,.3,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:var(--anchor-offset);scroll-behavior:smooth}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.7;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}
html.nav-open{overflow:hidden}
[hidden]{display:none!important}
a{color:inherit;text-underline-offset:3px}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:not-allowed}
button,summary,a,input,select,textarea{-webkit-tap-highlight-color:var(--wash)}
:where(a,button,summary,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--accent-dark);outline-offset:3px}
img{max-width:100%;height:auto}
svg{flex-shrink:0}
p{margin:0 0 var(--space-2)}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink);text-wrap:balance;overflow-wrap:break-word}
h1{font-size:var(--text-h1);line-height:1.12;font-weight:var(--weight-display);letter-spacing:-.02em;margin:0 0 var(--space-3)}
h2{font-size:var(--text-h2);line-height:1.22;letter-spacing:-.02em;margin:0 0 var(--space-3)}
h3{font-size:var(--text-h3);line-height:1.35;margin:0 0 var(--space-2)}
h4{font-size:var(--text-base);margin:0 0 var(--space-1)}
code{font-family:var(--font-mono);font-size:.88em;overflow-wrap:anywhere}
pre{max-width:100%;overflow-x:auto;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--space-3)}
pre code{white-space:pre;overflow-wrap:normal}
section[id]{scroll-margin-top:var(--anchor-offset)}
.wrap{width:100%;max-width:var(--wrap);padding-inline:var(--gutter);margin-inline:auto;min-width:0}
.section{padding-top:var(--space-10);padding-bottom:var(--space-10)}
.section-head{max-width:720px;margin-bottom:var(--space-4)}
.prose{max-width:800px;min-width:0}
.prose h2,.prose h3{margin-top:var(--space-6)}
.prose li{margin-bottom:var(--space-1)}
.prose img{border-radius:var(--r-md)}
.muted{color:var(--muted)}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.no-break{white-space:nowrap}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
.grid{display:grid;gap:var(--space-3)}
.grid>*{min-width:0}
.grid-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.panel,.card{min-width:0;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--panel);box-shadow:var(--shadow-card),var(--inset-hi);padding:var(--space-3)}
.card-flat{background:var(--panel-2);box-shadow:var(--inset-hi)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 22px;border-radius:var(--r-pill);font-family:var(--font-body);font-size:var(--text-button);font-weight:var(--weight-semibold);line-height:1.3;text-decoration:none;letter-spacing:.01em;border:1px solid var(--ink);flex-shrink:0;white-space:nowrap}
.btn svg{width:15px;height:15px}
.btn-ghost,.btn-secondary{background:var(--panel);color:var(--ink)}
.btn-solid,.btn-primary{background:var(--ink);color:var(--on-ink);box-shadow:var(--shadow-cta)}
.btn:hover{background:var(--ink-2);border-color:var(--ink-2);color:var(--on-ink)}
.btn:active,.btn.is-active{box-shadow:var(--inset-hi);background:var(--panel-2);color:var(--ink)}
.btn:disabled,.btn[aria-disabled="true"]{background:var(--panel-2);border-color:var(--border);color:var(--muted);box-shadow:none}
.btn-small{min-height:36px;padding-inline:16px;font-size:var(--text-sm)}
.cta-row{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.reveal{transition:opacity .35s var(--ease),transform .35s var(--ease)}
.reveal.pending{opacity:0;transform:translateY(16px)}
.reveal.shown{opacity:1;transform:none}
#server-status{display:block;position:relative;min-width:0;max-width:100%;overflow:hidden;margin-block:var(--space-4)}
#server-status+*{margin-top:var(--space-4)}
#server-status :where(.grid,[class*="grid"]){min-width:0;max-width:100%}
#server-status :where(.grid,[class*="grid"])>*{min-width:0}
.decorated-section{position:relative;overflow-x:clip}
.site-shell{position:relative;z-index:40;--head-edge:104px}
.site-shell.notice-dismissed{--head-edge:64px}
.notice{position:relative;height:var(--notice-height);background:var(--ink);color:var(--on-ink);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);padding:0 56px;line-height:1.2}
.notice-link{display:inline-flex;align-items:center;gap:8px;text-decoration:none;letter-spacing:.005em}
.notice-link svg{width:14px;height:14px}
.notice-dot{color:var(--on-ink-muted)}
.notice-close{position:absolute;right:16px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:0;border-radius:var(--r-sm);background:var(--clear);color:var(--on-ink-muted);display:grid;place-items:center}
.notice-close svg{width:14px;height:14px}
.notice-close:hover{color:var(--on-ink);background:var(--on-ink-line)}
.site-head{position:relative;z-index:44;background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
.head-inner{max-width:1376px;height:var(--head-height);margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:28px;flex-wrap:nowrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);flex-shrink:0}
.brand img{width:30px;height:30px;display:block}
.brand-en{font-family:var(--font-display);font-weight:var(--weight-bold);font-size:17px;letter-spacing:-.015em;white-space:nowrap}
.brand-zh{font-size:13px;font-weight:var(--weight-medium);color:var(--muted);padding-left:10px;border-left:1px solid var(--border)}
.nav{display:flex;align-items:center;flex:1;min-width:0}
.nav ul{display:flex;align-items:center;gap:2px;list-style:none;margin:0;padding:0}
.nav li{min-width:0}
.nav a{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 11px;border-radius:var(--r-sm);font-size:var(--text-nav);color:var(--ink-2);text-decoration:none;white-space:nowrap}
.nav a svg{width:16px;height:16px;color:var(--faint)}
.nav a:hover{background:var(--panel-2)}
.nav a[aria-current="page"]{background:var(--panel-2);color:var(--ink);font-weight:var(--weight-medium)}
.nav a[aria-current="page"] svg{color:var(--ink)}
.head-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;margin-left:auto}
.language-control{position:relative}
.lang{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;min-width:36px;width:auto;padding:0 10px;border:0;background:var(--clear);color:var(--muted);font-size:14px;border-radius:var(--r-sm)}
.lang span{white-space:nowrap}
.lang svg{width:15px;height:15px}
.lang-panel{position:absolute;right:0;top:calc(100% + 12px);z-index:60;min-width:180px;padding:8px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--panel);box-shadow:var(--shadow-float)}
.lang-panel a{display:flex;align-items:center;width:100%;min-height:44px;padding:8px 12px;border-radius:var(--r-sm);font-size:14px;text-decoration:none}
.lang-panel a:hover,.lang-panel a[aria-current="true"]{background:var(--panel-2);color:var(--ink)}
.btn-login,.btn-head-cta{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 16px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--panel);color:var(--ink);font-size:14px;font-weight:var(--weight-medium);text-decoration:none;box-shadow:var(--shadow-xs);white-space:nowrap}
.btn-head-cta{border-color:var(--ink);background:var(--ink);color:var(--on-ink);box-shadow:var(--shadow-cta)}
.menu-toggle{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--panel);color:var(--ink)}
.menu-toggle svg{width:20px;height:20px}
.menu-toggle[aria-expanded="true"]{background:var(--panel-2)}
.mobile-drawer{display:none;position:fixed;left:0;right:0;top:var(--head-edge);height:calc(100dvh - var(--head-edge));max-height:calc(100dvh - var(--head-edge));overflow-y:auto;overscroll-behavior:contain;background:var(--panel);z-index:43;padding:16px var(--gutter) 32px;border-top:1px solid var(--border)}
.mobile-drawer ul{list-style:none;margin:0;padding:0}
.mobile-drawer a{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:12px 16px;text-decoration:none;border-radius:var(--r-sm);font-size:var(--text-base)}
.mobile-drawer a svg{width:18px;height:18px;color:var(--muted)}
.mobile-drawer a:hover,.mobile-drawer a[aria-current="page"]{background:var(--panel-2)}
.drawer-languages{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}
.menu-veil{position:fixed;inset:var(--head-edge) 0 0;background:var(--veil);z-index:42;border:0}
.site-foot{background:var(--panel);border-top:1px solid var(--border);padding-top:var(--space-8);padding-bottom:var(--space-4)}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1.2fr;gap:var(--space-6)}
.foot-grid>*{min-width:0}
.foot-brand p{max-width:340px;margin-top:16px;color:var(--muted);font-size:14px}
.foot-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);margin:0 0 12px}
.foot-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;list-style:none;padding:0;margin:0}
.foot-links a,.foot-languages a,.foot-legal a{display:inline-flex;align-items:center;min-height:28px;font-size:var(--text-sm);color:var(--muted);text-decoration:none}
.foot-links a:hover,.foot-languages a:hover,.foot-legal a:hover{color:var(--ink);text-decoration:underline}
.foot-languages{display:flex;flex-wrap:wrap;gap:8px 20px;padding-block:24px;margin-top:24px;border-top:1px solid var(--border)}
.foot-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:16px;border-top:1px solid var(--border);color:var(--muted);font-size:var(--text-sm)}
.foot-bottom p{margin:0}
.foot-legal{display:flex;gap:20px;flex-wrap:wrap}
@media(max-width:1240px){
  .brand-zh,.btn-head-cta{display:none}
  .head-inner{gap:16px;padding-inline:24px}
  .nav a{padding-inline:8px}
}
@media(max-width:1100px){
  .nav-txt{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .nav a{padding-inline:10px}
}
@media(max-width:900px){
  .foot-grid{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
}
@media(max-width:768px){
  h1{font-size:40px}
  .nav{display:none}
  .head-inner{gap:12px;padding-inline:16px;justify-content:space-between}
  .head-actions{margin-left:auto;gap:6px}
  .menu-toggle{display:inline-flex}
  .mobile-drawer:not([hidden]){display:block}
  .grid-three{grid-template-columns:1fr}
}
@media(min-width:769px){
  .mobile-drawer,.menu-veil{display:none!important}
}
@media(max-width:640px){
  :root{--gutter:16px}
  .no-break{white-space:normal}
  .tilt,[data-tilt]{transform:none!important}
  .decorated-section{max-width:100%}
  .section{padding-top:48px;padding-bottom:48px}
  .notice{font-size:12px;padding:0 44px 0 16px}
  .notice-link{gap:5px}
  .notice-link svg{display:none}
  .head-inner{gap:8px}
  .brand{gap:6px}
  .brand img{width:24px;height:24px}
  .brand-en{font-size:13px}
  .head-actions{gap:4px}
  .btn-login{padding-inline:10px;font-size:13px}
  .lang{padding-inline:8px;min-width:32px}
  .lang-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
  .foot-grid{grid-template-columns:1fr;gap:32px}
  .foot-brand{grid-column:auto}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal,.reveal.pending,.reveal.shown{opacity:1;transform:none}
}