:root {
  --bg:#FFFFFF;
  --bg-panel:#F5F6F6;
  --bg-panel2:#0C171B;
  --border:#E5E6E7;
  --accent:#23707E;
  --accent-dark:#164A54;
  --text:#161718;
  --text-muted:#6A6E72;
  --text-faint:#A4A8AC;
  --success:#2E8656;
  --warn:#B5781E;
  --error:#C0403A;
  --on-dark:#FFFFFF;
  --on-dark-muted:rgba(255,255,255,.74);
  --on-dark-faint:rgba(255,255,255,.52);
  --on-dark-line:rgba(255,255,255,.26);
  --on-dark-hairline:rgba(255,255,255,.06);
  --on-dark-chip:rgba(255,255,255,.07);
  --on-dark-chip-hover:rgba(255,255,255,.14);
  --scene-top:#1B3439;
  --scene-mid:#0C171B;
  --scene-floor:#04080A;
  --scene-ice:#E2F3F5;
  --scene-glow:#3196A6;
  --seabed-far:#10232A;
  --seabed-near:#060C0F;
  --cable-edge:#3B5960;
  --cable-body:#13222868;
  --cable-body-solid:#142329;
  --cable-ring:#20363C;
  --cable-clamp:#35535C;
  --box-body:#15262C;
  --box-edge:#56777F;
  --tag-bg:rgba(6,13,16,.66);
  --scrim:rgba(2,6,8,.88);
  --scrim-mid:rgba(2,6,8,.52);
  --scrim-clear:rgba(2,6,8,0);
  --clear:transparent;
  --radius-lg:12px;
  --radius:10px;
  --radius-sm:8px;
  --radius-notice:6px;
  --radius-pill:999px;
  --radius-dot:50%;
  --font-display:'Inter','Noto Sans SC','PingFang SC','Microsoft YaHei',system-ui,sans-serif;
  --font-body:'Inter','Noto Sans SC','PingFang SC','Hiragino Sans','Microsoft YaHei',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',Menlo,Consolas,monospace;
  --gutter:24px;
  --reading-width:1120px;
  --header-width:1280px;
  --motion-fast:.2s;
  --motion-reveal:.65s;
  --motion-panel:.35s;
  --rail-duration:7s;
  --focus-width:2px;
  --header-height:64px;
  --z-header:50;
  --z-veil:1;
  --z-drawer:3;
  --z-dropdown:5;
  --z-fab:30;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:28px}
html,body{margin:0}
body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
html.nav-open{overflow:hidden}
[hidden]{display:none!important}
img,svg{max-width:100%}
img{display:block;height:auto}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea{-webkit-tap-highlight-color:var(--clear)}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:var(--focus-width) solid var(--text);outline-offset:4px}
p,ul,ol,pre,blockquote{margin-top:0}
p{margin-bottom:1.2em}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;line-height:1.2;letter-spacing:-.02em;text-wrap:balance;margin:0 0 20px}
h1{font-size:clamp(34px,3.3vw,48px);line-height:1.12}
h2{font-size:clamp(26px,2.8vw,36px)}
h3{font-size:24px}
h4{font-size:18px}
strong{font-weight:600}
code,kbd,pre{font-family:var(--font-mono)}
code{font-size:.9em;overflow-wrap:anywhere}
pre{max-width:100%;overflow-x:auto;padding:16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-panel);color:var(--text);font-size:13px;line-height:1.7;tab-size:2}
pre code{font-size:inherit;overflow-wrap:normal;word-break:normal;white-space:pre}
hr{border:0;border-top:1px solid var(--border);margin:32px 0}
svg,.dot,.st-dot,.icon,.app-icon{flex-shrink:0}
.wrap{width:100%;max-width:calc(var(--reading-width) + var(--gutter)*2);margin-inline:auto;padding-inline:var(--gutter)}
.section{padding-top:88px;padding-bottom:88px}
.section-tight{padding-top:40px;padding-bottom:40px}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.grid>* , .panel>* , .footer-grid>*{min-width:0}
.stack>*+*{margin-top:24px}
.muted{color:var(--text-muted)}
.mono{font-family:var(--font-mono)}
.keep{white-space:nowrap}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:fixed;top:8px;left:var(--gutter);z-index:100;padding:12px 18px;border-radius:var(--radius);background:var(--text);color:var(--bg);transform:translateY(-180%)}
.skip-link:focus{transform:none}
.prose{max-width:800px;min-width:0;line-height:1.85}
.prose h2{margin-top:64px}
.prose h3{margin-top:36px}
.prose a,.text-link{color:var(--accent);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:5px}
.prose a:hover,.text-link:hover{text-decoration-color:var(--accent)}
.prose li+li{margin-top:8px}
.prose img{border-radius:var(--radius)}
.prose>*{min-width:0;max-width:100%}
.actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 24px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;max-width:100%;padding:10px 18px 10px 20px;border:1px solid var(--clear);border-radius:var(--radius);background:var(--text);color:var(--bg);font-family:var(--font-body);font-size:15px;font-weight:500;letter-spacing:-.005em;line-height:1.4;text-align:center;transition:background-color var(--motion-fast),border-color var(--motion-fast)}
.btn svg{width:12px;height:12px}
.btn:hover,.btn.is-hover{background:var(--text-muted);color:var(--bg)}
.btn-secondary{background:var(--bg-panel);color:var(--text)}
.btn-secondary:hover,.btn-secondary.is-hover{background:var(--border);color:var(--text)}
.btn-outline{border-color:var(--border);background:var(--bg);color:var(--text)}
.btn-outline:hover{background:var(--bg-panel);color:var(--text);border-color:var(--text-muted)}
.btn:disabled,.btn[aria-disabled="true"]{cursor:not-allowed;opacity:.5}
.btn.is-focus{outline:var(--focus-width) solid var(--text);outline-offset:4px}
.card{min-width:0;padding:28px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);color:var(--text)}
.card p:last-child{margin-bottom:0}
.card h3 a:hover{text-decoration:underline;text-underline-offset:5px}
.panel{display:grid;grid-template-columns:5fr 7fr;gap:56px;margin-top:36px;padding:56px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);color:var(--text)}
.panel-text{align-self:center;min-width:0}
.panel h3{font-size:30px;margin-bottom:16px}
.panel p{margin:0 0 22px;color:var(--text-muted);font-size:15px;line-height:1.8}
.panel pre{margin-bottom:22px}
.decorated,.hero,.media{position:relative;overflow-x:clip}
.reveal{opacity:1;transform:none}
.reveal-pending .reveal:not(.shown){opacity:0;transform:translateY(18px)}
.reveal-pending .reveal{transition:opacity var(--motion-reveal) ease,transform var(--motion-reveal) ease}
.reveal.shown{opacity:1;transform:none}

/* 公告、独立宽版心导航 */
#site-header,.preview-header{position:relative;z-index:var(--z-header)}
.notice{min-height:36px;display:flex;align-items:center;justify-content:center;gap:14px;padding:4px var(--gutter);background:linear-gradient(90deg,var(--accent),var(--accent-dark));color:var(--on-dark);font-size:13px;letter-spacing:.01em}
.notice-text{min-width:0}
.notice-link{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0;min-height:24px;padding:1px 10px;border:1px solid var(--on-dark-line);border-radius:var(--radius-notice);color:var(--on-dark);transition:background-color var(--motion-fast)}
.notice-link:hover{background:var(--on-dark-chip-hover);color:var(--on-dark)}
.notice-link svg{width:10px;height:10px}
.topbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:28px;min-height:var(--header-height);width:100%;max-width:min(100%,calc(var(--header-width) + var(--gutter)*2));margin-inline:auto;padding-inline:var(--gutter);background:var(--bg);color:var(--text)}
.brand{display:inline-flex;align-items:center;gap:10px;flex-shrink:0;font-family:var(--font-display);font-size:16px;font-weight:500;letter-spacing:-.01em;color:var(--text)}
.brand img{width:28px;height:28px;flex-shrink:0}
.mainnav{min-width:0;margin-left:auto}
.mainnav ul{display:flex;align-items:center;list-style:none;margin:0;padding:0;gap:0}
.mainnav li{display:flex;align-items:center;flex-shrink:0}
.mainnav li+li::before{content:"·";color:var(--text-faint);padding:0 13px}
.mainnav a{display:inline-flex;align-items:center;min-height:44px;font-size:14.5px;color:var(--text-muted);white-space:nowrap;transition:color var(--motion-fast)}
.mainnav a:hover,.mainnav a[aria-current="page"]{color:var(--text)}
.header-tools{display:flex;align-items:center;gap:8px;flex-shrink:0}
.language-control{position:relative}
.lang{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:6px 12px;border:0;border-radius:var(--radius-sm);background:var(--bg-panel);color:var(--text);font-size:13.5px;white-space:nowrap}
.lang svg{width:14px;height:14px;color:var(--text-muted)}
.lang-caret{font-size:10px;color:var(--text-muted)}
.lang-short{display:none}
.language-menu{position:absolute;right:0;top:calc(100% + 10px);z-index:var(--z-dropdown);width:192px;padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text)}
.language-menu a{display:flex;align-items:center;min-height:44px;padding:10px 12px;border-radius:var(--radius-sm)}
.language-menu a:hover,.language-menu a[aria-current]{background:var(--bg-panel);color:var(--text)}
.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(--radius-sm);background:var(--bg);color:var(--text)}
.menu-toggle svg{width:20px;height:20px}
.mobile-drawer{position:absolute;top:100%;left:0;right:0;z-index:var(--z-drawer);max-height:calc(100dvh - 100px);overflow-y:auto;overscroll-behavior:contain;padding:16px var(--gutter) 24px;border-bottom:1px solid var(--border);background:var(--bg);color:var(--text)}
.mobile-drawer ul{list-style:none;margin:0;padding:0}
.mobile-drawer a{display:flex;align-items:center;width:100%;min-height:44px;padding:12px 16px;border-radius:var(--radius-sm)}
.mobile-drawer a:hover,.mobile-drawer a[aria-current]{background:var(--bg-panel);color:var(--text)}
.drawer-label{margin:18px 16px 8px;color:var(--text-muted);font-size:13px}
.nav-veil{position:fixed;inset:0;z-index:var(--z-veil);border:0;background:var(--scrim-mid);color:var(--on-dark);cursor:pointer}
.site-footer{border-top:1px solid var(--border);background:var(--bg-panel);color:var(--text);padding-top:64px;padding-bottom:24px}
.footer-grid{display:grid;grid-template-columns:1.2fr 1fr 1.4fr 1fr;gap:40px}
.footer-brand p{max-width:260px;margin-top:20px;color:var(--text-muted)}
.footer-title{font-size:14px;margin-bottom:16px}
.footer-links{list-style:none;margin:0;padding:0}
.footer-links a{display:inline-block;padding-block:5px;color:var(--text-muted);font-size:14px}
.footer-links a:hover{color:var(--text);text-decoration:underline;text-underline-offset:4px}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-top:48px;padding-top:24px;border-top:1px solid var(--border);font-size:13px;color:var(--text-muted)}
@media(min-width:1600px){.topbar{max-width:none}}
@media(max-width:1100px){
  .mainnav{display:none}
  .header-tools{margin-left:auto}
  .menu-toggle{display:inline-flex}
}
@media(min-width:1101px){
  .mobile-drawer,.nav-veil{display:none!important}
}
@media(max-width:960px){
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .panel{grid-template-columns:1fr;padding:28px;gap:28px}
  .footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:768px){
  h1{font-size:clamp(24px,4.5vw,30px)}
  .section{padding-top:56px;padding-bottom:56px}
}
@media(max-width:640px){
  :root{--gutter:16px}
  .topbar{gap:10px}
  .brand{font-size:14px;gap:8px}
  .lang-full{display:none}
  .lang-short{display:inline}
  .lang{padding-inline:9px}
  .notice{font-size:12px;gap:8px}
  .notice-link{padding-inline:7px}
  .grid,.footer-grid{grid-template-columns:minmax(0,1fr)}
  .card{padding:22px}
  .panel{padding:22px;gap:24px}
  .panel h3{font-size:25px}
  .tilt,[data-tilt]{transform:none!important}
  .footer-grid{gap:28px}
  .site-footer{padding-top:40px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .reveal-pending .reveal:not(.shown){opacity:1;transform:none}
}