/* ============================================================
   九1官网主页 · 共享外壳样式  /assets/site.css
   含：设计令牌、重置、中文排版、头部轨道导航、页脚、
       通用按钮、面包屑、正文容器、网格与基础组件
   ============================================================ */

/* ---------- 1. 设计令牌 ---------- */
:root{
  --abyss:#0A1A1C;
  --teal-deep:#0F2E2A;
  --karst:#16443C;
  --live:#2E8B76;
  --light-teal:#7FD8C0;
  --vermilion:#C8382C;
  --gold:#E0A33C;
  --wine:#6E2B45;
  --limestone:#EAF1EC;
  --mist:#9BB0AA;
  --gold-line:#8A6A2A;
  --clay:#D2713A;

  --line:rgba(127,216,192,.14);
  --line-strong:rgba(127,216,192,.30);

  --sans:"Source Han Sans SC","Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;

  --rail-w:88px;
  --rail-open:260px;
  --bar-h:58px;
  --gut:clamp(18px,4vw,56px);
  --maxw:1280px;
  --ease:cubic-bezier(.22,.7,.3,1);
}

/* ---------- 2. 重置与基础 ---------- */
*,*::before,*::after{box-sizing:border-box;}

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
}

body{
  margin:0;
  padding-top:var(--bar-h);
  background:var(--abyss);
  color:var(--limestone);
  font-family:var(--sans);
  font-size:16px;
  font-weight:400;
  line-height:1.85;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img,picture,svg,video{display:block;max-width:100%;}
a{color:var(--light-teal);text-decoration:none;transition:color 180ms var(--ease);}
a:hover{color:var(--light-teal);}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
ul,ol{list-style:none;margin:0;padding:0;}
h1,h2,h3,h4,h5{margin:0;font-weight:800;line-height:1.15;letter-spacing:-0.01em;}
p{margin:0 0 1em;}
p:last-child{margin-bottom:0;}
hr{border:0;height:1px;margin:0;background:var(--line);}
strong{font-weight:700;}
::selection{background:var(--vermilion);color:#fff;}

:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.rail a:focus-visible,.rail button:focus-visible{outline-offset:-2px;}

#main-content{scroll-margin-top:calc(var(--bar-h) + 12px);}

/* ---------- 3. 跳过导航 ---------- */
.skip-link{
  position:fixed;
  top:8px;
  left:8px;
  z-index:200;
  padding:10px 16px;
  background:var(--gold);
  color:var(--abyss);
  font-family:var(--mono);
  font-size:13px;
  letter-spacing:.08em;
  border:1px solid var(--abyss);
  transform:translateY(-180%);
  transition:transform 160ms var(--ease);
}
.skip-link:focus{transform:translateY(0);color:var(--abyss);}

/* ---------- 4. 头部：移动端顶栏 ---------- */
.site-header{
  position:fixed;
  top:0;
  left:0;
  right:0;
  z-index:70;
}

.rail{
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
  height:var(--bar-h);
  padding:0 14px;
  background:var(--teal-deep);
  border-bottom:1px solid var(--karst);
}

.rail__brand{display:flex;align-items:center;gap:10px;min-width:0;color:var(--limestone);}
.rail__brand:hover{color:var(--limestone);}
.rail__mark{font-size:19px;font-weight:800;line-height:1;letter-spacing:-0.04em;color:var(--limestone);}
.rail__brandtext{display:flex;flex-direction:column;gap:2px;min-width:0;}
.rail__wordmark{font-size:14px;font-weight:700;line-height:1.2;white-space:nowrap;color:var(--limestone);}
.rail__tagline{display:none;font-family:var(--mono);font-size:10px;letter-spacing:.18em;white-space:nowrap;color:var(--mist);}

.rail__toggle{
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin-left:auto;
  padding:9px 12px;
  border:1px solid var(--line-strong);
  color:var(--mist);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.16em;
  transition:border-color 180ms var(--ease),color 180ms var(--ease);
}
.rail__toggle:hover{border-color:var(--vermilion);color:var(--limestone);}
.rail__toggle-lines{display:inline-flex;flex-direction:column;justify-content:space-between;width:16px;height:11px;}
.rail__bar{display:block;width:100%;height:1px;background:currentColor;}

.rail__nav{
  position:fixed;
  top:var(--bar-h);
  left:0;
  right:0;
  max-height:calc(100dvh - var(--bar-h));
  overflow-y:auto;
  padding:10px 14px 24px;
  background:var(--teal-deep);
  border-bottom:1px solid var(--karst);
  opacity:0;
  visibility:hidden;
  transform:translateY(-10px);
  transition:opacity 180ms var(--ease),transform 180ms var(--ease),visibility 180ms linear;
}
.rail__nav[data-open]{opacity:1;visibility:visible;transform:none;}

.rail__navhead{display:none;margin:0;font-family:var(--mono);font-size:10px;letter-spacing:.22em;color:var(--mist);}
.rail__list{display:grid;gap:0;}
.rail__item{min-width:0;}

.rail__link{
  display:flex;
  align-items:center;
  gap:14px;
  padding:14px 10px;
  border:1px solid transparent;
  border-bottom-color:var(--line);
  color:var(--limestone);
  font-size:16px;
  transition:color 180ms var(--ease),border-color 180ms var(--ease),background-color 180ms var(--ease);
}
.rail__link:hover{color:var(--light-teal);}
.rail__num{flex:0 0 auto;width:22px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--gold);}
.rail__label{opacity:1;white-space:nowrap;}

.rail__link[aria-current="page"]{color:var(--light-teal);border-bottom-color:var(--vermilion);}
.rail__link[aria-current="page"] .rail__num{color:var(--limestone);}

.rail__actions{display:none;}
.rail__note{display:none;}

/* ---------- 5. 头部：桌面端侧边轨道 ---------- */
@media (min-width:1024px){
  body{padding-top:0;padding-left:var(--rail-w);}
  #main-content{scroll-margin-top:24px;}

  .site-header{
    right:auto;
    bottom:0;
    width:var(--rail-w);
    transition:width 220ms var(--ease);
  }
  .site-header:hover,
  .site-header:focus-within{width:var(--rail-open);}

  .rail{
    flex-direction:column;
    align-items:stretch;
    gap:14px;
    height:100%;
    padding:22px 14px 20px;
    border-right:1px solid var(--karst);
    border-bottom:0;
    overflow:hidden;
  }

  .rail__brand{gap:12px;}
  .rail__brandtext{opacity:0;transition:opacity 180ms 70ms var(--ease);}
  .rail__tagline{display:block;}
  .site-header:hover .rail__brandtext,
  .site-header:focus-within .rail__brandtext{opacity:1;}

  .rail__toggle{display:none;}

  .rail__nav{
    position:static;
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    overflow:visible;
    padding:0;
    background:transparent;
    border:0;
    opacity:1;
    visibility:visible;
    transform:none;
  }
  .rail__navhead{
    display:block;
    margin:0 0 10px 12px;
    opacity:0;
    white-space:nowrap;
    transition:opacity 180ms 70ms var(--ease);
  }
  .site-header:hover .rail__navhead,
  .site-header:focus-within .rail__navhead{opacity:1;}

  .rail__list{gap:2px;}

  .rail__link{
    padding:11px 10px;
    border:1px solid transparent;
    border-left:2px solid transparent;
    font-size:15px;
    white-space:nowrap;
  }
  .rail__link:hover{
    color:var(--limestone);
    border-color:rgba(224,163,60,.45);
    border-left-color:var(--gold);
    background:rgba(46,139,118,.14);
  }
  .rail__link[aria-current="page"]{
    color:var(--limestone);
    background:rgba(200,56,44,.14);
    border-color:transparent;
    border-left-color:var(--vermilion);
  }
  .rail__link[aria-current="page"] .rail__num{color:var(--gold);}

  .rail__label{opacity:0;transition:opacity 180ms 70ms var(--ease);}
  .site-header:hover .rail__label,
  .site-header:focus-within .rail__label{opacity:1;}

  .rail__actions{
    display:flex;
    flex-direction:column;
    gap:8px;
    opacity:0;
    pointer-events:none;
    transition:opacity 200ms 60ms var(--ease);
  }
  .site-header:hover .rail__actions,
  .site-header:focus-within .rail__actions{opacity:1;pointer-events:auto;}

  .rail__note{
    display:block;
    position:absolute;
    right:9px;
    bottom:104px;
    margin:0;
    writing-mode:vertical-rl;
    font-family:var(--mono);
    font-size:10px;
    letter-spacing:.26em;
    white-space:nowrap;
    color:var(--mist);
    opacity:.7;
    transition:opacity 180ms var(--ease);
  }
  .site-header:hover .rail__note,
  .site-header:focus-within .rail__note{opacity:0;}
}

/* ---------- 6. 滚动进度与返回顶部 ---------- */
.scroll-progress{
  position:fixed;
  top:var(--bar-h);
  left:0;
  right:0;
  height:2px;
  z-index:65;
  pointer-events:none;
  background:rgba(127,216,192,.10);
}
.scroll-progress__bar{display:block;width:0;height:100%;background:var(--vermilion);}
@media (min-width:1024px){
  .scroll-progress{top:0;left:var(--rail-w);}
}

.backtop{
  position:fixed;
  right:16px;
  bottom:16px;
  z-index:75;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:12px 14px;
  background:var(--teal-deep);
  border:1px solid var(--gold-line);
  color:var(--gold);
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:.18em;
  opacity:0;
  visibility:hidden;
  transform:translateY(10px);
  transition:opacity 200ms var(--ease),transform 200ms var(--ease),visibility 200ms linear,border-color 180ms var(--ease);
}
.backtop.is-visible{opacity:1;visibility:visible;transform:none;}
.backtop:hover{border-color:var(--gold);color:var(--limestone);}
.backtop__arrow{font-size:13px;line-height:1;}
@media (min-width:1024px){
  .backtop{right:28px;bottom:28px;}
}

/* ---------- 7. 页脚 ---------- */
.site-footer{
  background:var(--teal-deep);
  border-top:1px solid var(--line);
}

.mesh-band{
  height:46px;
  border-bottom:1px solid var(--line);
  background-image:repeating-linear-gradient(90deg,var(--line) 0 1px,transparent 1px 56px);
}

.footer__inner{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:34px;
  width:100%;
  max-width:1320px;
  margin:0 auto;
  padding:clamp(38px,6vw,76px) var(--gut) clamp(28px,4vw,48px);
}

.footer__mark{margin:0;font-size:clamp(34px,4vw,52px);font-weight:800;line-height:1;letter-spacing:-0.03em;color:var(--limestone);}
.footer__name{margin:12px 0 0;font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--mist);}
.footer__tagline{margin:8px 0 18px;font-size:15px;color:var(--limestone);}
.footer__contact{margin:0;font-family:var(--mono);font-size:12.5px;line-height:2.05;letter-spacing:.04em;color:var(--mist);}
.footer__contact li{word-break:break-word;}

.footer__cols{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;}
.footer__coltitle{margin:0 0 16px;font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--gold);}
.footer__list{display:grid;gap:10px;}
.footer__list a{
  display:inline-block;
  color:var(--limestone);
  font-size:14.5px;
  transition:color 180ms var(--ease),padding-left 180ms var(--ease);
}
.footer__list a:hover{color:var(--light-teal);padding-left:4px;}

@media (min-width:700px){
  .footer__cols{grid-template-columns:repeat(3,minmax(0,1fr));gap:0;}
  .footer__col{border-left:1px solid var(--line);padding-left:clamp(16px,2vw,30px);}
  .footer__col:first-child{border-left:0;padding-left:0;}
}

@media (min-width:1024px){
  .footer__inner{grid-template-columns:minmax(250px,1.2fr) minmax(0,3fr);gap:0;}
  .footer__cols{display:contents;}
  .footer__col{border-left:1px solid var(--line);padding-left:clamp(18px,2vw,32px);}
  .footer__col:first-child{border-left:1px solid var(--line);padding-left:clamp(18px,2vw,32px);}
}

.footer__legal{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:10px 28px;
  width:100%;
  max-width:1320px;
  margin:0 auto;
  padding:18px var(--gut) 26px;
  border-top:1px solid var(--line);
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:.1em;
  color:var(--mist);
}
.footer__legal p{margin:0;}

/* ---------- 8. 通用布局 ---------- */
.wrap{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);}
.wrap--wide{max-width:1400px;}

.section{position:relative;padding:clamp(52px,7.5vw,124px) 0;}
.section--abyss{background:var(--abyss);}
.section--teal{background:var(--teal-deep);}
.section--karst{background:var(--karst);}
.section--wine{background:var(--wine);}

.rule{height:1px;border:0;margin:0;background:var(--line);}

/* ---------- 9. 中文排版与文本工具 ---------- */
.prose{max-width:38em;}
.prose p{font-size:17px;line-height:1.9;color:var(--limestone);}
.lead{max-width:34em;font-size:clamp(17px,1.6vw,20px);line-height:1.8;color:var(--limestone);}
.mono{font-family:var(--mono);font-size:12.5px;letter-spacing:.1em;}
.muted{color:var(--mist);}
.gold{color:var(--gold);}
.rot-note{
  writing-mode:vertical-rl;
  text-orientation:mixed;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.26em;
  color:var(--mist);
}

/* ---------- 10. 章节抬头 ---------- */
.sec-head{
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  gap:10px 20px;
  margin-bottom:clamp(22px,3vw,44px);
}
.sec-num{
  font-family:var(--mono);
  font-size:clamp(30px,5.4vw,64px);
  line-height:1;
  letter-spacing:-0.03em;
  color:var(--gold);
}
.sec-title{font-size:clamp(23px,3.2vw,38px);font-weight:800;line-height:1.12;}
.sec-kicker{font-family:var(--mono);font-size:11.5px;letter-spacing:.2em;color:var(--mist);text-transform:uppercase;}
.sec-intro{max-width:38em;margin:0 0 clamp(22px,3vw,38px);font-size:16px;color:var(--mist);}

/* ---------- 11. 框景 ---------- */
.frame{position:relative;border:1px solid var(--line-strong);padding:clamp(18px,3.4vw,44px);}
.frame::before,
.frame::after{
  content:"";
  position:absolute;
  width:14px;
  height:14px;
  border:1px solid var(--gold-line);
  pointer-events:none;
}
.frame::before{top:-1px;left:-1px;border-right:0;border-bottom:0;}
.frame::after{bottom:-1px;right:-1px;border-left:0;border-top:0;}

/* ---------- 12. 图片容器（页面阶段放图） ---------- */
.media{
  position:relative;
  display:block;
  overflow:hidden;
  background:var(--teal-deep);
  border:1px solid var(--line);
}
.media>img,
.media>picture>img{width:100%;height:100%;object-fit:cover;}
.media::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background-image:repeating-linear-gradient(0deg,rgba(127,216,192,.07) 0 1px,transparent 1px 34px);
}
.media--21x9{aspect-ratio:21/9;}
.media--16x9{aspect-ratio:16/9;}
.media--4x3{aspect-ratio:4/3;}
.media--1x1{aspect-ratio:1/1;}
.media--3x4{aspect-ratio:3/4;}
.media__tag{
  position:absolute;
  left:0;
  bottom:0;
  z-index:2;
  padding:6px 10px;
  background:var(--abyss);
  border-top:1px solid var(--line-strong);
  border-right:1px solid var(--line-strong);
  font-family:var(--mono);
  font-size:10.5px;
  letter-spacing:.16em;
  color:var(--gold);
}

/* ---------- 13. 按钮 ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:12px 18px;
  border:1px solid transparent;
  border-radius:0;
  background:transparent;
  color:var(--limestone);
  font-family:var(--sans);
  font-size:14px;
  font-weight:600;
  letter-spacing:.02em;
  text-align:left;
  transition:border-color 180ms var(--ease),background-color 180ms var(--ease),color 180ms var(--ease);
}
.btn::after{content:"\2192";font-family:var(--mono);display:inline-block;transition:transform 180ms var(--ease);}
.btn:hover::after{transform:translateX(4px);}

.btn--accent{background:var(--vermilion);border-color:var(--vermilion);color:#fff;}
.btn--accent:hover{background:#DE4437;border-color:#DE4437;color:#fff;}

.btn--ghost{border-color:var(--gold-line);color:var(--gold);}
.btn--ghost:hover{border-color:var(--gold);background:rgba(224,163,60,.10);color:var(--gold);}

.btn--quiet{border-color:var(--line-strong);color:var(--limestone);}
.btn--quiet:hover{border-color:var(--light-teal);color:var(--light-teal);}

/* ---------- 14. 网格与错位分栏 ---------- */
.grid{display:grid;gap:clamp(16px,2.2vw,28px);}
.grid--2{grid-template-columns:repeat(2,minmax(0,1fr));}
.grid--3-9{grid-template-columns:minmax(0,3fr) minmax(0,9fr);}
.grid--4-8{grid-template-columns:minmax(0,4fr) minmax(0,8fr);}
.grid--5-7{grid-template-columns:minmax(0,5fr) minmax(0,7fr);}
.grid--7-5{grid-template-columns:minmax(0,7fr) minmax(0,5fr);}

@media (max-width:900px){
  .grid--2,
  .grid--3-9,
  .grid--4-8,
  .grid--5-7,
  .grid--7-5{grid-template-columns:minmax(0,1fr);}
}

/* ---------- 15. 专题研究板 ---------- */
.board{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:12px;
  padding:clamp(18px,2.2vw,28px);
  background:rgba(15,46,42,.62);
  border:1px solid var(--line);
  transition:border-color 180ms var(--ease),background-color 180ms var(--ease);
}
.board:hover{border-color:var(--gold-line);background:rgba(22,68,60,.5);}
.board__num{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--gold);}
.board__title{margin:0;font-size:clamp(18px,2vw,22px);font-weight:800;line-height:1.3;}
.board__text{margin:0;font-size:15px;line-height:1.8;color:var(--mist);}
.board__meta{
  display:flex;
  flex-wrap:wrap;
  gap:8px 14px;
  margin-top:auto;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.12em;
  color:var(--mist);
}

/* ---------- 16. 标签与面包屑 ---------- */
.tag{
  display:inline-block;
  padding:4px 8px;
  border:1px solid var(--line-strong);
  color:var(--mist);
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.14em;
}
.tag--gold{color:var(--gold);border-color:rgba(224,163,60,.45);}
.tag--verm{color:#F0A79F;border-color:rgba(200,56,44,.55);}

.crumb{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
  padding:22px 0 0;
  font-family:var(--mono);
  font-size:11.5px;
  letter-spacing:.14em;
  color:var(--mist);
}
.crumb a{color:var(--mist);}
.crumb a:hover{color:var(--light-teal);}
.crumb__sep{color:var(--gold-line);}
.crumb__here{color:var(--limestone);}

/* ---------- 17. 键值表 ---------- */
.spec{
  display:grid;
  grid-template-columns:minmax(84px,150px) minmax(0,1fr);
  gap:12px 22px;
  margin:0;
}
.spec dt{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;color:var(--gold);padding-top:4px;}
.spec dd{margin:0;font-size:15.5px;line-height:1.8;color:var(--limestone);}

@media (max-width:560px){
  .spec{grid-template-columns:minmax(0,1fr);gap:4px 0;}
  .spec dd{margin-bottom:14px;}
}

/* ---------- 18. 进入动效 ---------- */
[data-reveal]{
  opacity:0;
  transform:translateY(12px);
  transition:opacity 260ms var(--ease),transform 260ms var(--ease);
}
[data-reveal].is-in{opacity:1;transform:none;}

/* ---------- 19. 降级 ---------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  [data-reveal]{opacity:1 !important;transform:none !important;}
  .rail__link:hover,
  .footer__list a:hover{padding-left:0;}
  .btn:hover::after{transform:none;}
}
