:root {
  --bg:#FAF3E3;
  --bg-panel:#FFFCF6;
  --bg-panel-2:#F2E8D5;
  --border:#E6D9C2;
  --accent:#E5412D;
  --accent-dark:#B8301F;
  --accent-hi:#EF6446;
  --text:#2A1D14;
  --text-muted:#6E5B4B;
  --success:#2E9E62;
  --warn:#C98A12;
  --error:#A8241C;
  --on-accent:#FFFCF6;
  --paper-top:#FDF8EE;
  --paper-bottom:#F5EAD6;
  --amber-band:#F5B82E;
  --amber-ink:#5A3D06;
  --violet-1:#B4B1F6;
  --violet-2:#5D58D8;
  --violet-ink:#3A3596;
  --violet-glow:rgba(93,88,216,.16);
  --sky-1:#A6DBF7;
  --sky-2:#3D9BE0;
  --sky-ink:#1E5E8F;
  --sky-glow:rgba(61,155,224,.16);
  --pink-1:#F1B6E8;
  --pink-2:#C25BC7;
  --pink-ink:#7F2F86;
  --pink-glow:rgba(194,91,199,.16);
  --green-1:#BCE6A0;
  --green-2:#4FAE4C;
  --green-ink:#2B6B2E;
  --green-glow:rgba(79,174,76,.16);
  --lemon-1:#FBE58C;
  --lemon-2:#E0AE1E;
  --lemon-ink:#6E5205;
  --lemon-glow:rgba(224,174,30,.18);
  --orange-1:#FCC994;
  --orange-2:#EE7A3A;
  --orange-ink:#8C3E12;
  --orange-glow:rgba(238,122,58,.16);
  --amber-1:#F9D27A;
  --amber-2:#C98A12;
  --flag-white:#FFFFFF;
  --flag-red:#C8343A;
  --flag-jp:#BC002D;
  --flag-blue:#2E3A78;
  --flag-fr:#2B4BA0;
  --flag-navy:#1F2D6B;
  --flag-edge:rgba(42,29,20,.16);
  --glow-cool:rgba(96,110,232,.11);
  --glow-warm:rgba(244,150,48,.12);
  --glass:rgba(255,252,246,.74);
  --hl-strong:rgba(255,255,255,.92);
  --hl-soft:rgba(255,255,255,.38);
  --hl-button:rgba(255,255,255,.28);
  --ink-soft:rgba(255,252,246,.14);
  --ring-success:rgba(46,158,98,.18);
  --focus-ring:rgba(229,65,45,.45);
  --clear:transparent;
  --shadow-card:0 24px 48px rgba(229,65,45,.10);
  --shadow-lift:0 12px 28px rgba(229,65,45,.10);
  --shadow-cta:0 14px 30px rgba(229,65,45,.26);
  --shadow-ink:0 12px 26px rgba(42,29,20,.18);
  --shadow-warm:0 22px 48px rgba(122,74,14,.18);
  --shadow-app:0 4px 10px rgba(229,65,45,.08);
  --shadow-highlight:0 12px 26px rgba(229,65,45,.22);
  --font-display:"Inter","Noto Sans SC","PingFang SC","Hiragino Sans","Microsoft YaHei","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --font-body:"Inter","Noto Sans SC","PingFang SC","PingFang TC","Hiragino Sans","Microsoft YaHei","Microsoft JhengHei","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --r-xl:32px;
  --r-lg:24px;
  --r-md:16px;
  --r-sm:12px;
  --r-tile:40px;
  --r-inset:28px;
  --r-icon:18px;
  --r-circle:50%;
  --r-pill:999px;
  --gutter:32px;
  --page-width:1200px;
  --section-space:120px;
  --header-height:72px;
  --anchor-offset:88px;
  --toc-offset:96px;
  --body-size:17px;
  --body-leading:1.75;
  --title-size:68px;
  --title-weight:900;
  --ease-duration:.2s;
  --reveal-duration:.6s;
  --paper-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%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 }
body { margin:0;background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--body-size);line-height:var(--body-leading);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility }
body::after { content:"";position:fixed;inset:0;pointer-events:none;z-index:60;background-image:var(--paper-grain);opacity:.03;mix-blend-mode:multiply }
a { color:inherit;text-decoration:none }
button,input,select,textarea { font:inherit;color:inherit }
button { cursor:pointer }
button { border:0 }
img { display:block;max-width:100%;height:auto }
svg { flex-shrink:0 }
p,h1,h2,h3,h4,blockquote { margin:0 }
h1,h2,h3,h4 { font-family:var(--font-display);text-wrap:balance }
h1 { font-size:clamp(52px,5vw,var(--title-size));font-weight:var(--title-weight);line-height:1.12;letter-spacing:-.02em }
h2 { font-size:clamp(28px,3.2vw,44px);font-weight:900;line-height:1.2;letter-spacing:-.02em }
h3 { font-size:24px;font-weight:800;line-height:1.35 }
ul { list-style:none;margin:0;padding:0 }
::selection { background:var(--accent);color:var(--on-accent) }
:focus-visible { outline:3px solid var(--focus-ring);outline-offset:3px;border-radius:var(--r-sm) }
[hidden] { display:none !important }
.no-break { white-space:nowrap }
.wrap { width:100%;max-width:var(--page-width);margin-inline:auto;padding-inline:var(--gutter);min-width:0 }
.section { padding-top:var(--section-space);padding-bottom:var(--section-space) }
.section-head { max-width:760px;margin-bottom:40px }
.section-head p { margin-top:16px;color:var(--text-muted) }
.grid { display:grid;gap:24px;grid-template-columns:repeat(3,minmax(0,1fr)) }
.grid > *, .wrap > *, .panel > * { min-width:0 }
.panel,.card { padding:32px;border-radius:var(--r-xl);background:var(--bg-panel);box-shadow:var(--shadow-card) }
.stack-flow > * + * { margin-top:24px }
.muted { color:var(--text-muted) }
.mono { font-family:var(--font-mono);font-variant-numeric:tabular-nums }
.skip { position:absolute;left:16px;top:-60px;z-index:80;padding:8px 16px;border-radius:var(--r-pill);background:var(--text);color:var(--bg-panel);font-size:14px;font-weight:700 }
.skip:focus { top:12px }
.prose { max-width:840px;min-width:0 }
.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre { margin-block:20px }
.prose h2 { margin-top:56px;margin-bottom:24px }
.prose h3 { margin-top:32px;margin-bottom:16px }
.prose ul { padding-left:24px;list-style:disc }
.prose ol { padding-left:28px }
.prose li + li { margin-top:8px }
.prose a:not(.btn) { color:var(--accent-dark);text-decoration:underline;text-underline-offset:4px }
code { font-family:var(--font-mono);font-size:.88em;overflow-wrap:anywhere;word-break:normal;background:var(--bg-panel-2);border-radius:var(--r-sm);padding:2px 6px }
pre { max-width:100%;overflow-x:auto;padding:24px;border-radius:var(--r-lg);background:var(--bg-panel-2);white-space:pre;overscroll-behavior-x:contain }
pre code { padding:0;background:var(--clear);overflow-wrap:normal;word-break:normal }
.btn { display:inline-flex;align-items:center;justify-content:center;gap:8px;height:56px;padding:0 32px;border-radius:var(--r-pill);font-size:17px;font-weight:700;line-height:1;flex-shrink:0;white-space:nowrap;transition:transform var(--ease-duration) ease,background-color var(--ease-duration) ease }
.btn:hover { transform:translateY(-2px) }
.btn--primary,.btn-primary { background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-cta),inset 0 1px 0 var(--hl-button) }
.btn--primary:hover,.btn-primary:hover { background:var(--accent-dark) }
.btn--ghost,.btn-secondary { background:var(--bg-panel-2);color:var(--accent) }
.btn--ghost:hover,.btn-secondary:hover { background:var(--border) }
.btn svg { width:18px;height:18px }
.btn:disabled,.btn[aria-disabled="true"] { opacity:.55;cursor:not-allowed;transform:none;box-shadow:none }
.button-row { display:flex;flex-wrap:wrap;gap:16px;align-items:center }
.topbar { position:relative;z-index:30;background:var(--paper-top) }
.topbar__inner { max-width:1280px;height:var(--header-height);margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:24px;position:relative }
.brand { display:inline-flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:800;font-size:21px;letter-spacing:-.02em;color:var(--text);flex:none;min-height:40px }
.brand img { width:34px;height:34px;flex:none }
.brand__zh { color:var(--text-muted);font-weight:600;font-size:16px }
.mainnav { flex:1;display:flex;justify-content:center }
.mainnav__list { display:flex;align-items:center;list-style:none;margin:0;padding:0;gap:4px }
.navlink,.more > summary { display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 16px;border-radius:var(--r-pill);font-size:15px;font-weight:600;line-height:1;color:var(--text);cursor:pointer;transition:background-color var(--ease-duration) ease }
.navlink:hover,.more > summary:hover,.navlink[aria-current="page"],.more.is-active > summary { background:var(--bg-panel-2) }
.more,.lang { position:relative }
.more > summary,.lang > summary { list-style:none }
.more > summary::-webkit-details-marker,.lang > summary::-webkit-details-marker { display:none }
.chev { width:12px;height:12px;flex:none;transition:transform var(--ease-duration) ease }
details[open] > summary .chev { transform:rotate(180deg) }
.dropdown { position:absolute;top:calc(100% + 8px);left:0;min-width:188px;padding:8px;border-radius:var(--r-md);background:var(--bg-panel);box-shadow:var(--shadow-card),inset 0 1px 0 var(--hl-strong);z-index:40 }
.dropdown--end { left:auto;right:0 }
.dropdown a { display:flex;align-items:center;min-height:40px;padding:8px 14px;border-radius:var(--r-sm);font-size:15px;font-weight:600;line-height:1.5;color:var(--text) }
.dropdown a:hover,.dropdown a[aria-current] { background:var(--bg-panel-2) }
.topbar__end { display:flex;align-items:center;gap:12px;flex:none }
.lang > summary { display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;width:auto;height:40px;padding:0 14px;border-radius:var(--r-pill);font-size:14px;font-weight:600;line-height:1;color:var(--text-muted);cursor:pointer;white-space:nowrap }
.lang > summary:hover { background:var(--bg-panel-2) }
.login { display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 22px;border-radius:var(--r-pill);background:var(--text);color:var(--bg-panel);font-size:15px;font-weight:700;line-height:1;box-shadow:var(--shadow-ink);transition:transform var(--ease-duration) ease;white-space:nowrap }
.login:hover { transform:translateY(-1px) }
.nav-toggle { display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:var(--r-pill);background:var(--bg-panel-2);color:var(--text);padding:10px }
.nav-toggle svg { width:22px;height:22px }
.mobile-drawer { position:absolute;top:100%;inset-inline:16px;z-index:42;background:var(--bg-panel);border-radius:var(--r-lg);box-shadow:var(--shadow-card);padding:16px;max-height:calc(100dvh - var(--header-height) - 16px);overflow-y:auto;overscroll-behavior:contain }
.mobile-drawer a { display:flex;align-items:center;width:100%;min-height:44px;padding:10px 16px;border-radius:var(--r-sm);font-size:16px;font-weight:600 }
.mobile-drawer a:hover,.mobile-drawer a[aria-current] { background:var(--bg-panel-2) }
.mobile-drawer__label { display:block;padding:16px 16px 8px;font-size:13px;color:var(--text-muted) }
.nav-veil { position:fixed;inset:var(--header-height) 0 0;z-index:29;background:var(--flag-edge);border-radius:0 }
html.nav-open { overflow:hidden }
.footer { background:var(--bg-panel-2);padding-top:64px;padding-bottom:32px }
.footer__grid { display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px }
.footer__grid > * { min-width:0 }
.footer__intro { margin-top:16px;max-width:320px;color:var(--text-muted);font-size:15px }
.footer__heading { font-size:15px;font-weight:800;margin-bottom:12px }
.footer__links a { display:inline-flex;align-items:center;min-height:32px;padding-block:3px;font-size:14px;color:var(--text-muted) }
.footer__links a:hover { color:var(--accent-dark) }
.footer__bottom { margin-top:40px;padding-top:24px;border-top:1px solid var(--border);display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:13px;color:var(--text-muted) }
.footer__legal { display:flex;flex-wrap:wrap;gap:16px }
.footer__legal a { min-height:24px;display:inline-flex;align-items:center }
.reveal { transition:opacity var(--reveal-duration) ease,transform var(--reveal-duration) ease }
.reveal.pending { opacity:0;transform:translateY(16px) }
.reveal.shown { opacity:1;transform:none }
#server-status { position:relative;display:block;min-height:80px;max-width:100%;overflow:hidden;margin-top:24px;margin-bottom:32px }
#server-status + * { margin-top:32px }
#server-status > *,#server-status :is(.grid,.server-grid) > * { min-width:0;max-width:100% }
.decor-section { position:relative;overflow-x:clip;isolation:isolate }
@media (max-width:960px) {
  .mainnav { display:none }
  .nav-toggle { display:inline-flex }
  .topbar__end { margin-left:auto }
  .grid { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .footer__grid { grid-template-columns:repeat(2,minmax(0,1fr)) }
}
@media (min-width:961px) {
  .mobile-drawer,.nav-veil { display:none }
}
@media (max-width:768px) {
  :root { --gutter:20px;--section-space:72px;--header-height:64px;--anchor-offset:80px }
  h1 { font-size:clamp(28px,6vw,40px) }
  h2 { font-size:30px }
  .topbar__inner { height:var(--header-height);padding:0 20px;gap:12px }
  .topbar__end { margin-left:auto;gap:8px }
  .btn { height:52px;padding:0 26px;font-size:16px }
  .panel,.card { padding:24px }
}
@media (max-width:640px) {
  .no-break { white-space:normal }
  .grid,.footer__grid { grid-template-columns:minmax(0,1fr) }
  .tilt,.decor-tilt { transform:none }
  .decor-section { max-width:100% }
  .footer__grid { gap:24px }
  .footer__bottom { align-items:flex-start;flex-direction:column }
}
@media (max-width:480px) {
  .lang { display:none }
  .topbar__inner { padding-inline:16px }
  .login { padding-inline:16px }
  .brand { font-size:19px;gap:8px }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto }
  *,*::before,*::after { transition:none !important;animation:none !important }
  .reveal,.reveal.pending { opacity:1;transform:none }
}