:root {
  --bg:#E5E9F1;
  --hero-top:#EEF1F7;
  --hero-bottom:#E1E6EF;
  --panel:#F6F8FC;
  --panel-2:#D9DFEB;
  --border:#CBD3E1;
  --accent:#B0344C;
  --accent-dark:#8A2439;
  --text:#1A1E2B;
  --muted:#5C6478;
  --soft:#8E95A6;
  --success:#2E8B62;
  --warn:#B7791F;
  --error:#C0392B;
  --paper:#FCFDFF;
  --white:#FFFFFF;
  --ann-bg:#DCE1EA;
  --clear:transparent;
  --line-soft:rgba(203,211,225,.78);
  --hi-line:rgba(255,255,255,.85);
  --hi-line-weak:rgba(255,255,255,.4);
  --sheen:rgba(255,255,255,.24);
  --scene-edge:rgba(26,30,43,.07);
  --glow-rose:rgba(176,52,76,.05);
  --glow-blue:rgba(84,118,196,.06);
  --accent-glow:rgba(176,52,76,.24);
  --accent-shadow:rgba(138,36,57,.4);
  --groove-shadow:rgba(36,48,90,.10);
  --label-shadow:rgba(36,48,90,.26);
  --veil:rgba(26,30,43,.32);
  --shadow-card:0 1px 2px rgba(36,48,90,.06),0 10px 22px -12px rgba(36,48,90,.12),0 30px 56px -22px rgba(36,48,90,.24);
  --shadow-soft:0 14px 32px -16px rgba(36,48,90,.22);
  --shadow-ink:0 14px 26px -12px rgba(26,30,43,.5);
  --flag-red:#C8364A;
  --flag-blue:#2B3F7E;
  --flag-white:#FFFFFF;
  --jp-sky-1:#CBDAEC;
  --jp-sky-2:#EDE6E8;
  --jp-sky-3:#F4E4DB;
  --jp-sun:#CF4F4D;
  --jp-sun-hi:#E58374;
  --jp-fuji-1:#8597B6;
  --jp-fuji-2:#5B6F93;
  --jp-snow:#F7F9FC;
  --jp-cloud:rgba(255,255,255,.75);
  --jp-haze:rgba(232,237,245,.85);
  --us-1:#2D4A90;
  --us-2:#7676AC;
  --us-3:#E4AB8B;
  --us-4:#F3C9A2;
  --us-sun:#F8D9B4;
  --us-hill:#3A3E66;
  --us-palm:#24284A;
  --sg-1:#C34557;
  --sg-2:#DFA2A6;
  --sg-3:#F7F2F3;
  --sg-4:#E5E9F1;
  --sg-back:#AAB2C4;
  --sg-front:#86909F;
  --sg-water:#C7D0DE;
  --hk-1:#D5E0E1;
  --hk-2:#A8BBBF;
  --hk-3:#7E969B;
  --hk-far:#8EA4A9;
  --hk-city:#55707A;
  --hk-water:#68838B;
  --hk-ripple:rgba(252,253,255,.45);
  --ca-1:#C6D5E7;
  --ca-2:#EEF2F8;
  --ca-snow:#F9FBFD;
  --ca-shade:#D3DCE9;
  --ca-pine:#4D6078;
  --ca-maple:#B8443C;
  --stage-deep:#24324D;
  --stage-mid:#405471;
  --stage-light:#6D7E99;
  --stage-grain:rgba(246,248,252,.035);
  --font-display:"Iowan Old Style","Palatino Linotype",Palatino,"Songti SC","Noto Serif SC",STSong,"SimSun",Georgia,serif;
  --font-body:Inter,"Noto Sans SC",-apple-system,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --r-xs:3px;
  --r-sm:5px;
  --r-btn:6px;
  --r:8px;
  --r-lg:12px;
  --r-badge:18px;
  --r-pill:999px;
  --r-round:50%;
  --gutter:24px;
  --wrap:1228px;
  --reading:800px;
  --head-height:64px;
  --anchor-space:88px;
  --toc-space:88px;
  --section-space:96px;
  --text-xs:12px;
  --text-sm:14px;
  --text-base:16px;
  --text-lg:18px;
  --title-xl:clamp(52px,5vw,68px);
  --title-lg:clamp(28px,3vw,36px);
  --title-md:22px;
  --weight-normal:400;
  --weight-medium:500;
  --weight-semibold:600;
  --weight-bold:700;
  --ease: .2s ease;
}
*,*::before,*::after {box-sizing:border-box;margin:0;padding:0}
html {-webkit-text-size-adjust:100%;scroll-padding-top:var(--anchor-space);scroll-behavior:smooth}
html.nav-open {overflow:hidden}
body {font-family:var(--font-body);font-size:var(--text-base);color:var(--text);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a {color:inherit;text-decoration:none}
button,input,select,textarea {font:inherit;color:inherit}
button {background:none;border:0;cursor:pointer}
button,a,summary {touch-action:manipulation}
button:disabled {cursor:not-allowed}
img {display:block;max-width:100%;height:auto}
svg {flex-shrink:0}
ul {list-style:none}
h1,h2,h3 {font-weight:var(--weight-semibold);line-height:1.25;text-wrap:balance;overflow-wrap:break-word}
h1 {font-size:var(--title-xl);letter-spacing:-.02em;line-height:1.15}
h2 {font-size:var(--title-lg);letter-spacing:-.02em}
h3 {font-size:var(--title-md)}
p {overflow-wrap:break-word}
code {font-family:var(--font-mono);overflow-wrap:anywhere;font-size:.9em}
pre {max-width:100%;overflow-x:auto;padding:20px;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--r)}
pre code {overflow-wrap:normal;white-space:pre}
:focus-visible {outline:2px solid var(--text);outline-offset:3px;border-radius:var(--r-xs)}
[hidden] {display:none!important}
.no-break {white-space:nowrap}
.sr-only {position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap {width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter);min-width:0}
.reading-wrap {width:100%;max-width:var(--reading);margin-inline:auto;padding-inline:var(--gutter);min-width:0}
.sec {padding-top:var(--section-space);padding-bottom:var(--section-space)}
.grid {display:grid;gap:24px;grid-template-columns:repeat(3,minmax(0,1fr))}
.grid>* {min-width:0}
.stack>*+* {margin-top:24px}
.muted {color:var(--muted)}
.mono {font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.text-link {text-decoration:underline;text-underline-offset:4px}
.section-title {margin-bottom:32px}
.h2-soft {font-family:var(--font-display);font-weight:var(--weight-normal);color:var(--muted)}
.h2-strong {font-family:var(--font-body);font-weight:var(--weight-semibold);color:var(--text)}
.panel,.card {background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-soft),inset 0 1px 0 var(--hi-line);padding:28px;min-width:0}
.groove {padding:20px;background:var(--panel-2);border-radius:var(--r);box-shadow:inset 0 1px 2px var(--groove-shadow)}
.section-frame {position:relative;overflow-x:clip}
.section-frame::before,.section-frame::after {content:"";position:absolute;top:22px;width:6px;height:6px;background:var(--accent)}
.section-frame::before {left:24px;box-shadow:0 calc(100% - 6px) 0 var(--accent)}
.section-frame::after {right:24px}
.btn {display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 28px;border-radius:var(--r-btn);font-size:15.5px;font-weight:var(--weight-medium);flex-shrink:0;white-space:nowrap;transition:transform var(--ease),background-color var(--ease)}
.btn-ink,.btn-primary {background:var(--text);color:var(--panel);box-shadow:var(--shadow-ink),inset 0 1px 0 var(--hi-line-weak)}
.btn-ink:hover,.btn-primary:hover,.btn.is-hover {transform:translateY(-1px)}
.btn-line,.btn-secondary {border:1px solid var(--text);color:var(--text)}
.btn-line:hover,.btn-secondary:hover {background:var(--panel)}
.btn:active,.btn.is-active {transform:translateY(1px)}
.btn:disabled,.btn[aria-disabled="true"] {opacity:.5;pointer-events:none}
.btn-small {min-height:40px;padding-inline:18px;font-size:var(--text-sm)}
.btn.is-focus {outline:2px solid var(--text);outline-offset:3px}
.cta-row {display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-bottom:24px}
.reveal {transition:opacity .6s ease,transform .6s 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-top:24px;margin-bottom:32px}
#server-status>* {min-width:0;max-width:100%}
#server-status+* {margin-top:32px}
.prose {min-width:0;line-height:1.9}
.prose p,.prose ul,.prose ol,.prose pre,.prose blockquote,.prose table {margin-block:20px}
.prose h2 {margin-top:56px;margin-bottom:24px}
.prose h3 {margin-top:32px;margin-bottom:16px}
.prose ul {list-style:disc;padding-left:24px}
.prose ol {padding-left:24px}
.prose a {text-decoration:underline;text-underline-offset:4px}
.prose li+li {margin-top:8px}
.ann-toggle {position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.ann-toggle:checked+.ann {display:none}
.ann {position:relative;background:var(--ann-bg);color:var(--text);font-size:13.5px}
.ann-inner {min-height:40px;display:flex;align-items:center;justify-content:center;gap:12px;padding:6px 64px;text-align:center}
.ann-sep {color:var(--soft)}
.ann-link {margin-left:6px;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;display:inline-flex;align-items:center;min-height:24px}
.ann-link:hover {color:var(--muted)}
.ann-x {position:absolute;right:16px;top:50%;transform:translateY(-50%);width:30px;height:30px;display:grid;place-items:center;border-radius:var(--r-sm);cursor:pointer;color:var(--text)}
.ann-x:hover {background:var(--panel-2)}
.ann-x svg {width:14px;height:14px}
.ann-x path {fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.site-head {position:relative;z-index:50;background:var(--hero-top);border-bottom:1px solid var(--line-soft)}
.head-inner {max-width:1360px;min-height:64px;margin:auto;padding-inline:40px;display:flex;align-items:stretch;gap:36px;position:relative}
.brand {display:flex;align-items:center;gap:10px;font-size:19px;font-weight:var(--weight-bold);letter-spacing:.02em;flex:none}
.brand img {width:28px;height:28px;flex:none}
.desktop-nav {display:flex;flex:1;min-width:0}
.tabs {display:flex;align-items:center;list-style:none;margin:0;padding:0;gap:2px;flex:1;min-width:0}
.tabs li {align-self:stretch;display:flex}
.tab {position:relative;display:flex;align-items:center;padding:0 14px;font-size:14.5px;color:var(--muted);white-space:nowrap;transition:color var(--ease);min-height:44px}
.tab:hover {color:var(--text)}
.tab::after {content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;border-radius:var(--r-xs);background:var(--accent);transform:scaleX(0);transition:transform .25s ease}
.tab[aria-current="page"] {color:var(--text);font-weight:var(--weight-semibold)}
.tab[aria-current="page"]::after {transform:scaleX(1)}
.head-tools {display:flex;align-items:center;gap:18px;flex:none;margin-left:auto}
.lang-wrap {position:relative}
.lang {display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;min-width:44px;width:auto;padding:0 6px;font-size:var(--text-sm);color:var(--muted);border-radius:var(--r-sm)}
.lang span {white-space:nowrap}
.lang svg {width:16px;height:16px}
.lang svg circle,.lang svg path {fill:none;stroke:currentColor;stroke-width:1.3}
.lang-caret {font-size:11px}
.lang-menu {position:absolute;top:calc(100% + 12px);right:0;min-width:180px;padding:8px;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-card);z-index:3}
.lang-menu a {display:flex;align-items:center;min-height:40px;padding:8px 12px;font-size:var(--text-sm);border-radius:var(--r-sm)}
.lang-menu a:hover,.lang-menu a[aria-current] {background:var(--panel-2)}
.login {display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding-inline:20px;border-radius:var(--r-btn);background:var(--text);color:var(--panel);font-size:var(--text-sm);font-weight:var(--weight-medium);box-shadow:inset 0 1px 0 var(--hi-line-weak)}
.login:hover {background:var(--muted)}
.menu-toggle {display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:1px solid var(--border);border-radius:var(--r-btn);font-size:22px}
.mobile-drawer {display:none}
.site-footer {border-top:1px solid var(--border);background:var(--panel-2);padding-top:64px;padding-bottom:32px}
.footer-grid {display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:48px}
.footer-grid>* {min-width:0}
.footer-intro {margin-top:20px;color:var(--muted);font-size:var(--text-sm);max-width:30em}
.footer-title {font-size:var(--text-sm);font-weight:var(--weight-semibold);margin-bottom:16px}
.footer-links {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;font-size:var(--text-sm)}
.footer-links a,.footer-languages a,.footer-legal a {display:inline-flex;align-items:center;min-height:28px}
.footer-links a:hover,.footer-legal a:hover,.footer-languages a:hover {text-decoration:underline;text-underline-offset:4px}
.footer-languages {display:flex;flex-wrap:wrap;gap:8px 24px;margin-top:40px;font-size:var(--text-sm)}
.footer-bottom {display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:24px;padding-top:24px;border-top:1px solid var(--border);font-size:13px;color:var(--muted)}
.footer-legal {display:flex;flex-wrap:wrap;gap:8px 20px}
@media (max-width:1200px) {
  .head-inner {gap:16px;padding-inline:24px}
  .tab {padding-inline:9px;font-size:13px}
  .tab::after {left:9px;right:9px}
  .head-tools {gap:10px}
}
@media (max-width:1000px) {
  .head-inner {min-height:64px;gap:12px;padding-inline:20px}
  .desktop-nav {display:none}
  .head-tools {margin-left:auto;gap:8px}
  .menu-toggle {display:inline-flex}
  .mobile-drawer:not([hidden]) {display:block;position:absolute;top:100%;left:0;right:0;padding:16px 20px 24px;background:var(--panel);border-bottom:1px solid var(--border);box-shadow:var(--shadow-soft);max-height:calc(100dvh - 104px);overflow-y:auto;overscroll-behavior:contain;z-index:5}
  .mobile-drawer a {display:flex;align-items:center;width:100%;min-height:44px;padding:10px 14px;color:var(--text)}
  .mobile-drawer a[aria-current] {background:var(--panel-2);border-radius:var(--r-btn)}
  .drawer-languages {border-top:1px solid var(--border);margin-top:16px;padding-top:12px}
  .footer-grid {gap:24px}
}
@media (max-width:768px) {
  :root {--title-xl:clamp(28px,6vw,40px);--section-space:64px}
  .grid {grid-template-columns:repeat(2,minmax(0,1fr))}
  .ann-inner {padding-inline:48px;font-size:12.5px;gap:8px}
  .footer-grid {grid-template-columns:1fr 1fr}
  .footer-grid>:first-child {grid-column:1/-1}
}
@media (max-width:640px) {
  :root {--gutter:20px}
  .no-break {white-space:normal}
  .grid,.footer-grid {grid-template-columns:minmax(0,1fr)}
  .panel,.card {padding:22px}
  .tilt,.tilt-content,[data-tilt] {transform:none}
  .section-frame {max-width:100%;overflow-x:clip}
  .head-inner {padding-inline:16px}
  .head-tools {margin-left:auto;gap:4px}
  .head-tools .login {padding-inline:14px}
  .brand {gap:7px;font-size:17px}
  .brand img {width:25px;height:25px}
  .lang {font-size:12px}
  .head-tools .lang svg {display:none}
  .ann-inner {flex-wrap:wrap;gap:0 6px;line-height:1.4}
  .ann-sep {display:none}
  .footer-grid>:first-child {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}
}