/* ================= 长征-JJ2 发射任务 · HUD 样式 ================= */
:root{
  --bg:#04060c;
  --cy:#7fe3ff;         /* 主青 */
  --cy-dim:#3b93b5;
  --amber:#ffb54a;
  --red:#ff5d54;
  --green:#5dffa8;
  --ink:#dff2ff;
  --line:rgba(127,227,255,.28);
  --line-soft:rgba(127,227,255,.12);
  --panel:rgba(6,16,26,.42);
  --mono:"SF Mono","JetBrains Mono","Roboto Mono",ui-monospace,Menlo,Consolas,monospace;
  --han:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;background:var(--bg);overflow:hidden;color:var(--ink);font-family:var(--han)}
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
#stage{position:fixed;inset:0;overflow:hidden}
#gl{position:absolute;inset:0;width:100%;height:100%;display:block}
.hidden{opacity:0 !important;pointer-events:none !important}

/* ---------- 启动页 ---------- */
.overlay{position:absolute;inset:0;display:grid;place-items:center;z-index:40;
  background:radial-gradient(120% 90% at 50% 15%,#0d1b2c 0%,#050810 55%,#03050a 100%);
  transition:opacity .9s ease}
.boot-inner{width:min(560px,86vw);text-align:center;padding:8px 0}
.mission-patch svg{width:118px;height:118px;filter:drop-shadow(0 0 18px rgba(79,163,255,.35))}
.boot-inner h1{margin:14px 0 4px;font-size:30px;letter-spacing:.22em;font-weight:600;
  background:linear-gradient(180deg,#fff,#8fd7ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.boot-inner .sub{color:#8fb6cf;font-size:13px;letter-spacing:.14em;margin-bottom:22px}
.brief{list-style:none;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  padding:12px 4px;margin-bottom:20px;display:grid;gap:7px}
.brief li{display:flex;justify-content:space-between;font-size:12.5px;letter-spacing:.06em}
.brief span{color:#6f93a8}
.brief b{color:#cfe9ff;font-weight:500;font-family:var(--mono);font-size:12px}
.loadbar{height:2px;background:rgba(127,227,255,.14);overflow:hidden;border-radius:2px}
.loadbar i{display:block;height:100%;width:0%;background:linear-gradient(90deg,#2b8fd6,#7fe3ff);
  box-shadow:0 0 12px #7fe3ff;transition:width .35s ease}
.loadtxt{margin-top:9px;font-family:var(--mono);font-size:11px;color:#6f93a8;letter-spacing:.1em;height:14px}
.btn-launch{position:relative;margin-top:24px;padding:14px 42px;background:transparent;cursor:pointer;
  border:1px solid rgba(127,227,255,.5);color:#eafaff;border-radius:2px;font-family:var(--han);
  font-size:15px;letter-spacing:.3em;transition:.35s;overflow:hidden}
.btn-launch[disabled]{opacity:.35;cursor:progress}
.btn-launch:not([disabled]):hover{background:rgba(127,227,255,.1);box-shadow:0 0 26px rgba(127,227,255,.28);letter-spacing:.36em}
.btn-launch .btn-ring{position:absolute;inset:-1px;border:1px solid rgba(127,227,255,.18);animation:pulse 2.6s infinite}
@keyframes pulse{0%{transform:scale(1);opacity:.7}70%{transform:scale(1.06);opacity:0}100%{opacity:0}}
.hint{margin-top:14px;font-size:11px;color:#527489;letter-spacing:.1em}

/* ---------- HUD 总体 ---------- */
.hud{position:absolute;inset:0;z-index:20;pointer-events:none;opacity:1;transition:opacity .8s ease;
  font-family:var(--mono);text-shadow:0 0 14px rgba(0,20,40,.9)}
.hud .corner{position:absolute;width:26px;height:26px;border:1px solid var(--line);opacity:.55}
.corner.tl{top:14px;left:14px;border-right:0;border-bottom:0}
.corner.tr{top:14px;right:14px;border-left:0;border-bottom:0}
.corner.bl{bottom:14px;left:14px;border-right:0;border-top:0}
.corner.br{bottom:14px;right:14px;border-left:0;border-top:0}

.hud-top{position:absolute;top:22px;left:0;right:0;display:flex;justify-content:space-between;
  align-items:flex-start;padding:0 46px}
.hud-id .tag{font-size:13px;letter-spacing:.22em;color:var(--cy)}
.hud-id .site{font-size:10.5px;letter-spacing:.14em;color:#5d87a0;margin-top:4px;font-family:var(--han)}
.hud-clock{text-align:center;transform:translateY(-2px)}
.clk{font-size:34px;letter-spacing:.08em;font-weight:500;color:#eaffff;
  text-shadow:0 0 22px rgba(127,227,255,.55)}
.clk.neg{color:var(--amber);text-shadow:0 0 22px rgba(255,181,74,.5)}
.warp{font-size:10px;letter-spacing:.16em;color:#5d87a0;margin-top:3px;font-family:var(--han)}
.hud-stage{text-align:right}
.stage-row{display:flex;gap:6px;justify-content:flex-end}
.chip{font-size:10px;letter-spacing:.12em;padding:3px 9px;border:1px solid var(--line-soft);
  color:#4f7488;font-family:var(--han);transition:.4s}
.chip.on{color:#04121b;background:var(--cy);border-color:var(--cy);box-shadow:0 0 16px rgba(127,227,255,.5)}
.chip.done{color:#3d5b6b;border-color:rgba(127,227,255,.08);text-decoration:line-through}
.phase{margin-top:7px;font-size:11.5px;letter-spacing:.14em;color:var(--cy-dim);font-family:var(--han)}

/* ---------- 遥测 ---------- */
.tele{position:absolute;left:46px;top:118px;width:196px;
  border-left:1px solid var(--line);padding:2px 0 2px 14px;display:grid;gap:9px}
.t-row{display:flex;align-items:baseline;gap:7px}
.t-row .k{font-family:var(--han);font-size:10.5px;color:#5d87a0;width:30px;letter-spacing:.08em}
.t-row .v{font-size:19px;color:#eaffff;min-width:74px;text-align:right;font-variant-numeric:tabular-nums}
.t-row .u{font-size:10px;color:#4f7488}
.gauge{margin-top:2px}
.gauge label{display:flex;justify-content:space-between;font-family:var(--han);font-size:10px;color:#5d87a0;letter-spacing:.08em}
.gauge label i{font-style:normal;font-family:var(--mono);color:#9fd8ef}
.gauge .bar{height:3px;background:rgba(127,227,255,.12);margin-top:4px;overflow:hidden}
.gauge .bar i{display:block;height:100%;width:0%;background:linear-gradient(90deg,#ff9b4a,#ffd89b);
  box-shadow:0 0 10px rgba(255,155,74,.7);transition:width .2s linear}
.gauge .bar i.fuel{background:linear-gradient(90deg,#2b8fd6,#7fe3ff);box-shadow:0 0 10px rgba(127,227,255,.6)}

/* ---------- 弹道图 ---------- */
.plot{position:absolute;right:46px;top:118px;width:240px;
  border-right:1px solid var(--line);padding:0 14px 0 0;text-align:right}
.plot-title{font-family:var(--han);font-size:10px;color:#5d87a0;letter-spacing:.12em;margin-bottom:7px}
#plot{width:240px;height:150px;opacity:.95}

/* ---------- 事件日志 ---------- */
.log{position:absolute;left:46px;bottom:86px;width:min(420px,42vw);display:flex;flex-direction:column;gap:5px}
.log .ev{font-size:11.5px;letter-spacing:.06em;color:#8fc4dc;opacity:0;transform:translateX(-10px);
  animation:evin .5s forwards;font-family:var(--han);display:flex;gap:9px;align-items:baseline}
.log .ev time{font-family:var(--mono);color:var(--cy-dim);font-size:10.5px}
.log .ev.key{color:#fff}
.log .ev.key time{color:var(--amber)}
@keyframes evin{to{opacity:1;transform:none}}

/* ---------- 时间轴 ---------- */
.timeline{position:absolute;left:50%;transform:translateX(-50%);bottom:38px;width:min(680px,64vw);
  pointer-events:auto;cursor:pointer;padding:12px 0}
.timeline:hover .tl-track{background:rgba(127,227,255,.32)}
.tl-track{position:relative;height:1px;background:rgba(127,227,255,.18)}
.tl-track i{position:absolute;left:0;top:0;height:1px;width:0%;background:var(--cy);box-shadow:0 0 10px var(--cy)}
.tl-track .mk{position:absolute;top:-3px;width:1px;height:7px;background:rgba(127,227,255,.35)}
.tl-track .mk.hit{background:var(--amber);box-shadow:0 0 8px var(--amber);height:11px;top:-5px}
.tl-track .mk b{position:absolute;left:50%;top:11px;transform:translateX(-50%);font-family:var(--han);
  font-size:9px;color:#3d6a80;white-space:nowrap;opacity:0;transition:.3s;letter-spacing:.04em}
.tl-track .mk.alt b{top:-26px}
.tl-track .mk.hit b{opacity:1;color:var(--amber)}

/* ---------- 倒计时 ---------- */
.countdown{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;opacity:0}
.countdown span{font-size:min(30vw,260px);font-weight:200;letter-spacing:.02em;line-height:1;
  color:#fff;text-shadow:0 0 60px rgba(127,227,255,.65),0 0 140px rgba(60,140,255,.4)}
.countdown em{position:absolute;bottom:26%;font-style:normal;font-family:var(--han);font-size:15px;
  letter-spacing:.6em;color:var(--cy);text-indent:.6em}
.countdown.tick span{animation:cdpop .95s ease-out}
@keyframes cdpop{0%{transform:scale(1.5);opacity:0}18%{opacity:1}100%{transform:scale(.92);opacity:.06}}

/* ---------- 中央提示 ---------- */
.callout{position:absolute;left:50%;top:64%;transform:translate(-50%,0);font-family:var(--han);
  font-size:20px;letter-spacing:.42em;color:#fff;opacity:0;text-indent:.42em;
  text-shadow:0 0 30px rgba(127,227,255,.8)}
.callout.show{animation:callout 2.6s ease-out}
@keyframes callout{0%{opacity:0;transform:translate(-50%,12px);letter-spacing:.9em}
 15%{opacity:1;transform:translate(-50%,0);letter-spacing:.42em}80%{opacity:1}100%{opacity:0}}

/* ---------- 控制条 ---------- */
.controls{position:absolute;right:46px;bottom:38px;display:flex;gap:8px;pointer-events:auto}
.ctl{background:rgba(6,18,28,.5);border:1px solid var(--line-soft);color:#9fd8ef;cursor:pointer;
  font-size:13px;padding:7px 11px;display:flex;align-items:center;gap:6px;border-radius:2px;transition:.25s;
  backdrop-filter:blur(6px)}
.ctl span{font-family:var(--han);font-size:10.5px;letter-spacing:.1em;color:#6f93a8}
.ctl:hover{border-color:var(--line);background:rgba(127,227,255,.1);color:#fff}
.ctl.off{opacity:.45}

/* ---------- 入轨卡片 ---------- */
.orbit-card{position:absolute;left:50%;top:64%;transform:translate(-50%,-42%);width:min(500px,80vw);
  padding:28px 34px;border:1px solid var(--line);background:rgba(4,12,20,.62);backdrop-filter:blur(10px);
  text-align:center;opacity:0;pointer-events:none;transition:opacity 1.1s ease,transform 1.1s ease}
.orbit-card.show{opacity:1;transform:translate(-50%,-50%)}
@media (max-height:620px){.orbit-card{top:58%;padding:18px 24px}.oc-title{font-size:21px}}
.oc-title{font-family:var(--han);font-size:26px;letter-spacing:.5em;text-indent:.5em;color:#fff;
  text-shadow:0 0 34px rgba(127,227,255,.7)}
.oc-sub{font-family:var(--han);font-size:11.5px;letter-spacing:.14em;color:#8fb6cf;margin:10px 0 20px}
.oc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 26px;text-align:left;
  border-top:1px solid var(--line-soft);padding-top:16px}
.oc-grid div{display:flex;justify-content:space-between;align-items:baseline}
.oc-grid span{font-family:var(--han);font-size:10.5px;color:#5d87a0;letter-spacing:.1em}
.oc-grid b{font-size:12px;color:#cfe9ff;font-weight:500}
.oc-foot{margin-top:18px;font-family:var(--han);font-size:10px;color:#496d81;letter-spacing:.12em}

/* ---------- 自适应 ---------- */
@media (max-width:900px){
  .hud-top{padding:0 22px;top:16px}
  .clk{font-size:24px}
  .tele{left:22px;width:150px;gap:7px}
  .t-row .v{font-size:15px;min-width:56px}
  .plot{display:none}
  .log{left:22px;bottom:96px;width:60vw}
  .controls{right:22px;bottom:30px}
  .timeline{width:78vw;bottom:70px}
  .corner{display:none}
}
@media (max-height:560px){ .tele{gap:5px} .plot{display:none} }
