:root {
  --bg:#FAFAFA;
  --bg-panel:#FFFFFF;
  --bg-panel-2:#F2F2F2;
  --border:#E6E6E6;
  --border-strong:#D6D6D6;
  --accent:#111111;
  --accent-dark:#000000;
  --text:#171717;
  --text-muted:#6E6E6E;
  --text-faint:#A3A3A3;
  --orbit:#E0E0E0;
  --orbit-node:#BDBDBD;
  --face-top:#2A2A2A;
  --core-sub:#8C8C8C;
  --success:#2E7D4F;
  --warn:#9A5B0B;
  --error:#B8382E;
  --ink-rgb:0 0 0;
  --paper-rgb:255 255 255;
  --bg-rgb:250 250 250;
  --font-display:"Inter","Noto Sans SC",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  --font-body:"Inter","Noto Sans SC",-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --h1-size:clamp(30px,3.2vw + 2px,48px);
  --h2-size:clamp(26px,3vw,42px);
  --h3-size:22px;
  --body-size:15px;
  --small-size:13px;
  --micro-size:11px;
  --track-display:-0.035em;
  --track-cjk:-0.02em;
  --r-xs:2px;
  --r-sm:8px;
  --r-card:20px;
  --r-window:24px;
  --r-pill:999px;
  --r-circle:50%;
  --gutter:48px;
  --content-max:1200px;
  --reading-max:800px;
  --shell-max:1440px;
  --nav-h:64px;
  --bar-h:44px;
  --s:1;
  --section-space:112px;
  --motion-fast:200ms;
  --motion-reveal:650ms;
  --cycle-duration:8s;
  --shadow-btn:0 1px 2px rgb(var(--ink-rgb) / .14),0 8px 18px -8px rgb(var(--ink-rgb) / .42);
  --shadow-card:0 1px 2px rgb(var(--ink-rgb) / .04),0 18px 36px -18px rgb(var(--ink-rgb) / .14);
  --shadow-fab:0 1px 2px rgb(var(--ink-rgb) / .16),0 12px 28px -10px rgb(var(--ink-rgb) / .38);
  --shadow-window:0 2px 4px rgb(var(--ink-rgb) / .03),0 24px 60px -28px rgb(var(--ink-rgb) / .18);
  --veil:rgb(var(--ink-rgb) / .2);
}
*,*::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(--body-size);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
[hidden] { display:none !important; }
a { color:inherit; text-underline-offset:4px; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
button:disabled { cursor:not-allowed; }
img,svg,video { max-width:100%; }
img { height:auto; }
svg { flex-shrink:0; }
button svg,a svg { flex-shrink:0; }
:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
::selection { background:var(--accent); color:var(--bg-panel); }
h1,h2,h3,h4,p,figure { margin-top:0; }
h1,h2,h3 { font-family:var(--font-display); font-weight:400; text-wrap:balance; overflow-wrap:break-word; }
h1 { font-size:var(--h1-size); line-height:1.14; letter-spacing:var(--track-cjk); }
h2 { font-size:var(--h2-size); line-height:1.2; letter-spacing:var(--track-cjk); }
h3 { font-size:var(--h3-size); line-height:1.4; letter-spacing:var(--track-cjk); }
p { margin-bottom:1.25em; }
strong { font-weight:500; }
small,.small { font-size:var(--small-size); }
.muted { color:var(--text-muted); }
.mono { font-family:var(--font-mono); }
.keep { white-space:nowrap; }
code,kbd,pre { font-family:var(--font-mono); }
code { overflow-wrap:anywhere; font-size:.9em; }
pre {
  max-width:100%;
  min-width:0;
  margin:0 0 24px;
  padding:24px;
  overflow-x:auto;
  background:var(--bg-panel-2);
  color:var(--text);
  border-radius:var(--r-sm);
  font-size:var(--small-size);
  line-height:1.85;
  tab-size:2;
}
pre code { font:inherit; white-space:pre; overflow-wrap:normal; word-break:normal; }
ul,ol { padding-left:1.5em; }
li + li { margin-top:.35em; }
.shell,.wrap,.reading,.header-shell {
  width:100%;
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.shell { max-width:var(--shell-max); }
.wrap { max-width:calc(var(--content-max) + var(--gutter) * 2); }
.reading { max-width:calc(var(--reading-max) + var(--gutter) * 2); }
.header-shell { max-width:min(100%,calc(1280px + var(--gutter) * 2)); }
.section { padding-top:var(--section-space); padding-bottom:var(--section-space); }
.section-head { margin-bottom:48px; }
.eyebrow { font:var(--micro-size)/1.5 var(--font-mono); letter-spacing:.04em; color:var(--text-muted); }
.flow > * + * { margin-top:24px; }
.grid { display:grid; gap:24px; }
.grid--two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.grid--three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.grid > *,.hero-grid > *,.footer-grid > *,.browser > *,.card-head > * { min-width:0; }
.panel,.card {
  min-width:0;
  background:var(--bg-panel);
  color:var(--text);
  border:1px solid var(--border);
  border-radius:var(--r-card);
  padding:28px;
}
.panel--raised,.card--raised { box-shadow:var(--shadow-card); }
.card h3 { margin-bottom:14px; }
.card p:last-child,.panel p:last-child { margin-bottom:0; }
.btn {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  gap:8px;
  min-height:44px;
  padding:9px 21px;
  border:1px solid var(--border);
  border-radius:var(--r-pill);
  background:var(--bg-panel);
  color:var(--text);
  font-family:var(--font-body);
  font-size:var(--body-size);
  font-weight:500;
  line-height:1.6;
  letter-spacing:-.005em;
  text-decoration:none;
  text-align:center;
  transition:transform var(--motion-fast) ease,border-color var(--motion-fast) ease;
}
.btn svg { width:15px; height:15px; display:block; }
.btn:hover,.btn.is-hover { transform:translateY(-1px); border-color:var(--border-strong); }
.btn:active,.btn.is-pressed { transform:translateY(0); background:var(--bg-panel-2); color:var(--text); }
.btn--solid { background:var(--accent); color:var(--bg-panel); border-color:var(--accent); box-shadow:var(--shadow-btn); }
.btn--solid:hover,.btn--solid.is-hover { background:var(--accent-dark); color:var(--bg-panel); border-color:var(--accent-dark); }
.btn--solid:active,.btn--solid.is-pressed { background:var(--face-top); color:var(--bg-panel); }
.btn--line { background:var(--bg-panel); color:var(--text); }
.btn:disabled,.btn[aria-disabled="true"] { background:var(--bg-panel-2); color:var(--text-muted); box-shadow:none; transform:none; }
.btn.is-focused { outline:2px solid var(--accent); outline-offset:4px; }
.cta-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:32px; }
.topbar,#site-header { position:relative; z-index:50; height:var(--nav-h); }
.topbar .header-shell,#site-header .header-shell { height:100%; display:flex; align-items:center; gap:24px; }
.brand {
  display:inline-flex;
  align-items:center;
  flex-shrink:0;
  gap:10px;
  color:var(--text);
  font-size:var(--body-size);
  font-weight:500;
  letter-spacing:-.01em;
  text-decoration:none;
}
.brand-mark { width:26px; height:26px; display:block; flex-shrink:0; }
.topnav { display:flex; align-items:center; min-width:0; margin-left:auto; }
.topnav ul {
  display:flex;
  align-items:center;
  list-style:none;
  margin:0;
  padding:0;
  gap:30px;
}
.topnav li { margin:0; flex-shrink:0; }
.topnav a { display:block; text-decoration:none; font-size:14px; color:var(--text-muted); letter-spacing:-.005em; white-space:nowrap; }
.topnav a:hover,.topnav a[aria-current="page"] { color:var(--text); }
.topnav a[aria-current="page"] { font-weight:500; }
.header-tools { display:flex; align-items:center; gap:8px; flex-shrink:0; margin-left:12px; }
.language { position:relative; }
.lang {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:32px;
  padding:4px 13px;
  border:1px solid var(--border);
  border-radius:var(--r-pill);
  background:var(--bg-panel);
  color:var(--text);
  font-size:var(--small-size);
  white-space:nowrap;
}
.lang-caret { color:var(--text-muted); font-size:var(--micro-size); }
.language-menu {
  position:absolute;
  right:0;
  top:calc(100% + 10px);
  min-width:176px;
  padding:8px;
  margin:0;
  list-style:none;
  background:var(--bg-panel);
  color:var(--text);
  border:1px solid var(--border);
  border-radius:var(--r-sm);
  box-shadow:var(--shadow-card);
  z-index:4;
}
.language-menu li { margin:0; }
.language-menu a { display:flex; align-items:center; min-height:44px; padding:8px 12px; text-decoration:none; font-size:var(--small-size); }
.language-menu a:hover,.language-menu a[aria-current="true"] { background:var(--bg-panel-2); color:var(--text); border-radius:var(--r-sm); }
.menu-toggle {
  display:none;
  align-items:center;
  justify-content:center;
  min-width:44px;
  min-height:44px;
  padding:10px;
  border:1px solid var(--border);
  border-radius:var(--r-sm);
  background:var(--bg-panel);
  color:var(--text);
}
.menu-toggle svg { width:20px; height:20px; }
.nav-veil { position:fixed; inset:var(--nav-h) 0 0; background:var(--veil); color:var(--text); border:0; z-index:1; }
.mobile-drawer {
  position:absolute;
  inset:var(--nav-h) 0 auto;
  z-index:2;
  padding:16px var(--gutter) 24px;
  max-height:calc(100vh - var(--nav-h));
  max-height:calc(100dvh - var(--nav-h));
  overflow-y:auto;
  overscroll-behavior:contain;
  background:var(--bg-panel);
  color:var(--text);
  border-bottom:1px solid var(--border);
}
.mobile-drawer ul { list-style:none; padding:0; margin:0; }
.mobile-drawer li { margin:0; }
.mobile-drawer a { display:flex; align-items:center; width:100%; min-height:44px; padding:10px 12px; text-decoration:none; }
.mobile-drawer a[aria-current] { font-weight:500; }
.mobile-languages { margin-top:16px; padding-top:16px; border-top:1px solid var(--border); }
.mobile-languages p { margin:0 12px 8px; color:var(--text-muted); font-size:var(--small-size); }
.preview-language > summary { list-style:none; cursor:pointer; }
.preview-language > summary::-webkit-details-marker { display:none; }
.preview-mobile { display:none; }
.site-footer { padding-top:64px; padding-bottom:96px; border-top:1px solid var(--border); }
.footer-grid { display:grid; grid-template-columns:1.3fr .8fr 1.2fr .8fr; gap:48px; }
.footer-brand p { max-width:290px; margin:20px 0 0; color:var(--text-muted); font-size:var(--small-size); line-height:1.9; }
.footer-heading { margin:0 0 20px; font-size:var(--small-size); font-weight:500; }
.footer-links { margin:0; padding:0; list-style:none; }
.footer-links li { margin:0 0 10px; }
.footer-links a { color:var(--text-muted); font-size:var(--small-size); text-decoration:none; overflow-wrap:anywhere; }
.footer-links a:hover { color:var(--text); text-decoration:underline; }
.footer-bottom { display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; margin-top:48px; padding-top:24px; border-top:1px solid var(--border); color:var(--text-muted); font-size:var(--small-size); }
.footer-bottom p { margin:0; }
.prose { min-width:0; line-height:1.9; }
.prose :is(div,section,article,figure) { min-width:0; max-width:100%; }
.prose h2 { margin-top:64px; margin-bottom:24px; }
.prose h3 { margin-top:36px; margin-bottom:16px; }
.prose p,.prose li { overflow-wrap:break-word; }
.prose :not(pre) > code { background:var(--bg-panel-2); color:var(--text); padding:2px 5px; border-radius:var(--r-xs); }
.prose img { display:block; margin-block:24px; border-radius:var(--r-card); }
.prose section[id],.prose h2[id],.prose h3[id] { scroll-margin-top:24px; }
.decorated,.hero,[data-decoration-host] { overflow-x:clip; }
.reveal { opacity:1; }
.reveal.reveal-pending { opacity:0; transform:translateY(16px); transition:opacity var(--motion-reveal) ease,transform var(--motion-reveal) ease; }
.reveal.shown { opacity:1; transform:none; }
@media (max-width:1320px) {
  :root { --s:.86; }
}
@media (max-width:1080px) {
  .topnav { display:none; }
  .header-tools { margin-left:auto; }
  .menu-toggle { display:inline-flex; }
  .preview-mobile { display:block; }
  .preview-mobile > summary { display:flex; list-style:none; cursor:pointer; }
  .preview-mobile > summary::-webkit-details-marker { display:none; }
  .preview-mobile nav { position:absolute; inset:var(--nav-h) 0 auto; padding:16px var(--gutter); background:var(--bg-panel); color:var(--text); border-bottom:1px solid var(--border); max-height:calc(100dvh - var(--nav-h)); overflow-y:auto; }
  .preview-mobile nav a { display:flex; align-items:center; min-height:44px; padding:10px 12px; text-decoration:none; }
}
@media (max-width:1080px) {
  :root { --s:.714; --h1-size:clamp(28px,4.4vw,40px); }
  .footer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .grid--three { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:768px) {
  :root { --gutter:20px; --h1-size:clamp(24px,5vw,30px); --h2-size:clamp(24px,4vw,30px); --h3-size:20px; --section-space:72px; }
  .header-tools { margin-left:auto; }
  .topbar .header-shell,#site-header .header-shell { gap:12px; }
  .grid--two,.grid--three { grid-template-columns:minmax(0,1fr); }
  .section-head { margin-bottom:32px; }
}
@media (max-width:640px) {
  [class*="tilt"] { transform:none !important; }
  .footer-grid { grid-template-columns:minmax(0,1fr); gap:32px; }
  .panel,.card { padding:22px; }
  pre { padding:18px; }
  .brand { font-size:14px; gap:8px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation:none !important; transition:none !important; }
  .reveal.reveal-pending { opacity:1; transform:none; }
}