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

:root{
  --ink:#001e3c;
  --mint:#99ffcc;
  --acid:#00ff41;
  --paper:#f2fbf7;
  --body:#dceef1;
  --dim:#a8c2cf;
  --line:rgba(153,255,204,.2);
  --card:rgba(153,255,204,.06);
  --radius:18px;
  --dock-h:126px;
  --font:"Inter","Helvetica Neue",Arial,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --serif:"Playfair Display",Georgia,"Songti SC",serif;
}

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

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

body{
  margin:0;
  position:relative;
  overflow-x:hidden;
  background:var(--ink);
  color:var(--paper);
  font-family:var(--font);
  font-size:1.0625rem;
  line-height:1.7;
  padding-bottom:calc(var(--dock-h) + env(safe-area-inset-bottom));
}

body::before{
  content:"";
  position:fixed;
  inset:-15vh -12vw;
  z-index:-1;
  pointer-events:none;
  background:
    radial-gradient(closest-side,rgba(0,255,65,.28),transparent 72%) 16% 10%/58vw 58vw no-repeat,
    radial-gradient(closest-side,rgba(153,255,204,.22),transparent 72%) 84% 42%/66vw 66vw no-repeat,
    radial-gradient(closest-side,rgba(0,255,65,.15),transparent 72%) 46% 92%/78vw 78vw no-repeat;
  filter:blur(44px);
  animation:drift 30s ease-in-out infinite alternate;
}

@keyframes drift{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(-3%,4%,0) scale(1.08)}
  100%{transform:translate3d(4%,-3%,0) scale(.96)}
}

@keyframes slide{
  from{background-position:0 0}
  to{background-position:200% 0}
}

@keyframes breathe{
  0%,100%{transform:scale(1) rotate(0deg)}
  50%{transform:scale(1.16) rotate(12deg)}
}

@keyframes pop{
  from{opacity:0;transform:translateY(14px)}
  to{opacity:1;transform:none}
}

/* 顶部细条 */
.ticker{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:44px;
  padding:.6rem 1rem;
  font-size:.85rem;
  font-weight:600;
  letter-spacing:.42em;
  text-indent:.42em;
  color:var(--mint);
  border-bottom:1px solid var(--line);
  background:linear-gradient(90deg,rgba(0,255,65,.16),rgba(153,255,204,.04),rgba(0,255,65,.16));
  background-size:200% 100%;
  animation:slide 14s linear infinite;
}

/* 首屏 */
.hero{
  position:relative;
  display:flex;
  align-items:flex-end;
  min-height:70vh;
  padding:5rem 1.25rem 4.75rem;
  overflow:hidden;
  clip-path:polygon(0 0,100% 0,100% 90%,62% 100%,0 92%);
  background:radial-gradient(120% 90% at 14% 8%,rgba(0,255,65,.26),transparent 62%),#00152c;
}

.hero-img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.55;
  filter:saturate(1.15) contrast(1.05);
}

.hero::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(0,30,60,.2),rgba(0,30,60,.9) 78%);
}

.blob{
  position:absolute;
  border-radius:58% 42% 46% 54%/54% 48% 52% 46%;
  filter:blur(9px);
  opacity:.55;
  mix-blend-mode:screen;
  animation:breathe 12s ease-in-out infinite;
}

.blob.b1{
  width:230px;
  height:230px;
  top:6%;
  right:5%;
  background:radial-gradient(circle at 32% 30%,rgba(0,255,65,.9),rgba(0,255,65,0) 70%);
}

.blob.b2{
  width:150px;
  height:150px;
  bottom:24%;
  left:6%;
  animation-delay:-4.5s;
  background:radial-gradient(circle at 60% 40%,rgba(153,255,204,.85),rgba(153,255,204,0) 70%);
}

.hero-copy{
  position:relative;
  z-index:2;
  max-width:56rem;
}

.hero h1{
  margin:0;
  font-family:var(--serif);
  font-style:italic;
  font-weight:400;
  font-size:clamp(2.1rem,8.5vw,5.4rem);
  line-height:1.03;
  letter-spacing:-.01em;
  color:#fff;
  text-shadow:0 8px 44px rgba(0,255,65,.28);
  word-break:break-word;
}

.hero-desc{
  max-width:38rem;
  margin:1rem 0 0;
  font-size:1rem;
  line-height:1.6;
  color:var(--mint);
}

/* 主区 */
.wrap{
  max-width:1140px;
  margin:0 auto;
  padding:1.5rem 1.25rem 0;
}

main{
  display:grid;
  gap:2.5rem;
  grid-template-columns:minmax(0,1fr);
}

@media (min-width:940px){
  main{
    grid-template-columns:minmax(0,1fr) 19rem;
    align-items:start;
  }
}

article>section{
  position:relative;
  padding:2.6rem 0 1rem;
  scroll-margin-top:3rem;
  scroll-margin-bottom:calc(var(--dock-h) + 1rem);
}

article>section+section{border-top:1px solid var(--line)}

article>section::before{
  content:"";
  position:absolute;
  top:-2px;
  left:0;
  width:4.5rem;
  height:3px;
  border-radius:2px;
  background:linear-gradient(90deg,var(--acid),rgba(153,255,204,0));
}

article>section:first-child{padding-top:.4rem}
article>section:first-child::before{display:none}

article h2{
  margin:.15rem 0 .9rem;
  font-family:var(--serif);
  font-style:italic;
  font-weight:400;
  font-size:clamp(1.5rem,4.8vw,2.1rem);
  line-height:1.22;
  color:var(--paper);
}

article h3{
  margin:1.6rem 0 .5rem;
  font-size:1.15rem;
  color:var(--mint);
}

article small,
.rail small{
  display:block;
  font-size:.82rem;
  letter-spacing:.3em;
  text-indent:.3em;
  color:var(--acid);
}

article small{margin-bottom:.35rem}

article p{
  max-width:46rem;
  margin:0 0 1rem;
  color:var(--body);
}

article ul,
article ol{
  max-width:46rem;
  margin:0 0 1rem;
  padding-left:1.35rem;
}

article li{margin:.35rem 0}

article a{
  color:var(--mint);
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}

article a:hover{color:var(--acid)}
article strong{color:#fff}

article img{
  max-width:100%;
  height:auto;
  border-radius:var(--radius);
}

article blockquote{
  margin:1.2rem 0;
  padding:.9rem 1.1rem;
  border-left:3px solid var(--acid);
  border-radius:0 var(--radius) var(--radius) 0;
  background:var(--card);
}

article table{
  width:100%;
  border-collapse:collapse;
  font-size:.95rem;
}

article th,
article td{
  padding:.55rem .6rem;
  border-bottom:1px solid var(--line);
  text-align:left;
}

/* 侧栏 */
.rail{
  display:grid;
  gap:.7rem;
  padding:1.1rem;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:var(--card);
  backdrop-filter:blur(8px);
}

@media (min-width:940px){
  .rail{
    position:sticky;
    top:1.5rem;
  }
}

.rail h2{
  margin:0 0 .4rem;
  font-family:var(--font);
  font-size:1.05rem;
  font-weight:700;
  letter-spacing:.04em;
}

.rail ol{
  display:grid;
  gap:.55rem;
  margin:0;
  padding:0;
  list-style:none;
}

.rail a{
  display:flex;
  align-items:center;
  min-height:44px;
  padding:.5rem .85rem;
  border:1px solid var(--line);
  border-bottom:3px solid rgba(0,255,65,.45);
  border-radius:var(--radius);
  background:rgba(0,30,60,.45);
  color:var(--paper);
  font-size:.95rem;
  text-decoration:none;
  transition:transform .25s ease,border-color .25s ease,background .25s ease;
}

.rail a:hover,
.rail a:focus-visible{
  transform:translateY(-2px);
  border-bottom-color:var(--acid);
  background:rgba(0,255,65,.12);
}

/* 页脚 */
.foot{
  margin-top:3.5rem;
  padding:2.2rem 1.25rem 1.75rem;
  border-top:1px solid var(--line);
  background:linear-gradient(180deg,rgba(0,255,65,.09),transparent 65%);
}

.foot-in{
  max-width:1140px;
  margin:0 auto;
}

.foot-brand{
  margin:0 0 1.6rem;
  font-family:var(--serif);
  font-style:italic;
  font-size:clamp(1.6rem,6vw,2.4rem);
  line-height:1.2;
  color:var(--mint);
}

.foot-cols{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.5rem;
}

@media (min-width:760px){
  .foot-cols{grid-template-columns:repeat(4,1fr)}
}

.foot-cols dl{margin:0}

.foot-cols dt{
  margin-bottom:.45rem;
  font-size:.8rem;
  letter-spacing:.26em;
  text-indent:.26em;
  color:var(--acid);
}

.foot-cols dd{
  margin:0;
  color:var(--dim);
  font-size:.95rem;
}

.foot-cols dd a{
  display:inline-flex;
  align-items:center;
  min-height:40px;
  color:var(--dim);
  text-decoration:none;
}

.foot-cols dd a:hover{color:var(--mint)}

.sub{
  display:grid;
  gap:.5rem;
  align-content:start;
}

.sub label{
  font-size:.8rem;
  letter-spacing:.26em;
  text-indent:.26em;
  color:var(--acid);
}

.sub input{
  min-height:44px;
  padding:.5rem .85rem;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:rgba(0,30,60,.65);
  color:var(--paper);
  font:inherit;
  font-size:.95rem;
}

.sub input::placeholder{color:rgba(168,194,207,.7)}

.sub button{
  min-height:44px;
  border:0;
  border-radius:999px;
  background:linear-gradient(90deg,var(--acid),var(--mint));
  color:#00220f;
  font:inherit;
  font-size:.95rem;
  font-weight:700;
  cursor:pointer;
}

.foot-bottom{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:.6rem 1rem;
  margin-top:1.9rem;
  padding-top:1rem;
  border-top:1px solid var(--line);
  color:var(--dim);
  font-size:.88rem;
}

.foot-bottom p{margin:0}

.foot-bottom a{
  display:inline-flex;
  align-items:center;
  min-height:40px;
  padding:0 .25rem;
  color:var(--mint);
  text-decoration:none;
}

.foot-bottom a:hover{color:var(--acid)}

/* 底部固定条 */
.dock{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  z-index:50;
  display:flex;
  flex-direction:column;
  gap:.45rem;
  padding:.55rem 1.1rem calc(.55rem + env(safe-area-inset-bottom));
  border-top:1px solid var(--line);
  background:rgba(0,24,48,.93);
  backdrop-filter:blur(14px);
}

.dock>*{
  width:100%;
  max-width:1140px;
  margin:0 auto;
}

.dock-brand{
  display:flex;
  align-items:center;
  gap:.5rem;
  min-height:40px;
  font-size:1rem;
  font-weight:800;
  letter-spacing:.02em;
  color:var(--paper);
  text-decoration:none;
}

.dock-logo{
  width:26px;
  height:26px;
  border-radius:50%;
  object-fit:cover;
}

.dock-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:46px;
  border:0;
  border-radius:999px;
  background:linear-gradient(90deg,var(--acid),var(--mint));
  color:#00220f;
  font:inherit;
  font-weight:700;
  cursor:pointer;
  letter-spacing:.2em;
  text-indent:.2em;
}

/* 全屏遮罩菜单 */
.veil{
  position:fixed;
  inset:0;
  z-index:70;
  display:flex;
  flex-direction:column;
  gap:1rem;
  padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom));
  overflow-y:auto;
  background:rgba(0,18,36,.97);
  backdrop-filter:blur(18px);
  opacity:0;
  visibility:hidden;
  transition:opacity .3s ease,visibility .3s;
}

.veil[data-open="1"]{
  opacity:1;
  visibility:visible;
}

.veil-top{
  display:flex;
  justify-content:flex-end;
  width:100%;
  max-width:34rem;
  margin:0 auto;
}

.veil-close{
  min-height:44px;
  padding:0 1.2rem;
  border:1px solid var(--line);
  border-radius:999px;
  background:transparent;
  color:var(--mint);
  font:inherit;
  font-weight:600;
  cursor:pointer;
}

.veil ol{
  display:grid;
  gap:.55rem;
  width:100%;
  max-width:34rem;
  margin:auto;
  padding:0;
  list-style:none;
}

.veil li a{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:54px;
  padding:.5rem 1.1rem;
  border:1px solid var(--line);
  border-bottom:3px solid rgba(0,255,65,.5);
  border-radius:var(--radius);
  background:rgba(153,255,204,.05);
  color:var(--paper);
  font-size:1.05rem;
  font-weight:600;
  text-decoration:none;
}

.veil li a::after{
  content:"›";
  color:var(--acid);
  font-size:1.25rem;
}

.veil li a:hover{
  background:rgba(0,255,65,.12);
  border-bottom-color:var(--acid);
}

.veil[data-open="1"] li{
  animation:pop .45s cubic-bezier(.2,.8,.2,1) both;
  animation-delay:calc(var(--i,0) * 45ms);
}

body.veil-on{overflow:hidden}

/* 入场 */
.js-in{
  opacity:0;
  transform:translateY(12px);
  transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1);
}

.js-in.in{
  opacity:1;
  transform:none;
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  body::before,
  .ticker,
  .blob,
  .veil[data-open="1"] li{animation:none!important}
  .js-in{opacity:1;transform:none;transition:none}
  .rail a:hover{transform:none}
}

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