/* ==========================================================================
   BBIN主页 — 共享样式 /assets/site.css
   色彩：墨蓝框架 + 奶油阅读面 + 霓虹青/暖橙功能点色
   ========================================================================== */

:root{
  /* 色彩体系 */
  --ink-900:#0B1A2B;
  --ink-800:#12263A;
  --ink-700:#1A3550;
  --ink-600:#28486A;
  --paper:#F4EDE1;
  --paper-2:#EDE3D2;
  --line:#E2D6C0;
  --text:#241C16;
  --cyan:#35D6C8;
  --orange:#FF6B35;
  --amber:#F0B44B;
  --brick:#B33A1B;
  --brick-lift:#FF8A5B;
  --slate:#5C6B7A;
  --slate-lift:#8FA3B5;
  /* 奶油底上的文字安全色 */
  --cyan-deep:#0E6C65;
  --orange-deep:#A83F10;
  --amber-deep:#8A5A0F;
  --ink-text:#3A2E25;
  --line-dark:rgba(226,214,192,.16);
  --line-dark-strong:rgba(226,214,192,.32);

  /* 字体 */
  --font-display:"Barlow Condensed","Oswald","Noto Sans SC","PingFang SC",system-ui,sans-serif;
  --font-editorial:"Noto Serif SC","Source Han Serif SC","Songti SC",Georgia,serif;
  --font-body:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;

  /* 字号八级 */
  --fs-12:12px;
  --fs-14:14px;
  --fs-16:16px;
  --fs-18:18px;
  --fs-24:24px;
  --fs-32:32px;
  --fs-48:48px;
  --fs-64:64px;

  /* 度量 */
  --rail-w:264px;
  --bar-h:44px;
  --gutter:20px;
  --radius-s:4px;
  --radius-m:8px;
  --radius-l:18px;
  --shadow-card:0 22px 45px -34px rgba(11,26,43,.6);
  --ease-out:cubic-bezier(.22,.61,.36,1);
}

@media (min-width:640px){ :root{ --gutter:32px; } }
@media (min-width:1080px){ :root{ --gutter:44px; } }

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body,h1,h2,h3,h4,h5,p,ul,ol,li,figure,blockquote,dl,dd{ margin:0; }
ul,ol{ padding:0; list-style:none; }
img,svg,video{ display:block; max-width:100%; }
button{ font:inherit; color:inherit; }
a{ color:inherit; }
table{ border-collapse:collapse; }

/* ---------- 基础排版 ---------- */
body{
  background:var(--ink-900);
  color:var(--text);
  font-family:var(--font-body);
  font-size:var(--fs-16);
  font-weight:400;
  line-height:1.75;
  letter-spacing:.01em;
  min-height:100vh;
  overflow-x:hidden;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4{
  font-family:var(--font-display);
  font-weight:700;
  line-height:1.12;
  letter-spacing:.01em;
  color:var(--text);
}
p{ overflow-wrap:break-word; }

:focus-visible{ outline:3px solid var(--ink-900); outline-offset:3px; border-radius:2px; }
.site-header :focus-visible,
.site-footer :focus-visible,
.on-dark :focus-visible{ outline-color:var(--cyan); }

.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:absolute; left:var(--gutter); top:-70px; z-index:120;
  padding:10px 18px;
  background:var(--cyan); color:#04211F;
  font-family:var(--font-display); font-size:15px; font-weight:700; letter-spacing:.04em;
  text-decoration:none; border-radius:0 0 var(--radius-m) var(--radius-m);
  transition:top .2s var(--ease-out);
}
.skip-link:focus{ top:0; }

/* ---------- 布局容器 ---------- */
.container{ width:100%; max-width:1180px; margin:0 auto; padding:0 var(--gutter); }
.container--narrow{ max-width:880px; }

.page-main{
  position:relative;
  background:var(--paper);
  color:var(--text);
  padding:0 0 clamp(40px,6vw,72px);
}
@media (min-width:1080px){
  .page-main{ margin:18px 18px 18px; border-radius:var(--radius-s); }
}

.section{ padding:clamp(38px,5.5vw,72px) 0; }
.section--tight{ padding:clamp(22px,3vw,36px) 0; }
.section--ruled{ border-top:1px solid var(--line); }

.section-head{ display:grid; gap:10px; margin-bottom:clamp(20px,3vw,34px); }
.section-head__index{
  font-family:var(--font-mono); font-size:var(--fs-12);
  letter-spacing:.24em; color:var(--brick);
}
.section-head__title{
  font-family:var(--font-display); font-weight:800;
  font-size:clamp(28px,4.4vw,var(--fs-48)); line-height:1.05; letter-spacing:-.01em;
}
.section-head__lead{
  font-family:var(--font-editorial); font-weight:600;
  font-size:var(--fs-18); line-height:1.7; color:var(--ink-text); max-width:62ch;
}

.grid{ display:grid; gap:clamp(18px,2.6vw,30px); }
.grid--2{ grid-template-columns:1fr; }
.grid--3{ grid-template-columns:1fr; }
.grid--7-5,.grid--8-4{ grid-template-columns:1fr; }
@media (min-width:720px){
  .grid--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .grid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:960px){
  .grid--7-5{ grid-template-columns:7fr 5fr; }
  .grid--8-4{ grid-template-columns:8fr 4fr; }
}
@media (min-width:1080px){
  .grid--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}
.cluster{ display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.rule{ height:1px; border:0; background:var(--line); margin:0; }
.rule--dark{ background:var(--line-dark); }

/* ---------- 文字工具 ---------- */
.eyebrow{
  font-family:var(--font-mono); font-size:var(--fs-12);
  letter-spacing:.2em; text-transform:uppercase; color:var(--brick);
}
.display-xl{ font-family:var(--font-display); font-weight:800; font-size:clamp(38px,7vw,var(--fs-64)); line-height:1.02; letter-spacing:-.018em; }
.display-lg{ font-family:var(--font-display); font-weight:800; font-size:clamp(30px,5vw,var(--fs-48)); line-height:1.06; letter-spacing:-.012em; }
.display-md{ font-family:var(--font-display); font-weight:700; font-size:clamp(22px,3.4vw,var(--fs-32)); line-height:1.12; }
.editorial{ font-family:var(--font-editorial); font-weight:600; }
.lead{ font-size:var(--fs-18); line-height:1.72; color:var(--ink-text); }
.mono{ font-family:var(--font-mono); font-size:.86em; letter-spacing:.02em; }
.muted{ color:var(--slate); }
.on-dark{ color:var(--paper); }
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark h4{ color:var(--paper); }
.on-dark .muted,.on-dark .meta-line,.on-dark .breadcrumb{ color:var(--slate-lift); }
.on-dark .eyebrow{ color:var(--amber); }
.on-dark .lead{ color:rgba(244,237,225,.84); }

.meta-line{
  display:flex; flex-wrap:wrap; gap:6px 18px;
  font-family:var(--font-mono); font-size:var(--fs-12);
  letter-spacing:.03em; color:var(--slate);
}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:11px 18px; border:1px solid transparent; border-radius:6px;
  font-family:var(--font-display); font-weight:700; font-size:var(--fs-16);
  letter-spacing:.05em; line-height:1.2; text-decoration:none; cursor:pointer;
  transition:background-color .18s var(--ease-out), color .18s var(--ease-out),
             border-color .18s var(--ease-out), transform .18s var(--ease-out);
}
.btn:hover{ transform:translateY(-1px); }
.btn--accent{ background:var(--orange); color:#23100A; }
.btn--accent:hover{ background:#FF8355; }
.btn--cyan{ background:var(--cyan); color:#04211F; }
.btn--cyan:hover{ background:#5CE3D7; }
.btn--ghost{ background:transparent; color:var(--paper); border-color:var(--line-dark-strong); }
.btn--ghost:hover{ border-color:var(--cyan); color:var(--cyan); }
.page-main .btn--ghost{ color:var(--ink-900); border-color:var(--slate); }
.page-main .btn--ghost:hover{ border-color:var(--cyan-deep); color:var(--cyan-deep); }
.btn--sm{ padding:8px 14px; font-size:var(--fs-14); }
.btn--block{ width:100%; }

/* ---------- 卡片 ---------- */
.card{
  display:flex; flex-direction:column; gap:12px;
  padding:clamp(18px,2.4vw,26px);
  background:var(--paper-2); border:1px solid var(--line);
  border-radius:var(--radius-m); box-shadow:var(--shadow-card);
}
.card__head{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:8px 14px; }
.card__title{ font-family:var(--font-display); font-weight:700; font-size:var(--fs-24); line-height:1.15; }
.card__meta{ font-family:var(--font-mono); font-size:var(--fs-12); color:var(--slate); letter-spacing:.03em; }
.card__body{ font-size:var(--fs-16); line-height:1.72; color:var(--ink-text); }
.card--paper{ background:var(--paper); }
.card--dark{ background:var(--ink-800); border-color:var(--line-dark); color:var(--paper); box-shadow:none; }
.card--dark .card__title{ color:var(--paper); }
.card--dark .card__body{ color:rgba(244,237,225,.82); }
.card--dark .card__meta{ color:var(--slate-lift); }
.card--interactive{ transition:transform .2s var(--ease-out), border-color .2s var(--ease-out); }
.card--interactive:hover{ transform:translateY(-3px); border-color:var(--cyan); }

/* ---------- 标签 ---------- */
.tag{
  display:inline-flex; align-items:center; gap:6px;
  padding:3px 10px 4px;
  border:1px solid currentColor; border-radius:999px;
  font-family:var(--font-mono); font-size:11px; letter-spacing:.08em;
  background:transparent; white-space:nowrap;
}
.tag::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.tag--download{ color:var(--cyan-deep); }
.tag--notice{ color:var(--orange-deep); }
.tag--feedback{ color:var(--brick); }
.tag--index{ color:var(--amber-deep); }
.on-dark .tag--download{ color:var(--cyan); }
.on-dark .tag--notice{ color:var(--orange); }
.on-dark .tag--feedback{ color:var(--brick-lift); }
.on-dark .tag--index{ color:var(--amber); }

/* ---------- 表格 ---------- */
.table-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:var(--radius-m); }
.data-table{ width:100%; min-width:520px; font-size:var(--fs-14); background:var(--paper); }
.data-table caption{
  padding:0 0 8px; text-align:left;
  font-family:var(--font-mono); font-size:var(--fs-12); color:var(--slate);
}
.data-table th{
  background:var(--ink-800); color:var(--paper);
  font-family:var(--font-display); font-weight:700; font-size:15px; letter-spacing:.05em;
  text-align:left; padding:11px 14px; white-space:nowrap;
}
.data-table td{ padding:11px 14px; border-bottom:1px solid var(--line); color:var(--ink-text); vertical-align:top; }
.data-table tbody tr:hover{ background:rgba(53,214,200,.08); }
.data-table .mono{ color:var(--slate); }

/* ---------- 面包屑 ---------- */
.breadcrumb{
  display:flex; flex-wrap:wrap; align-items:center; gap:8px;
  font-family:var(--font-mono); font-size:var(--fs-12); letter-spacing:.04em;
  color:var(--slate); padding-top:20px;
}
.breadcrumb__link{ color:var(--slate); text-decoration:none; border-bottom:1px solid var(--line); }
.breadcrumb__link:hover{ color:var(--cyan-deep); border-color:var(--cyan); }
.breadcrumb__sep{ color:var(--line); }
.breadcrumb__current{ color:var(--text); }

/* ---------- 标签筛选 ---------- */
.filter-bar{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.filter-bar__btn{
  padding:7px 14px; border:1px solid var(--line); border-radius:999px;
  background:transparent; color:var(--slate);
  font-family:var(--font-mono); font-size:var(--fs-12); letter-spacing:.08em;
  cursor:pointer; transition:color .18s, border-color .18s, background-color .18s;
}
.filter-bar__btn:hover{ color:var(--text); border-color:var(--slate); }
.filter-bar__btn[aria-pressed="true"]{ background:var(--ink-800); border-color:var(--ink-800); color:var(--paper); }
.filter-empty{ font-family:var(--font-editorial); font-weight:600; font-size:var(--fs-16); color:var(--slate); padding:16px 0; }
.filter-empty[hidden]{ display:none; }
[data-tags][hidden]{ display:none; }

/* ---------- 图片容器（页面阶段放入 <img>） ---------- */
.media{
  display:block; overflow:hidden;
  background:var(--paper-2); border:1px solid var(--line);
  border-radius:var(--radius-m);
}
.media__frame{
  position:relative; aspect-ratio:16/9; overflow:hidden;
  background:
    radial-gradient(120% 90% at 12% 8%, rgba(53,214,200,.26), transparent 58%),
    linear-gradient(140deg, var(--ink-800) 0%, var(--ink-900) 62%, #08131F 100%);
}
.media__frame::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background:repeating-linear-gradient(180deg, rgba(53,214,200,.10) 0 1px, transparent 1px 5px);
}
.media__img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; display:block;
}
.media__caption{
  padding:10px 14px;
  font-family:var(--font-mono); font-size:var(--fs-12); color:var(--slate);
  background:var(--paper); border-top:1px solid var(--line);
}
.media--wide .media__frame{ aspect-ratio:21/9; }
.media--square .media__frame{ aspect-ratio:1/1; }
.media--tall .media__frame{ aspect-ratio:4/5; }
.media--dark{ border-color:var(--line-dark); }
.media--dark .media__caption{ background:var(--ink-800); color:var(--slate-lift); border-top-color:var(--line-dark); }

/* ---------- 正文块与提示块 ---------- */
.prose{ max-width:68ch; font-size:var(--fs-16); line-height:1.8; color:var(--ink-text); }
.prose > * + *{ margin-top:1em; }
.prose h2{ font-size:var(--fs-24); margin-top:1.7em; }
.prose h3{ font-size:var(--fs-18); margin-top:1.4em; }
.prose ul{ list-style:disc; padding-left:1.25em; }
.prose ol{ list-style:decimal; padding-left:1.4em; }
.prose li + li{ margin-top:.4em; }
.prose strong{ font-weight:700; color:var(--text); }
.prose a{ color:var(--cyan-deep); text-decoration:underline; text-underline-offset:3px; }

.callout{
  padding:16px 20px; border-left:3px solid var(--amber);
  background:var(--paper-2); border-radius:0 var(--radius-m) var(--radius-m) 0;
}
.callout__title{ font-family:var(--font-display); font-weight:700; font-size:var(--fs-18); margin-bottom:4px; }
.callout__body{ font-size:var(--fs-14); line-height:1.75; color:var(--ink-text); }

/* ==========================================================================
   页头 — 顶部公告条 + 侧边品牌轨道（框架式导航）
   ========================================================================== */
.site-header{ position:sticky; top:0; z-index:80; }
.site-header.is-nav-open{ }
.site-header > .utility-bar{ position:relative; z-index:3; }
.site-rail{ position:relative; z-index:2; }

/* 阅读进度 */
.scroll-progress{
  position:fixed; top:0; left:0; right:0; height:3px; z-index:95;
  background:rgba(226,214,192,.14); pointer-events:none;
}
.scroll-progress__bar{
  display:block; height:100%; width:0;
  background:linear-gradient(90deg, var(--cyan) 0%, var(--amber) 62%, var(--orange) 100%);
  transition:width .12s linear;
}

/* 顶部窄条 */
.utility-bar{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:7px var(--gutter);
  background:var(--ink-800); color:rgba(244,237,225,.78);
  border-bottom:1px solid var(--line-dark);
  font-family:var(--font-mono); font-size:var(--fs-12); letter-spacing:.02em;
}
.utility-bar__note{ display:flex; align-items:center; gap:9px; min-width:0; }
.utility-bar__text{ overflow:hidden; white-space:nowrap; text-overflow:ellipsis; min-width:0; }
.utility-bar__link{
  flex:none; color:var(--cyan); text-decoration:none;
  border-bottom:1px solid rgba(53,214,200,.45); padding-bottom:1px;
}
.utility-bar__link:hover{ color:var(--amber); border-color:var(--amber); }
.pulse-dot{
  flex:none; position:relative; width:7px; height:7px; border-radius:50%;
  background:var(--cyan); box-shadow:0 0 0 0 rgba(53,214,200,.55);
  animation:pulse 2.6s var(--ease-out) infinite;
}
@keyframes pulse{
  0%{ box-shadow:0 0 0 0 rgba(53,214,200,.5); }
  70%{ box-shadow:0 0 0 9px rgba(53,214,200,0); }
  100%{ box-shadow:0 0 0 0 rgba(53,214,200,0); }
}
.lang-switch{
  flex:none; display:flex; gap:2px; padding:2px;
  background:rgba(11,26,43,.62); border:1px solid var(--line-dark); border-radius:999px;
}
.lang-switch__btn{
  border:0; background:transparent; cursor:pointer;
  padding:3px 10px; border-radius:999px;
  font-family:var(--font-mono); font-size:11px; letter-spacing:.04em;
  color:rgba(244,237,225,.68);
  transition:background-color .18s var(--ease-out), color .18s var(--ease-out);
}
.lang-switch__btn:hover{ color:var(--paper); }
.lang-switch__btn[aria-pressed="true"]{ background:var(--cyan); color:#04211F; }

/* 品牌轨道 */
.site-rail{
  background:var(--ink-900);
  border-bottom:1px solid var(--line-dark);
}
.rail-brand{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:10px var(--gutter);
}
.rail-brand__link{ display:flex; align-items:center; gap:12px; min-width:0; text-decoration:none; }
.rail-brand__mark{
  flex:none; display:grid; place-items:center;
  width:38px; height:38px; border-radius:10px;
  background:linear-gradient(140deg, var(--cyan) 0%, var(--ink-600) 78%);
  color:#04211F; font-family:var(--font-display); font-weight:800; font-size:17px; letter-spacing:-.02em;
}
.rail-brand__text{ display:flex; flex-direction:column; min-width:0; }
.rail-brand__name{
  font-family:var(--font-display); font-weight:700; font-size:20px;
  line-height:1.1; letter-spacing:.02em; color:var(--paper);
}
.rail-brand__sub{
  font-family:var(--font-mono); font-size:10px; letter-spacing:.16em;
  color:rgba(244,237,225,.5);
}

/* 移动导航开关 */
.nav-toggle{
  display:inline-flex; align-items:center; gap:9px;
  padding:9px 12px; border:1px solid var(--line-dark-strong); border-radius:8px;
  background:rgba(53,214,200,.08); color:var(--paper); cursor:pointer;
  transition:border-color .18s var(--ease-out), background-color .18s var(--ease-out);
}
.nav-toggle:hover{ border-color:var(--cyan); }
.nav-toggle__bars{ display:flex; flex-direction:column; gap:4px; width:18px; }
.nav-toggle__bar{
  display:block; height:2px; border-radius:2px; background:var(--cyan);
  transition:transform .2s var(--ease-out), opacity .2s var(--ease-out);
}
.nav-toggle__label{ font-family:var(--font-mono); font-size:var(--fs-12); letter-spacing:.1em; color:rgba(244,237,225,.82); }
.site-header.is-nav-open .nav-toggle__bar:nth-child(1){ transform:translateY(6px) rotate(45deg); }
.site-header.is-nav-open .nav-toggle__bar:nth-child(2){ opacity:0; }
.site-header.is-nav-open .nav-toggle__bar:nth-child(3){ transform:translateY(-6px) rotate(-45deg); }

/* 遮罩 */
.nav-scrim{
  position:fixed; inset:0; z-index:1; border:0; padding:0;
  background:rgba(11,26,43,.62);
}
.nav-scrim[hidden]{ display:none; }

/* 导航本体（移动优先：折叠面板） */
.primary-nav{ display:none; }
.primary-nav[data-open]{
  display:block;
  max-height:calc(100dvh - 108px); overflow-y:auto;
  padding:14px var(--gutter) 22px;
  background:var(--ink-800); border-top:1px solid var(--line-dark);
  animation:navIn .24s var(--ease-out);
}
@keyframes navIn{
  from{ opacity:0; transform:translateY(-6px); }
  to{ opacity:1; transform:none; }
}
.primary-nav__caption{
  margin-bottom:12px; padding-bottom:8px; border-bottom:1px solid var(--line-dark);
  font-family:var(--font-mono); font-size:11px; letter-spacing:.2em;
  color:rgba(244,237,225,.45);
}
.primary-nav__list{ display:flex; flex-direction:column; gap:2px; }
.nav-link{
  display:flex; align-items:baseline; gap:12px;
  padding:12px 12px;
  border-left:3px solid transparent; border-radius:0 var(--radius-s) var(--radius-s) 0;
  color:rgba(244,237,225,.74); text-decoration:none;
  font-family:var(--font-display); font-weight:700; font-size:var(--fs-18); letter-spacing:.02em;
  transition:color .18s var(--ease-out), background-color .18s var(--ease-out),
             border-color .18s var(--ease-out), transform .18s var(--ease-out);
}
.nav-link__idx{
  flex:none; width:24px;
  font-family:var(--font-mono); font-weight:500; font-size:11px; letter-spacing:.06em;
  color:rgba(53,214,200,.72);
}
.nav-link:hover{ color:var(--paper); background:rgba(53,214,200,.09); transform:translateX(2px); }
.nav-link[aria-current="page"]{
  color:var(--paper); border-left-color:var(--cyan);
  background:linear-gradient(90deg, rgba(53,214,200,.16), rgba(53,214,200,0) 92%);
}
.nav-link[aria-current="page"] .nav-link__idx{ color:var(--cyan); }
.rail-actions{ display:flex; flex-direction:column; gap:10px; margin-top:20px; }
.rail-meta{
  margin-top:18px; padding-top:14px; border-top:1px solid var(--line-dark);
  font-family:var(--font-mono); font-size:11px; letter-spacing:.06em;
  color:rgba(244,237,225,.4);
}

/* ==========================================================================
   页脚
   ========================================================================== */
.site-footer{
  background:var(--ink-900); color:rgba(244,237,225,.82);
  font-size:var(--fs-14); padding-bottom:26px;
}
.footer__scan{ position:relative; height:1px; background:var(--line-dark); overflow:hidden; }
.footer__scan::after{
  content:""; position:absolute; top:0; left:-30%; width:30%; height:100%;
  background:linear-gradient(90deg, transparent, var(--cyan), transparent);
  animation:scanSweep 8s linear infinite;
}
@keyframes scanSweep{ 0%{ left:-30%; } 100%{ left:100%; } }

.footer-grid{
  display:grid; grid-template-columns:1fr; gap:30px;
  padding:clamp(28px,4vw,48px) 0 26px;
}
@media (min-width:720px){ .footer-grid{ grid-template-columns:1fr 1fr; } }
@media (min-width:1080px){ .footer-grid{ grid-template-columns:1.6fr 1fr 1fr 1fr; gap:36px; } }

.footer-brand__mark{
  display:grid; place-items:center; width:40px; height:40px; border-radius:10px;
  background:linear-gradient(140deg, var(--cyan) 0%, var(--ink-600) 78%);
  color:#04211F; font-family:var(--font-display); font-weight:800; font-size:17px;
}
.footer-brand__name{
  margin-top:12px; font-family:var(--font-display); font-weight:700;
  font-size:var(--fs-24); color:var(--paper); letter-spacing:.02em;
}
.footer-brand__desc{
  margin:10px 0 18px; max-width:36ch; line-height:1.7;
  color:rgba(244,237,225,.66); font-size:var(--fs-14);
}
.footer-col__title{
  margin-bottom:12px; padding-bottom:8px; border-bottom:1px solid var(--line-dark);
  font-family:var(--font-mono); font-weight:500; font-size:11px; letter-spacing:.2em;
  color:var(--amber); text-transform:uppercase;
}
.footer-links{ display:flex; flex-direction:column; gap:9px; }
.footer-links__item{
  display:inline-flex; align-items:center; gap:9px;
  color:rgba(244,237,225,.78); text-decoration:none; font-size:var(--fs-14);
  transition:color .18s var(--ease-out);
}
.footer-links__item::before{
  content:""; flex:none; width:5px; height:5px; border-radius:50%;
  background:var(--cyan); opacity:.45;
  transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);
}
.footer-links__item:hover{ color:var(--paper); }
.footer-links__item:hover::before{ opacity:1; transform:scale(1.35); }

.footer-contact{
  display:grid; gap:10px;
  padding:20px 0;
  border-top:1px solid var(--line-dark);
}
.footer-contact__line{
  display:flex; flex-wrap:wrap; align-items:baseline; gap:6px 10px;
  font-family:var(--font-mono); font-size:var(--fs-12); letter-spacing:.02em;
}
.footer-contact__label{ color:var(--slate-lift); }
.footer-contact__value{ color:var(--paper); }
.footer-contact__sep{ color:rgba(226,214,192,.26); }
.footer-note{ font-size:var(--fs-12); line-height:1.7; color:rgba(244,237,225,.55); max-width:72ch; }

.footer-legal{
  display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px 18px;
  padding-top:16px; border-top:1px solid var(--line-dark);
  font-family:var(--font-mono); font-size:11px; letter-spacing:.04em;
  color:rgba(244,237,225,.5);
}
.footer-legal__copy{ color:rgba(244,237,225,.42); }

/* ==========================================================================
   显现动效
   ========================================================================== */
html.js [data-reveal]{
  opacity:0; transform:translateY(6px);
  transition:opacity .5s var(--ease-out), transform .5s var(--ease-out);
}
html.js [data-reveal].is-visible{ opacity:1; transform:none; }

/* ==========================================================================
   桌面端：侧边导览式框架
   ========================================================================== */
@media (min-width:1080px){
  body{ padding-left:var(--rail-w); padding-top:var(--bar-h); }

  .utility-bar{
    position:fixed; top:0; left:var(--rail-w); right:0;
    height:var(--bar-h); z-index:70;
  }

  .site-rail{
    position:fixed; top:0; left:0; bottom:0; width:var(--rail-w);
    z-index:75; display:flex; flex-direction:column; overflow-y:auto;
    border-right:1px solid var(--line-dark); border-bottom:0;
  }
  .rail-brand{ padding:26px 22px 20px; }
  .rail-brand__mark{ width:44px; height:44px; font-size:20px; }
  .rail-brand__name{ font-size:22px; }
  .nav-toggle{ display:none; }
  .nav-scrim{ display:none !important; }

  .primary-nav{
    display:flex; flex-direction:column; flex:1;
    padding:6px 0 22px;
    border-top:1px solid var(--line-dark);
  }
  .primary-nav__list{ padding:0 0 4px; }
  .nav-link{ padding:11px 22px; font-size:19px; }
  .primary-nav__caption{ padding:16px 22px 8px; margin:0; border-bottom:0; }
  .rail-actions{ margin-top:auto; padding:22px 22px 0; }
  .rail-meta{ margin:18px 22px 0; padding:14px 0 0; }
}

/* ==========================================================================
   动效与可访问性降级
   ========================================================================== */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  html.js [data-reveal]{ opacity:1 !important; transform:none !important; }
  .pulse-dot{ box-shadow:none; }
}
