/* ============ LAUNCH DETAIL · 主体主题感知,hero 始终深色 Mission Control ============ */
/* .launch-hero 深色 scope 覆盖已移到 globals.css */

.launch-root { background:var(--bg);color:var(--fg);min-height:100vh;font-family:var(--font-sans);overflow:hidden;padding-bottom:28px; }


.launch-main { max-width:1320px;margin:0 auto;padding:28px 32px 0;display:grid;grid-template-columns:1fr 360px;gap:28px; }
.launch-main > div:first-child { min-width:0; }

/* Banner */
.launch-banner { border-radius:14px;padding:18px 22px;margin-bottom:18px;display:flex;align-items:center;gap:18px;border:1px solid; }
.launch-banner .ico { width:44px;height:44px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:14px; }
.launch-banner .msg { flex:1;min-width:0; }
.launch-banner .msg h4 { margin:0 0 3px;font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:-0.01em;color:var(--fg); }
.launch-banner .msg p { margin:0;font-size:13px;color:var(--fg-dim);line-height:1.5; }
.launch-banner .aux { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);text-align:right;line-height:1.4;flex-shrink:0; }
.launch-banner .aux b { color:var(--fg);font-size:13px;display:block; }
.launch-banner.scheduled { background:rgba(76,99,214,0.08);border-color:rgba(141,163,245,0.3); }
.launch-banner.scheduled .ico { background:rgba(141,163,245,0.2);color:#a9baf6; }
.launch-banner.terminal { background:rgba(255,193,7,0.08);border-color:rgba(255,193,7,0.3); }
.launch-banner.terminal .ico { background:rgba(255,193,7,0.2);color:#ffc84d; }
.launch-banner.live { background:rgba(225,29,72,0.10);border-color:rgba(225,29,72,0.4); }
.launch-banner.live .ico { background:var(--danger);color:var(--accent-fg);animation:pulse 1.2s infinite; }
.launch-banner.success { background:rgba(16,185,129,0.08);border-color:rgba(16,185,129,0.3); }
.launch-banner.success .ico { background:rgba(16,185,129,0.2);color:#34d4a0; }
.launch-banner.fail { background:rgba(225,29,72,0.08);border-color:rgba(225,29,72,0.3); }
.launch-banner.fail .ico { background:rgba(225,29,72,0.2);color:#f07498; }

/* Title */
.launch-title-block { margin-bottom:24px; }
.launch-title-block .eyebrow { font-family:var(--font-mono);font-size:11px;letter-spacing:0.15em;text-transform:uppercase;color:var(--accent);margin-bottom:12px; }
.launch-title-block h1 { font-family:var(--font-display);font-size:44px;font-weight:700;margin:0 0 8px;letter-spacing:-0.02em;line-height:1.05;color:var(--fg); }
.launch-title-block .sub { color:var(--fg-muted);font-size:14px;font-family:var(--font-mono);margin:0; }

/* Hero panel */
.launch-hero { background:linear-gradient(180deg,#0f1a2a 0%,#0b0f1a 60%,#1a0e08 100%);border-radius:14px;aspect-ratio:16/9;position:relative;overflow:hidden;margin-bottom:20px;display:flex;align-items:center;justify-content:center; }
.launch-hero::before { content:'';position:absolute;inset:0;background-image:radial-gradient(1px 1px at 20% 30%,#fff8,transparent),radial-gradient(1px 1px at 80% 20%,#fff5,transparent),radial-gradient(1px 1px at 50% 60%,#fff6,transparent),radial-gradient(1px 1px at 30% 80%,#fff4,transparent),radial-gradient(1px 1px at 70% 70%,#fff7,transparent),radial-gradient(1px 1px at 90% 50%,#fff3,transparent);pointer-events:none; }
.launch-hero img { position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0.8; }
.launch-hero-content { position:relative;z-index:1;text-align:center;color:var(--accent-fg);padding:20px; }
.launch-hero-pill { display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:0.08em;margin-bottom:16px; }
.launch-hero-pill.scheduled { background:rgba(141,163,245,0.25);color:#c5d2fa; }
.launch-hero-pill.terminal { background:var(--warn);color:#3a2800; }
.launch-hero-pill.live { background:var(--danger);color:var(--accent-fg); }
.launch-hero-pill.success { background:var(--success);color:#06251a; }
.launch-hero-pill.fail { background:var(--danger);color:var(--accent-fg); }
/* go-no-go 三色(Go 绿 / TBC 黄 / TBD 橙),与日历、列表同口径 */
.launch-hero-pill.go { background:rgba(16,185,129,0.22);color:#34d4a0; }
.launch-hero-pill.tbc,
.launch-hero-pill.hold,
.launch-hero-pill.partial { background:rgba(245,176,66,0.22);color:#f5b042; }
.launch-hero-pill.tbd { background:rgba(255,106,26,0.22);color:#ff8a3d; }
.launch-hero-pill.abort { background:rgba(225,29,72,0.22);color:#f87171; }
.launch-hero-pill.sched { background:rgba(141,163,245,0.25);color:#c5d2fa; }

/* Countdown wrap */
.launch-countdown-wrap { margin:8px 0 4px; }
.launch-countdown-wrap .countdown-row { display:flex;align-items:flex-end;gap:5px;justify-content:center;color:var(--accent-fg); }
.launch-countdown-wrap .cd-block { display:flex;flex-direction:column;align-items:center;gap:4px; }
.launch-countdown-wrap .countdown-row .t-prefix { color:#c5d2fa;font-family:var(--font-mono);font-size:14px;letter-spacing:0.1em; }
.launch-countdown-wrap .cd-block .n { color:var(--accent-fg);font-family:var(--font-mono);font-size:40px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums; }
.launch-countdown-wrap .cd-block .u { color:#a9baf6;font-size:10px;font-family:var(--font-sans);font-weight:400;letter-spacing:0.1em;margin-top:4px;text-transform:uppercase; }
.launch-countdown-wrap .cd-sep { color:var(--accent-fg);font-size:32px;margin:0 4px;align-self:flex-start; }
.launch-hero-sub { font-family:var(--font-mono);font-size:12px;color:#a9baf6;margin-top:12px;letter-spacing:0.08em; }

/* Clickable banner / hero (jump to live) */
a.launch-banner, a.launch-hero { color:inherit;text-decoration:none; }
.launch-banner.is-link, .launch-hero.is-link { cursor:pointer;transition:filter 0.18s ease,box-shadow 0.18s ease,transform 0.18s ease; }
.launch-banner.is-link:hover { filter:brightness(1.08); }
.launch-hero.is-link:hover { box-shadow:0 0 0 2px rgba(225,29,72,0.45);transform:translateY(-1px); }
.launch-banner .live-hint { display:inline-block;margin-top:4px;font-family:var(--font-mono);font-size:10.5px;font-weight:700;color:var(--accent);letter-spacing:0.06em; }
.launch-hero-live { position:absolute;right:14px;bottom:14px;z-index:2;font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--accent-fg);background:rgba(225,29,72,0.92);padding:6px 12px;border-radius:999px;letter-spacing:0.06em;box-shadow:0 4px 12px rgba(0,0,0,0.35); }
.launch-hero.is-link:hover .launch-hero-live { background:var(--danger); }

/* Cards · 发射信息 + 时间线 */
.launch-card { background:var(--bg-elev);border:1px solid var(--line-strong);border-radius:14px;padding:22px 26px;margin-bottom:20px; }
.launch-card h3 { font-family:var(--font-display);font-size:18px;font-weight:600;margin:0 0 18px;color:var(--fg);display:flex;align-items:center;justify-content:space-between;gap:8px; }
.launch-card h3 .c { font-family:var(--font-mono);font-size:11px;font-weight:400;color:var(--fg-faint);letter-spacing:0.06em; }

.kv { display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px dashed var(--line-strong);font-size:13px;gap:12px; }
.kv:last-child { border-bottom:none; }
.kv .k { color:var(--fg-faint);font-family:var(--font-mono);font-size:11px;letter-spacing:0.05em;text-transform:uppercase;flex-shrink:0; }
.kv .v { color:var(--fg);font-weight:500;text-align:right; }
.kv .kv-link { color:inherit;text-decoration:none;border-bottom:1px dashed var(--line);transition:color 120ms,border-color 120ms; }
.kv .kv-link:hover { color:var(--accent);border-bottom-color:var(--accent); }

/* 任务描述 */
.launch-desc { font-size:14px;color:var(--fg-muted);line-height:1.65;margin:0;text-wrap:pretty; }

/* 时间线 */
.launch-timeline { position:relative; }
.tl-row { display:grid;grid-template-columns:110px 22px minmax(0,1fr);gap:14px;padding:8px 0;align-items:flex-start; }
.tl-row .t { display:inline-block;font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--fg);padding-top:2px;font-variant-numeric:tabular-nums;white-space:nowrap;word-break:keep-all;overflow-wrap:normal; }
.tl-row .t.past { color:var(--fg-dim); }
.tl-row .dot { position:relative;display:flex;justify-content:center; }
.tl-row .dot::before { content:'';position:absolute;top:12px;width:1.5px;height:calc(100% + 4px);background:var(--line-strong); }
.tl-row:last-child .dot::before { display:none; }
.tl-row .dot .pt { width:9px;height:9px;border-radius:50%;border:2px solid var(--line-strong);background:var(--bg-elev);margin-top:5px;z-index:1; }
.tl-row.done .dot .pt { background:var(--success);border-color:var(--success); }
.tl-row.fail .dot .pt { background:var(--danger);border-color:var(--danger); }
.tl-row .evt .n { font-size:14px;font-weight:500;color:var(--fg);display:flex;align-items:baseline;flex-wrap:wrap;gap:6px; }
.tl-row .evt .n .tl-en { font-family:var(--font-mono);font-size:11.5px;font-weight:400;color:var(--fg-faint);letter-spacing:0.02em; }
.tl-row .evt .d { font-size:12px;color:var(--fg-faint);margin-top:2px; }
.launch-card h3 .title-cn { display:inline-flex;align-items:baseline;gap:8px; }
.launch-card h3 .title-en { font-family:var(--font-mono);font-size:11px;font-weight:400;color:var(--fg-faint);letter-spacing:0.08em;text-transform:uppercase; }

/* Chips + logos */
.launch-chips { display:flex;flex-wrap:wrap;gap:8px;margin-top:4px; }
.launch-chip { display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg);font-size:12px;color:var(--fg-muted);text-decoration:none; }
.launch-chip:hover { border-color:var(--accent);color:var(--accent); }

.launch-patches { display:flex;gap:12px;align-items:center;flex-wrap:wrap; }
.launch-patch-row { display:flex;align-items:center;gap:10px; }
.launch-patch { width:48px;height:48px;border-radius:50%;background:var(--bg);border:1px solid var(--line-strong);overflow:hidden;display:flex;align-items:center;justify-content:center; }
.launch-patch img { width:100%;height:100%;object-fit:contain; }
.launch-patch-name { font-family:var(--font-mono);font-size:11px;color:var(--fg-muted); }
.launch-side-card h3 .c { font-family:var(--font-mono);font-size:11px;font-weight:400;color:var(--fg-faint);margin-left:6px; }

/* Updates / feed */
.launch-feed .mf-row { display:grid;grid-template-columns:100px 14px 1fr;gap:14px;padding:14px 0;border-top:1px solid var(--line); }
.launch-feed .mf-row:first-of-type { border-top:none;padding-top:4px; }
.launch-feed .mf-time { font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--fg);display:flex;flex-direction:column;gap:2px;font-variant-numeric:tabular-nums; }
.launch-feed .mf-abs { font-size:10px;font-weight:400;color:var(--fg-faint);letter-spacing:0.04em; }
.launch-feed .mf-marker { width:10px;height:10px;border-radius:50%;background:var(--bg-elev);margin-top:6px;position:relative;align-self:flex-start; }
.launch-feed .mf-marker::before { content:'';position:absolute;left:4px;top:14px;bottom:-28px;width:2px;background:var(--line); }
.launch-feed .mf-row:last-of-type .mf-marker::before { display:none; }
.launch-feed .mf-body { min-width:0; }
.launch-feed .mf-author { font-family:var(--font-mono);font-size:10.5px;color:var(--fg-faint);letter-spacing:0.06em;text-transform:uppercase;margin-bottom:4px; }
.launch-feed .mf-comment { font-size:13.5px;color:var(--fg-muted);line-height:1.55;margin:0;white-space:pre-wrap; }
.launch-feed .mf-link { font-family:var(--font-mono);font-size:11px;color:var(--accent);margin-top:4px;display:inline-block; }

/* Sidebar */
.launch-side { display:flex;flex-direction:column;gap:16px; }
.launch-side-card { background:var(--bg-elev);border:1px solid var(--line-strong);border-radius:14px;padding:18px 20px; }
.launch-side-card h3 { font-family:var(--font-display);font-size:15px;font-weight:600;margin:0 0 12px;color:var(--fg);display:flex;justify-content:space-between;align-items:center;gap:8px; }
.launch-side-card .kv .v { text-align:right; }
.launch-map-card .launch-map { height:240px;border-radius:8px;overflow:hidden;border:1px solid var(--line-strong);background:var(--bg-inset); }
.launch-map-card .launch-map .maplibregl-map { height:100%;width:100%;font:inherit; }
.launch-map-meta { display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--fg-muted); }
.launch-map-meta .coord { font-family:var(--font-mono);letter-spacing:0.02em; }
.launch-map-meta a { color:var(--fg-muted);text-decoration:none;border-bottom:1px dashed var(--line);white-space:nowrap; }
.launch-map-meta a:hover { color:var(--fg); }
/* 「交互地图」启动按钮。静态图是海报，按下才加载 maplibre。
   ⚠️ chx_live_web 那份 launch.css 里**没有**这一段，两份副本在此有意不同：
   它的地图组件一挂载就自己加载，页面上从来没有这个按钮，所以补上去也无用。
   这是唯一一处允许的分歧——新增选择器、旧渲染器不引用，回滚不受影响。 */
.launch-map-card .launch-map { position:relative; }
.pad-map-go {
  position:absolute;right:8px;bottom:8px;z-index:2;
  padding:5px 10px;font-size:12px;font-family:var(--font-mono);
  color:var(--fg);background:var(--bg);border:1px solid var(--line-strong);
  border-radius:6px;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,0.18);
}
.pad-map-go:hover { border-color:var(--accent);color:var(--accent); }

.pad-pop { font-size:12px;line-height:1.45;padding:1px 2px; }
.pad-pop strong { display:block;color:#15151a;font-weight:600; }
.pad-pop span { color:#5a5853; }
.pad-layer-toggle { display:flex;overflow:hidden; }
.pad-layer-toggle button { width:auto;height:28px;padding:0 9px;font-size:12px;font-family:var(--font-mono);color:#333;background:#fff;border:none;cursor:pointer; }
.pad-layer-toggle button + button { border-left:1px solid rgba(0,0,0,0.12); }
.pad-layer-toggle button.active { background:#e11d48;color:#fff; }
.launch-side-card .pill { font-family:var(--font-mono);font-size:10px;font-weight:700;padding:2px 6px;border-radius:3px;letter-spacing:0.04em; }
.launch-side-card .pill.ok { color:var(--success);background:rgba(16,185,129,0.14); }
.launch-side-card .pill.nogo { color:var(--danger);background:rgba(225,29,72,0.14); }
.launch-side-card .pill.warn { color:var(--warn);background:rgba(245,176,66,0.14); }
.launch-side-card .desc { font-size:12px;color:var(--fg-dim);line-height:1.55;margin:10px 0 0; }

.launch-actions { display:flex;flex-direction:column;gap:8px; }
.launch-btn { padding:10px 14px;border-radius:8px;font-size:13px;font-weight:600;text-align:center;border:none;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:6px;text-decoration:none; }
.launch-btn.pri { background:var(--accent);color:var(--accent-fg); }
.launch-btn.pri:hover { background:var(--accent-hover); }
.launch-btn.sec { background:var(--accent);color:var(--accent-fg);border:1px solid var(--accent); }
.launch-btn.sec:hover { background:var(--accent-hover);border-color:var(--accent-hover); }

.launch-empty { color:var(--fg-faint);font-family:var(--font-mono);font-size:12.5px;padding:8px 0; }
.launch-card-actions { display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line-strong); }
.launch-action-btn { display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg);font-family:var(--font-sans);font-size:12.5px;color:var(--fg-muted);text-decoration:none;font-weight:500; }
.launch-action-btn:hover { border-color:var(--accent);color:var(--accent); }
.desc-original summary { cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--line-strong);border-radius:6px;background:var(--bg);font-weight:500;list-style:none;color:var(--fg-muted);font-family:var(--font-sans);font-size:12.5px; }
.desc-original summary::-webkit-details-marker { display:none; }
.desc-original summary::before { content:'▸';font-family:var(--font-mono);transition:transform 0.15s ease; }
.desc-original[open] summary::before { transform:rotate(90deg); }
.desc-original summary:hover { border-color:var(--accent);color:var(--accent); }
.desc-original-body { display:none;flex-basis:100%;margin:0;padding:12px 14px;background:var(--bg);border-left:2px solid var(--line-strong);border-radius:0 6px 6px 0;color:var(--fg-dim);font-size:13px;line-height:1.65; }
.desc-original[open] ~ .desc-original-body { display:block; }

@keyframes pulse { 0%,100%{opacity:1;transform:scale(1);} 50%{opacity:0.3;transform:scale(0.7);} }

@media (max-width: 900px) {
  .launch-main { grid-template-columns:1fr; }
  .launch-title-block h1 { font-size:32px; }
}
/* 手机(≤640px):收紧详情页横向留白 */
@media (max-width: 640px) {
  .launch-main { padding:18px 16px 0; }
  .launch-card { padding:16px 16px; }
  .launch-title-block h1 { font-size:26px; }
}
