:root{
  color-scheme:light;
  --bg:#E8EDF7;--bg-panel:#F7F9FD;--bg-panel-2:#DCE3F1;--border:#CBD4E6;
  --accent:#2B65D9;--accent-dark:#1C4AAE;--accent-hi:#4B80E8;
  --text:#121A2E;--text-muted:#56607A;--success:#1E9A62;--warn:#C98A12;--error:#CC3A3A;
  --cream:#F6F1DD;--cream-hi:#FBF8EC;--cream-deep:#ECE3C6;--cream-line:#E0D6B3;
  --spot-ice:#C9D8F6;--spot-peach:#F3DCD2;--spot-lav:#DCD9F3;
  --ring-peach:#EBC6B7;--ring-ice:#AFC4EE;--panel-top:#F1F4FB;--panel-bot:#E5EBF6;
  --ink:#121A2E;--ink-2:#222D4B;--ink-on:#EEF1F8;--ink-muted:#9AA5C0;--mono-soft:#A3ACC0;--on-accent:#FFFFFF;
  --white-a12:rgba(255,255,255,.12);--white-a35:rgba(255,255,255,.35);--white-a55:rgba(255,255,255,.55);--white-a70:rgba(255,255,255,.7);--white-a85:rgba(255,255,255,.85);
  --glass:rgba(247,249,253,.74);--accent-a08:rgba(43,101,217,.08);--accent-a12:rgba(43,101,217,.12);--accent-a18:rgba(43,101,217,.18);--accent-a25:rgba(43,101,217,.25);--accent-a40:rgba(43,101,217,.4);
  --ink-a12:rgba(18,26,46,.12);--ink-a20:rgba(18,26,46,.2);--ink-a35:rgba(18,26,46,.35);--border-a70:rgba(203,212,230,.7);--cross:rgba(86,96,122,.42);--transparent:transparent;
  --flag-red:#D2525A;--flag-white:#FBFCFE;--flag-blue:#34508F;--flag-green:#3D8F63;
  --fa:var(--flag-red);--fb:var(--flag-white);--fc:var(--flag-blue);--fd:var(--flag-green);
  --font-display:'Inter','Noto Sans SC','PingFang SC','Hiragino Sans','Apple SD Gothic Neo','Microsoft YaHei',system-ui,sans-serif;
  --font-body:'Inter','Noto Sans SC','PingFang SC','Hiragino Sans','Apple SD Gothic Neo','Microsoft YaHei',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',Menlo,Consolas,monospace;
  --r-hair:1px;--r-flag:4px;--r-xs:5px;--r-focus:6px;--r-tile:7px;--r-sm:8px;--r-md:10px;--r-lg:12px;--r-card:20px;--r-ring:22px;--r-panel:28px;--r-pill:999px;--r-circle:50%;
  --gutter:24px;--content:1248px;--reading:800px;--header-h:72px;--anchor-gap:88px;--toc-offset:152px;
  --space-1:8px;--space-2:16px;--space-3:24px;--space-4:32px;--space-5:40px;--space-6:48px;--space-8:64px;--space-12:96px;
  --text-body:17px;--text-small:14px;--text-lede:18px;--display-size:66px;--heading-size:44px;
  --weight-normal:400;--weight-medium:500;--weight-strong:600;
  --shadow-panel:inset 0 1px 0 var(--white-a85),0 24px 64px -24px var(--accent-a12);
  --ease:ease;--time-fast:.2s;--time-reveal:.35s;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:var(--anchor-gap)}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--text-body);line-height:1.6;-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
button:disabled{cursor:not-allowed}
img{max-width:100%;height:auto}
svg{flex-shrink:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--r-focus)}
::selection{background:var(--accent-a18);color:var(--text)}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:var(--weight-normal);line-height:1.25;text-wrap:balance}
h1{font-size:clamp(52px,4.6vw,68px);line-height:1.1;letter-spacing:-.02em;margin:0 0 var(--space-3)}
h2{font-size:clamp(28px,3.2vw,var(--heading-size));letter-spacing:-.02em;margin:0 0 var(--space-3)}
h3{font-size:24px;margin:0 0 var(--space-2)}
p{margin:0 0 var(--space-2)}
strong{font-weight:var(--weight-strong)}
code{font-family:var(--font-mono);font-size:.88em;overflow-wrap:anywhere}
pre{max-width:100%;overflow-x:auto;padding:var(--space-3);border-radius:var(--r-md);background:var(--bg-panel-2)}
pre code{overflow-wrap:normal;white-space:pre}
table{border-collapse:collapse}
input,textarea,select{max-width:100%;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-panel);padding:12px}
.no-break{white-space:nowrap}
.wrap{width:100%;max-width:var(--content);padding-inline:var(--gutter);margin-inline:auto;min-width:0}
.reading-wrap{width:100%;max-width:var(--reading);padding-inline:var(--gutter);margin-inline:auto;min-width:0}
.section{padding-top:var(--space-12);padding-bottom:var(--space-12)}
.section-head{text-align:center;max-width:880px;margin:0 auto var(--space-6)}
.muted{color:var(--text-muted)}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.center{text-align:center}
.stack{display:grid;gap:var(--space-3);min-width:0}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}
.grid>*{min-width:0}
.panel,.card{min-width:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-panel)}
.card{padding:var(--space-3)}
.panel-inset{padding:var(--space-3);background:var(--bg-panel-2);border-radius:var(--r-sm);min-width:0}
.prose{min-width:0;overflow-wrap:break-word}
.prose h2{margin-top:var(--space-8)}
.prose h3{margin-top:var(--space-5)}
.prose p,.prose li{line-height:1.85}
.prose a{color:var(--accent-dark);text-decoration:underline;text-underline-offset:3px}
.prose img{display:block;border-radius:var(--r-md)}
.prose blockquote{margin-inline:0}
.prose ol,.prose ul{padding-left:1.6em}
.prose section[id]{scroll-margin-top:var(--anchor-gap)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;white-space:nowrap;flex-shrink:0;cursor:pointer;border:0;font-family:inherit;font-size:15px;font-weight:var(--weight-medium);border-radius:var(--r-pill)}
.btn-login{height:38px;min-height:38px;padding:0 20px;font-size:14px;color:var(--text);background:linear-gradient(180deg,var(--cream-hi),var(--cream));box-shadow:inset 0 0 0 1px var(--cream-line),inset 0 1px 0 var(--white-a85),0 6px 16px -8px var(--accent-a25);transition:box-shadow var(--time-fast)}
.btn-login:hover{box-shadow:inset 0 0 0 1px var(--cream-line),inset 0 1px 0 var(--white-a85),0 10px 22px -8px var(--accent-a40)}
.btn-primary{gap:12px;height:46px;padding:0 20px;font-size:15.5px;letter-spacing:.01em;color:var(--on-accent);background:linear-gradient(180deg,var(--accent),var(--accent-dark));box-shadow:inset 0 1px 0 var(--white-a35),0 10px 22px -8px var(--accent-a40);transition:box-shadow var(--time-fast)}
.btn-primary:hover,.btn-primary.is-hover{box-shadow:inset 0 1px 0 var(--white-a35),0 14px 30px -8px var(--accent-a40),0 0 0 4px var(--accent-a12)}
.btn-primary:active,.btn-primary.is-pressed{background:var(--accent-dark)}
.btn:disabled,.btn.is-disabled{opacity:.55;cursor:not-allowed;box-shadow:none}
.btn-secondary{background:var(--bg-panel);color:var(--text);box-shadow:inset 0 0 0 1px var(--border),inset 0 1px 0 var(--white-a85);transition:background var(--time-fast)}
.btn-secondary:hover{background:var(--bg-panel-2)}
.btn-text{height:34px;min-height:34px;padding:0 10px;font-size:14.5px;color:var(--text-muted);border-radius:var(--r-sm);transition:color var(--time-fast),background-color var(--time-fast)}
.btn-text:hover{color:var(--text);background:var(--white-a55)}
.btn-text .arr{font-family:var(--font-mono);font-size:13px}
.button-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
#site-header{position:relative;z-index:100;min-height:var(--header-h)}
.topbar{height:var(--header-h);display:flex;align-items:center;flex-wrap:nowrap;gap:32px;padding:0 48px;position:relative;z-index:103;background:var(--bg)}
.brand{display:inline-flex;align-items:center;gap:10px;flex:none}
.brand-mark{display:block;width:32px;height:32px;filter:drop-shadow(0 4px 10px var(--accent-a25))}
.brand-word{font-weight:var(--weight-strong);font-size:19px;letter-spacing:-.02em;color:var(--text)}
.brand-zh{font-weight:var(--weight-normal);color:var(--text-muted)}
.brand-sub{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted);letter-spacing:.02em;padding-left:10px;border-left:1px solid var(--border);line-height:16px}
.mainnav{flex:1;min-width:0;display:flex;justify-content:center}
.mainnav ul{display:flex;align-items:center;list-style:none;margin:0;padding:0}
.mainnav li{display:flex;align-items:center;flex-shrink:0}
.mainnav li+li::before{content:"·";color:var(--mono-soft);margin:0 11px;font-weight:var(--weight-strong)}
.mainnav a{font-size:14.5px;color:var(--text-muted);padding:6px 1px;min-height:24px;transition:color var(--time-fast)}
.mainnav a:hover{color:var(--text)}
.mainnav a[aria-current="page"]{color:var(--text);font-weight:var(--weight-medium)}
.topbar-end{display:flex;align-items:center;gap:8px;flex-shrink:0}
.language{position:relative}
.lang{display:inline-flex;align-items:center;justify-content:center;gap:6px;width:auto;min-width:44px;height:38px;padding:0 12px;font-size:14px;color:var(--text-muted);border-radius:var(--r-pill)}
.lang span{white-space:nowrap}
.lang:hover{color:var(--text);background:var(--white-a55)}
.language-panel{position:absolute;z-index:110;right:0;top:calc(100% + 8px);width:180px;padding:8px;background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-panel)}
.language-panel a{display:flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:var(--r-sm);font-size:14px}
.language-panel a:hover,.language-panel a[aria-current="true"]{background:var(--bg-panel-2)}
.menu-btn{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;color:var(--text);border-radius:var(--r-pill);box-shadow:inset 0 0 0 1px var(--border)}
.menu-btn svg{display:block;width:20px;height:20px}
.menu-line{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.nav-drawer{position:fixed;z-index:102;top:var(--header-h);inset-inline:0;height:calc(100dvh - var(--header-h));max-height:calc(100dvh - var(--header-h));overflow-y:auto;overscroll-behavior:contain;background:var(--bg-panel);padding:16px var(--gutter) 32px}
.nav-drawer ul{list-style:none;padding:0;margin:0}
.nav-drawer a{display:flex;align-items:center;width:100%;min-height:44px;padding:12px 16px;border-bottom:1px solid var(--border);color:var(--text)}
.nav-drawer a[aria-current]{background:var(--bg-panel-2)}
.drawer-languages{margin-top:24px;border-top:1px solid var(--border)}
.nav-veil{position:fixed;z-index:101;top:var(--header-h);bottom:0;inset-inline:0;background:var(--ink-a20)}
html.nav-open{overflow:hidden}
.site-footer{margin-top:var(--space-8);border-top:1px solid var(--border);background:linear-gradient(180deg,var(--bg-panel-2),var(--bg));padding-top:var(--space-8);padding-bottom:var(--space-4)}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:var(--space-6)}
.footer-grid>*{min-width:0}
.footer-brand p{max-width:30em;margin-top:16px;color:var(--text-muted);font-size:15px}
.footer-heading{font-size:15px;font-weight:var(--weight-medium);margin:0 0 16px}
.footer-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;list-style:none;margin:0;padding:0}
.footer-links a,.footer-languages a,.footer-legal a{display:inline-flex;align-items:center;min-height:28px;font-size:14px;color:var(--text-muted)}
.footer-links a:hover,.footer-languages a:hover,.footer-legal a:hover{color:var(--accent-dark)}
.footer-languages{display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:var(--space-5)}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:32px;padding-top:24px;border-top:1px solid var(--border);font-size:13px;color:var(--text-muted)}
.footer-legal{display:flex;gap:20px}
.reveal{transition:opacity var(--time-reveal) var(--ease),transform var(--time-reveal) var(--ease)}
.reveal.pending{opacity:0;transform:translateY(16px)}
.reveal.shown{opacity:1;transform:none}
#server-status{display:block;position:relative;min-height:160px;overflow:hidden;margin-top:var(--space-3);margin-bottom:var(--space-4);max-width:100%}
#server-status>*{min-width:0;max-width:100%}
#server-status+*{margin-top:var(--space-4)}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.fa{fill:var(--fa)}.fb{fill:var(--fb)}.fc{fill:var(--fc)}.fd{fill:var(--fd)}
.stop-a{stop-color:var(--accent-hi)}.stop-b{stop-color:var(--accent-dark)}
@media(max-width:1430px){.topbar{gap:20px;padding-inline:32px}.mainnav li+li::before{margin-inline:7px}.brand-sub{display:none}}
@media(max-width:1240px){
  .mainnav{display:none}.menu-btn{display:inline-flex}.topbar-end{margin-left:auto}
}
@media(min-width:1241px){.nav-drawer,.nav-veil{display:none!important}}
@media(max-width:768px){
  :root{--gutter:16px;--heading-size:32px}
  h1{font-size:36px;line-height:1.2}
  .topbar{padding-inline:16px;gap:12px}
  .brand-sub{display:none}
  .section{padding-top:var(--space-8);padding-bottom:var(--space-8)}
  .grid{grid-template-columns:minmax(0,1fr)}
  .footer-grid{grid-template-columns:minmax(0,1fr);gap:32px}
}
@media(max-width:640px){
  .no-break{white-space:normal}
  .tilt,.mention,.ink-pill{transform:none}
  .aura,.hero-panel,[data-hero-visual]{max-width:100%;overflow-x:clip}
  .topbar{gap:8px}.topbar-end{gap:4px;margin-left:auto}
  .brand{gap:6px}.brand-word{font-size:16px}.brand-mark{width:28px;height:28px}
  .lang{font-size:12px;padding-inline:6px}.lang svg{display:none}
  .btn-login{padding-inline:12px}
  .footer-links{gap:8px}
}
@media(max-width:359px){.lang{font-size:11px;padding-inline:4px}.topbar{padding-inline:12px}.brand-word{font-size:15px}.btn-login{padding-inline:10px}}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal,.reveal.pending,.reveal.shown{opacity:1;transform:none;transition:none}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}