:root {
  color-scheme: light;
  --bg: #F9F4EA;
  --bg-panel: #FFFDF8;
  --bg-panel-2: #F1E9DA;
  --border: #E4D9C6;
  --border-strong: #CFC1AA;
  --accent: #12A869;
  --accent-dark: #0B7A4B;
  --text: #2A2118;
  --text-muted: #6E6252;
  --success: #2E8B57;
  --warn: #C98A14;
  --error: #C2412D;
  --paper-top: #FCF8F0;
  --paper-bottom: #F3EBDC;
  --mint-hl: #C9F3DD;
  --band-a: #8FD9B2;
  --band-b: #DCEBDD;
  --band-c: #13261D;
  --ink-card: #14201A;
  --ticket-yellow: #F2C94C;
  --ticket-blue: #A9D4F5;
  --on-accent: #FFFFFF;
  --on-dark: #F4EFE4;
  --on-dark-muted: rgba(244,239,228,.76);
  --on-dark-edge: rgba(244,239,228,.10);
  --on-dark-line: rgba(244,239,228,.42);
  --accent-tint: rgba(18,168,105,.12);
  --accent-ring: rgba(18,168,105,.26);
  --shadow-accent: rgba(18,168,105,.12);
  --shadow-pine: rgba(11,122,75,.18);
  --shadow-edge: rgba(42,33,24,.07);
  --hairline: rgba(42,33,24,.10);
  --hi-edge: rgba(255,255,255,.92);
  --hi-soft: rgba(255,255,255,.34);
  --glass: rgba(255,253,248,.6);
  --dot-ring: rgba(42,33,24,.18);
  --veil: rgba(42,33,24,.34);
  --flag-red: #C8102E;
  --flag-blue: #1F3A73;
  --flag-white: #FFFFFF;
  --flag-edge: rgba(42,33,24,.2);
  --clear: transparent;
  --font-display: "Inter", "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;
  --font-body: "Inter", "Noto Sans SC", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  --size-body: 16px;
  --size-h1: 66px;
  --size-h2: clamp(28px,3vw,40px);
  --size-h3: 21px;
  --weight-display: 900;
  --r-xs: 4px;
  --r-sm: 6px;
  --r-region: 8px;
  --r-md: 10px;
  --r-win: 12px;
  --r-lg: 16px;
  --r-pill: 999px;
  --r-round: 50%;
  --gutter: 32px;
  --content-width: 1200px;
  --header-height: 64px;
  --anchor-offset: 80px;
  --toc-offset: 144px;
  --space-section: 80px;
  --ease: cubic-bezier(.2,.65,.3,1);
  --duration: .2s;
  --lift: inset 0 1px 0 var(--hi-edge),0 24px 40px var(--shadow-accent),0 2px 6px var(--shadow-edge);
  --lift-dark: inset 0 0 0 1px var(--on-dark-edge),0 24px 40px var(--shadow-pine),0 2px 6px var(--shadow-edge);
  --grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .165 0 0 0 0 .129 0 0 0 0 .094 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23g)' opacity='.06'/%3E%3C/svg%3E");
}
*,*::before,*::after { box-sizing:border-box }
html { -webkit-text-size-adjust:100%; scroll-padding-top:var(--anchor-offset); scroll-behavior:smooth }
html.nav-open { overflow:hidden }
body { margin:0; background:var(--grain),var(--bg); color:var(--text); font-family:var(--font-body); font-size:var(--size-body); 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 { cursor:pointer; background:none; border:0; padding:0 }
button:disabled { cursor:not-allowed }
img { max-width:100%; height:auto; vertical-align:middle }
svg { flex-shrink:0; vertical-align:middle }
p,h1,h2,h3,h4,figure,blockquote { margin:0 }
h1,h2,h3 { display:block; font-family:var(--font-display); text-wrap:balance; overflow-wrap:break-word }
h1 { font-size:clamp(52px,5vw,var(--size-h1)); font-weight:var(--weight-display); line-height:1.1; letter-spacing:-.02em }
h2 { font-size:var(--size-h2); font-weight:var(--weight-display); line-height:1.22; letter-spacing:-.02em }
h3 { font-size:var(--size-h3); font-weight:800; line-height:1.4 }
ul,ol { margin:0; padding-left:1.5em }
nav ul { list-style:none; padding:0; margin:0 }
[hidden] { display:none !important }
:focus-visible { outline:2px solid var(--accent-dark); outline-offset:3px; border-radius:var(--r-xs) }
::selection { background:var(--mint-hl); color:var(--text) }
code,kbd,pre { font-family:var(--font-mono) }
code { overflow-wrap:anywhere; font-size:.9em; background:var(--bg-panel-2); border-radius:var(--r-xs); padding:.1em .3em }
pre { max-width:100%; overflow-x:auto; padding:20px; background:var(--bg-panel-2); border:1px solid var(--border); border-radius:var(--r-md); line-height:1.7 }
pre code { padding:0; background:none; white-space:pre; overflow-wrap:normal }
.wrap { width:100%; max-width:calc(var(--content-width) + var(--gutter)*2); padding-inline:var(--gutter); margin-inline:auto }
.shell { width:min(1200px,100% - 64px); margin-inline:auto }
.section { padding-top:var(--space-section); padding-bottom:var(--space-section) }
.section-head { margin-bottom:32px; max-width:780px }
.section-head p { color:var(--text-muted); margin-top:12px }
.grid { display:grid; gap:24px }
.grid > *, .topbar__inner > *, .footer-grid > * { min-width:0 }
.grid--three { grid-template-columns:repeat(3,minmax(0,1fr)) }
.grid--five { grid-template-columns:repeat(5,minmax(0,1fr)) }
.stack > * + * { margin-top:20px }
.muted { color:var(--text-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 }
.skip { position:absolute; left:16px; top:12px; z-index:100; padding:8px 14px; background:var(--bg-panel); border:1px solid var(--border); border-radius:var(--r-sm); font-size:14px }
.skip:not(:focus) { width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0 }
.panel,.card { padding:24px; background:var(--bg-panel); border:1px solid var(--border); border-radius:var(--r-md); box-shadow:inset 0 1px 0 var(--hi-edge) }
.panel--sunken { background:var(--bg-panel-2) }
.card--lift { box-shadow:var(--lift) }
.btn,.btn-login,.btn-cap { display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; white-space:nowrap; font-weight:800; border-radius:var(--r-pill); transition:transform var(--duration),background-color var(--duration),box-shadow var(--duration) }
.btn { gap:8px; min-height:52px; padding:10px 30px; font-size:18px; letter-spacing:-.01em; border:1px solid var(--clear) }
.btn:hover,.btn-cap:hover { transform:translateY(-1px) }
.btn:active,.btn-cap:active,.btn.is-pressed { transform:translateY(1px) }
.btn--primary,.btn-primary,.btn-cap { background:linear-gradient(135deg,var(--accent),var(--accent-dark)); color:var(--on-accent); box-shadow:inset 0 1px 0 var(--hi-soft),0 14px 28px -10px var(--shadow-pine),0 10px 30px var(--shadow-accent) }
.btn--ghost { color:var(--text); background:var(--bg-panel); border-color:var(--border-strong); box-shadow:inset 0 1px 0 var(--hi-edge),0 2px 6px var(--shadow-edge) }
.btn--ghost:hover { background:var(--bg-panel-2) }
.btn--md { min-height:46px; padding:8px 24px; font-size:16px }
.btn--small { min-height:40px; padding:8px 18px; font-size:14px }
.btn:disabled,.btn[aria-disabled="true"] { opacity:.55; box-shadow:none; transform:none; pointer-events:none }
.btn__arrow { font-weight:600 }
.btn-login { min-height:38px; padding:6px 18px; border:1.5px solid var(--text); font-size:14px; font-weight:700 }
.btn-login:hover { background:var(--text); color:var(--bg-panel) }
.btn-cap { min-height:40px; padding:7px 20px; font-size:15px }
.cta-row { display:flex; flex-wrap:wrap; gap:12px; margin-top:22px }
.topbar { position:relative; z-index:60; border-bottom:1px solid var(--hairline); background:var(--clear) }
.topbar__inner { height:var(--header-height); display:flex; flex-wrap:nowrap; align-items:center; gap:28px }
.brand { display:inline-flex; align-items:center; gap:10px; flex-shrink:0 }
.brand img { width:32px; height:32px; flex-shrink:0 }
.brand__en { font-family:var(--font-display); font-weight:900; font-size:19px; letter-spacing:-.03em; color:var(--text); white-space:nowrap }
.brand__zh { font-size:14px; font-weight:500; color:var(--text-muted); padding-left:10px; border-left:1px solid var(--border-strong); line-height:1 }
.nav { flex:1; min-width:0 }
.nav__list { display:flex; align-items:center; list-style:none; margin:0; padding:0; gap:2px }
.nav__list > li > a,.more__btn { display:inline-flex; align-items:center; justify-content:center; gap:4px; min-height:38px; padding:6px 12px; border-radius:var(--r-pill); font-size:15px; font-weight:500; white-space:nowrap }
.nav__list > li > a:hover,.more__btn:hover { background:var(--bg-panel-2) }
.nav a[aria-current="page"],.more__btn.is-current { font-weight:700; background:var(--bg-panel-2) }
.more { position:relative }
.more__btn svg { color:var(--text-muted) }
.more__menu { position:absolute; top:calc(100% + 10px); left:-12px; width:420px; display:none; grid-template-columns:1fr 1fr; gap:4px 18px; padding:16px; background:var(--bg-panel); border:1px solid var(--border); border-radius:var(--r-md); box-shadow:var(--lift); z-index:70 }
.more.is-open .more__menu,.more:has(details[open]) .more__menu { display:grid }
.more__k { font-family:var(--font-mono); font-size:10.5px; letter-spacing:.08em; color:var(--text-muted); padding:0 10px 6px }
.more__group { min-width:0 }
.more__group a { display:block; min-height:44px; padding:8px 10px; border-radius:var(--r-sm) }
.more__group a:hover { background:var(--bg-panel-2) }
.more__group b { display:block; font-size:14.5px; font-weight:700 }
.more__group span { display:block; font-size:12.5px; color:var(--text-muted); line-height:1.5 }
.more details > summary { list-style:none; cursor:pointer }
.more details > summary::-webkit-details-marker { display:none }
.topbar__end { margin-left:auto; display:flex; align-items:center; gap:10px; flex-shrink:0 }
.language { position:relative }
.lang { display:inline-flex; align-items:center; justify-content:center; gap:6px; width:auto; min-width:44px; min-height:38px; padding:6px 10px; font-size:14px; font-weight:500; white-space:nowrap; border-radius:var(--r-sm) }
.lang span { white-space:nowrap }
.lang svg { color:var(--text-muted) }
.lang:hover { background:var(--bg-panel-2) }
.language__panel { display:none; position:absolute; right:0; top:calc(100% + 8px); width:190px; z-index:80; padding:8px; background:var(--bg-panel); border:1px solid var(--border); border-radius:var(--r-md); box-shadow:var(--lift) }
.language.is-open .language__panel { display:block }
.language__panel a { display:flex; align-items:center; width:100%; min-height:44px; padding:8px 12px; border-radius:var(--r-sm) }
.language__panel a:hover,.language__panel a[aria-current] { background:var(--bg-panel-2) }
.burger { display:none; align-items:center; justify-content:center; min-width:44px; min-height:44px; border:1px solid var(--border-strong); border-radius:var(--r-pill); background:var(--bg-panel) }
.burger svg { width:20px; height:20px }
.burger[aria-expanded="true"] { background:var(--bg-panel-2) }
.mobile-drawer { display:none; position:fixed; top:var(--header-height); right:0; left:0; height:calc(100dvh - var(--header-height)); max-height:calc(100dvh - var(--header-height)); z-index:55; padding:16px var(--gutter) 32px; background:var(--bg-panel); overflow-y:auto; overscroll-behavior:contain; border-top:1px solid var(--border) }
.mobile-drawer a { display:flex; align-items:center; width:100%; min-height:44px; padding:11px 14px; border-radius:var(--r-sm) }
.mobile-drawer a:hover,.mobile-drawer a[aria-current] { background:var(--bg-panel-2) }
.mobile-drawer__langs { margin-top:16px; padding-top:16px; border-top:1px solid var(--border) }
.menu-veil { display:none; position:fixed; inset:var(--header-height) 0 0; background:var(--veil); z-index:50; cursor:pointer }
.site-footer { padding-top:56px; padding-bottom:28px; background:var(--bg-panel-2); border-top:1px solid var(--border) }
.footer-grid { display:grid; grid-template-columns:1.35fr 1fr 1fr; gap:48px }
.footer-brand p { margin-top:16px; max-width:330px; color:var(--text-muted); font-size:14px }
.footer-title { font-size:15px; font-weight:800; margin-bottom:12px }
.footer-links { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:4px 16px }
.footer-links a,.footer-languages a,.footer-legal a { display:inline-flex; align-items:center; min-height:32px; font-size:14px }
.footer-links a:hover,.footer-languages a:hover,.footer-legal a:hover { text-decoration:underline; text-underline-offset:4px }
.footer-languages { display:flex; flex-wrap:wrap; gap:8px 24px; margin-top:32px; padding-top:24px; border-top:1px solid var(--border-strong) }
.footer-languages a[aria-current] { font-weight:800 }
.footer-bottom { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px 24px; margin-top:20px; color:var(--text-muted); font-size:13px }
.footer-legal { display:flex; flex-wrap:wrap; gap:8px 20px }
.prose { max-width:820px; overflow-wrap:break-word }
.prose > * + * { margin-top:20px }
.prose h2 { margin-top:48px }
.prose h3 { margin-top:32px }
.prose p,.prose li { line-height:1.9 }
.prose a { color:var(--accent-dark); text-decoration:underline; text-underline-offset:3px }
.prose li + li { margin-top:8px }
.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 { position:relative; display:block; min-height:160px; width:100%; max-width:100%; overflow:hidden; margin-top:24px; margin-bottom:24px }
#server-status > * { min-width:0; max-width:100% }
#server-status + * { margin-top:24px }
.decoration-stage { position:relative; overflow-x:clip; max-width:100% }
.stat-number,[data-count] { display:inline-block; font-family:var(--font-mono); font-variant-numeric:tabular-nums; min-width:3ch }
[data-count="150"] { min-width:3ch }
@media (max-width:1180px) {
  .topbar__inner { gap:18px }
  .nav__list > li > a,.more__btn { padding-inline:9px; font-size:14px }
  .topbar__end { gap:6px }
  .topbar__end .btn-cap { padding-inline:16px }
  .lang { padding-inline:6px }
}
@media (max-width:1050px) {
  .nav { display:none }
  .burger { display:inline-flex }
  .topbar__end { margin-left:auto }
  .mobile-drawer.is-open { display:block }
  .menu-veil.is-open { display:block }
}
@media (min-width:1051px) {
  html.nav-open { overflow:auto }
}
@media (max-width:768px) {
  :root { --gutter:24px; --space-section:56px }
  h1 { font-size:40px; line-height:1.12 }
  .grid--three { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .grid--five { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .footer-grid { grid-template-columns:1fr 1fr; gap:32px }
  .footer-brand { grid-column:1 / -1 }
  .topbar__end > .btn-cap { display:none }
}
@media (max-width:640px) {
  :root { --gutter:16px; --space-section:44px }
  .shell { width:100%; padding-inline:var(--gutter) }
  .no-break { white-space:normal }
  h1 { font-size:clamp(28px,8.8vw,40px) }
  .grid--three { grid-template-columns:1fr }
  .topbar__inner { gap:8px }
  .brand { gap:6px }
  .brand img { width:28px; height:28px }
  .brand__en { font-size:17px }
  .topbar__end { gap:4px; margin-left:auto }
  .topbar__end .btn-login { padding-inline:12px; font-size:13px; min-height:38px }
  .lang { padding-inline:6px; min-height:44px }
  .lang span { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%) }
  .language__panel { right:-44px }
  .brand__zh { font-size:12px; padding-left:6px }
  .btn { padding-inline:23px; font-size:16px }
  .footer-grid { grid-template-columns:1fr; gap:28px }
  .footer-brand { grid-column:auto }
  .footer-links { gap:4px 20px }
  .tilt,[data-tilt] { transform:none }
  .decoration-stage { max-width:100%; overflow-x:clip }
  .panel,.card { padding:20px }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto }
  *,*::before,*::after { transition-duration:0s !important; animation-duration:0s !important; animation-iteration-count:1 !important }
  .reveal,.reveal.pending,.reveal.shown { opacity:1; transform:none }
}