/* ============================================================
   DeltæchO — Living Mesh
   深空石墨 × 冰青(Delta) × 信号琥珀(Echo) · 网络即主角
   ============================================================ */

/* ---------- fonts ---------- */
@font-face{
  font-family:"Sora";
  src:url("../fonts/sora-latin.woff2") format("woff2");
  font-weight:100 800;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Sora";
  src:url("../fonts/sora-latin-ext.woff2") format("woff2");
  font-weight:100 800;font-display:swap;
  unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:"Martian Mono";
  src:url("../fonts/martian-latin.woff2") format("woff2");
  font-weight:100 800;font-stretch:75% 112.5%;font-display:swap;
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:"Martian Mono";
  src:url("../fonts/martian-latin-ext.woff2") format("woff2");
  font-weight:100 800;font-stretch:75% 112.5%;font-display:swap;
  unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ---------- tokens ---------- */
:root{
  --bg:oklch(14.5% 0.012 250);
  --bg-2:oklch(17.2% 0.014 250);
  --bg-3:oklch(20.5% 0.016 250);
  --ink:oklch(93% 0.008 250);
  --ink-2:oklch(65% 0.014 250);
  --ink-3:oklch(46% 0.014 250);
  --line:oklch(26.5% 0.014 250);
  --line-2:oklch(33% 0.016 250);
  --cyan:oklch(83% 0.085 195);
  --cyan-deep:oklch(68% 0.095 197);
  --cyan-dim:oklch(83% 0.085 195 / .14);
  --amber:oklch(78% 0.135 62);
  --amber-deep:oklch(66% 0.135 58);
  --amber-dim:oklch(78% 0.135 62 / .14);
  --btn-ink:oklch(13% 0.012 250);

  --font-main:"Sora",-apple-system,"PingFang SC","HarmonyOS Sans SC","MiSans","Microsoft YaHei",sans-serif;
  --font-mono:"Martian Mono",ui-monospace,"SF Mono",Menlo,monospace;

  --text-xs:.6875rem;
  --text-sm:.8125rem;
  --text-base:1rem;
  --text-lg:1.1875rem;
  --text-h3:clamp(1.125rem,1rem + .8vw,1.375rem);
  --text-h2:clamp(1.75rem,1.15rem + 3vw,2.875rem);
  --text-creed:clamp(1.5rem,1rem + 2.6vw,2.75rem);

  --ease-out:cubic-bezier(.25,1,.5,1);
  --ease-exp:cubic-bezier(.16,1,.3,1);
  --dur-1:140ms;--dur-2:280ms;--dur-3:460ms;--dur-4:720ms;

  --wrap:1160px;
  --gutter:clamp(20px,4vw,48px);
  --sec-pad:clamp(96px,7vw + 56px,148px);
}
[data-theme="light"]{
  --bg:oklch(96.8% 0.004 250);
  --bg-2:oklch(94% 0.006 250);
  --bg-3:oklch(90.5% 0.008 250);
  --ink:oklch(21% 0.016 250);
  --ink-2:oklch(46% 0.015 250);
  --ink-3:oklch(62% 0.012 250);
  --line:oklch(87.5% 0.008 250);
  --line-2:oklch(80% 0.01 250);
  --cyan:oklch(56% 0.105 200);
  --cyan-deep:oklch(46% 0.1 202);
  --cyan-dim:oklch(56% 0.105 200 / .12);
  --amber:oklch(60% 0.135 55);
  --amber-deep:oklch(52% 0.13 52);
  --amber-dim:oklch(60% 0.135 55 / .12);
  --btn-ink:oklch(97% 0.004 250);
}

/* ---------- base ---------- */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--font-main);
  font-size:var(--text-base);
  font-weight:380;
  line-height:1.85;
  color:var(--ink);
  background:var(--bg);
  overflow-x:clip;
  transition:background var(--dur-3),color var(--dur-3);
}
::selection{background:var(--cyan);color:var(--btn-ink)}
a{color:inherit;text-decoration:none}
img{max-width:100%;height:auto;display:block}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
ol,ul{list-style:none}
:focus-visible{outline:1.5px solid var(--cyan);outline-offset:3px}
.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter);position:relative}
.wrap>*{min-width:0}
:is(.hero-grid,.ead,.net,.oss,.stats,.svc-row,.play,.onair-row,.node,.tie,.ead-list li,.oss-list li)>*{min-width:0}
.mono{font-family:var(--font-mono);font-stretch:87.5%}

.skip{position:fixed;top:-100px;left:16px;z-index:200;background:var(--ink);color:var(--bg);padding:10px 18px;font-size:var(--text-sm);transition:top var(--dur-2)}
.skip:focus{top:12px}

/* ---------- mesh canvas ---------- */
#mesh{
  position:fixed;inset:0;z-index:0;
  width:100%;height:100vh;height:100dvh;
  pointer-events:none;
  transition:opacity var(--dur-3);
}
main,nav,.rail,footer{position:relative;z-index:1}

/* ---------- 语义点 ---------- */
.dot{display:inline-block;width:7px;height:7px;flex:none;vertical-align:.06em;margin-right:8px}
.dot-d{background:var(--cyan);clip-path:polygon(50% 0,100% 100%,0 100%)}
.dot-e{border:1.6px solid var(--amber);border-radius:50%;background:none}
.dot-a{background:var(--ink-2);border-radius:50%;width:5px;height:5px}

/* ---------- sec 标号 ---------- */
.secno{
  display:flex;align-items:center;gap:12px;
  font-family:var(--font-mono);font-stretch:87.5%;
  font-size:var(--text-xs);font-weight:500;letter-spacing:.24em;
  color:var(--cyan);text-transform:uppercase;
}
.secno .dim{color:var(--ink-3);letter-spacing:.18em}
.secno::before{content:"";width:30px;height:1px;background:var(--cyan);opacity:.7}

/* 十字准星角标 */
.cross{position:relative}
.cross::before,.cross::after{
  content:"";position:absolute;width:13px;height:13px;pointer-events:none;
  background:
    linear-gradient(var(--line-2),var(--line-2)) center top/1px 100% no-repeat,
    linear-gradient(var(--line-2),var(--line-2)) left center/100% 1px no-repeat;
  opacity:.9;
}
.cross::before{top:-6px;left:-6px}
.cross::after{bottom:-6px;right:-6px}

/* ---------- nav ---------- */
nav{
  position:fixed;inset-inline:0;top:0;z-index:100;
  background:color-mix(in oklch,var(--bg) 92%,transparent);
  border-bottom:1px solid var(--line);
  transition:background var(--dur-3);
}
.nav-in{
  max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gutter);
  height:62px;display:flex;align-items:center;gap:18px;
}
.brand{display:flex;align-items:center;gap:11px;flex:none;margin-right:10px}
.brand svg.sig{width:26px;height:26px;display:block}
.wordmark{
  font-weight:650;letter-spacing:-.01em;line-height:1;
  display:inline-flex;align-items:baseline;color:var(--ink);
}
.wordmark .ae{color:var(--amber);font-style:normal}
.wordmark .oo{position:relative;display:inline-block;flex:none}
.wordmark .oo svg{
  position:absolute;top:.02em;left:calc(100% - .04em);
  width:.34em;height:.75em;overflow:visible;display:block;
}
.brand .wordmark{font-size:1.22rem}
.nav-affil{
  font-family:var(--font-mono);font-stretch:80%;font-size:9.5px;font-weight:500;
  letter-spacing:.14em;color:var(--ink-3);flex:none;
  padding:4px 0;
}
.nav-links{display:flex;gap:2px;margin-left:auto}
.nav-links a{
  display:flex;align-items:baseline;gap:7px;
  padding:8px 11px;font-size:var(--text-sm);font-weight:420;color:var(--ink-2);
  transition:color var(--dur-1);
}
.nav-links a b{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:9px;font-weight:500;
  color:var(--ink-3);transition:color var(--dur-1);letter-spacing:.05em;
}
.nav-links a:hover,.nav-links a.cur{color:var(--ink)}
.nav-links a:hover b,.nav-links a.cur b{color:var(--cyan)}
.nav-ctrl{display:flex;gap:8px;align-items:center;flex:none;margin-left:6px}
.tbtn{
  width:34px;height:34px;border:1px solid var(--line-2);border-radius:3px;
  font-family:var(--font-mono);font-stretch:87.5%;font-size:10.5px;font-weight:500;
  display:flex;align-items:center;justify-content:center;color:var(--ink-2);
  transition:border-color var(--dur-1),color var(--dur-1);
}
.tbtn:hover{border-color:var(--cyan-deep);color:var(--cyan)}

/* ---------- buttons ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;gap:10px;
  padding:13px 24px;font-size:var(--text-sm);font-weight:520;letter-spacing:.015em;
  border:1px solid var(--line-2);border-radius:3px;color:var(--ink);
  overflow:hidden;
  transition:border-color var(--dur-2),color var(--dur-2),background var(--dur-2),transform var(--dur-2) var(--ease-out);
}
.btn .tick{font-family:var(--font-mono);font-stretch:87.5%;font-size:9px;color:var(--ink-3);transition:color var(--dur-2)}
.btn:hover{border-color:var(--cyan-deep);color:var(--cyan);transform:translateY(-1px)}
.btn:hover .tick{color:var(--cyan)}
.btn-solid{background:var(--cyan);border-color:var(--cyan);color:var(--btn-ink);font-weight:600}
.btn-solid .tick{color:color-mix(in oklch,var(--btn-ink) 70%,transparent)}
.btn-solid:hover{background:var(--cyan-deep);border-color:var(--cyan-deep);color:var(--btn-ink)}
.btn-solid:hover .tick{color:var(--btn-ink)}
.btn-sm{padding:9px 16px;font-size:var(--text-xs)}
nav .btn{padding:9px 16px;font-size:var(--text-xs)}

/* ---------- rail v2（左侧数据轨） ---------- */
.rail{
  position:fixed;left:0;top:0;bottom:0;width:52px;z-index:90;
  border-right:1px solid var(--line);
  pointer-events:none;
  background:repeating-linear-gradient(180deg,var(--line) 0 1px,transparent 1px 26px) right 10px top/5px 100% no-repeat;
}
.rail-pin{
  position:absolute;right:6px;width:13px;height:1.5px;background:var(--cyan);
  transition:none;
}
.rail-pin::after{
  content:"";position:absolute;right:-2px;top:-2px;width:5px;height:5px;
  background:var(--cyan);border-radius:50%;
}
.rail-tag{
  position:absolute;right:18px;top:84px;
  writing-mode:vertical-rl;
  font-family:var(--font-mono);font-stretch:80%;font-size:8.5px;font-weight:500;
  letter-spacing:.3em;color:var(--ink-3);white-space:nowrap;
}
.rail-pct{
  position:absolute;right:14px;bottom:18px;
  writing-mode:vertical-rl;
  font-family:var(--font-mono);font-stretch:87.5%;font-size:9px;font-weight:500;
  letter-spacing:.14em;color:var(--cyan);font-variant-numeric:tabular-nums;
}

/* ---------- hero ---------- */
.hero{
  min-height:min(100svh,1080px);
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(120px,14vh,170px) 0 clamp(56px,8vh,96px);
  position:relative;
}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:26px}
.hail{
  font-family:var(--font-mono);font-stretch:87.5%;
  font-size:var(--text-xs);font-weight:500;letter-spacing:.26em;
  color:var(--ink-2);text-transform:uppercase;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
}
.hail b{color:var(--cyan);font-weight:500}
.hail .blink{width:6px;height:6px;background:var(--cyan);flex:none;border-radius:50%;animation:blink 2.6s infinite}
@keyframes blink{0%,72%,100%{opacity:1}80%,92%{opacity:.15}}

.wordmark-hero{
  margin-top:8px;
  font-size:clamp(3.1rem,11vw,8.2rem);
  font-weight:650;letter-spacing:-.022em;line-height:1.02;
  position:relative;z-index:2;
}
.hero-sub{
  margin-top:14px;display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;
}
.hero-sub .zh{font-size:clamp(1.1rem,2vw,1.45rem);font-weight:560;letter-spacing:.42em;color:var(--ink)}
.hero-sub .en-tag{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:var(--text-xs);
  font-weight:500;letter-spacing:.2em;color:var(--ink-3);
}
.creed-hero{
  margin-top:clamp(26px,4.5vh,46px);
  font-size:clamp(1.6rem,.9rem + 3vw,2.9rem);
  font-weight:180;line-height:1.4;letter-spacing:.01em;
  max-width:18em;
}
.creed-hero b{font-weight:480;color:var(--ink)}
.creed-hero small{
  display:block;margin-top:16px;
  font-size:var(--text-base);font-weight:380;
  color:var(--ink-2);line-height:1.85;max-width:34em;
}
.cta-row{display:flex;gap:13px;flex-wrap:wrap;margin-top:clamp(28px,4.5vh,46px)}

/* hero 底部状态行 */
.hero-status{
  margin-top:auto;padding-top:clamp(40px,6vh,72px);
  display:flex;gap:clamp(18px,3.5vw,44px);flex-wrap:wrap;
  font-family:var(--font-mono);font-stretch:87.5%;
  font-size:9.5px;font-weight:500;letter-spacing:.14em;
  color:var(--ink-3);text-transform:uppercase;
}
.hero-status span b{color:var(--ink-2);font-weight:500}
.hero-status .live{color:var(--cyan)}
.hero-status .live-e{color:var(--amber)}

/* ---------- sections ---------- */
.sec{padding:var(--sec-pad) 0;position:relative}
.sec-line{border-top:1px solid var(--line)}
.sec-head{max-width:740px}
.sec-head h2{
  font-size:var(--text-h2);font-weight:600;line-height:1.24;
  letter-spacing:-.008em;margin:16px 0 14px;
}
.sec-head .lead{color:var(--ink-2);font-size:var(--text-lg);font-weight:340;line-height:1.8;max-width:38em}
.sec-head .lead b{color:var(--ink);font-weight:500}

/* 金句 v2：超细大字 */
.creed{
  margin:clamp(56px,7vw,88px) auto 0;
  max-width:840px;text-align:center;
  font-size:var(--text-creed);
  font-weight:170;line-height:1.5;letter-spacing:.015em;
  color:var(--ink);
}
.creed b{font-weight:480;color:var(--cyan)}
.creed.amber b{color:var(--amber)}
.creed cite{
  display:block;margin-top:18px;font-style:normal;
  font-family:var(--font-mono);font-stretch:87.5%;
  font-size:9px;font-weight:500;letter-spacing:.3em;color:var(--ink-3);text-transform:uppercase;
}

/* ---------- ALFA · E-A-D ---------- */
.ead{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(32px,5vw,72px);margin-top:clamp(40px,6vw,64px);align-items:center}
.ead-fig svg{width:100%;height:auto;display:block}
.ead-list li{
  display:grid;grid-template-columns:44px 1fr;gap:18px;
  padding:24px 0;border-bottom:1px solid var(--line);
}
.ead-list li:first-child{border-top:1px solid var(--line)}
.ead-list .key{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:1.1rem;font-weight:500;
  line-height:1.4;padding-top:2px;color:var(--ink-3);
}
.ead-list li.d-e .key{color:var(--amber)}
.ead-list li.d-a .key{color:var(--ink-2)}
.ead-list li.d-d .key{color:var(--cyan)}
.ead-list h3{font-size:var(--text-h3);font-weight:560;margin-bottom:6px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ead-list h3 i{
  font-style:normal;font-family:var(--font-mono);font-stretch:80%;
  font-size:9px;font-weight:500;letter-spacing:.22em;color:var(--ink-3);text-transform:uppercase;
}
.ead-list p{color:var(--ink-2);font-size:var(--text-sm);line-height:1.85;max-width:34em}

/* ---------- services ---------- */
.svc{margin-top:clamp(40px,6vw,64px)}
.svc-row{
  display:grid;grid-template-columns:minmax(64px,1fr) minmax(0,7.4fr) minmax(0,2.2fr);
  gap:clamp(16px,3vw,40px);align-items:start;
  padding:clamp(26px,3.6vw,40px) 0;
  border-bottom:1px solid var(--line);
  position:relative;
  transition:background var(--dur-2);
}
.svc-row:first-child{border-top:1px solid var(--line)}
.svc-no{
  font-family:var(--font-mono);font-stretch:87.5%;font-weight:400;
  font-size:var(--text-sm);line-height:2;
  color:var(--ink-3);font-variant-numeric:tabular-nums;
  transition:color var(--dur-2);
}
.svc-row:hover .svc-no{color:var(--cyan)}
.svc-row h3{font-size:clamp(1.2rem,2vw,1.5rem);font-weight:560;margin-bottom:8px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.svc-row p{color:var(--ink-2);font-size:var(--text-sm);line-height:1.85;max-width:44em}
.svc-tagright{
  font-family:var(--font-mono);font-stretch:80%;font-size:9px;font-weight:500;
  letter-spacing:.26em;color:var(--ink-3);text-transform:uppercase;
  justify-self:end;padding-top:8px;text-align:right;
  transition:color var(--dur-2);
}
.svc-row:hover .svc-tagright{color:var(--cyan)}
.pill{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:8.5px;font-weight:500;
  letter-spacing:.16em;color:var(--cyan);
  border:1px solid var(--cyan-deep);border-radius:2px;padding:3px 8px;text-transform:uppercase;
}

/* ---------- playbook ---------- */
.play-list{margin-top:clamp(40px,6vw,64px);max-width:860px}
.play{
  display:grid;grid-template-columns:minmax(80px,auto) 1fr;gap:clamp(20px,3.4vw,44px);
  padding:clamp(28px,4vw,44px) 0;border-bottom:1px solid var(--line);
}
.play:first-child{border-top:1px solid var(--line)}
.play-no{
  font-weight:150;font-size:clamp(2.6rem,5.5vw,4.2rem);line-height:.9;
  color:var(--ink-3);font-variant-numeric:tabular-nums;letter-spacing:-.02em;
  position:relative;
}
.play-no::after{
  content:"";position:absolute;left:3px;bottom:-11px;width:30px;height:2px;background:var(--cyan);
}
.play h3{font-size:clamp(1.2rem,2.1vw,1.55rem);font-weight:560;margin-bottom:10px}
.play p{color:var(--ink-2);font-size:var(--text-base);line-height:1.85;max-width:40em}
.play p b{color:var(--ink);font-weight:520}

/* ---------- band · why now ---------- */
.band{
  border-block:1px solid var(--line);
  background:color-mix(in oklch,var(--bg-2) 72%,transparent);
  padding:var(--sec-pad) 0;position:relative;
}
.band h2{font-size:var(--text-h2);font-weight:600;line-height:1.24;margin:16px 0 0;letter-spacing:-.008em}
.stats{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:0;margin-top:clamp(44px,6vw,72px);
  border-top:1px solid var(--line-2);
}
.stat{padding:clamp(22px,3vw,36px) clamp(14px,2.2vw,30px) 0 0;position:relative}
.stat + .stat{border-left:1px solid var(--line);padding-left:clamp(14px,2.2vw,30px)}
.stat b{
  display:block;
  font-weight:170;
  font-size:clamp(2.5rem,4.8vw,4.1rem);line-height:1.05;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em;
  color:var(--ink);
}
.stat b .unit{font-size:.42em;font-weight:340;letter-spacing:.02em;margin-left:3px;color:var(--ink-2)}
.stat.hot b{color:var(--amber)}
.stat.cool b{color:var(--cyan)}
.stat>span{display:block;margin-top:12px;font-size:var(--text-sm);color:var(--ink-2);line-height:1.7;max-width:22em}
.band .src{
  margin-top:clamp(40px,5vw,60px);
  font-family:var(--font-mono);font-stretch:80%;font-size:8.5px;font-weight:500;
  letter-spacing:.12em;color:var(--ink-3);
}

/* ---------- network ---------- */
.net{display:grid;grid-template-columns:minmax(0,6.4fr) minmax(0,4.6fr);gap:clamp(36px,5vw,80px);margin-top:clamp(40px,6vw,64px);align-items:start}
.node{
  padding:24px 0;border-bottom:1px solid var(--line);
  display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start;
}
.node:first-child{border-top:1px solid var(--line)}
.node .key{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:9px;font-weight:500;
  letter-spacing:.14em;color:var(--ink-2);
  border:1px solid var(--line-2);border-radius:2px;padding:5px 9px;margin-top:4px;
  text-transform:uppercase;white-space:nowrap;
  display:inline-flex;align-items:center;gap:7px;
}
.node.n-e .key{color:var(--amber);border-color:color-mix(in oklch,var(--amber-deep) 55%,var(--line-2))}
.node.n-d .key{color:var(--cyan);border-color:color-mix(in oklch,var(--cyan-deep) 55%,var(--line-2))}
.node h3{font-size:var(--text-h3);font-weight:560;margin-bottom:6px}
.node p{color:var(--ink-2);font-size:var(--text-sm);line-height:1.85;max-width:36em}
.ties-title{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:9.5px;font-weight:500;
  letter-spacing:.26em;color:var(--ink-3);text-transform:uppercase;
  padding-bottom:14px;border-bottom:1px solid var(--line-2);
}
.tie{
  display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:baseline;
  padding:16px 0;border-bottom:1px solid var(--line);
}
.tie .n{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:9.5px;font-weight:500;
  color:var(--cyan);
}
.tie b{font-size:var(--text-base);font-weight:560;margin-right:10px}
.tie span{color:var(--ink-2);font-size:var(--text-sm)}
.backing{
  margin-top:26px;padding:18px 20px;
  border:1px solid var(--line-2);border-radius:3px;
  font-size:var(--text-sm);line-height:1.8;color:var(--ink-2);
  background:color-mix(in oklch,var(--bg-2) 60%,transparent);
}
.backing b{color:var(--ink);font-weight:520}

/* ---------- events ---------- */
.onair{margin-top:clamp(40px,6vw,64px)}
.onair-row{
  display:grid;
  grid-template-columns:minmax(120px,2.4fr) minmax(0,6fr) auto;
  gap:clamp(16px,3vw,40px);align-items:center;
  padding:clamp(24px,3.4vw,38px) 0;
  border-bottom:1px solid var(--line);
}
.onair-row:first-child{border-top:1px solid var(--line)}
.onair-tag{
  font-family:var(--font-mono);font-stretch:80%;font-size:9px;font-weight:500;
  letter-spacing:.2em;color:var(--ink-3);text-transform:uppercase;
  display:flex;flex-direction:column;gap:6px;
}
.onair-tag i{font-style:normal;display:inline-flex;align-items:center;gap:7px;color:var(--cyan)}
.onair-tag i::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--cyan);animation:blink 3s infinite}
.onair-row h3{font-size:clamp(1.2rem,2.1vw,1.5rem);font-weight:560;margin-bottom:6px}
.onair-row p{color:var(--ink-2);font-size:var(--text-sm);line-height:1.8;max-width:42em}
.onair-row .btn{justify-self:end}

/* ---------- open source ---------- */
.oss{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(36px,5vw,80px);margin-top:clamp(40px,6vw,64px);align-items:start}
.oss-list li{
  display:grid;grid-template-columns:150px 1fr;gap:16px;align-items:baseline;
  padding:18px 0;border-bottom:1px solid var(--line);
}
.oss-list li:first-child{border-top:1px solid var(--line)}
.oss-list code{
  font-family:var(--font-mono);font-stretch:87.5%;font-size:11px;font-weight:500;
  letter-spacing:.03em;color:var(--cyan);
}
.oss-list span{color:var(--ink-2);font-size:var(--text-sm);line-height:1.8}
.redline{
  border:1px solid var(--line-2);border-radius:4px;
  padding:clamp(26px,3.6vw,40px) clamp(24px,3.2vw,36px);
  background:color-mix(in oklch,var(--bg-2) 72%,transparent);
  position:relative;
}
.redline .secno{color:var(--amber)}
.redline .secno::before{background:var(--amber)}
.redline p{
  font-size:clamp(1.15rem,1.8vw,1.4rem);
  font-weight:220;line-height:1.72;margin-top:14px;
}
.redline p b{color:var(--amber);font-weight:480}
.redline small{
  display:block;margin-top:18px;
  font-family:var(--font-mono);font-stretch:87.5%;font-size:8.5px;font-weight:500;
  letter-spacing:.24em;color:var(--ink-3);text-transform:uppercase;
}

/* ---------- footer ---------- */
footer{
  border-top:1px solid var(--line);
  padding:clamp(72px,9vw,116px) 0 40px;position:relative;
}
.foot-word{
  font-weight:650;
  font-size:clamp(2.8rem,10vw,8.4rem);line-height:1;letter-spacing:-.022em;
  color:color-mix(in oklch,var(--ink) 14%,transparent);
  user-select:none;pointer-events:none;white-space:nowrap;
}
.foot-word .ae{color:color-mix(in oklch,var(--amber) 34%,transparent)}
.foot-join{
  display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
  margin:clamp(30px,5vw,52px) 0 clamp(46px,6vw,68px);
}
.foot-join h3{font-weight:200;font-size:clamp(1.4rem,2.8vw,2rem);letter-spacing:.01em}
.foot-join h3 b{font-weight:520}
.foot-grid{
  border-top:1px solid var(--line);
  padding-top:22px;
  display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;
  font-size:var(--text-sm);color:var(--ink-2);
}
.foot-left{display:flex;align-items:center;gap:12px}
.foot-left svg{width:22px;height:22px;color:var(--ink-2)}
.foot-links{display:flex;gap:24px}
.foot-links a{transition:color var(--dur-1)}
.foot-links a:hover{color:var(--cyan)}
.foot-nato{
  margin-top:30px;
  font-family:var(--font-mono);font-stretch:80%;font-size:8px;font-weight:400;
  letter-spacing:.3em;color:var(--ink-3);opacity:.55;
  text-transform:uppercase;white-space:nowrap;overflow:hidden;
}
.foot-nato b{color:var(--cyan);font-weight:500}
.foot-nato .be{color:var(--amber);font-weight:500}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(26px);transition:opacity var(--dur-4) var(--ease-exp),transform var(--dur-4) var(--ease-exp)}
.rv.on{opacity:1;transform:none}
.rv-d1{transition-delay:70ms}.rv-d2{transition-delay:140ms}.rv-d3{transition-delay:210ms}

.boot{opacity:0;transform:translateY(18px);animation:boot var(--dur-4) var(--ease-exp) forwards}
.boot-1{animation-delay:.05s}.boot-2{animation-delay:.14s}.boot-3{animation-delay:.24s}
.boot-4{animation-delay:.34s}.boot-5{animation-delay:.46s}.boot-6{animation-delay:.6s}
@keyframes boot{to{opacity:1;transform:none}}

/* O 回声弧 */
.echo-wave{transform-origin:0% 100%;opacity:0;animation:echo 3.8s var(--ease-out) infinite}
.echo-wave.w2{animation-delay:.5s}
@keyframes echo{
  0%{opacity:0;transform:scale(.55)}
  16%{opacity:.95}
  58%{opacity:0;transform:scale(1.14)}
  100%{opacity:0;transform:scale(1.14)}
}

/* ---------- responsive ---------- */
@media (max-width:1120px){
  .nav-links{display:none}
  .rail{display:none}
}
@media (max-width:920px){
  .nav-affil{display:none}
  .ead{grid-template-columns:1fr}
  .net,.oss{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
  .stat{padding-top:20px;padding-bottom:8px}
  .stat + .stat{border-left:none;padding-left:0}
  .stat:nth-child(2n){border-left:1px solid var(--line);padding-left:18px}
  .stat:nth-child(n+3){border-top:1px solid var(--line)}
  .onair-row{grid-template-columns:1fr;gap:10px;align-items:start}
  .onair-row .btn{justify-self:start;margin-top:6px}
  .svc-row{grid-template-columns:minmax(44px,auto) 1fr}
  .svc-tagright{display:none}
  .hail{letter-spacing:.14em}
}
@media (max-width:560px){
  .oss-list li{grid-template-columns:1fr;gap:6px}
  .play{grid-template-columns:1fr;gap:20px}
  .stats{grid-template-columns:1fr}
  .stat:nth-child(2n){border-left:none;padding-left:0}
  .stat + .stat{border-top:1px solid var(--line)}
  .hero-status{gap:14px;font-size:8.5px}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rv,.boot{opacity:1;transform:none;animation:none;transition:none}
  .echo-wave{animation:none;opacity:.4;transform:none}
  .hail .blink,.onair-tag i::before{animation:none}
  *{transition-duration:.01ms!important}
}
