/* ============================================================
   BOWAN赛场 · 共享外壳样式 /assets/site.css
   结构：变量 → 重置 → 中文排版 → 外壳 → 轨道 → 页脚 → 通用组件 → 响应式
   ============================================================ */

/* ---------- 1. 变量 ---------- */
:root{
  --ink-950:#08110F;
  --ink-800:#11201C;
  --ink-700:#16281F;
  --ink-line:#1F322C;
  --slate-400:#8C9A95;
  --paper-100:#F4EFE6;
  --paper-line:#DCD3C2;
  --cyan-400:#2FE7C4;
  --coral-500:#FF5C39;
  --amber-400:#FFB454;
  --white-000:#FFFFFF;
  --text-body:#C6D1CC;

  --rail-w:240px;
  --topbar-h:64px;
  --radius-panel:20px;
  --radius-pill:999px;
  --radius-sm:12px;

  --font-sans:"Source Han Sans SC","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  --font-mono:"JetBrains Mono","SFMono-Regular","Roboto Mono",Menlo,Consolas,"Courier New",monospace;

  --ease:160ms ease;
  --ease-slow:240ms ease;
}

/* ---------- 2. 重置 ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--topbar-h) + 16px)}
body{margin:0}
img,svg,video{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
ul,ol{margin:0;padding:0;list-style:none}
p{margin:0}
table{border-collapse:collapse;width:100%}
:focus-visible{outline:2px solid var(--cyan-400);outline-offset:2px;border-radius:6px}

/* ---------- 3. 中文排版与全局视觉 ---------- */
body{
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.7;
  font-weight:500;
  letter-spacing:.01em;
  color:var(--text-body);
  background-color:var(--ink-950);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}

h1,h2,h3,h4,h5,h6{
  margin:0;
  color:var(--white-000);
  font-weight:800;
  line-height:1.16;
  letter-spacing:-.01em;
  font-stretch:96%;
}
h1{font-size:clamp(34px,4.4vw,56px);letter-spacing:-.02em}
h2{font-size:clamp(26px,3vw,40px)}
h3{font-size:clamp(20px,2.2vw,30px)}
h4{font-size:clamp(18px,1.6vw,22px);letter-spacing:-.005em}

a{color:var(--cyan-400);text-decoration:none;transition:color var(--ease)}

.num,.mono{
  font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;
  font-feature-settings:"tnum" 1;
  letter-spacing:-.01em;
}

.meta-label{
  display:block;
  font-size:12px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--slate-400);
}

.prose{
  max-width:68ch;
  font-size:16.5px;
  line-height:1.7;
  color:var(--text-body);
}
.prose p{margin:0 0 1.1em}
.prose p:last-child{margin-bottom:0}
.prose a{color:var(--cyan-400);border-bottom:1px solid rgba(47,231,196,.4)}
.prose a:hover{color:var(--white-000);border-bottom-color:var(--white-000)}
.prose strong{color:var(--white-000);font-weight:800}

::selection{background:var(--cyan-400);color:#04201B}

/* ---------- 4. 跳转链接 ---------- */
.skip-link{
  position:fixed;
  top:10px;
  left:10px;
  z-index:200;
  display:inline-block;
  padding:10px 18px;
  border-radius:var(--radius-pill);
  background:var(--cyan-400);
  color:#04201B;
  font-size:13px;
  font-weight:800;
  letter-spacing:.04em;
  transform:translateY(-180%);
  transition:transform var(--ease-slow);
}
.skip-link:focus{transform:translateY(0)}

/* ---------- 5. 顶部状态条 ---------- */
.topbar{
  position:fixed;
  top:0;left:0;right:0;
  height:var(--topbar-h);
  z-index:80;
  background:var(--ink-950);
  border-bottom:1px solid var(--ink-line);
}
.topbar__inner{
  height:100%;
  display:flex;
  align-items:center;
  gap:14px;
  padding:0 18px;
}

.brand{
  display:inline-flex;
  align-items:center;
  gap:10px;
  flex:0 0 auto;
  text-decoration:none;
  color:var(--white-000);
}
.brand__mark{
  display:inline-flex;
  align-items:flex-end;
  gap:2px;
  height:18px;
}
.brand__mark i{
  display:block;
  width:3px;
  border-radius:1px;
  background:var(--cyan-400);
  transition:background-color var(--ease);
}
.brand__mark i:nth-child(1){height:8px}
.brand__mark i:nth-child(2){height:13px}
.brand__mark i:nth-child(3){height:18px;background:var(--coral-500)}
.brand:hover .brand__mark i:nth-child(3){background:var(--amber-400)}

.brand__name{
  font-size:16px;
  font-weight:800;
  letter-spacing:-.01em;
  font-stretch:96%;
  white-space:nowrap;
}
.brand__ver{
  display:inline-flex;
  align-items:center;
  height:22px;
  padding:0 10px;
  border-radius:var(--radius-pill);
  border:1px solid rgba(47,231,196,.38);
  background:rgba(47,231,196,.07);
  color:var(--cyan-400);
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:700;
  letter-spacing:.04em;
  white-space:nowrap;
}

.topbar__ticker{
  flex:1 1 auto;
  min-width:0;
  display:flex;
  align-items:center;
  gap:9px;
  height:34px;
  padding:0 14px;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-pill);
  background:var(--ink-800);
  overflow:hidden;
}
.ticker__dot{
  flex:0 0 auto;
  width:7px;height:7px;
  border-radius:50%;
  background:var(--cyan-400);
  box-shadow:0 0 0 3px rgba(47,231,196,.14);
  animation:ticker-pulse 2.4s ease-in-out infinite;
}
@keyframes ticker-pulse{
  0%,100%{opacity:1;box-shadow:0 0 0 3px rgba(47,231,196,.14)}
  50%{opacity:.55;box-shadow:0 0 0 5px rgba(47,231,196,.05)}
}
.ticker__text{
  font-size:12.5px;
  letter-spacing:.05em;
  color:var(--slate-400);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.topbar__actions{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:8px;
}

.topbar__meter{
  position:absolute;
  left:0;right:0;bottom:-1px;
  height:2px;
  overflow:hidden;
  pointer-events:none;
}
.topbar__meter i{
  display:block;
  width:100%;
  height:100%;
  background:var(--cyan-400);
  transform:scaleX(0);
  transform-origin:left center;
  transition:transform 80ms linear;
}

/* ---------- 6. 按钮 ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  height:36px;
  padding:0 16px;
  border:1px solid transparent;
  border-radius:var(--radius-pill);
  font-size:13px;
  font-weight:800;
  letter-spacing:.05em;
  text-decoration:none;
  white-space:nowrap;
  cursor:pointer;
  transition:background-color var(--ease),color var(--ease),border-color var(--ease),transform var(--ease);
}
.btn--primary{
  background:var(--coral-500);
  color:#180D0A;
}
.btn--primary:hover{background:#FF7A5C;color:#180D0A}
.btn--primary:active{transform:translateY(1px)}
.btn--ghost{
  background:transparent;
  border-color:var(--ink-line);
  color:var(--paper-100);
}
.btn--ghost:hover{border-color:var(--cyan-400);color:var(--cyan-400)}
.btn--icon{
  width:36px;
  padding:0;
  background:var(--ink-800);
  border-color:var(--ink-line);
  color:var(--paper-100);
}
.btn--icon:hover{border-color:var(--cyan-400);color:var(--cyan-400)}

/* ---------- 7. 抽屉开关 ---------- */
.nav-toggle{
  display:none;
  width:36px;
  height:36px;
  flex:0 0 auto;
  align-items:center;
  justify-content:center;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-sm);
  background:var(--ink-800);
  color:var(--paper-100);
  cursor:pointer;
  transition:border-color var(--ease),background-color var(--ease);
}
.nav-toggle:hover{border-color:var(--cyan-400);color:var(--cyan-400)}
.nav-toggle__bars{
  position:relative;
  display:block;
  width:16px;
  height:12px;
}
.nav-toggle__bars i{
  position:absolute;
  left:0;
  width:100%;
  height:1.6px;
  border-radius:2px;
  background:currentColor;
  transition:transform var(--ease-slow),opacity var(--ease-slow);
}
.nav-toggle__bars i:nth-child(1){top:0}
.nav-toggle__bars i:nth-child(2){top:5.2px}
.nav-toggle__bars i:nth-child(3){top:10.4px}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:nth-child(1){transform:translateY(5.2px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:nth-child(3){transform:translateY(-5.2px) rotate(-45deg)}

/* ---------- 8. 侧边轨道 ---------- */
.rail{
  position:fixed;
  top:var(--topbar-h);
  left:0;
  bottom:0;
  width:var(--rail-w);
  z-index:70;
  display:flex;
  flex-direction:column;
  padding:24px 16px 20px;
  border-right:1px solid var(--ink-line);
  overflow-y:auto;
  overscroll-behavior:contain;
  background-color:var(--ink-950);
  background-image:repeating-linear-gradient(
    to bottom,
    rgba(31,50,44,.62) 0 1px,
    transparent 1px 44px
  );
}
.rail::-webkit-scrollbar{width:6px}
.rail::-webkit-scrollbar-track{background:transparent}
.rail::-webkit-scrollbar-thumb{background:var(--ink-line);border-radius:var(--radius-pill)}

.rail__head{
  padding:0 10px 18px;
  margin-bottom:16px;
  border-bottom:1px solid var(--ink-line);
}
.rail__eyebrow{
  margin:0 0 8px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--slate-400);
}
.rail__meta{
  margin:0;
  font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;
  font-size:12.5px;
  letter-spacing:.02em;
  color:var(--cyan-400);
}

.rail__nav{flex:1 1 auto}
.rail__list{display:grid;gap:4px}

.rail__link{
  display:flex;
  align-items:baseline;
  gap:10px;
  padding:10px 12px;
  border:1px solid transparent;
  border-radius:var(--radius-sm);
  color:var(--paper-100);
  font-size:15px;
  font-weight:700;
  letter-spacing:.02em;
  text-decoration:none;
  transition:background-color 120ms ease,color 120ms ease,border-color 120ms ease,box-shadow 120ms ease;
}
.rail__link:hover{
  background:var(--ink-800);
  border-color:var(--ink-line);
  color:var(--white-000);
}
.rail__num{
  font-family:var(--font-mono);
  font-variant-numeric:tabular-nums;
  font-size:11px;
  font-weight:700;
  letter-spacing:.08em;
  color:var(--slate-400);
  transition:color 120ms ease;
}
.rail__link:hover .rail__num{color:var(--amber-400)}
.rail__link[aria-current="page"]{
  background:var(--ink-800);
  border-color:var(--ink-line);
  color:var(--white-000);
  box-shadow:inset 2px 0 0 var(--cyan-400);
}
.rail__link[aria-current="page"] .rail__num{color:var(--cyan-400)}

.rail__foot{
  margin-top:auto;
  padding-top:18px;
  border-top:1px solid var(--ink-line);
  display:grid;
  gap:8px;
}
.rail__quick{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:10px 12px;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-sm);
  background:var(--ink-800);
  color:var(--paper-100);
  font-size:13px;
  font-weight:800;
  letter-spacing:.04em;
  text-decoration:none;
  transition:border-color var(--ease),color var(--ease),background-color var(--ease);
}
.rail__quick::after{
  content:"›";
  font-size:16px;
  line-height:1;
  opacity:.7;
  transition:transform var(--ease);
}
.rail__quick:hover{border-color:var(--cyan-400);color:var(--cyan-400)}
.rail__quick:hover::after{transform:translateX(2px)}

/* ---------- 9. 遮罩与主内容偏移 ---------- */
.rail-scrim{
  position:fixed;
  inset:0;
  z-index:65;
  background:rgba(4,10,8,.66);
  opacity:0;
  visibility:hidden;
  transition:opacity var(--ease-slow),visibility var(--ease-slow);
}
.rail-scrim.is-open{opacity:1;visibility:visible}

#main-content{
  margin-left:var(--rail-w);
  padding-top:var(--topbar-h);
  min-height:60vh;
}
body.nav-open{overflow:hidden}

/* ---------- 10. 回到顶部 ---------- */
.to-top{
  position:fixed;
  right:20px;
  bottom:20px;
  z-index:60;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:42px;
  height:42px;
  border:1px solid var(--ink-line);
  border-radius:14px;
  background:var(--ink-800);
  color:var(--cyan-400);
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity var(--ease-slow),visibility var(--ease-slow),border-color var(--ease),transform var(--ease);
}
.to-top.is-visible{opacity:1;visibility:visible;pointer-events:auto}
.to-top:hover{border-color:var(--cyan-400);transform:translateY(-2px)}

/* ---------- 11. 页脚 ---------- */
.site-footer{
  margin-left:var(--rail-w);
  margin-top:0;
  padding:64px 32px 0;
  background:var(--ink-950);
  border-top:1px solid var(--ink-line);
}

.footer__grid{
  max-width:1280px;
  margin:0 auto;
  display:grid;
  gap:44px 32px;
  grid-template-columns:minmax(230px,1.5fr) 1fr 1fr 1.35fr;
}

.footer__col{min-width:0}
.footer__col--brand{
  display:flex;
  flex-direction:column;
  gap:16px;
}
.footer__tagline{
  max-width:30ch;
  font-size:14.5px;
  line-height:1.7;
  color:var(--slate-400);
}

.trust-bar{
  display:flex;
  flex-wrap:wrap;
  gap:14px 20px;
  padding-top:14px;
  border-top:1px solid var(--ink-line);
}
.trust-bar__item{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:72px;
}
.trust-bar__item b{
  font-size:20px;
  font-weight:800;
  color:var(--cyan-400);
  line-height:1.2;
}
.trust-bar__item span{
  font-size:11px;
  letter-spacing:.1em;
  color:var(--slate-400);
}

.footer__title{
  margin:0 0 16px;
  font-size:12px;
  font-weight:800;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--white-000);
}
.footer__list{display:grid;gap:10px}
.footer__list--contact{gap:9px}

.footer__link{
  display:inline-block;
  padding-bottom:1px;
  color:var(--paper-100);
  font-size:14px;
  font-weight:600;
  text-decoration:none;
  background-image:linear-gradient(currentColor,currentColor);
  background-repeat:no-repeat;
  background-position:0 100%;
  background-size:0% 1px;
  transition:background-size var(--ease),color var(--ease);
}
.footer__link:hover{color:var(--cyan-400);background-size:100% 1px}

.footer__text{
  font-size:14px;
  line-height:1.65;
  color:var(--slate-400);
  overflow-wrap:anywhere;
}
.footer__note{
  margin-top:2px;
  font-size:12.5px;
  line-height:1.75;
  color:var(--slate-400);
  opacity:.85;
}

.footer__base{
  max-width:1280px;
  margin:52px auto 0;
  padding:20px 0 28px;
  border-top:1px solid var(--ink-line);
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:10px 24px;
}
.footer__copy{
  font-size:12.5px;
  color:var(--slate-400);
}

/* ---------- 12. 通用内容组件 ---------- */
.wrap{
  width:100%;
  max-width:1280px;
  margin:0 auto;
  padding:0 32px;
}

.grid{display:grid;gap:24px}
.grid--12{grid-template-columns:repeat(12,minmax(0,1fr))}

.panel{
  position:relative;
  padding:28px;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-panel);
  background:var(--ink-800);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.panel--paper{
  background:var(--paper-100);
  border-color:var(--paper-line);
  color:#14201C;
  box-shadow:none;
}
.panel--paper h1,.panel--paper h2,.panel--paper h3,.panel--paper h4{color:#08110F}
.panel--paper .meta-label{color:#6B7773}
.panel--paper .num{color:#0C2A24}
.panel--cyan{
  border-color:rgba(47,231,196,.34);
  box-shadow:inset 3px 0 0 var(--cyan-400), inset 0 1px 0 rgba(255,255,255,.035);
}

.tag{
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:26px;
  padding:0 12px;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-pill);
  background:var(--ink-950);
  color:var(--slate-400);
  font-size:12px;
  font-weight:800;
  letter-spacing:.08em;
  white-space:nowrap;
}
.tag--cyan{color:var(--cyan-400);border-color:rgba(47,231,196,.42);background:rgba(47,231,196,.07)}
.tag--up{color:var(--cyan-400);border-color:rgba(47,231,196,.42);background:rgba(47,231,196,.07)}
.tag--coral{color:var(--coral-500);border-color:rgba(255,92,57,.42);background:rgba(255,92,57,.08)}
.tag--down{color:var(--coral-500);border-color:rgba(255,92,57,.42);background:rgba(255,92,57,.08)}
.tag--amber{color:var(--amber-400);border-color:rgba(255,180,84,.42);background:rgba(255,180,84,.08)}

.data-bar{
  position:relative;
  height:8px;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-pill);
  background:var(--ink-950);
  overflow:hidden;
}
.data-bar i{
  display:block;
  width:0;
  height:100%;
  border-radius:var(--radius-pill);
  background:var(--cyan-400);
  transition:width var(--ease-slow);
}
.data-bar--coral i{background:var(--coral-500)}
.data-bar--amber i{background:var(--amber-400)}

.breadcrumbs{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  font-size:13px;
  color:var(--slate-400);
}
.breadcrumbs li{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.breadcrumbs li + li::before{
  content:"/";
  color:var(--ink-line);
  font-family:var(--font-mono);
}
.breadcrumbs a{
  color:var(--slate-400);
  text-decoration:none;
  transition:color var(--ease);
}
.breadcrumbs a:hover{color:var(--cyan-400)}
.breadcrumbs [aria-current="page"]{
  color:var(--paper-100);
  font-weight:700;
}

/* ---------- 13. 图片容器基础规则 ---------- */
.media{
  position:relative;
  display:block;
  overflow:hidden;
  border:1px solid var(--ink-line);
  border-radius:var(--radius-panel);
  background:var(--ink-800);
}
.media::after{
  content:"";
  display:block;
  padding-bottom:56.25%;
}
.media--wide::after{padding-bottom:42%}
.media--tall::after{padding-bottom:120%}
.media--square::after{padding-bottom:100%}
.media img,
.media picture,
.media svg,
.media video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(.72) contrast(1.06) brightness(.88);
}

/* ---------- 14. 响应式 ---------- */
@media (max-width:1180px){
  .footer__grid{grid-template-columns:1fr 1fr;gap:40px 32px}
  .footer__col--brand{grid-column:1 / -1}
}

@media (max-width:1024px){
  :root{--rail-w:0px}

  .rail{
    width:min(86vw,300px);
    transform:translateX(-101%);
    transition:transform var(--ease-slow);
    box-shadow:24px 0 60px rgba(0,0,0,.58);
    z-index:70;
  }
  .rail[data-open="true"]{transform:translateX(0)}

  #main-content{margin-left:0}
  .site-footer{margin-left:0;padding:52px 24px 0}

  .nav-toggle{display:inline-flex}
  .topbar__ticker{display:none}
}

@media (min-width:1025px){
  .rail-scrim{display:none}
}

@media (max-width:860px){
  .brand__ver{display:none}
  .wrap{padding:0 20px}
  .panel{padding:22px}
  .grid{gap:16px}
  .grid--12{grid-template-columns:repeat(6,minmax(0,1fr))}
  .footer__grid{grid-template-columns:1fr;gap:36px}
  .footer__base{flex-direction:column;align-items:flex-start}
  .site-footer{padding:44px 20px 0}
  #main-content{min-height:50vh}
}

@media (max-width:560px){
  .topbar__inner{padding:0 12px;gap:8px}
  .btn--primary{padding:0 12px;font-size:12.5px;height:34px}
  .btn--icon{width:34px;height:34px}
  .nav-toggle{width:34px;height:34px}
  .brand__name{font-size:15px}
  .to-top{right:14px;bottom:14px}
  .breadcrumbs{font-size:12.5px}
}

/* ---------- 15. 无障碍与降级 ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
  .ticker__dot{animation:none}
  .topbar__meter i{transition:none}
}
