@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@700&display=swap');

:root{
  --paper:#fdfbf7;
  --sheet:#f5f5f5;
  --ink:#1a1a1a;
  --line:#e0e0e0;
  --muted:#6b6b6b;
  --rail:264px;
  --sans:"Space Grotesk","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --serif:Georgia,"Songti SC","Noto Serif SC","Source Han Serif SC",serif;
}

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

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

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--serif);
  font-size:17px;
  line-height:1.78;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:60;
  pointer-events:none;
  opacity:.2;
  mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:140px 140px;
}

img{max-width:100%;height:auto;display:block}

a{
  color:inherit;
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}
a:hover{background:var(--ink);color:var(--paper);text-decoration:none}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px}

.page{position:relative}
.flow{
  margin-left:var(--rail);
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
.sheet{
  flex:1 1 auto;
  width:100%;
  max-width:56rem;
  margin:0 auto;
  padding:0 clamp(18px,4.5vw,56px);
}

/* ---- 左侧固定栏 ---- */
.rail{
  position:fixed;
  top:0;
  left:0;
  width:var(--rail);
  height:100vh;
  padding:26px 20px 30px;
  border-right:1px solid var(--line);
  background:var(--paper);
  display:flex;
  flex-direction:column;
  gap:24px;
  overflow-y:auto;
}
.brand{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:44px;
  font-family:var(--sans);
  font-weight:700;
  font-size:19px;
  line-height:1.2;
  letter-spacing:-.01em;
  text-decoration:none;
}
.brand:hover{background:transparent;color:var(--ink);text-decoration:none}
.brand .mark{
  width:18px;
  height:18px;
  flex:none;
  display:block;
  background:var(--ink);
  border-radius:5px;
}
.brand img.mark{object-fit:contain;background:transparent}

.rail-nav ul{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.rail-nav a{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:44px;
  padding:10px 8px;
  border-bottom:1px solid var(--line);
  border-radius:8px;
  font-family:var(--sans);
  font-size:16px;
  line-height:1.3;
  letter-spacing:-.005em;
  text-decoration:none;
}
.rail-nav a::before{
  content:"";
  width:7px;
  height:7px;
  flex:none;
  background:var(--ink);
  border-radius:2px;
  transform:rotate(45deg);
  opacity:.35;
}
.rail-nav a:hover{background:var(--sheet);color:var(--ink);text-decoration:none}
.rail-nav a:hover::before{opacity:1}
.rail-nav a[aria-current="true"]{background:var(--ink);color:var(--paper)}
.rail-nav a[aria-current="true"]::before{opacity:1;background:var(--paper)}

/* ---- 顶部细条 ---- */
.ticker{border-bottom:1px solid var(--line)}
.ticker p{
  margin:0;
  min-height:46px;
  display:flex;
  align-items:center;
  padding:0 clamp(18px,4.5vw,56px);
  font-family:var(--sans);
  font-size:14px;
  letter-spacing:.26em;
}

/* ---- 首屏 ---- */
.hero{
  min-height:70vh;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:clamp(30px,6vw,68px) 0 44px;
  background-image:radial-gradient(circle,#ded8c8 1px,transparent 1px);
  background-size:20px 20px;
  background-position:0 0;
}
.hero h1{
  margin:0 0 20px;
  max-width:18ch;
  font-family:var(--sans);
  font-weight:700;
  font-size:clamp(2.1rem,6.2vw,4.2rem);
  line-height:1.06;
  letter-spacing:-.035em;
}
.lede{
  margin:0;
  max-width:44ch;
  padding-left:14px;
  border-left:3px solid var(--ink);
  font-size:1rem;
  line-height:1.8;
  color:#333;
}
.hero-fig{
  position:relative;
  margin:clamp(24px,4vw,40px) 0 0;
  aspect-ratio:16/9;
  border:1px solid var(--ink);
  border-radius:18px;
  overflow:hidden;
  background:var(--sheet);
}
.hero-fig img{width:100%;height:100%;object-fit:cover}
.reel img{position:absolute;inset:0;opacity:0;animation:reel 12s steps(1,end) infinite}
.reel img:nth-child(1){animation-delay:0s}
.reel img:nth-child(2){animation-delay:-8s}
.reel img:nth-child(3){animation-delay:-4s}
@keyframes reel{
  0%{opacity:1}
  33.3%{opacity:0}
  100%{opacity:0}
}

/* ---- 正文 ---- */
.doc{counter-reset:sec;padding-top:clamp(24px,5vw,48px)}
.doc > article{
  counter-increment:sec;
  margin:0 0 26px;
  padding:26px clamp(18px,3vw,32px) 30px;
  border:1px solid var(--line);
  border-bottom:3px solid var(--ink);
  border-radius:18px;
  background:var(--paper);
  scroll-margin-top:20px;
  animation:up .3s cubic-bezier(0,0,0,1) both;
}
.doc > article:nth-child(1){animation-delay:.02s}
.doc > article:nth-child(2){animation-delay:.06s}
.doc > article:nth-child(3){animation-delay:.1s}
.doc > article:nth-child(4){animation-delay:.14s}
.doc > article:nth-child(5){animation-delay:.18s}
.doc > article:nth-child(6){animation-delay:.22s}
.doc > article:nth-child(7){animation-delay:.26s}
.doc > article::before{
  content:counter(sec,decimal-leading-zero);
  display:block;
  margin-bottom:10px;
  font-family:var(--sans);
  font-size:13px;
  letter-spacing:.22em;
  color:var(--muted);
}
@keyframes up{
  from{opacity:0;transform:translateY(8px)}
  to{opacity:1;transform:none}
}

.doc h2{
  margin:0 0 12px;
  max-width:22ch;
  font-family:var(--sans);
  font-weight:700;
  font-size:clamp(1.45rem,3.4vw,2rem);
  line-height:1.22;
  letter-spacing:-.02em;
}
.doc hr{
  width:56px;
  margin:0 0 20px;
  border:0;
  border-top:2px solid var(--ink);
}
.doc h3{
  margin:26px 0 10px;
  font-family:var(--sans);
  font-size:1.1rem;
  line-height:1.4;
}
.doc p{margin:0 0 1em}
.doc ul,.doc ol{margin:0 0 1em;padding-left:1.3em}
.doc li{margin:0 0 .4em}
.doc blockquote{
  margin:0 0 1em;
  padding:6px 0 6px 16px;
  border-left:3px solid var(--ink);
  color:#333;
}
.doc pre{
  overflow-x:auto;
  margin:0 0 1em;
  padding:14px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--sheet);
  font-size:15px;
  line-height:1.6;
}
.doc article > :last-child{margin-bottom:0}

/* ---- 页脚 ---- */
.foot{
  margin-top:clamp(40px,7vw,80px);
  padding:34px clamp(18px,4.5vw,56px) 34px;
  border-top:2px solid var(--ink);
  display:flex;
  flex-direction:column;
  gap:14px;
}
.foot-brand{
  margin:0;
  font-family:var(--sans);
  font-weight:700;
  font-size:clamp(2.3rem,10vw,5.6rem);
  line-height:.9;
  letter-spacing:-.04em;
}
.foot-meta{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  font-family:var(--sans);
  font-size:15px;
  color:var(--muted);
}
.foot-meta a{display:inline-flex;align-items:center;min-height:44px;padding:0 2px}

/* ---- 小屏 ---- */
@media (max-width:880px){
  .rail{
    position:static;
    width:auto;
    height:auto;
    padding:14px 16px 16px;
    border-right:0;
    border-bottom:1px solid var(--line);
    flex-direction:row;
    flex-wrap:wrap;
    align-items:center;
    gap:12px;
    overflow:visible;
  }
  .rail-nav{flex:1 1 100%}
  .rail-nav ul{flex-direction:row;flex-wrap:wrap;gap:8px}
  .rail-nav a{
    min-height:44px;
    padding:9px 14px;
    border:1px solid var(--line);
    border-radius:999px;
    background:var(--paper);
    font-size:15px;
  }
  .rail-nav a::before{display:none}
  .flow{margin-left:0}
  .hero{min-height:0;padding-top:26px}
  .ticker p{font-size:13px;letter-spacing:.16em}
  .foot-meta{font-size:14px}
}

@media (max-width:420px){
  body{font-size:16px}
  .brand{font-size:18px}
  .rail-nav a{padding:9px 12px;font-size:15px}
  .doc > article{padding:22px 16px 26px}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{animation:none!important;transition:none!important}
  .reel img{opacity:1}
  .reel img:nth-child(1){opacity:1}
}
</｜DSML｜ parameter>
</｜DSML｜ invoke>
</｜DSML｜ calls>

button[aria-expanded]{min-width:44px;min-height:44px}
