:root {
  --c-bg:#E6ECF7;
  --c-hero-top:#EEF2FA;
  --c-hero-bottom:#E1E8F4;
  --c-panel:#F8FAFE;
  --c-panel-2:#D8E0EF;
  --c-white:#FFFFFF;
  --c-tray-top:#DCE4F2;
  --c-tray-bottom:#D3DCEE;
  --c-tray-edge:#C9D3E6;
  --c-icon-well:#EEF2FA;
  --c-groove:rgba(248,250,254,.52);
  --c-border:#C5CFE2;
  --c-border-soft:rgba(197,207,226,.72);
  --c-accent:#E24A1C;
  --c-accent-hi:#EA5A2C;
  --c-accent-deep:#CF4118;
  --c-accent-dark:#B53710;
  --c-text:#131A2A;
  --c-muted:#535E78;
  --c-faint:#6E7891;
  --c-success:#1E8A5A;
  --c-success-halo:rgba(30,138,90,.16);
  --c-warn:#B8761A;
  --c-error:#C42B3B;
  --c-topbar:rgba(238,242,250,.94);
  --c-hover-wash:rgba(248,250,254,.72);
  --c-ice:#DEEAF9;
  --c-lilac:#E5E5F4;
  --c-mist:#D8EDEA;
  --c-footer:#202B41;
  --hl-top:rgba(255,255,255,.8);
  --hl-soft:rgba(255,255,255,.24);
  --tint-06:rgba(38,62,122,.06);
  --tint-10:rgba(38,62,122,.10);
  --tint-12:rgba(38,62,122,.12);
  --tint-18:rgba(38,62,122,.18);
  --glow-ice:rgba(92,156,236,.06);
  --accent-shadow:rgba(181,55,16,.38);
  --ink-shadow:rgba(19,26,42,.32);
  --flag-red:#D8262E;
  --flag-white:#FFFFFF;
  --flag-navy:#2B3470;
  --flag-blue:#23478E;
  --flag-rim:rgba(19,26,42,.14);
  --f-display:'Inter','Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,sans-serif;
  --f-body:'Inter','Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace;
  --f-serif:Georgia,'Songti SC',STSong,'Noto Serif CJK SC',serif;
  --r-btn:6px;
  --r-card:8px;
  --r-tray:14px;
  --r-pill:999px;
  --sh-card:inset 0 1px 0 var(--hl-top),0 1px 2px var(--tint-06),0 10px 22px -12px var(--tint-12);
  --sh-float:inset 0 1px 0 var(--hl-top),0 1px 2px var(--tint-06),0 16px 34px -12px var(--tint-18);
  --sh-tray:inset 0 1px 0 var(--hl-top),inset 0 0 0 1px var(--c-border-soft),0 4px 0 var(--c-tray-edge),0 32px 64px -20px var(--tint-12),0 12px 26px -14px var(--tint-10);
  --w-hero:1040px;
  --w-page:1200px;
  --gutter:32px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:92px}
html.nav-open{overflow:hidden}
body{margin:0;background:var(--c-bg);color:var(--c-text);font:16px/1.6 var(--f-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img,svg{max-width:100%}
img{height:auto}
a{color:inherit}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--c-accent-dark);outline-offset:2px}
.no-break{white-space:nowrap}
.wrap{width:100%;max-width:var(--w-page);margin-inline:auto;padding-inline:var(--gutter);min-width:0}
.sec{padding-top:88px;padding-bottom:88px}
.sec-title{margin:0 auto 16px;max-width:900px;font:400 40px/1.25 var(--f-serif);letter-spacing:-.01em;text-wrap:balance}
.sec-title__hl{color:var(--c-accent)}
.sec-lede{max-width:620px;margin:0 auto;color:var(--c-muted);font-size:17px;line-height:1.7}
.section-head{text-align:center;margin-bottom:40px}
.eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0 0 6px;color:var(--c-muted);font-size:12px;line-height:16px;font-weight:600;letter-spacing:.24em;text-transform:uppercase}
.sq{display:inline-block;width:10px;height:10px;flex-shrink:0;border-radius:1.5px;background:var(--c-accent)}
.panel,.card{min-width:0;border:1px solid var(--c-border);border-radius:var(--r-card);background:var(--c-panel);box-shadow:var(--sh-card)}
.prose{min-width:0;max-width:780px;line-height:1.85}
.prose h2{margin:2em 0 .7em;font:400 32px/1.35 var(--f-serif);text-wrap:balance}
.prose h3{margin:1.6em 0 .6em;font-size:21px}
.prose p,.prose ul,.prose ol{margin:0 0 1.25em}
.prose a{color:var(--c-accent-dark);text-underline-offset:3px}
code{font-family:var(--f-mono);font-size:.9em;overflow-wrap:anywhere}
pre{max-width:100%;overflow-x:auto;padding:18px;border:1px solid var(--c-border);border-radius:var(--r-card);background:var(--c-panel)}
pre code{overflow-wrap:normal;white-space:pre}
.skip-to{position:absolute;left:16px;top:-48px;z-index:100;padding:8px 14px;border-radius:var(--r-btn);background:var(--c-text);color:var(--c-panel);text-decoration:none;font-size:14px}
.skip-to:focus{top:12px}
.svg-defs{position:absolute;width:0;height:0;overflow:hidden}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border-radius:var(--r-btn);font:600 16px/1 var(--f-body);text-decoration:none;white-space:nowrap;flex-shrink:0;border:1px solid transparent}
.btn__arrow{width:16px;height:16px;flex-shrink:0}
.btn__arrow path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.btn--primary{color:var(--c-white);background:linear-gradient(180deg,var(--c-accent-hi) 0%,var(--c-accent) 55%,var(--c-accent-deep) 100%);box-shadow:inset 0 1px 0 var(--hl-soft),0 8px 18px -8px var(--accent-shadow)}
.btn--primary:hover{background:var(--c-accent-dark)}
.btn--ghost,.btn-secondary{color:var(--c-text);background:var(--c-panel);border-color:var(--c-text)}
.btn--ghost:hover,.btn-secondary:hover{background:var(--c-white)}
.btn:disabled{cursor:not-allowed;opacity:.55}
.reveal{transition:opacity .55s ease,transform .55s ease}
.reveal.pending{opacity:0;transform:translateY(16px)}
.reveal.shown{opacity:1;transform:none}

/* The header is injected synchronously directly after its placeholder. */
.topbar{position:relative;z-index:30;background:var(--c-topbar);border-bottom:1px solid var(--c-border-soft)}
.topbar__inner{max-width:1280px;margin:0 auto;padding:0 32px;min-height:64px;display:flex;align-items:center;gap:36px}
.brand{display:inline-flex;align-items:center;gap:10px;flex-shrink:0;text-decoration:none;color:var(--c-text);font:600 19px/1.2 var(--f-display);letter-spacing:-.02em}
.brand__mark{width:30px;height:30px;flex-shrink:0;display:block}
.brand__local{font-weight:400;color:var(--c-muted);font-size:15px}
.mainnav{flex:1;min-width:0}
.mainnav__list{display:flex;align-items:center;list-style:none;margin:0;padding:0;gap:2px}
.mainnav__link,.mainnav__trigger{display:inline-flex;align-items:center;gap:4px;min-height:38px;padding:8px 12px;border-radius:var(--r-btn);color:var(--c-muted);text-decoration:none;font:500 15px/1.2 var(--f-body);background:transparent;border:0;white-space:nowrap}
.mainnav__link:hover,.mainnav__trigger:hover{color:var(--c-text);background:var(--c-hover-wash)}
.mainnav__link[aria-current="page"],.mainnav__sublink[aria-current="page"]{color:var(--c-text);font-weight:600}
.mainnav__chev{width:14px;height:14px;flex-shrink:0}
.mainnav__chev path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.mainnav__more{position:relative}
.mainnav__menu{position:absolute;top:100%;left:0;padding-top:8px;visibility:hidden;opacity:0}
.mainnav__more:hover .mainnav__menu,.mainnav__more:focus-within .mainnav__menu,.mainnav__more.is-open .mainnav__menu{visibility:visible;opacity:1}
.mainnav__panel{width:280px;padding:10px;background:var(--c-panel);border:1px solid var(--c-border);border-radius:var(--r-card);box-shadow:var(--sh-float)}
.mainnav__group+.mainnav__group{margin-top:6px;padding-top:6px;border-top:1px solid var(--c-border-soft)}
.mainnav__gname{margin:4px 10px;font-size:11.5px;letter-spacing:.16em;color:var(--c-faint);font-weight:600}
.mainnav__sub{list-style:none;margin:0;padding:0}
.mainnav__sublink{display:block;padding:8px 10px;border-radius:var(--r-btn);text-decoration:none;color:var(--c-text);font-size:14.5px;font-weight:500;line-height:1.35}
.mainnav__sublink:hover{background:var(--c-icon-well)}
.mainnav__desc{display:block;font-size:12.5px;font-weight:400;color:var(--c-muted);margin-top:2px}
.topbar__actions{display:flex;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}
.lang-control{position:relative}
.langpick{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;width:auto;padding:8px 10px;border-radius:var(--r-btn);background:transparent;border:0;color:var(--c-muted);font:500 14px/1.2 var(--f-body);white-space:nowrap}
.langpick:hover{color:var(--c-text);background:var(--c-hover-wash)}
.langpick__icon{width:16px;height:16px;flex-shrink:0}
.langpick__icon circle,.langpick__icon path{fill:none;stroke:currentColor;stroke-width:1.4}
.lang-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:35;min-width:160px;padding:6px;background:var(--c-panel);border:1px solid var(--c-border);border-radius:var(--r-card);box-shadow:var(--sh-float)}
.lang-menu[hidden]{display:none}
.lang-menu a{display:flex;align-items:center;min-height:36px;padding:6px 10px;border-radius:var(--r-btn);text-decoration:none;white-space:nowrap}
.lang-menu a:hover{background:var(--c-icon-well)}
.lang-menu a[aria-current="true"]{color:var(--c-accent-dark);font-weight:600}
.btn-login{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 18px;border-radius:var(--r-btn);background:var(--c-text);color:var(--c-panel);text-decoration:none;font:600 14.5px/1 var(--f-body);white-space:nowrap;box-shadow:inset 0 1px 0 var(--hl-soft),0 6px 14px -8px var(--ink-shadow)}
.btn-login:hover{background:var(--c-muted)}
.nav-toggle{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:1px solid var(--c-border);border-radius:var(--r-btn);background:var(--c-panel);color:var(--c-text)}
.nav-toggle svg{width:20px;height:20px}
.nav-toggle path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.mobile-nav{display:none}
.nav-veil{display:none}
.site-footer{background:var(--c-footer);color:var(--c-panel);overflow-x:clip}
.site-footer__inner{display:grid;grid-template-columns:1.35fr 1fr 1fr 1fr;gap:36px;padding-top:64px;padding-bottom:48px}
.site-footer .brand{color:var(--c-white)}
.site-footer .brand__local{color:var(--c-panel)}
.site-footer__about{max-width:290px;color:var(--c-panel);font-size:14px}
.site-footer h2{margin:0 0 16px;font:400 19px/1.3 var(--f-serif)}
.site-footer ul{list-style:none;margin:0;padding:0}
.site-footer li+li{margin-top:6px}
.site-footer a:not(.brand){display:inline-flex;align-items:center;min-height:28px;text-decoration:none;color:var(--c-panel);font-size:14px}
.site-footer a:hover{text-decoration:underline;text-underline-offset:3px}
.site-footer__bottom{padding-top:18px;padding-bottom:26px;border-top:1px solid var(--hl-soft);font-size:13px}
.site-footer__langs{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:14px}
#server-status{position:relative;display:block;max-width:100%;overflow:hidden;margin-top:24px;margin-bottom:24px}
#server-status+*{margin-top:24px}
body:has(.toc-tabs) section[id]{scroll-margin-top:150px}
@media(max-width:980px){
  .topbar__inner{gap:14px}
  .mainnav__link,.mainnav__trigger{padding-inline:8px;font-size:14px}
}
@media(max-width:768px){
  :root{--gutter:20px}
  .topbar__inner{min-height:64px;padding-inline:var(--gutter);gap:8px}
  .mainnav{display:none}
  .topbar__actions{margin-left:auto;gap:6px}
  .nav-toggle{display:inline-flex}
  .nav-veil{position:fixed;inset:0;z-index:25;background:var(--ink-shadow)}
  html.nav-open .nav-veil{display:block}
  .mobile-nav{position:absolute;top:100%;left:0;right:0;z-index:31;max-height:calc(100dvh - 64px);overflow-y:auto;overscroll-behavior:contain;padding:12px var(--gutter) 22px;background:var(--c-panel);border-bottom:1px solid var(--c-border);box-shadow:var(--sh-float)}
  .mobile-nav.is-open{display:block}
  .mobile-nav a{display:flex;width:100%;align-items:center;min-height:44px;padding:10px 12px;border-radius:var(--r-btn);text-decoration:none;color:var(--c-text)}
  .mobile-nav a:hover,.mobile-nav a[aria-current="page"]{background:var(--c-icon-well)}
  .mobile-nav__label{margin:14px 12px 4px;color:var(--c-muted);font-size:12px;letter-spacing:.14em}
  .sec{padding-top:64px;padding-bottom:64px}
  .sec-title{font-size:30px}
  .site-footer__inner{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:640px){
  :root{--gutter:16px}
  .no-break{white-space:normal}
  .brand{font-size:17px}
  .langpick{padding-inline:6px}
  .langpick__label{display:none}
  .btn-login{padding-inline:12px}
  .site-footer__inner{grid-template-columns:minmax(0,1fr);gap:26px}
  .tilt,[class*="tilt-"]{transform:none}
  .decorative,.stripe-halo{max-width:100%;overflow-x:clip}
}
@media(max-width:350px){
  .topbar__inner{gap:4px}
  .brand{gap:5px;font-size:15px}
  .brand__mark{width:26px;height:26px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal,.reveal.pending{opacity:1;transform:none;transition:none}
}