:root{
  --ink-950:#0B231B;
  --ink-800:#143A2C;
  --paper-50:#F4EFE3;
  --paper-200:#E3D9C4;
  --acid-400:#D8F531;
  --acid-200:#EDFBB0;
  --ember-500:#F2743A;
  --blue-400:#6E8FA6;
  --ink-900:#14181A;
  --chalk-50:#FDFDF9;
  --mark-600:#D6402F;

  --font-display:"Archivo Black","Anton","思源黑体 Heavy","Source Han Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  --font-body:"Inter","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --font-mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --rail:272px;
  --bar-h:64px;
  --progress-h:4px;
  --dock-h:66px;
  --maxw:1320px;
  --gutter:clamp(16px,3.4vw,40px);

  --shadow-1:6px 0 0 var(--ink-900);
  --shadow-2:10px 0 0 var(--ink-900);
  --shadow-acid:6px 0 0 var(--acid-400);
  --shadow-acid-2:10px 0 0 var(--acid-400);
  --shadow-ink:6px 0 0 var(--ink-950);
  --shadow-ink-2:10px 0 0 var(--ink-950);

  --ease:cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{box-sizing:border-box}

html{
  -webkit-text-size-adjust:100%;
  scroll-padding-top:calc(var(--progress-h) + var(--bar-h) + 12px);
}
@media (prefers-reduced-motion: no-preference){
  html{scroll-behavior:smooth}
}

body{
  margin:0;
  padding-top:calc(var(--progress-h) + var(--bar-h));
  background:var(--paper-50);
  color:var(--ink-900);
  font-family:var(--font-body);
  font-size:17px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

h1,h2,h3,h4,h5{
  margin:0;
  font-family:var(--font-display);
  font-weight:900;
  line-height:1.08;
  letter-spacing:-.01em;
  text-wrap:balance;
}
h1{font-size:clamp(2.4rem,7vw,5.5rem)}
h2{font-size:clamp(1.7rem,3.6vw,2.9rem)}
h3{font-size:clamp(1.2rem,2vw,1.55rem);letter-spacing:0;line-height:1.25}
h4{font-size:clamp(1.02rem,1.4vw,1.18rem);letter-spacing:0;line-height:1.3}

p{margin:0 0 1em}
p:last-child{margin-bottom:0}
a{color:inherit}
img,svg,video{display:block;max-width:100%}
ul,ol{margin:0;padding:0;list-style:none}
dl,dd,dt{margin:0}
button{font:inherit;color:inherit}
code,kbd,samp,pre,.mono{font-family:var(--font-mono)}

:focus-visible{
  outline:3px solid var(--acid-400);
  outline-offset:2px;
}

#main-content{
  display:block;
  scroll-margin-top:calc(var(--progress-h) + var(--bar-h) + 10px);
}
#main-content:focus{outline:none}

/* ---------- 骨架 ---------- */
.wrap{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

.section{
  padding-block:clamp(48px,7vw,96px);
  position:relative;
}
.section--paper{background:var(--paper-50);color:var(--ink-900)}
.section--paper2{background:var(--paper-200);color:var(--ink-900)}
.section--ink{background:var(--ink-950);color:var(--chalk-50)}

.blueprint{
  background-image:
    linear-gradient(to right,rgba(110,143,166,.22) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(110,143,166,.22) 1px,transparent 1px);
  background-size:32px 32px;
}
.blueprint--dark{
  background-image:
    linear-gradient(to right,rgba(110,143,166,.16) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(110,143,166,.16) 1px,transparent 1px);
  background-size:32px 32px;
}

.prose p,.prose li{max-width:68ch}
.prose ul{list-style:none;display:grid;gap:10px}

/* ---------- 跳过链接 ---------- */
.skip-link{
  position:fixed;
  top:0;left:50%;
  z-index:200;
  transform:translate(-50%,-140%);
  padding:10px 20px;
  background:var(--acid-400);
  color:var(--ink-950);
  border:3px solid var(--ink-950);
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:700;
  letter-spacing:.08em;
  text-decoration:none;
  transition:transform .18s var(--ease);
}
.skip-link:focus{transform:translate(-50%,0)}

/* ---------- 阅读进度 ---------- */
.read-progress{
  position:fixed;
  top:0;left:0;right:0;
  height:var(--progress-h);
  background:var(--ink-950);
  z-index:130;
}
.read-progress__fill{
  display:block;
  height:100%;
  width:0;
  background:var(--acid-400);
}

/* ---------- 页头 ---------- */
.site-header{position:relative;z-index:90}

.brandbar{
  position:fixed;
  top:var(--progress-h);left:0;right:0;
  height:var(--bar-h);
  z-index:100;
  background:var(--ink-950);
  border-bottom:3px solid var(--ink-800);
}
.brandbar__inner{
  width:100%;
  height:100%;
  display:flex;
  align-items:center;
  gap:16px;
  padding-left:var(--gutter);
  padding-right:14px;
}

.brandmark{
  display:inline-flex;
  align-items:center;
  gap:11px;
  flex:none;
  text-decoration:none;
  color:var(--chalk-50);
}
.brandmark__mark{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:2px;
  width:26px;height:26px;
  flex:none;
}
.brandmark__mark i{display:block;background:var(--acid-400)}
.brandmark__mark i:nth-child(2),
.brandmark__mark i:nth-child(3){background:var(--chalk-50)}
.brandmark__mark i:nth-child(4){background:var(--ember-500)}
.brandmark__text{display:grid}
.brandmark__name{
  display:block;
  font-family:var(--font-display);
  font-size:clamp(15px,1.4vw,18px);
  line-height:1.1;
  color:var(--chalk-50);
}
.brandmark__sub{
  display:block;
  margin-top:3px;
  font-family:var(--font-mono);
  font-size:10px;
  letter-spacing:.14em;
  color:var(--acid-400);
}

.ticker{
  display:none;
  margin:0 auto 0 0;
  align-items:center;
  gap:9px;
  font-family:var(--font-mono);
  font-size:11.5px;
  letter-spacing:.1em;
  color:var(--acid-200);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ticker__dot{
  width:7px;height:7px;
  flex:none;
  background:var(--acid-400);
  box-shadow:0 0 0 3px rgba(216,245,49,.2);
}
@media (min-width:720px){.ticker{display:flex}}

.nav-toggle{
  margin-left:auto;
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:8px 13px;
  background:transparent;
  color:var(--chalk-50);
  border:3px solid var(--acid-400);
  cursor:pointer;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.14em;
  transition:background-color .16s var(--ease),color .16s var(--ease);
}
.nav-toggle__bars{display:grid;gap:4px;width:16px}
.nav-toggle__bars i{display:block;height:3px;background:var(--acid-400)}
.nav-toggle:hover,
.nav-toggle[aria-expanded="true"]{
  background:var(--acid-400);
  color:var(--ink-950);
}
.nav-toggle:hover .nav-toggle__bars i,
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i{background:var(--ink-950)}

/* ---------- 导航 ---------- */
.site-nav{background:var(--ink-950)}

.site-nav__cap{
  margin:0;
  padding:0 20px 12px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.18em;
  color:var(--blue-400);
}
.site-nav__list{display:block}
.site-nav__item{display:block}

.navlink{
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 20px;
  color:var(--chalk-50);
  text-decoration:none;
  font-size:15px;
  font-weight:600;
  border-left:3px solid transparent;
  transition:background-color .16s var(--ease),color .16s var(--ease),border-color .16s var(--ease);
}
.navlink__idx{
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:500;
  letter-spacing:.1em;
  color:var(--blue-400);
}
.navlink__label{flex:1 1 auto}
.navlink__light{
  width:10px;height:10px;
  flex:none;
  border:2px solid var(--ink-800);
  transition:background-color .16s var(--ease),box-shadow .16s var(--ease),border-color .16s var(--ease);
}
.navlink:hover{
  background:var(--ink-800);
  border-left-color:var(--acid-200);
}
.navlink:hover .navlink__idx{color:var(--acid-200)}
.navlink[aria-current="page"]{
  background:var(--ink-800);
  border-left-color:var(--acid-400);
  color:var(--acid-400);
}
.navlink[aria-current="page"] .navlink__idx{color:var(--acid-400)}
.navlink[aria-current="page"] .navlink__light{
  background:var(--acid-400);
  border-color:var(--acid-400);
  box-shadow:0 0 0 4px rgba(216,245,49,.18);
}

.site-nav__foot{
  margin-top:auto;
  padding:18px 20px 0;
  border-top:3px solid var(--ink-800);
}
.site-nav__actions{display:grid;gap:10px}

.rail-status{
  display:flex;
  align-items:baseline;
  gap:10px;
  margin-top:18px;
  padding-top:14px;
  border-top:3px solid var(--ink-800);
}
.rail-status__num{
  font-family:var(--font-mono);
  font-size:20px;
  font-weight:500;
  line-height:1;
  color:var(--acid-400);
}
.rail-status__name{
  font-size:12.5px;
  font-weight:600;
  letter-spacing:.04em;
  color:var(--paper-200);
}
.site-nav__coord{
  display:block;
  margin-top:12px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.1em;
  color:var(--blue-400);
}

/* 移动 / 平板：底部滑出抽屉 */
@media (max-width:1023px){
  .site-nav{
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:114;
    max-height:calc(100vh - var(--bar-h) - 60px);
    overflow-y:auto;
    padding:18px 0 26px;
    border-top:3px solid var(--acid-400);
    transform:translateY(103%);
    visibility:hidden;
    transition:transform .28s var(--ease),visibility .28s var(--ease);
  }
  .site-nav[data-open]{
    transform:translateY(0);
    visibility:visible;
  }
  .site-nav__foot{margin-top:18px}
}
@media (max-width:719px){
  .site-nav{
    bottom:78px;
    max-height:calc(100vh - var(--bar-h) - 138px);
  }
}

/* 桌面：左侧竖排索引栏 */
@media (min-width:1024px){
  body{padding-left:var(--rail)}
  .brandbar__inner{padding-left:0;gap:0}
  .brandmark{
    width:var(--rail);
    height:100%;
    padding:0 20px;
    border-right:3px solid var(--ink-800);
  }
  .ticker{margin-left:24px}
  .nav-toggle{display:none}
  .site-nav{
    position:fixed;
    top:calc(var(--progress-h) + var(--bar-h));
    left:0;bottom:0;
    width:var(--rail);
    z-index:96;
    display:flex;
    flex-direction:column;
    overflow-y:auto;
    padding:22px 0 18px;
    border-right:3px solid var(--ink-800);
  }
}

/* ---------- 底部快捷坞 ---------- */
.dock{display:none}
@media (max-width:719px){
  .dock{
    display:grid;
    grid-template-columns:repeat(5,1fr);
    position:fixed;
    left:0;right:0;bottom:0;
    z-index:112;
    background:var(--ink-950);
    border-top:3px solid var(--ink-800);
    padding:4px 2px calc(4px + env(safe-area-inset-bottom,0px));
  }
  .dock__item{
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:2px;
    min-height:var(--dock-h);
    padding:6px 2px;
    background:transparent;
    border:0;
    border-top:3px solid transparent;
    color:var(--paper-200);
    text-decoration:none;
    cursor:pointer;
    transition:color .16s var(--ease),border-color .16s var(--ease);
  }
  .dock__num{
    font-family:var(--font-mono);
    font-size:10px;
    letter-spacing:.1em;
    color:var(--blue-400);
  }
  .dock__label{
    font-size:11.5px;
    font-weight:600;
    letter-spacing:.02em;
  }
  .dock__item:hover,
  .dock__item:focus-visible,
  .dock__item[aria-expanded="true"]{color:var(--acid-400)}
  .dock__item:hover .dock__num,
  .dock__item[aria-expanded="true"] .dock__num{color:var(--acid-400)}
  .dock__item--more{color:var(--acid-400)}
  .dock__item[aria-current="page"]{
    border-top-color:var(--acid-400);
    color:var(--acid-400);
  }
}

/* ---------- 通用按钮 ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  padding:12px 18px;
  background:var(--paper-50);
  color:var(--ink-900);
  border:3px solid var(--ink-900);
  box-shadow:var(--shadow-1);
  font-family:var(--font-body);
  font-size:14.5px;
  font-weight:700;
  letter-spacing:.01em;
  text-decoration:none;
  cursor:pointer;
  transition:transform .16s var(--ease),box-shadow .16s var(--ease),background-color .16s var(--ease),color .16s var(--ease);
}
.btn:hover{transform:translateY(-4px);box-shadow:var(--shadow-2)}
.btn:active{transform:translate(6px,0);box-shadow:0 0 0 var(--ink-900)}
.btn--acid{
  background:var(--acid-400);
  color:var(--ink-950);
  border-color:var(--ink-950);
  box-shadow:var(--shadow-ink);
}
.btn--acid:hover{box-shadow:var(--shadow-ink-2)}
.btn--acid:active{box-shadow:0 0 0 var(--ink-950)}
.btn--ghost{
  background:transparent;
  color:var(--chalk-50);
  border-color:var(--chalk-50);
  box-shadow:var(--shadow-acid);
}
.btn--ghost:hover{box-shadow:var(--shadow-acid-2)}
.btn--ghost:active{box-shadow:0 0 0 var(--acid-400)}
.btn--sm{padding:9px 13px;font-size:13px}

/* ---------- 标签 / 贴纸 ---------- */
.label{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--blue-400);
}
.label::before{
  content:"";
  width:9px;height:9px;
  flex:none;
  background:var(--acid-400);
}

.tag{
  display:inline-block;
  padding:5px 11px;
  background:var(--acid-400);
  color:var(--ink-950);
  border:3px solid var(--ink-950);
  box-shadow:4px 0 0 var(--ink-950);
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:500;
  letter-spacing:.12em;
  transform:rotate(-1.5deg);
}
.tag--ember{background:var(--ember-500);color:var(--chalk-50)}
.tag--paper{background:var(--paper-50)}
.tag--flat{transform:none}

/* ---------- 面板 ---------- */
.panel{
  padding:clamp(16px,2.4vw,28px);
  background:var(--paper-50);
  border:3px solid var(--ink-900);
  box-shadow:var(--shadow-1);
}
.panel--ink{
  background:var(--ink-800);
  color:var(--chalk-50);
  border-color:var(--ink-950);
  box-shadow:var(--shadow-acid);
}
.panel__idx{
  display:block;
  margin-bottom:10px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  color:var(--blue-400);
}

/* ---------- 面包屑 ---------- */
.breadcrumbs{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
  margin:0;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.06em;
  color:var(--blue-400);
}
.breadcrumbs a{
  color:inherit;
  text-decoration:none;
  border-bottom:2px solid transparent;
  padding-bottom:1px;
  transition:color .16s var(--ease),border-color .16s var(--ease);
}
.breadcrumbs a:hover{color:var(--acid-400);border-bottom-color:var(--acid-400)}
.breadcrumbs__sep{opacity:.55}
.breadcrumbs__current{color:var(--paper-200)}
.section--paper .breadcrumbs__current,
.section--paper2 .breadcrumbs__current{color:var(--ink-900)}

/* ---------- 图片容器基础规则 ---------- */
.media-frame{
  position:relative;
  display:block;
  overflow:hidden;
  aspect-ratio:16/9;
  background:var(--ink-800);
  border:3px solid var(--ink-900);
  box-shadow:var(--shadow-1);
}
.media-frame--portrait{aspect-ratio:3/4}
.media-frame--square{aspect-ratio:1/1}
.media-frame--wide{aspect-ratio:21/9}
.media-frame__img{
  width:100%;
  height:100%;
  object-fit:cover;
}
.media-frame__placeholder{
  position:absolute;
  inset:0;
  display:grid;
  place-items:center;
  padding:12px;
  text-align:center;
  background:
    repeating-linear-gradient(-45deg,rgba(216,245,49,.13) 0 10px,transparent 10px 20px),
    var(--ink-800);
  font-family:var(--font-mono);
  font-size:11.5px;
  letter-spacing:.16em;
  color:var(--acid-200);
}
.media-frame__cap{
  position:absolute;
  left:0;bottom:0;
  padding:6px 12px;
  background:var(--acid-400);
  color:var(--ink-950);
  border-top:3px solid var(--ink-950);
  border-right:3px solid var(--ink-950);
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.1em;
}
@media (min-width:1024px){
  .media-frame--no-shadow{box-shadow:none}
}

/* ---------- 页脚 ---------- */
.site-footer{
  position:relative;
  background:var(--ink-950);
  color:var(--chalk-50);
  border-top:3px solid var(--acid-400);
  padding-top:clamp(40px,6vw,72px);
  background-image:linear-gradient(to right,rgba(110,143,166,.12) 1px,transparent 1px);
  background-size:48px 100%;
}
@media (max-width:719px){
  .site-footer{padding-bottom:calc(var(--dock-h) + 26px)}
}
.site-footer__inner{
  width:100%;
  max-width:var(--maxw);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.site-footer__grid{
  display:grid;
  gap:clamp(26px,3vw,40px);
  grid-template-columns:1fr;
}
@media (min-width:640px){
  .site-footer__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (min-width:1024px){
  .site-footer__grid{
    grid-template-columns:minmax(190px,1.2fr) repeat(3,minmax(110px,.68fr)) minmax(230px,1.35fr);
    gap:36px;
  }
}

.site-footer__mark{
  margin:0;
  font-family:var(--font-display);
  font-size:clamp(1.15rem,2vw,1.5rem);
  line-height:1.1;
  color:var(--chalk-50);
}
.site-footer__domain{
  margin:8px 0 0;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.08em;
  color:var(--blue-400);
}
.site-footer__coord{
  margin:12px 0 0;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.1em;
  color:var(--blue-400);
}

.site-footer__cap{
  margin:0 0 14px;
  padding-bottom:10px;
  border-bottom:3px solid var(--ink-800);
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--acid-400);
}
.site-footer__list{display:grid;gap:10px}
.site-footer__link{
  display:inline-flex;
  align-items:center;
  gap:9px;
  padding-bottom:2px;
  color:var(--paper-200);
  text-decoration:none;
  font-size:14.5px;
  border-bottom:2px solid transparent;
  transition:color .16s var(--ease),border-color .16s var(--ease);
}
.site-footer__link::before{
  content:"";
  width:6px;height:6px;
  flex:none;
  background:var(--blue-400);
  transition:background-color .16s var(--ease);
}
.site-footer__link:hover,
.site-footer__link:focus-visible{
  color:var(--acid-400);
  border-bottom-color:var(--acid-400);
}
.site-footer__link:hover::before,
.site-footer__link:focus-visible::before{background:var(--acid-400)}

.contact-list{display:grid;gap:14px}
.contact-list__row{display:grid;gap:3px}
.contact-list__key{
  font-family:var(--font-mono);
  font-size:10.5px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--blue-400);
}
.contact-list__val{
  margin:0;
  font-family:var(--font-mono);
  font-size:13.5px;
  line-height:1.6;
  color:var(--chalk-50);
  word-break:break-word;
}
.contact-list__val--note{
  font-family:var(--font-body);
  font-size:13.5px;
  line-height:1.65;
  color:var(--paper-200);
}

.site-footer__bottom{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:12px 24px;
  margin-top:clamp(32px,4vw,52px);
  padding:20px 0 26px;
  border-top:3px solid var(--ink-800);
}
.site-footer__legal,
.site-footer__copy{
  margin:0;
  font-family:var(--font-mono);
  font-size:11.5px;
  letter-spacing:.08em;
  color:var(--blue-400);
}

/* ---------- 显现动效 ---------- */
[data-reveal]{
  transition:opacity .36s var(--ease),transform .36s var(--ease);
}
.js-on [data-reveal]{
  opacity:0;
  transform:translateY(12px);
}
.js-on [data-reveal].is-in{
  opacity:1;
  transform:translateY(0);
}

/* ---------- 减少动效 ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .js-on [data-reveal]{opacity:1 !important;transform:none !important}
  .btn:hover{transform:none;box-shadow:var(--shadow-1)}
  .btn--acid:hover{box-shadow:var(--shadow-ink)}
  .btn--ghost:hover{box-shadow:var(--shadow-acid)}
}
