@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;1,400&display=swap');

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

:root{
  --ink:#000000;
  --paper:#ffffff;
  --pad:clamp(16px,4.5vw,56px);
  --max:1200px;
  --head:152px;
}

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

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:17px;
  line-height:1.66;
  letter-spacing:.005em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{display:block;max-width:100%;height:auto}
a{color:inherit}
button{font:inherit}
h1,h2,h3,h4{font-weight:500;margin:0}
ul,ol{padding-left:1.25em}
[id]{scroll-margin-top:var(--head)}

:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.drawer :focus-visible{outline-color:var(--paper)}

/* ---------- 顶部 ---------- */

.masthead{position:sticky;top:0;z-index:80;background:var(--paper);border-bottom:1px solid var(--ink)}

.strip{
  display:flex;align-items:center;gap:12px;
  background:var(--ink);color:var(--paper);
  padding:6px var(--pad);
  font-size:12px;letter-spacing:.24em;line-height:1.6;
}
.striprule{flex:1;height:1px;background:currentColor;opacity:.5}

.brandrow{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:12px var(--pad);
  border-bottom:1px solid var(--ink);
}
.brandlink{display:inline-flex;align-items:center;gap:14px;min-height:44px;text-decoration:none}
.brand{font-size:clamp(22px,5.2vw,36px);line-height:1;letter-spacing:-.03em}
.logo{width:36px;height:36px;object-fit:contain}

.menurow{display:flex;align-items:center;justify-content:space-between;padding:0 var(--pad)}
.menubtn{
  display:inline-flex;align-items:center;gap:12px;
  min-height:46px;padding:0;border:0;background:none;color:inherit;
  font-size:14px;letter-spacing:.22em;cursor:pointer;
}
.bars{display:grid;gap:5px;width:22px}
.bars i{display:block;height:2px;background:var(--ink);transition:transform .22s ease}
.menubtn:hover .bars i:first-child{transform:translateY(-2px)}
.menubtn:hover .bars i:last-child{transform:translateY(2px)}

/* ---------- 全屏菜单 ---------- */

.drawer{
  position:fixed;inset:0;z-index:120;
  display:flex;flex-direction:column;
  background:var(--ink);color:var(--paper);
  transform:translate3d(0,-101%,0);
  visibility:hidden;
  transition:transform .42s cubic-bezier(.22,.8,.2,1),visibility .42s;
  overflow-y:auto;
}
.drawer[data-open="true"]{transform:none;visibility:visible}

.drawerbar{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:8px var(--pad);border-bottom:1px solid var(--paper);
  position:sticky;top:0;background:var(--ink);
}
.drawerbrand{font-size:13px;letter-spacing:.24em}
.closebtn{
  display:inline-flex;align-items:center;min-height:46px;padding:0 2px;
  background:none;border:0;color:var(--paper);font-size:14px;letter-spacing:.22em;cursor:pointer;
}

.drawer nav{margin:auto 0;padding:clamp(16px,5vh,48px) var(--pad)}
.drawer ul{list-style:none;margin:0;padding:0;border-top:1px solid var(--paper);counter-reset:m}
.drawer li{border-bottom:1px solid var(--paper);counter-increment:m}

.drawer a{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  min-height:58px;padding:10px 0;color:var(--paper);text-decoration:none;
  font-size:clamp(18px,3.6vw,26px);line-height:1.2;letter-spacing:-.01em;
  transition:background .22s ease,color .22s ease,padding .22s ease;
}
.drawer a::after{content:counter(m,decimal-leading-zero);font-size:12px;letter-spacing:.22em;opacity:.7}
.drawer a:hover,.drawer a:focus-visible{background:var(--paper);color:var(--ink);padding-left:12px;padding-right:12px}

/* ---------- 首屏 ---------- */

.hero{
  display:grid;grid-template-columns:1fr;
  gap:clamp(26px,5vw,48px);
  align-content:start;
  min-height:100vh;min-height:100svh;
  padding:clamp(28px,6vw,72px) var(--pad) clamp(44px,7vw,72px);
  border-bottom:1px solid var(--ink);
  overflow:hidden;
}
@media(min-width:900px){
  .hero{grid-template-columns:1.05fr .95fr;align-items:center;align-content:center}
}

.hero-copy{min-width:0}
h1{font-size:clamp(30px,7.4vw,62px);line-height:1.04;letter-spacing:-.035em}
.hero-copy p{margin:clamp(16px,3vw,26px) 0 0;max-width:42ch;font-size:clamp(15px,1.8vw,18px);line-height:1.75}

.collage{
  position:relative;margin:0;min-width:0;
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(8px,1.8vw,16px);
  align-items:start;
  will-change:transform;
}
.collage::before{
  content:"";position:absolute;left:-7%;top:-7%;width:46%;aspect-ratio:1;
  background:var(--ink);z-index:0;
}
.collage .shot{
  position:relative;z-index:1;
  border:1px solid var(--ink);background:var(--paper);
  aspect-ratio:3/4;overflow:hidden;
}
.collage .shot img{width:100%;height:100%;object-fit:cover}
.collage .shot:nth-child(2){transform:translateY(clamp(16px,4vw,48px))}

/* ---------- 正文骨架 ---------- */

main{display:block}

.shell{
  display:grid;grid-template-columns:minmax(0,1fr);
  gap:clamp(28px,4vw,56px);
  max-width:var(--max);margin:0 auto;
  padding:clamp(36px,6vw,80px) var(--pad);
}
@media(min-width:1000px){
  .shell{grid-template-columns:minmax(0,1fr) 248px;align-items:start}
}

.prose{min-width:0}
.prose section{padding-top:clamp(32px,5vw,64px);border-top:1px solid var(--ink)}
.prose > section:first-child{padding-top:0;border-top:0}
.prose section + section{margin-top:clamp(32px,5vw,60px)}
.prose h2{font-size:clamp(21px,3.2vw,32px);line-height:1.14;letter-spacing:-.03em;margin:0 0 18px}
.prose h2 span,.prose h3 span{display:inline-block}
.prose h3{font-size:clamp(18px,2.4vw,22px);line-height:1.25;margin:30px 0 12px}
.prose p{margin:0 0 18px;max-width:68ch}
.prose ul,.prose ol{margin:0 0 18px}
.prose li{margin:6px 0}
.prose a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.prose a:hover{background:var(--ink);color:var(--paper);text-decoration:none}
.prose strong{font-weight:500}
.prose blockquote{margin:26px 0;padding:2px 0 2px 20px;border-left:3px solid var(--ink)}
.prose figure{margin:26px 0}
.prose figcaption{font-size:13px;letter-spacing:.08em;margin-top:8px}
.prose table{width:100%;border-collapse:collapse;font-size:15px;margin:0 0 18px}
.prose th,.prose td{border-bottom:1px solid var(--ink);padding:10px 12px 10px 0;text-align:left;vertical-align:top}
.prose th{font-weight:500;border-bottom-width:2px}
.prose hr{border:0;border-top:1px solid var(--ink);margin:32px 0}

/* ---------- 右侧栏 ---------- */

.rail{border-top:2px solid var(--ink);padding-top:14px;min-width:0}
@media(min-width:1000px){
  .rail{position:sticky;top:var(--head)}
}
.rail h2{font-size:13px;letter-spacing:.24em;margin:0 0 10px}
.rail-sub{margin-top:26px}
.rail ul{list-style:none;margin:0;padding:0}
.rail li{border-bottom:1px solid var(--ink)}
.rail a{
  display:flex;align-items:center;min-height:42px;padding:7px 0;
  text-decoration:none;font-size:14px;line-height:1.35;
  transition:background .22s ease,color .22s ease,padding .22s ease;
}
.rail a:hover,.rail a:focus-visible{background:var(--ink);color:var(--paper);padding-left:8px;padding-right:8px}

.kids{list-style:none;margin:0;padding:0}
.kids li{border-bottom:1px solid var(--ink)}
.kids a{display:block;padding:12px 0;text-decoration:none;font-size:14px}
.kid-name{display:block;line-height:1.4}
.kid-desc{display:block;font-size:13px;line-height:1.5;margin-top:4px;opacity:.75}

/* ---------- 内页头 ---------- */

.pagehead{
  max-width:var(--max);margin:0 auto;
  padding:clamp(32px,6vw,80px) var(--pad) clamp(20px,3vw,32px);
  border-bottom:1px solid var(--ink);
}
.pagehead h1{font-size:clamp(26px,5.4vw,48px);line-height:1.08;letter-spacing:-.03em}
.pagehead .lead{margin:16px 0 0;max-width:52ch;font-size:16px;line-height:1.7}
.metaline{display:flex;flex-wrap:wrap;gap:16px;margin:18px 0 0;font-size:13px;letter-spacing:.12em}
.leadfig{margin:clamp(20px,4vw,32px) 0 0;border:1px solid var(--ink);max-width:520px}
.leadfig img{width:100%;height:auto}

/* ---------- 页脚 ---------- */

.colophon{border-top:1px solid var(--ink);padding:clamp(32px,5vw,56px) var(--pad) 24px}
.foot{max-width:var(--max);margin:0 auto}
.foot-grid{display:grid;grid-template-columns:1fr;gap:clamp(24px,4vw,40px)}
@media(min-width:760px){
  .foot-grid{grid-template-columns:1.5fr .95fr .55fr}
}

.foot dl{margin:0}
.foot dt{font-size:12px;letter-spacing:.22em}
.foot dd{margin:10px 0 0;font-size:14px;line-height:1.6;max-width:38ch}

.foot-list{list-style:none;margin:0;padding:0}
.foot-list li{border-bottom:1px solid var(--ink)}
.foot-list a{display:flex;align-items:center;min-height:40px;text-decoration:none;font-size:14px}
.foot-list a:hover{background:var(--ink);color:var(--paper);padding-left:8px;padding-right:8px}

.totop{
  display:inline-flex;align-items:center;justify-content:center;
  width:48px;height:48px;border:1px solid var(--ink);
  text-decoration:none;font-size:20px;line-height:1;
  transition:background .22s ease,color .22s ease;
}
.totop:hover{background:var(--ink);color:var(--paper)}

.copyright{
  margin:clamp(30px,4vw,46px) 0 0;padding-top:16px;
  border-top:1px solid var(--ink);
  font-size:12px;letter-spacing:.2em;
}

/* ---------- 动效 ---------- */

@media (prefers-reduced-motion: no-preference){
  .hero-copy > *{animation:rise .7s both}
  .hero-copy > *:nth-child(2){animation-delay:.09s}
  @keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

  .js .rail,.js .foot-grid dl{
    opacity:0;transform:translateY(18px);
    transition:opacity .55s ease,transform .55s ease;
  }
  .js .rail.is-in,.js .foot-grid dl.is-in{opacity:1;transform:none}
}

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

/* ---------- 小屏微调 ---------- */

@media(max-width:480px){
  .collage::before{left:-4%;top:-5%}
  .rail{padding-top:12px}
  .copyright{letter-spacing:.14em}
}

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