:root {
  --bg:#fefefe;
  --bg-panel:#f2f2f3;
  --bg-panel2:#ffffff;
  --border:#e6e6ea;
  --border-strong:#d4d4dc;
  --accent:#3550f2;
  --accent-dark:#2436c4;
  --accent-tint:#eef0fe;
  --accent-soft:#a9b4fa;
  --violet:#9b7bff;
  --note-yellow:#ffd84d;
  --note-mint:#bfeccf;
  --note-pink:#ffc9d6;
  --text:#1c1c22;
  --text-muted:#5f6070;
  --text-faint:#a3a4b1;
  --on-accent:#ffffff;
  --success:#2c9f63;
  --warn:#d99a0b;
  --error:#e0484f;
  --transparent:transparent;
  --veil:rgba(28,28,34,.18);
  --font-display:'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans','Microsoft YaHei',sans-serif;
  --font-body:'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans','Apple SD Gothic Neo',sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --r-xs:6px;
  --r-sm:8px;
  --r-md:12px;
  --r-lg:20px;
  --r-xl:40px;
  --r-mobile-panel:28px;
  --r-pill:999px;
  --r-circle:50%;
  --r-shot:10px;
  --tracking-display:-.025em;
  --tracking-cjk:-.02em;
  --weight-normal:400;
  --weight-medium:500;
  --text-xs:12px;
  --text-sm:13px;
  --text-body:15px;
  --text-large:18px;
  --title-h1:clamp(34px,1.2rem + 2.2vw,48px);
  --title-h2:clamp(26px,1rem + 1.4vw,36px);
  --title-h3:24px;
  --gutter:32px;
  --wrap-width:1184px;
  --read-width:800px;
  --header-height:64px;
  --section-space:140px;
  --gap:24px;
  --space-xs:8px;
  --space-sm:12px;
  --space-md:16px;
  --space-lg:24px;
  --space-xl:32px;
  --shadow-hair:0 1px 2px rgba(28,28,34,.05);
  --shadow-soft:0 12px 40px rgba(28,28,34,.08);
  --shadow-chip:0 1px 2px rgba(28,28,34,.05),0 6px 18px rgba(28,28,34,.08);
  --shadow-lift:0 1px 2px rgba(28,28,34,.04),0 12px 40px rgba(28,28,34,.08),0 48px 96px -36px rgba(53,80,242,.24);
  --shadow-accent:inset 0 1px 0 rgba(255,255,255,.18),0 10px 24px -10px rgba(53,80,242,.6);
  --ring-dot:inset 0 0 0 1px rgba(28,28,34,.08);
  --ease:ease;
  --duration:.2s;
  --reveal-duration:.6s;
  --halo-duration:12s;
}
*,*::before,*::after { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:24px; }
html.nav-open { overflow:hidden; }
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;
  -moz-osx-font-smoothing:grayscale;
}
[hidden] { display:none !important; }
img { max-width:100%; }
svg { display:block; flex-shrink:0; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
a { color:var(--accent); text-underline-offset:4px; }
a:hover { color:var(--accent-dark); }
button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:4px;
}
h1,h2,h3,h4 {
  font-family:var(--font-display);
  font-weight:var(--weight-normal);
  line-height:1.2;
  letter-spacing:var(--tracking-cjk);
  text-wrap:balance;
  overflow-wrap:break-word;
}
h1 { font-size:var(--title-h1); line-height:1.12; }
h2 { font-size:var(--title-h2); }
h3 { font-size:var(--title-h3); }
p { margin-top:0; }
strong { font-weight:var(--weight-medium); }
code,kbd,pre { font-family:var(--font-mono); }
code { overflow-wrap:anywhere; font-size:.9em; }
pre {
  max-width:100%;
  min-width:0;
  overflow-x:auto;
  padding:var(--space-lg);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  background:var(--bg-panel);
  color:var(--text);
  -webkit-overflow-scrolling:touch;
}
pre code { font-size:var(--text-sm); white-space:pre; overflow-wrap:normal; word-break:normal; }
hr { border:0; border-top:1px solid var(--border); margin-block:var(--space-xl); }
figure { margin:0; }
.vh {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
  border:0;
}
.skip-link {
  position:fixed;
  z-index:100;
  left:var(--gutter);
  top:8px;
  padding:var(--space-sm);
  background:var(--bg-panel2);
  color:var(--accent);
  border-radius:var(--r-sm);
  transform:translateY(-160%);
}
.skip-link:focus { transform:none; }
.keep { white-space:nowrap; }
.wrap {
  width:100%;
  max-width:var(--wrap-width);
  margin-inline:auto;
  padding-inline:var(--gutter);
  min-width:0;
}
.wrap--read { max-width:calc(var(--read-width) + var(--gutter) * 2); }
.section { padding-top:var(--section-space); padding-bottom:var(--section-space); }
.section--decorated,.hero { overflow-x:clip; }
.section-heading { max-width:720px; margin:0 auto 48px; text-align:center; }
.section-heading p { color:var(--text-muted); margin:var(--space-md) 0 0; }
.grid-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--gap); }
.grid-two > *, .wrap > *, .card > *, .prose > * { min-width:0; }
.stack > * + * { margin-top:var(--space-lg); }
.prose { min-width:0; overflow-wrap:break-word; }
.prose h2 { margin-top:72px; margin-bottom:var(--space-lg); scroll-margin-top:var(--space-xl); }
.prose h3 { margin-top:40px; margin-bottom:var(--space-md); }
.prose p,.prose li { line-height:1.9; }
.prose p { margin-bottom:var(--space-lg); }
.prose li + li { margin-top:var(--space-xs); }
.prose :not(pre) > code {
  background:var(--bg-panel);
  color:var(--text);
  border-radius:var(--r-xs);
  padding:2px 5px;
}
.muted { color:var(--text-muted); }
.mono { font-family:var(--font-mono); }
.text-link { font-weight:var(--weight-medium); text-decoration:none; }
.text-link:hover { text-decoration:underline; }
.card {
  min-width:0;
  padding:var(--space-xl);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  background:var(--bg-panel2);
  color:var(--text);
  box-shadow:var(--shadow-soft);
}
.card h3 { margin-top:0; }
.card p { color:var(--text-muted); }
.panel {
  position:relative;
  z-index:1;
  background:var(--bg-panel);
  color:var(--text);
  border-radius:var(--r-xl) var(--r-xl) 0 0;
  padding-top:150px;
  padding-bottom:var(--section-space);
}
.panel__intro { text-align:center; }
.panel__intro h2 { margin:0; }
.panel__intro p { margin:14px auto 0; max-width:560px; color:var(--text-muted); }
.cta { margin-top:26px; display:flex; justify-content:center; gap:12px; flex-wrap:wrap; }
.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  min-height:48px;
  padding:10px 22px;
  border:1px solid var(--transparent);
  border-radius:var(--r-md);
  font-size:15.5px;
  font-weight:var(--weight-medium);
  line-height:1.5;
  text-decoration:none;
  letter-spacing:-.005em;
  text-align:center;
  transition:background-color var(--duration) var(--ease),border-color var(--duration) var(--ease);
}
.btn svg { width:18px; height:18px; }
.btn--primary {
  background:var(--accent);
  color:var(--on-accent);
  box-shadow:var(--shadow-accent);
}
.btn--primary:hover,.btn--primary.is-hover { background:var(--accent-dark); color:var(--on-accent); }
.btn--ghost {
  background:var(--bg-panel2);
  color:var(--text);
  border-color:var(--border);
  box-shadow:var(--shadow-hair);
}
.btn--ghost svg { width:16px; height:16px; color:var(--text-muted); }
.btn--ghost:hover,.btn--ghost.is-hover { border-color:var(--border-strong); color:var(--text); }
.btn.is-focus { outline:2px solid var(--accent); outline-offset:3px; }
.btn:disabled,.btn[aria-disabled="true"] {
  background:var(--bg-panel);
  color:var(--text-muted);
  border-color:var(--border);
  box-shadow:none;
  cursor:not-allowed;
}
.topbar { position:relative; z-index:40; background:var(--bg); color:var(--text); border-bottom:1px solid var(--border); }
.topbar__inner {
  position:relative;
  max-width:min(100%,calc(1280px + var(--gutter) * 2));
  margin:0 auto;
  padding-inline:var(--gutter);
  height:var(--header-height);
  display:flex;
  align-items:center;
  gap:28px;
}
.brand {
  display:inline-flex;
  align-items:center;
  gap:10px;
  text-decoration:none;
  color:var(--text);
  font-size:var(--text-body);
  font-weight:var(--weight-medium);
  letter-spacing:-.01em;
  flex-shrink:0;
}
.brand:hover { color:var(--text); }
.brand__logo,.brand__slot { width:32px; height:32px; flex-shrink:0; border-radius:var(--r-sm); }
.brand__logo { display:block; }
.brand__slot {
  border:1.5px solid var(--transparent);
  background:linear-gradient(var(--bg-panel2),var(--bg-panel2)) padding-box,linear-gradient(135deg,var(--accent),var(--violet)) border-box;
  color:var(--text);
  box-shadow:var(--shadow-hair);
}
.brand__name { white-space:nowrap; }
.tabs { margin-left:auto; align-self:stretch; min-width:0; }
.tabs ul { display:flex; align-items:center; list-style:none; margin:0; padding:0; height:100%; gap:0; }
.tabs li { height:100%; }
.tabs a {
  position:relative;
  display:flex;
  align-items:center;
  height:100%;
  padding-inline:14px;
  font-size:14.5px;
  color:var(--text-muted);
  text-decoration:none;
  white-space:nowrap;
  transition:color var(--duration) var(--ease);
}
.tabs a::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 var(--ease);
}
.tabs a:hover,.tabs a[aria-current="page"] { color:var(--text); }
.tabs a[aria-current="page"]::after { transform:scaleX(1); }
.tabs a:focus-visible { outline-offset:-6px; border-radius:var(--r-xs); }
.header-tools { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.language-picker { position:relative; }
.lang {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  min-height:34px;
  padding:6px 12px;
  border:1px solid var(--border);
  border-radius:var(--r-pill);
  background:var(--bg-panel2);
  color:var(--text);
  font-size:13.5px;
  white-space:nowrap;
}
.lang svg { width:15px; height:15px; color:var(--text-muted); }
.lang__short { display:none; }
.language-menu {
  position:absolute;
  top:calc(100% + 12px);
  right:0;
  z-index:5;
  min-width:184px;
  padding:6px;
  margin:0;
  list-style:none;
  border:1px solid var(--border);
  border-radius:var(--r-md);
  background:var(--bg-panel2);
  color:var(--text);
  box-shadow:var(--shadow-soft);
}
.language-menu a { display:flex; align-items:center; min-height:44px; padding:8px 12px; color:var(--text); text-decoration:none; border-radius:var(--r-sm); }
.language-menu a:hover,.language-menu a[aria-current="true"] { background:var(--accent-tint); color:var(--accent-dark); }
.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-sm);
  background:var(--bg-panel2);
  color:var(--text);
}
.menu-toggle svg { width:22px; height:22px; }
.mobile-drawer { display:none; }
.menu-veil {
  position:fixed;
  z-index:-1;
  inset:var(--header-height) 0 0;
  width:100%;
  border:0;
  background:var(--veil);
  color:var(--text);
}
.site-footer { background:var(--bg-panel); color:var(--text); border-top:1px solid var(--border); padding-top:72px; padding-bottom:32px; }
.footer-grid { display:grid; grid-template-columns:1.5fr 1fr 1.2fr 1fr; gap:40px; }
.footer-grid > * { min-width:0; }
.footer-brand p { max-width:320px; color:var(--text-muted); margin-top:var(--space-lg); }
.site-footer h2 { font-size:var(--text-body); margin:0 0 16px; letter-spacing:0; }
.footer-list { list-style:none; margin:0; padding:0; }
.footer-list a { display:block; padding-block:5px; color:var(--text-muted); text-decoration:none; overflow-wrap:anywhere; }
.footer-list a:hover { color:var(--accent); }
.footer-bottom { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; margin-top:56px; padding-top:24px; border-top:1px solid var(--border); color:var(--text-muted); font-size:var(--text-sm); }
.footer-bottom p { margin:0; }
.footer-legal { display:flex; flex-wrap:wrap; gap:20px; }
.footer-legal a { color:var(--text-muted); }
.reveal { opacity:1; transform:none; }
.reveal-ready .reveal:not(.shown) { opacity:0; transform:translateY(16px); }
.reveal-ready .reveal { transition:opacity var(--reveal-duration) var(--ease),transform var(--reveal-duration) var(--ease); }
@media (max-width:1280px) {
  .topbar__inner { gap:18px; }
  .tabs a { padding-inline:10px; font-size:14px; }
  .tabs a::after { left:10px; right:10px; }
  .brand__name { display:none; }
}
@media (max-width:1100px) {
  .tabs { display:none; }
  .header-tools { margin-left:auto; }
  .menu-toggle { display:inline-flex; }
  .mobile-drawer:not([hidden]) {
    position:absolute;
    display:block;
    z-index:4;
    top:var(--header-height);
    left:0;
    right:0;
    max-height:calc(100vh - var(--header-height));
    max-height:calc(100dvh - var(--header-height));
    overflow-y:auto;
    overscroll-behavior:contain;
    padding:16px var(--gutter) 28px;
    background:var(--bg-panel2);
    color:var(--text);
    border-bottom:1px solid var(--border);
    box-shadow:var(--shadow-soft);
  }
  .mobile-drawer ul { list-style:none; margin:0; padding:0; }
  .mobile-drawer a { display:flex; align-items:center; width:100%; min-height:48px; padding:12px 16px; color:var(--text); text-decoration:none; border-radius:var(--r-sm); }
  .mobile-drawer a[aria-current] { background:var(--accent-tint); color:var(--accent-dark); }
  .mobile-drawer__languages { margin-top:16px !important; padding-top:16px !important; border-top:1px solid var(--border); }
  .footer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:768px) {
  :root { --gutter:20px; --title-h1:clamp(24px,4vw,30px); --title-h2:clamp(24px,4vw,30px); }
  .grid-two { grid-template-columns:minmax(0,1fr); }
  .panel { border-radius:var(--r-mobile-panel) var(--r-mobile-panel) 0 0; padding-top:110px; padding-bottom:100px; }
}
@media (max-width:640px) {
  :root { --gutter:16px; }
  .topbar__inner { gap:12px; }
  .header-tools { margin-left:auto; }
  .lang { min-height:44px; }
  .lang__txt { display:none; }
  .lang__short { display:inline; }
  .card { padding:24px; }
  .footer-grid { grid-template-columns:minmax(0,1fr); gap:32px; }
  .footer-bottom { display:block; }
  .footer-legal { margin-top:16px; }
  .tilt,[class*="tilt--"] { transform:none !important; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition:none !important; }
  .reveal-ready .reveal:not(.shown) { opacity:1; transform:none; }
}
@media print {
  .topbar,.dl-fab,.menu-veil { display:none !important; }
  .reveal-ready .reveal:not(.shown) { opacity:1; transform:none; }
}