:root{
  --paper:#F7F1E3;
  --paper-2:#EADCC2;
  --ink:#142B22;
  --green:#3E7C59;
  --green-deep:#2E5A41;
  --gold:#D4A017;
  --gold-deep:#8A5B00;
  --red:#C63A2B;
  --cyan:#0A8A80;
  --violet:#4B3B66;
  --wood:#6B4A2F;
  --line:rgba(20,43,34,.22);
  --line-soft:rgba(20,43,34,.085);
  --paper-line:rgba(247,241,227,.28);
  --ink-70:rgba(20,43,34,.74);
  --shadow:6px 6px 0 var(--ink);
  --shadow-sm:3px 3px 0 var(--ink);
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-serif:"Noto Serif SC","Source Han Serif SC","Songti SC",Georgia,serif;
  --font-mono:"JetBrains Mono","Roboto Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --wrap:1280px;
  --gutter:24px;
  --bar-h:52px;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0}
img,svg{max-width:100%;height:auto;vertical-align:middle}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,p,ul,ol,figure,blockquote,dl,dd{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit}

body{
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.75;
  letter-spacing:.01em;
  color:var(--ink);
  background-color:var(--paper);
  background-image:
    linear-gradient(to right,var(--line-soft) 1px,transparent 1px),
    linear-gradient(to bottom,var(--line-soft) 1px,transparent 1px);
  background-size:48px 48px;
  padding-bottom:calc(var(--bar-h) + 12px);
  -webkit-font-smoothing:antialiased;
}

h1,h2{font-family:var(--font-serif);font-weight:900;line-height:1.18;letter-spacing:.01em;text-wrap:balance}
h3,h4{font-family:var(--font-sans);font-weight:800;line-height:1.3;text-wrap:balance}

:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
.site-footer :focus-visible,.fixed-bar :focus-visible{outline-color:var(--gold)}

/* ===== 基础排版工具 ===== */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter)}
.num{font-family:var(--font-mono);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.eyebrow{font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.16em;color:var(--green-deep);text-transform:uppercase}
.stack{display:flex;flex-direction:column;gap:16px}
.cluster{display:flex;flex-wrap:wrap;align-items:center;gap:8px}

/* ===== 跳过链接 ===== */
.skip-link{
  position:absolute;
  left:12px;
  top:-72px;
  z-index:200;
  display:inline-block;
  padding:10px 18px;
  background:var(--ink);
  color:var(--paper);
  border:2px solid var(--gold);
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:700;
  letter-spacing:.08em;
  text-decoration:none;
  transition:top .16s ease;
}
.skip-link:focus,.skip-link:focus-visible{top:12px}

/* ===== 页头 ===== */
.site-header{position:relative;z-index:60}
.header-top{background:var(--ink);color:var(--paper);border-bottom:3px solid var(--gold)}
.header-top__inner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:6px 24px;
  padding-block:8px;
}
.header-top__note{
  font-family:var(--font-mono);
  font-size:12px;
  line-height:1.5;
  letter-spacing:.05em;
  color:rgba(247,241,227,.84);
}
.utility-nav{display:flex;flex-wrap:wrap;gap:18px}
.utility-nav__link{
  display:inline-block;
  padding-block:4px;
  color:var(--paper);
  font-size:12.5px;
  font-weight:600;
  text-decoration:none;
  border-bottom:1px solid rgba(212,160,23,.55);
  transition:color .14s ease,border-color .14s ease;
}
.utility-nav__link:hover,.utility-nav__link:focus-visible{color:var(--gold);border-bottom-color:var(--gold)}

.header-main{
  position:sticky;
  top:0;
  z-index:60;
  background:var(--paper-2);
  border-bottom:3px solid var(--ink);
}
.header-main__inner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:10px 24px;
  padding-block:12px;
}

.brand{
  display:inline-flex;
  align-items:center;
  gap:14px;
  min-height:44px;
  text-decoration:none;
  color:var(--ink);
}
.brand__mark{
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  background:var(--gold);
  color:var(--ink);
  border:2px solid var(--ink);
  box-shadow:var(--shadow-sm);
  font-family:var(--font-serif);
  font-size:17px;
  font-weight:900;
  line-height:1.1;
  letter-spacing:.02em;
  transition:box-shadow .14s ease,transform .14s ease;
}
.brand:hover .brand__mark{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}
.brand__text{display:flex;flex-direction:column;gap:2px}
.brand__name{font-family:var(--font-serif);font-size:22px;font-weight:900;line-height:1.15;letter-spacing:.04em}
.brand__line{
  font-family:var(--font-mono);
  font-size:12px;
  font-weight:500;
  line-height:1.4;
  letter-spacing:.08em;
  color:var(--green-deep);
}

.nav-toggle{
  display:none;
  align-items:center;
  gap:10px;
  min-height:44px;
  padding:8px 14px;
  background:var(--paper);
  color:var(--ink);
  border:2px solid var(--ink);
  box-shadow:var(--shadow-sm);
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:700;
  letter-spacing:.12em;
  cursor:pointer;
  transition:background-color .14s ease,color .14s ease,box-shadow .14s ease;
}
.nav-toggle:hover{background:var(--gold)}
.nav-toggle[aria-expanded="true"]{background:var(--ink);color:var(--paper);box-shadow:none}
.nav-toggle__bars{
  position:relative;
  display:block;
  width:18px;
  height:2px;
  background:currentColor;
}
.nav-toggle__bars::before,
.nav-toggle__bars::after{
  content:"";
  position:absolute;
  left:0;
  width:18px;
  height:2px;
  background:currentColor;
}
.nav-toggle__bars::before{top:-6px}
.nav-toggle__bars::after{top:6px}
.nav-toggle__label{line-height:1}

.primary-nav{display:flex;flex:1 1 auto;justify-content:flex-end}
.primary-nav__list{display:flex;flex-wrap:wrap;gap:4px}
.primary-nav__link{
  display:block;
  min-height:44px;
  padding:8px 12px;
  color:var(--ink);
  font-size:15px;
  font-weight:700;
  line-height:1.4;
  text-decoration:none;
  border:2px solid transparent;
  transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease,color .14s ease;
}
.primary-nav__index{
  display:block;
  margin-bottom:2px;
  font-family:var(--font-mono);
  font-size:10px;
  font-weight:500;
  line-height:1;
  letter-spacing:.14em;
  color:var(--green-deep);
}
.primary-nav__link:hover,.primary-nav__link:focus-visible{
  background:var(--paper);
  border-color:var(--ink);
  box-shadow:var(--shadow-sm);
}
.primary-nav__link[aria-current="page"]{
  background:var(--ink);
  color:var(--paper);
  border-color:var(--ink);
  box-shadow:inset 0 -4px 0 var(--gold);
}
.primary-nav__link[aria-current="page"] .primary-nav__index{color:var(--gold)}

/* ===== 页脚 ===== */
.site-footer{
  position:relative;
  margin-top:64px;
  background:var(--ink);
  color:var(--paper);
  border-top:8px solid var(--gold);
  background-image:
    linear-gradient(to right,rgba(247,241,227,.05) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(247,241,227,.05) 1px,transparent 1px);
  background-size:48px 48px;
}
.footer__grid{
  display:grid;
  grid-template-columns:2fr 1fr 1fr 1fr;
  gap:32px 28px;
  padding-block:48px 32px;
}
.footer__brand{display:flex;flex-direction:column;align-items:flex-start;max-width:42ch}
.footer__mark{
  display:inline-block;
  padding-bottom:6px;
  border-bottom:3px solid var(--gold);
  font-family:var(--font-serif);
  font-size:24px;
  font-weight:900;
  letter-spacing:.04em;
}
.footer__summary{
  margin-top:14px;
  font-size:14.5px;
  line-height:1.8;
  color:rgba(247,241,227,.84);
}
.footer__contact{
  display:flex;
  flex-direction:column;
  gap:6px;
  margin-top:16px;
  font-family:var(--font-mono);
  font-size:12.5px;
  line-height:1.6;
  color:rgba(247,241,227,.8);
}
.footer__contact-item{display:flex;gap:8px;word-break:break-word}
.footer__contact-item::before{content:"—";color:var(--gold);flex:none}

.footer__col{display:flex;flex-direction:column;gap:10px}
.footer__col-title{
  padding-bottom:8px;
  border-bottom:1px solid var(--paper-line);
  font-family:var(--font-mono);
  font-size:12px;
  font-weight:700;
  letter-spacing:.16em;
  color:var(--gold);
}
.footer__list{display:flex;flex-direction:column;gap:2px}
.footer__link{
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding-block:4px;
  color:var(--paper);
  font-size:15px;
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color .14s ease,border-color .14s ease;
}
.footer__link:hover,.footer__link:focus-visible{color:var(--gold);border-bottom-color:var(--gold)}
.footer__link[aria-current="page"]{color:var(--gold);border-bottom-color:var(--gold)}

.footer__corner{
  padding-block:16px;
  border-top:1px dashed var(--paper-line);
  border-bottom:1px dashed var(--paper-line);
}
.footer__corner-label{
  margin-bottom:8px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.18em;
  color:rgba(247,241,227,.62);
}
.footer__corner-list{display:flex;flex-wrap:wrap;gap:4px 20px}
.footer__corner-link{
  display:inline-flex;
  align-items:baseline;
  gap:8px;
  min-height:44px;
  color:var(--paper);
  font-size:14px;
  font-weight:600;
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color .14s ease,border-color .14s ease;
}
.footer__corner-link:hover,.footer__corner-link:focus-visible{color:var(--gold);border-bottom-color:var(--gold)}
.footer__corner-index{font-family:var(--font-mono);font-size:11px;color:var(--gold)}

.footer__bottom{padding-block:16px 20px}
.footer__bottom-inner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px 24px;
  font-family:var(--font-mono);
  font-size:12px;
  line-height:1.6;
  color:rgba(247,241,227,.72);
}
.footer__copyright{letter-spacing:.04em}
.footer__note{color:rgba(247,241,227,.62)}

/* ===== 固定底栏 ===== */
.fixed-bar{
  position:fixed;
  inset:auto 0 0 0;
  z-index:80;
  background:#0E2018;
  border-top:2px solid var(--gold);
}
.fixed-bar__inner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:2px 10px;
  min-height:var(--bar-h);
  padding:6px var(--gutter);
  font-family:var(--font-mono);
  font-size:12px;
  line-height:1.5;
  letter-spacing:.02em;
  color:rgba(247,241,227,.88);
  text-align:center;
}
.fixed-bar__item{word-break:break-word}
.fixed-bar__dot{color:var(--gold)}

/* ===== 滚动进度条（JS 注入） ===== */
.scroll-progress{
  position:fixed;
  top:0;
  left:0;
  z-index:120;
  width:100%;
  height:4px;
  pointer-events:none;
  transform:scaleX(0);
  transform-origin:0 50%;
  background:linear-gradient(90deg,var(--green) 0%,var(--gold) 70%,var(--red) 100%);
  transition:transform .08s linear;
}

/* ===== 按钮 ===== */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:44px;
  padding:10px 22px;
  background:var(--paper);
  color:var(--ink);
  border:2px solid var(--ink);
  box-shadow:var(--shadow-sm);
  font-family:var(--font-sans);
  font-size:15px;
  font-weight:700;
  line-height:1.3;
  text-decoration:none;
  cursor:pointer;
  transition:transform .14s ease,box-shadow .14s ease,background-color .14s ease,color .14s ease;
}
.btn:hover,.btn:focus-visible{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--ink)}
.btn:active{transform:translate(1px,1px);box-shadow:2px 2px 0 var(--ink)}
.btn--gold{background:var(--gold);color:var(--ink)}
.btn--green{background:var(--green-deep);color:var(--paper)}
.btn--green:hover,.btn--green:focus-visible{background:var(--green)}
.btn--ghost{background:transparent;border-style:dashed;box-shadow:none}
.btn--ghost:hover,.btn--ghost:focus-visible{background:var(--paper-2);transform:none;box-shadow:none}

/* ===== 标签 ===== */
.tag{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:3px 10px;
  background:var(--paper-2);
  color:var(--ink);
  border:2px solid var(--ink);
  font-family:var(--font-mono);
  font-size:12px;
  font-weight:700;
  line-height:1.6;
  letter-spacing:.05em;
  text-decoration:none;
}
.tag--gold{background:var(--gold);color:var(--ink)}
.tag--green{background:var(--green-deep);color:var(--paper)}
.tag--red{background:var(--red);color:#FFF6EC}
.tag--violet{background:var(--violet);color:var(--paper)}

/* ===== 面包屑 ===== */
.crumbs{margin-block:16px 0}
.crumbs__list{display:flex;flex-wrap:wrap;gap:6px 10px;font-family:var(--font-mono);font-size:12px;letter-spacing:.04em}
.crumbs__item{display:flex;align-items:center;gap:10px;color:var(--ink-70)}
.crumbs__item:not(:last-child)::after{content:"/";color:var(--green);font-weight:700}
.crumbs__link{
  color:var(--green-deep);
  text-decoration:none;
  border-bottom:1px solid var(--line);
  padding-bottom:1px;
  transition:color .14s ease,border-color .14s ease;
}
.crumbs__link:hover,.crumbs__link:focus-visible{color:var(--ink);border-bottom-color:var(--gold-deep)}

/* ===== 章节头 ===== */
.section-head{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:6px 16px;
  padding-bottom:12px;
  border-bottom:3px solid var(--ink);
  margin-bottom:24px;
}
.section-head__index{
  font-family:var(--font-mono);
  font-size:clamp(28px,4vw,44px);
  font-weight:700;
  line-height:1;
  color:var(--gold-deep);
}
.section-head__title{font-family:var(--font-sans);font-size:clamp(22px,3vw,30px);font-weight:900;line-height:1.2}
.section-head__tag{margin-left:auto}

/* ===== 双栏骨架 ===== */
.layout{
  display:grid;
  grid-template-columns:276px minmax(0,1fr);
  gap:32px;
  align-items:start;
  padding-block:32px;
}
.layout__aside{position:sticky;top:96px;display:flex;flex-direction:column;gap:16px}
.layout__main{min-width:0;display:flex;flex-direction:column;gap:32px}

/* ===== 目录树 ===== */
.rail{background:var(--paper-2);border:2px solid var(--ink);box-shadow:var(--shadow-sm);padding:16px}
.rail__head{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
  padding-bottom:8px;
  margin-bottom:10px;
  border-bottom:2px solid var(--ink);
}
.rail__title{font-family:var(--font-mono);font-size:12px;font-weight:700;letter-spacing:.14em;color:var(--green-deep)}
.rail__list{display:flex;flex-direction:column;gap:4px}
.rail__link{
  display:flex;
  align-items:baseline;
  gap:10px;
  min-height:44px;
  padding:8px 10px;
  color:var(--ink);
  font-size:14px;
  font-weight:600;
  line-height:1.4;
  text-decoration:none;
  border:2px solid transparent;
  border-left:4px solid var(--line);
  transition:background-color .14s ease,border-color .14s ease,color .14s ease;
}
.rail__link:hover,.rail__link:focus-visible{background:var(--paper);border-color:var(--ink)}
.rail__link[data-active]{
  background:var(--ink);
  color:var(--paper);
  border-color:var(--ink);
  border-left-color:var(--gold);
}
.rail__index{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--gold-deep)}
.rail__link[data-active] .rail__index{color:var(--gold)}

/* ===== 卡片 ===== */
.card{
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:20px;
  background:var(--paper);
  border:2px solid var(--ink);
  box-shadow:var(--shadow);
  transition:transform .14s ease,box-shadow .14s ease;
}
.card:hover,.card:focus-within{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--ink)}
.card__index{font-family:var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.1em;color:var(--gold-deep)}
.card__eyebrow{
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:700;
  letter-spacing:.16em;
  color:var(--green-deep);
  text-transform:uppercase;
}
.card__title{font-family:var(--font-sans);font-size:20px;font-weight:800;line-height:1.35}
.card__text{font-size:15px;line-height:1.75;color:var(--ink-70)}
.card__meta{font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;color:var(--green-deep)}

/* ===== 榜单条 ===== */
.rank-bar{
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  gap:14px;
  align-items:center;
  padding:16px;
  background:var(--paper-2);
  border:2px solid var(--ink);
  border-left:8px solid var(--gold);
  transition:background-color .14s ease,transform .14s ease;
}
.rank-bar:hover,.rank-bar:focus-within{background:var(--paper);transform:translateX(2px)}
.rank-bar__num{
  font-family:var(--font-mono);
  font-size:clamp(26px,3vw,36px);
  font-weight:700;
  line-height:1;
  color:var(--ink);
}
.rank-bar__body{min-width:0;display:flex;flex-direction:column;gap:2px}
.rank-bar__title{font-family:var(--font-sans);font-size:17px;font-weight:800;line-height:1.4}
.rank-bar__meta{font-family:var(--font-mono);font-size:12px;letter-spacing:.03em;color:var(--green-deep)}

/* ===== 面板块 ===== */
.panel{padding:24px;background:var(--paper-2);border:2px solid var(--ink);box-shadow:var(--shadow)}
.panel--paper{background:var(--paper)}

/* ===== 图片容器基础规则 ===== */
.media-frame{
  display:block;
  position:relative;
  overflow:hidden;
  background:var(--paper-2);
  border:3px solid var(--ink);
  box-shadow:var(--shadow);
}
.media-frame__inner{
  display:grid;
  place-items:center;
  aspect-ratio:4/3;
  background-image:repeating-linear-gradient(135deg,rgba(20,43,34,.10) 0 2px,transparent 2px 12px);
}
.media-frame__img{
  display:block;
  width:100%;
  height:100%;
  aspect-ratio:4/3;
  object-fit:cover;
}
.media-frame__caption{
  padding:8px 12px;
  background:var(--paper);
  border-top:2px solid var(--ink);
  font-family:var(--font-mono);
  font-size:12px;
  line-height:1.6;
  color:var(--ink);
}
.media-frame--wide .media-frame__inner,
.media-frame--wide .media-frame__img{aspect-ratio:16/9}
.media-frame--tall .media-frame__inner,
.media-frame--tall .media-frame__img{aspect-ratio:3/4}

/* ===== 长文正文 ===== */
.prose{max-width:68ch;font-size:17px;line-height:1.8}
.prose p+p{margin-top:14px}
.prose h2{margin-block:32px 12px;font-size:26px}
.prose h3{margin-block:24px 10px;font-size:20px}
.prose li{position:relative;padding-left:20px;margin-top:8px}
.prose li::before{
  content:"";
  position:absolute;
  left:0;
  top:.62em;
  width:9px;
  height:9px;
  background:var(--gold);
  border:2px solid var(--ink);
}
.prose a{
  color:var(--green-deep);
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-thickness:2px;
  text-decoration-color:var(--gold);
}
.prose a:hover,.prose a:focus-visible{color:var(--ink);background:var(--paper-2)}

/* ===== 响应式 ===== */
@media (max-width:1023px){
  .layout{grid-template-columns:1fr;gap:24px}
  .layout__aside{position:static}
  .footer__grid{grid-template-columns:1fr 1fr;gap:28px 24px}
  .footer__brand{grid-column:1 / -1;max-width:none}
}

@media (max-width:900px){
  .nav-toggle{display:inline-flex}
  .primary-nav{
    display:none;
    flex:1 0 100%;
    justify-content:flex-start;
    margin-top:6px;
    padding-top:10px;
    border-top:2px solid var(--line);
  }
  .primary-nav[data-open]{display:block}
  .primary-nav__list{flex-direction:column;gap:6px}
  .primary-nav__link{
    display:flex;
    align-items:center;
    gap:10px;
    padding:12px 14px;
    font-size:16px;
    border-color:var(--line);
  }
  .primary-nav__index{margin:0;font-size:12px;color:var(--gold-deep)}
  .primary-nav__link:hover,.primary-nav__link:focus-visible{box-shadow:none;background:var(--paper-2)}
  .primary-nav__link[aria-current="page"]{box-shadow:inset 4px 0 0 var(--gold)}
  .brand__mark{width:46px;height:46px;font-size:15px}
  .brand__name{font-size:19px}
  .header-top__inner{padding-block:8px}
  .section-head__tag{margin-left:0}
}

@media (max-width:640px){
  :root{--gutter:16px;--bar-h:64px}
  body{font-size:16px;background-size:32px 32px}
  .header-top__note{font-size:11px}
  .utility-nav{gap:14px}
  .brand__line{font-size:11px;letter-spacing:.05em}
  .footer__grid{grid-template-columns:1fr;padding-block:36px 24px}
  .footer__mark{font-size:21px}
  .footer__corner-list{gap:2px 16px}
  .footer__bottom-inner{flex-direction:column;align-items:flex-start;gap:6px}
  .fixed-bar__inner{font-size:11px;gap:0 8px}
  .card,.panel{padding:16px}
  .rank-bar{grid-template-columns:auto minmax(0,1fr);padding:14px}
  .rank-bar__meta{grid-column:1 / -1}
  .btn{width:100%}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
  }
  .btn:hover,.btn:focus-visible,.card:hover,.card:focus-within,.rank-bar:hover,.rank-bar:focus-within,.brand:hover .brand__mark{transform:none}
  .scroll-progress{transition:none}
}
