@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;500;600;700&family=Josefin+Sans:wght@300;400;500;600;700&display=swap');

:root{
  --ink:#000000;
  --paper:#ffffff;
  --r:18px;
  --pad:clamp(1.1rem,5vw,4.5rem);
  --block:clamp(2rem,7vw,6.5rem);
  --head:132px;
  --serif:"Cinzel","Josefin Sans","Songti SC",Georgia,serif;
  --sans:"Josefin Sans","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-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(--sans);
  font-size:1.0625rem;
  line-height:1.7;
  font-weight:400;
  overflow-x:hidden;
}

h1,h2,h3{font-family:var(--serif);font-weight:700}

/* ---------- 头部 ---------- */
.hd{
  position:sticky;
  top:0;
  z-index:20;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:.75rem;
  padding:.85rem var(--pad) .55rem;
  background:var(--paper);
  border-bottom:1px solid rgba(0,0,0,.16);
}

.brand{
  grid-column:2;
  text-align:center;
  font-family:var(--serif);
  font-weight:700;
  font-size:clamp(1.05rem,3.6vw,1.5rem);
  letter-spacing:.28em;
  text-indent:.28em;
  text-decoration:none;
  color:inherit;
  white-space:nowrap;
  padding:.3rem 0;
}

.burger{
  grid-column:1;
  display:inline-flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:4px;
  min-width:46px;
  min-height:44px;
  padding:.35rem .5rem;
  border:0;
  background:none;
  color:inherit;
  font:inherit;
  font-size:.68rem;
  letter-spacing:.16em;
  cursor:pointer;
}

.burger i{
  display:block;
  width:20px;
  height:1.5px;
  background:currentColor;
}

.burger span{line-height:1.4}

.hcta{
  grid-column:3;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:.35rem 1rem;
  border-radius:99px;
  background:var(--ink);
  color:var(--paper);
  text-decoration:none;
  font-size:.85rem;
  font-weight:600;
  white-space:nowrap;
}

.hcta-empty{background:none;min-width:46px}

.hd nav{grid-column:1 / -1;padding-top:.2rem}

.hd nav p{
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:0 .35rem;
  margin:0;
}

.hd nav a{
  display:inline-flex;
  align-items:center;
  min-height:40px;
  padding:0 .25rem;
  color:inherit;
  text-decoration:none;
  font-size:.845rem;
  letter-spacing:.01em;
}

.hd nav a:hover{text-decoration:underline;text-underline-offset:5px}

/* 展开态 */
.nav-open .hd{z-index:80}
.nav-open .brand,
.nav-open .burger{position:relative;z-index:90;color:var(--paper)}
.nav-open .hcta{opacity:0;pointer-events:none}

.nav-open .hd nav{
  position:fixed;
  inset:0;
  z-index:70;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--ink);
  color:var(--paper);
  padding:5.5rem 1.4rem 2rem;
  overflow:auto;
}

.nav-open .hd nav p{
  flex-direction:column;
  flex-wrap:nowrap;
  align-items:center;
  justify-content:center;
  gap:.15rem;
}

.nav-open .hd nav a{
  justify-content:center;
  min-height:54px;
  padding:.2rem 0;
  font-family:var(--serif);
  font-size:clamp(1.25rem,5vw,2.1rem);
  letter-spacing:.04em;
}

/* ---------- 主体 ---------- */
main{
  max-width:1240px;
  margin:0 auto;
  padding:var(--block) var(--pad) clamp(2rem,6vw,4rem);
  display:grid;
  grid-template-columns:minmax(170px,215px) minmax(0,1fr);
  gap:clamp(1.4rem,3.5vw,3rem);
  align-items:start;
}

main article{grid-column:2;grid-row:1;min-width:0}
main aside{grid-column:1;grid-row:1}

/* 侧栏 */
.toc{
  position:sticky;
  top:calc(var(--head) + 8px);
  background:var(--ink);
  color:var(--paper);
  border-radius:var(--r);
  padding:1.15rem 1.1rem;
}

.toc h2{
  margin:0;
  font-size:.95rem;
  font-weight:600;
  letter-spacing:.3em;
}

.toc .subtitle{
  margin:.15rem 0 1rem;
  font-size:.78rem;
  letter-spacing:.2em;
  color:rgba(255,255,255,.66);
}

.toc ul{list-style:none;margin:0;padding:0}

.toc li + li{border-top:1px solid rgba(255,255,255,.18)}

.toc a{
  display:flex;
  align-items:center;
  min-height:40px;
  padding:.25rem 0;
  color:inherit;
  text-decoration:none;
  font-size:.88rem;
  line-height:1.4;
}

.toc a:hover{text-decoration:underline;text-underline-offset:4px}

/* ---------- hero ---------- */
div{scroll-margin-top:var(--head)}

.hero{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  min-height:45vh;
  padding:clamp(1.4rem,4.5vw,3.5rem);
  background:var(--ink);
  color:var(--paper);
  border-radius:var(--r);
  overflow:hidden;
  text-align:right;
}

.hero-in{
  display:flex;
  align-items:center;
  gap:clamp(.8rem,3vw,2rem);
  max-width:100%;
}

.hero-txt{min-width:0}

.hero-ico{
  flex:0 0 auto;
  width:clamp(42px,8vw,86px);
  height:auto;
  color:rgba(255,255,255,.55);
  will-change:transform;
}

.hero h1{
  margin:0;
  font-weight:700;
  font-size:clamp(2.15rem,8.5vw,4.9rem);
  line-height:1.04;
  letter-spacing:-.05em;
}

.badge{
  display:inline-block;
  margin:0 0 .85rem;
  padding:.22rem .85rem;
  border:1px solid rgba(255,255,255,.5);
  border-radius:99px;
  font-size:.72rem;
  letter-spacing:.26em;
  line-height:1.7;
}

.hero .subtitle{
  margin:.9rem 0 0 auto;
  max-width:34ch;
  font-size:.95rem;
  line-height:1.65;
  color:rgba(255,255,255,.76);
}

/* ---------- 正文块 ---------- */
main article > div:not(.hero){
  padding:clamp(2rem,5.5vw,4.5rem) clamp(1rem,4vw,2.8rem);
  border-top:1px solid rgba(0,0,0,.16);
}

main article > div:nth-of-type(even){
  background:var(--ink);
  color:var(--paper);
  border-top-color:rgba(255,255,255,.22);
  border-radius:var(--r);
}

main article > div + div{margin-top:0}

article h2{
  margin:0 0 .55rem;
  font-size:clamp(1.45rem,4.2vw,2.3rem);
  line-height:1.18;
  letter-spacing:-.035em;
}

article h3{
  margin:1.5rem 0 .35rem;
  font-size:1.15rem;
  line-height:1.35;
}

article p,
article ul,
article ol{
  margin:0 0 1rem;
  max-width:64ch;
}

article p:last-child,
article ul:last-child{margin-bottom:0}

article ul,
article ol{padding-left:1.15rem}

article li{margin:.3rem 0}

article a{
  color:inherit;
  text-decoration:underline;
  text-underline-offset:4px;
}

article strong{font-weight:700}

article img{
  max-width:100%;
  height:auto;
  border-radius:var(--r);
  margin:.4rem 0 1rem;
}

article blockquote{
  margin:1.4rem 0;
  padding:.2rem 0 .2rem 1rem;
  border-left:3px solid currentColor;
  font-size:1.1rem;
}

article hr{
  border:0;
  border-top:1px solid currentColor;
  opacity:.25;
  margin:2rem 0;
}

article time{
  display:inline-block;
  font-size:.85rem;
  letter-spacing:.08em;
  opacity:.7;
}

/* 滚动揭示 */
@media (prefers-reduced-motion: no-preference){
  .rv{
    opacity:0;
    transform:translateY(26px);
    transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.2,1);
  }
  .rv.is-in{opacity:1;transform:none}
}

/* ---------- 页脚 ---------- */
footer{
  margin-top:clamp(2rem,6vw,4.5rem);
  background:var(--ink);
  color:var(--paper);
  padding:clamp(2.2rem,6vw,4.5rem) var(--pad) 1.3rem;
}

.fcta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:1.4rem;
  padding-bottom:clamp(1.6rem,4.5vw,2.8rem);
  border-bottom:1px solid rgba(255,255,255,.28);
}

.fbig{
  margin:0;
  font-family:var(--serif);
  font-weight:700;
  font-size:clamp(1.9rem,7vw,4.3rem);
  line-height:1;
  letter-spacing:-.04em;
}

.fcta-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:50px;
  padding:.5rem 1.7rem;
  border-radius:99px;
  background:var(--paper);
  color:var(--ink);
  text-decoration:none;
  font-weight:600;
  font-size:1rem;
}

.fgrid{
  display:grid;
  grid-template-columns:1.3fr 1fr;
  gap:1.8rem;
  padding:clamp(1.4rem,4vw,2.4rem) 0;
}

.faddr{
  font-style:normal;
  display:flex;
  flex-direction:column;
  gap:.45rem;
}

.fbrand{
  font-family:var(--serif);
  font-size:1.05rem;
  letter-spacing:.24em;
}

.fdesc{
  font-size:.9rem;
  line-height:1.65;
  color:rgba(255,255,255,.72);
  max-width:42ch;
}

.flinks{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:0 1rem;
  align-content:start;
}

.flinks a{
  display:flex;
  align-items:center;
  min-height:40px;
  color:inherit;
  text-decoration:none;
  font-size:.9rem;
}

.flinks a:hover{text-decoration:underline;text-underline-offset:4px}

.fbot{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:.6rem 1rem;
  border-top:1px solid rgba(255,255,255,.28);
  padding-top:.9rem;
  font-size:.85rem;
  color:rgba(255,255,255,.8);
}

.fbot p{margin:0}

.fbot a{
  display:inline-flex;
  align-items:center;
  min-height:40px;
  color:inherit;
  text-decoration:none;
}

.fbot a:hover{text-decoration:underline}

/* ---------- 断点 ---------- */
@media (max-width:900px){
  :root{--head:150px}
  main{
    grid-template-columns:1fr;
    padding-top:clamp(1.4rem,5vw,2.5rem);
  }
  main article{grid-column:1;grid-row:1}
  main aside{grid-column:1;grid-row:2}
  .toc{position:static;margin-top:1.4rem}
  .toc ul{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:0 .9rem;
  }
  .toc li + li{border-top:0}
  .fgrid{grid-template-columns:1fr}
  .hd nav p{justify-content:center;gap:0 .5rem}
  .nav-open .hd nav p{gap:.15rem}
}

@media (max-width:560px){
  .hero{min-height:45vh;justify-content:flex-end}
  .hero-in{gap:.7rem}
  .hero .subtitle{max-width:26ch;font-size:.9rem}
  .flinks{grid-template-columns:1fr}
  .fcta-btn{width:100%}
  .fbot{justify-content:space-between}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .rv{transition:none}
}

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