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

:root{
  --violet:#6514ff;
  --magenta:#bf00ff;
  --ink:#1c1726;
  --glass:rgba(255,255,255,.05);
  --line:rgba(255,255,255,.1);
  --text:#efeaf7;
  --muted:#a99fc4;
  --rail:76px;
  --font-a:'Source Sans 3','Lexend','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,sans-serif;
  --font-b:'Lexend','Source Sans 3','PingFang SC','Hiragino Sans GB','Microsoft YaHei',system-ui,sans-serif;
}

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

html{
  background:#0d0a13;
  scroll-behavior:smooth;
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  background:transparent;
  color:var(--text);
  font-family:var(--font-a);
  font-size:17px;
  line-height:1.7;
  padding-left:var(--rail);
  overflow-x:hidden;
  min-height:100vh;
}

body::before{
  content:"";
  position:fixed;
  inset:-25%;
  z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(38% 38% at 14% 16%,rgba(101,20,255,.5),transparent 68%),
    radial-gradient(32% 32% at 88% 10%,rgba(191,0,255,.34),transparent 70%),
    radial-gradient(48% 48% at 72% 94%,rgba(101,20,255,.26),transparent 72%),
    radial-gradient(30% 30% at 26% 88%,rgba(191,0,255,.2),transparent 70%);
  filter:blur(40px);
  animation:drift 30s ease-in-out infinite alternate;
}

@keyframes drift{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(-2%,2.5%,0) scale(1.06)}
  100%{transform:translate3d(2.5%,-2%,0) scale(1.03)}
}

/* ---------- 左侧固定竖排导航 ---------- */
.rail{
  position:fixed;
  top:0;
  left:0;
  bottom:0;
  width:var(--rail);
  z-index:30;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:14px;
  padding:14px 8px 18px;
  background:rgba(18,13,26,.82);
  border-right:1px solid var(--line);
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter:blur(16px);
}

.mark{
  flex:none;
  width:44px;
  height:44px;
  border-radius:10px;
  display:grid;
  place-items:center;
  overflow:hidden;
  text-decoration:none;
  background:linear-gradient(140deg,var(--violet),var(--magenta));
  box-shadow:0 6px 20px rgba(101,20,255,.45);
}
.mark img{display:block;width:100%;height:100%;object-fit:cover}
.mark-txt{font-family:var(--font-b);font-size:19px;font-weight:700;color:#fff;line-height:1}
.mark:hover{transform:translateY(-1px)}

.nav{
  width:100%;
  display:flex;
  flex-direction:column;
  align-items:center;
  margin-top:6px;
}

.nav summary{
  list-style:none;
  cursor:pointer;
  width:100%;
  min-height:44px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  padding:8px 2px;
  font-size:12px;
  letter-spacing:.08em;
  color:var(--muted);
  border:1px solid var(--line);
  border-radius:10px;
  transition:color .2s ease,border-color .2s ease;
}
.nav summary::-webkit-details-marker{display:none}
.nav summary::marker{content:''}
.nav summary:hover{color:#fff;border-color:var(--magenta)}

.bars{
  display:block;
  width:15px;
  height:2px;
  background:currentColor;
  box-shadow:0 5px 0 currentColor,0 -5px 0 currentColor;
}

.nav menu{
  list-style:none;
  margin:10px 0 0;
  padding:0;
  width:100%;
  display:flex;
  flex-direction:column;
  gap:6px;
}

.nav menu a{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-height:44px;
  padding:8px 2px;
  border:1px solid transparent;
  border-radius:10px;
  color:var(--text);
  text-decoration:none;
  font-size:12px;
  line-height:1.25;
  text-align:center;
  transition:background .2s ease,border-color .2s ease,color .2s ease;
}
.nav menu a i{
  display:block;
  width:11px;
  height:11px;
  flex:none;
  background:var(--violet);
}
.nav menu li:nth-child(2n) a i{background:var(--magenta);border-radius:50%}
.nav menu li:nth-child(3n) a i{background:transparent;border:2px solid var(--magenta);transform:rotate(45deg)}
.nav menu a:hover,
.nav menu a:focus-visible{
  background:rgba(191,0,255,.18);
  border-color:var(--magenta);
  color:#fff;
}

.rail-link{
  margin-top:auto;
  width:100%;
  min-height:44px;
  display:grid;
  place-items:center;
  padding:8px 2px;
  font-size:12px;
  letter-spacing:.08em;
  color:var(--text);
  text-decoration:none;
  border:1px solid var(--line);
  border-radius:10px;
  transition:border-color .2s ease,color .2s ease;
}
.rail-link:hover,
.rail-link:focus-visible{border-color:var(--magenta);color:#fff}

/* ---------- 版心 ---------- */
main{
  display:grid;
  grid-template-columns:minmax(0,1fr) 236px;
  gap:48px;
  max-width:1180px;
  margin:0 auto;
  padding:8px clamp(16px,3vw,40px) 0;
}

article{
  min-width:0;
  width:100%;
  max-width:800px;
  justify-self:end;
}

.hero{
  min-height:45vh;
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
  padding:52px 0 40px;
  text-align:right;
  border:0;
  background:none;
  border-radius:0;
}

.hero h1{
  margin:0;
  font-family:var(--font-b);
  font-weight:700;
  font-size:clamp(2.1rem,6.2vw,4.3rem);
  line-height:1.05;
  letter-spacing:-.02em;
  background:linear-gradient(118deg,#ffffff 18%,#d3bcff 58%,var(--magenta));
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

/* ---------- 正文区块 ---------- */
article > section{
  position:relative;
  margin:0 0 48px;
  padding:clamp(20px,3vw,32px);
  border:1px solid var(--line);
  border-radius:10px;
  background:linear-gradient(158deg,rgba(255,255,255,.065),rgba(255,255,255,.022));
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
  scroll-margin-top:88px;
}
article > section:last-of-type{margin-bottom:56px}

article > section::before{
  content:"";
  position:absolute;
  top:16px;
  right:16px;
  width:10px;
  height:10px;
  background:var(--violet);
  transform:rotate(45deg);
}
article > section:nth-of-type(2n)::before{background:var(--magenta);border-radius:50%;transform:none}
.hero::before{display:none}

article section > small{
  display:block;
  margin:0 0 10px;
  font-family:var(--font-b);
  font-size:12px;
  font-weight:600;
  letter-spacing:.2em;
  color:#c7a4ff;
}

article h2{
  margin:0 0 14px;
  font-family:var(--font-b);
  font-weight:600;
  font-size:clamp(1.5rem,3.4vw,2rem);
  line-height:1.25;
  letter-spacing:-.01em;
  color:#fff;
}

article h3{
  margin:26px 0 8px;
  font-family:var(--font-b);
  font-weight:600;
  font-size:1.15rem;
  line-height:1.35;
  color:#e7dcff;
}

article h4{margin:20px 0 6px;font-size:1rem;color:#e7dcff}

article p{margin:0 0 14px}
article p:last-child{margin-bottom:0}

article ul,
article ol{margin:0 0 16px;padding-left:22px}
article li{margin:0 0 8px}
article li::marker{color:var(--magenta)}

article a{color:#d4a6ff;text-decoration:underline;text-underline-offset:3px}
article a:hover{color:#fff}

article strong{color:#fff}

article blockquote{
  margin:0 0 16px;
  padding:12px 16px;
  border-left:3px solid var(--magenta);
  border-radius:0 10px 10px 0;
  background:rgba(191,0,255,.1);
}
article blockquote p:last-child{margin-bottom:0}

article img{max-width:100%;height:auto;border-radius:10px;display:block}

article code{
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:.92em;
  padding:2px 6px;
  border-radius:6px;
  background:rgba(255,255,255,.1);
}

article hr{border:0;height:1px;background:var(--line);margin:24px 0}

article table{width:100%;border-collapse:collapse;margin:0 0 16px;font-size:.96em}
article th,
article td{border-bottom:1px solid var(--line);padding:9px 8px;text-align:left}
article th{color:#fff}

/* ---------- 右侧栏 ---------- */
.side{
  position:sticky;
  top:24px;
  align-self:start;
  padding:18px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--glass);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}

.side > small{
  display:block;
  margin-bottom:6px;
  font-family:var(--font-b);
  font-size:11px;
  font-weight:600;
  letter-spacing:.22em;
  color:var(--muted);
}

.side h2{
  margin:0 0 14px;
  font-family:var(--font-b);
  font-size:1.05rem;
  font-weight:600;
  letter-spacing:.04em;
  color:#fff;
}

.side menu{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}

.side menu a{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:40px;
  padding:8px 10px;
  border-radius:8px;
  color:var(--text);
  text-decoration:none;
  font-size:14px;
  line-height:1.4;
  transition:background .2s ease,color .2s ease;
}
.side menu a::before{
  content:"";
  flex:none;
  width:6px;
  height:6px;
  background:var(--violet);
}
.side menu li:nth-child(2n) a::before{background:var(--magenta);border-radius:50%}
.side menu a:hover,
.side menu a:focus-visible{background:rgba(101,20,255,.3);color:#fff}

/* ---------- 页脚 ---------- */
footer{
  max-width:1180px;
  margin:0 auto;
  padding:44px clamp(16px,3vw,40px) 56px;
  border-top:1px solid var(--line);
  text-align:right;
}

footer p{
  margin:0;
  font-family:var(--font-b);
  font-weight:700;
  font-size:clamp(1.9rem,8.4vw,4.8rem);
  line-height:1;
  letter-spacing:-.03em;
  background:linear-gradient(100deg,var(--violet),var(--magenta));
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}

footer small{
  display:block;
  margin-top:14px;
  font-size:12px;
  letter-spacing:.1em;
  color:var(--muted);
}

/* ---------- 动效 ---------- */
@media (prefers-reduced-motion:no-preference){
  .reveal{
    opacity:0;
    transform:translateY(20px);
    transition:opacity .45s ease,transform .45s ease;
  }
  .reveal.in{opacity:1;transform:none}

  article ul.stagger li{
    opacity:0;
    transform:translateY(10px);
    transition:opacity .35s ease,transform .35s ease;
  }
  article ul.stagger.in li{opacity:1;transform:none}
  article ul.stagger.in li:nth-child(2){transition-delay:.05s}
  article ul.stagger.in li:nth-child(3){transition-delay:.1s}
  article ul.stagger.in li:nth-child(4){transition-delay:.15s}
  article ul.stagger.in li:nth-child(5){transition-delay:.2s}
  article ul.stagger.in li:nth-child(n+6){transition-delay:.25s}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  body::before{animation:none}
  *{transition-duration:.01ms !important;animation-duration:.01ms !important}
}

/* ---------- 窄屏 ---------- */
@media (max-width:880px){
  body{padding-left:0;padding-top:60px}

  .rail{
    top:0;
    right:0;
    bottom:auto;
    left:0;
    width:auto;
    height:60px;
    flex-direction:row;
    align-items:center;
    gap:10px;
    padding:0 12px;
    border-right:0;
    border-bottom:1px solid var(--line);
  }

  .mark{width:40px;height:40px}

  .nav{width:auto;margin:0 0 0 auto;position:relative}

  .nav summary{
    flex-direction:row;
    gap:8px;
    width:auto;
    padding:0 14px;
    min-height:44px;
    font-size:13px;
  }
  .bars{width:14px}

  .nav menu{
    position:absolute;
    top:calc(100% + 8px);
    right:0;
    width:min(66vw,224px);
    margin:0;
    padding:8px;
    gap:4px;
    border:1px solid var(--line);
    border-radius:10px;
    background:rgba(22,16,32,.97);
    box-shadow:0 20px 44px rgba(0,0,0,.55);
  }
  .nav menu a{
    flex-direction:row;
    justify-content:flex-start;
    gap:10px;
    padding:10px 12px;
    font-size:14px;
    text-align:left;
  }

  .rail-link{
    margin-top:0;
    width:auto;
    padding:0 14px;
    min-height:44px;
  }

  main{
    grid-template-columns:minmax(0,1fr);
    gap:32px;
    padding:0 16px;
  }

  article{max-width:none;justify-self:stretch}

  .hero{min-height:0;padding:32px 0 22px}

  article > section{scroll-margin-top:76px}

  .side{position:static}

  footer{text-align:left;padding:36px 16px 44px}
}

@media (max-width:420px){
  body{font-size:16px}
  .mark-txt{font-size:17px}
}

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