/* Rocket detail · 主体主题感知,hero 始终深色 */
/* .rocket-hero 的深色 scope 覆盖已移到 globals.css,避免客户端跳转时 token 短暂未加载 */

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

.rocket-hero { background:linear-gradient(180deg,#0e0d0b 0%,#0b0c0e 100%);border-bottom:1px solid var(--line-strong);padding:48px 32px 48px;position:relative;overflow:hidden; }
.rocket-hero.has-image { background:var(--bg); }
.rocket-hero::after { content:'';position:absolute;inset:0;z-index:0;background-image:radial-gradient(1px 1px at 8% 24%,#fff5,transparent),radial-gradient(1px 1px at 22% 78%,#fff3,transparent),radial-gradient(1px 1px at 64% 12%,#fff4,transparent),radial-gradient(1px 1px at 88% 56%,#fff2,transparent),radial-gradient(1px 1px at 92% 88%,#fff5,transparent);pointer-events:none; }
.hero-bg { position:absolute;inset:0;z-index:0;opacity:0.58;filter:saturate(0.9) contrast(1.08); }
.hero-bg img { position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center right;display:block; }
.hero-bg::after { content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0b0c0e 0%,rgba(11,12,14,0.9) 40%,rgba(11,12,14,0.48) 100%),linear-gradient(180deg,rgba(14,13,11,0.38) 0%,#0b0c0e 100%); }
.rocket-hero.fallback-image .hero-bg { opacity:0.72;filter:saturate(0.95) contrast(1.05); }
.rocket-hero .hero-inner { max-width:1320px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:40px;align-items:start;position:relative;z-index:1; }
.rocket-hero .eyebrow { font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:12px;display:flex;gap:10px;align-items:center;flex-wrap:wrap; }
.rocket-hero .eyebrow-link { color:inherit;text-decoration:none;border-bottom:1px solid transparent;transition:color 150ms,border-color 150ms; }
.rocket-hero .eyebrow-link:hover { color:var(--fg);border-bottom-color:currentColor; }
.rocket-hero h1 { font-family:var(--font-display);font-size:88px;font-weight:700;margin:0 0 6px;letter-spacing:-0.03em;line-height:0.95;color:var(--fg); }
.hero-tags { display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px; }
.htag { font-family:var(--font-mono);font-size:12px;padding:5px 10px;border-radius:4px;border:1px solid var(--line-strong);color:var(--fg-dim);letter-spacing:0.04em; }
.htag.active { color:#34d4a0;border-color:rgba(16,185,129,0.3);background:rgba(16,185,129,0.08); }
.rocket-hero .lede { color:#c5c9d0;font-size:16px;line-height:1.65;max-width:700px;margin:0;text-wrap:pretty; }

.hero-stats { background:rgba(255,255,255,0.025);border:1px solid var(--line-strong);border-radius:14px;padding:20px 22px;backdrop-filter:blur(4px); }
.hs-row { display:grid;grid-template-columns:1fr 1fr;gap:14px 20px; }
.hero-stats .hs-cell { padding:0;background:transparent;border:none;border-radius:0; }
.hero-stats .hs-cell .lb { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:0.06em;text-transform:uppercase;margin-bottom:4px; }
.hero-stats .hs-cell .v { font-family:var(--font-mono);font-size:22px;font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums;line-height:1.1;letter-spacing:0; }
.hero-stats .hs-cell .v .u { font-size:12px;color:var(--fg-faint);font-weight:400;margin-left:3px;letter-spacing:0.04em; }
.hero-stats .hs-cell .v.accent { color:var(--accent); }

.rocket-main { width:calc(100% - 64px);max-width:1320px;margin:28px auto 0;padding:0;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:28px;align-items:start; }
.rocket-left { min-width:0; }
.rocket-card,
.side-card { background:var(--bg-elev);border:1px solid var(--line-strong);border-radius:14px;padding:22px 26px;margin-bottom:20px; }
.side-card { padding:18px 20px;margin-bottom:16px; }
.sec-h { display:flex;align-items:baseline;gap:12px;margin:0 0 18px; }
.sec-h h2 { font-family:var(--font-display);font-size:22px;font-weight:600;margin:0;letter-spacing:-0.01em;color:var(--fg); }
.sec-h .meta { margin-left:auto;font-family:var(--font-mono);font-size:12px;color:var(--fg-faint);letter-spacing:0.04em;text-align:right; }

.rocket-overview p { font-size:15px;line-height:1.78;color:var(--fg);margin:0;text-wrap:pretty; }
/* .ov-links 基础样式在 globals.css;此处只加火箭页专属的分隔线。 */
.rocket-overview .ov-links { padding-top:14px;border-top:1px dashed var(--line-strong); }

.spec-matrix { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px; }
.spec-tile { background:var(--bg);border:1px solid var(--line-strong);border-radius:10px;padding:14px 16px;min-height:76px; }
.spec-tile .lb { font-family:var(--font-mono);font-size:12px;color:var(--fg-faint);letter-spacing:0.04em;text-transform:uppercase;margin-bottom:6px; }
.spec-tile .v { font-family:var(--font-mono);font-size:16px;font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums;line-height:1.25;overflow-wrap:anywhere; }
.spec-tile .v .u { font-size:11px;color:var(--fg-faint);font-weight:400;margin-left:2px; }

.flights-stats { display:flex;gap:24px;flex-wrap:wrap;margin-bottom:18px; }
.flights-stats .fs { display:flex;align-items:baseline;gap:6px; }
.flights-stats .fs .v { font-family:var(--font-mono);font-size:24px;font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums; }
.flights-stats .fs .v.ok { color:#34d4a0; }
.flights-stats .fs .v.fail { color:#f07498; }
.flights-stats .fs .lb { font-family:var(--font-mono);font-size:12px;color:var(--fg-faint);letter-spacing:0.04em;text-transform:uppercase; }
.year-chart-wrap { padding:18px 0 20px;border-bottom:1px dashed var(--line-strong);margin-bottom:18px; }
.ycw-head { display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:10px; }
.ycw-head h4 { font-family:var(--font-display);font-size:15px;font-weight:600;margin:0;color:var(--fg); }
.ycw-legend { display:flex;gap:14px;font-family:var(--font-mono);font-size:12px;color:var(--fg-faint); }
.ycw-legend .lg { display:flex;align-items:center;gap:5px; }
.ycw-legend .sw { width:11px;height:8px;border-radius:1.5px;display:inline-block; }
.ycw-legend .sw.ok { background:var(--success); }
.ycw-legend .sw.fail { background:var(--danger); }
.year-chart { display:grid;gap:5px;padding:0;align-items:end;justify-content:start; }
.ybar-col { display:grid;grid-template-rows:18px 220px 20px;gap:6px;align-items:end;justify-items:center;min-width:0;position:relative; }
.ybar-col .ct { font-family:var(--font-mono);font-size:12px;color:var(--fg-dim);font-weight:600;line-height:1;align-self:end; }
.ybar { width:100%;display:flex;flex-direction:column-reverse;justify-content:flex-start;border-radius:2px 2px 0 0;overflow:hidden;background:transparent;align-self:end;min-height:2px; }
.ybar i { display:block;width:100%; }
.ybar i.ok { background:linear-gradient(180deg,var(--success),var(--success-dark)); }
.ybar i.fail { background:var(--danger); }
.ybar-col:hover .ybar { filter:brightness(1.15); }
.ybar-col .yr { font-family:var(--font-mono);font-size:12px;color:var(--fg-faint);letter-spacing:0.04em;align-self:start; }
.ybar-col.zero .ct { color:var(--fg-muted); }
.ybar-col.zero .ybar { background:var(--bg-inset); }
.ybar-col.this .ct { color:var(--accent);font-weight:700; }
.ybar-col.this .yr { color:var(--accent);font-weight:700; }
.ybar-tip { position:absolute;bottom:calc(100% + 4px);left:50%;transform:translateX(-50%);background:var(--bg);border:1px solid var(--line-strong);border-radius:8px;padding:8px 12px;font-family:var(--font-sans);font-size:12px;color:var(--fg);white-space:nowrap;box-shadow:0 6px 24px rgba(0,0,0,0.6);opacity:0;pointer-events:none;transition:opacity 120ms;z-index:10; }
.ybar-tip::after { content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--line-strong); }
.ybar-col:hover .ybar-tip { opacity:1; }
.ybar-tip .tip-yr { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);margin-bottom:4px;letter-spacing:0.04em; }
.ybar-tip .tip-row { display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11.5px;color:var(--fg-dim);line-height:1.5; }
.ybar-tip .tip-row b { color:var(--fg);font-weight:600;font-family:var(--font-mono);font-variant-numeric:tabular-nums; }
.ybar-tip .tip-row .ok { color:var(--success); }
.ybar-tip .tip-row .fail { color:var(--danger); }
.ybar-tip .tip-rate { margin-top:3px;padding-top:3px;border-top:1px dashed var(--line);color:var(--fg-faint); }
.ybar-tip .tip-empty { color:var(--fg-muted);font-style:italic; }
.mission-table-wrap { overflow-x:auto; }
.miss-table { width:100%;min-width:760px;border-collapse:collapse; }
.miss-table th { text-align:left;font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:0.06em;text-transform:uppercase;padding:8px 12px;border-bottom:1px solid var(--line-strong);font-weight:500;white-space:nowrap; }
.miss-table td { padding:12px;border-bottom:1px solid var(--line);font-size:14px;vertical-align:middle; }
.miss-table tr:hover td { background:rgba(0,0,0,0.03); }
.miss-table tr:last-child td { border-bottom:none; }
.miss-table .mt-date { font-family:var(--font-mono);color:var(--fg-dim);font-variant-numeric:tabular-nums;white-space:nowrap; }
.miss-table .mt-name { font-weight:600;color:var(--fg); }
.miss-table .mt-link { display:block;color:inherit;text-decoration:none; }
.miss-table .mt-title { display:block;color:var(--fg);transition:color 120ms; }
.miss-table .mt-site { display:block;font-family:var(--font-mono);font-size:12px;font-weight:400;color:var(--fg-faint);margin-top:2px; }
.miss-table .mt-link:hover .mt-title,
.miss-table tr:hover .mt-link .mt-title { color:var(--accent); }
.miss-table .mt-cb { font-family:var(--font-mono);font-size:13px;color:var(--fg-dim); }
.rocket-side { display:flex;flex-direction:column;gap:0; }
.side-compare { background:var(--bg-elev);border:1px solid var(--line-strong);border-radius:14px;padding:18px 20px;margin-bottom:16px;display:flex;flex-direction:column;gap:12px; }
.side-compare-h { display:flex;align-items:center;justify-content:space-between; }
.side-compare-h h3 { font-family:var(--font-display);font-size:15px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px;color:var(--fg); }
.side-compare-h .ct { font-family:var(--font-mono);font-size:11px;color:var(--accent);background:var(--accent-tint-12);padding:2px 7px;border-radius:4px;font-weight:600; }
.side-compare-h .hint { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint); }
.side-compare-btn { width:100%;padding:11px 14px;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;font-family:var(--font-sans);font-size:14px;font-weight:700;cursor:pointer;transition:filter 120ms,background 120ms,color 120ms; }
.side-compare-btn:hover:not(:disabled) { filter:brightness(1.06); }
.side-compare-btn.on { background:var(--accent-soft-bg);border-color:var(--accent);color:var(--accent); }
.side-compare-btn:disabled { opacity:0.5;cursor:not-allowed; }
.side-compare-list { display:flex;flex-direction:column;gap:8px; }
.side-compare-item { display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg);border:1px solid var(--line-faint);border-radius:8px; }
.side-compare-item .nm { flex:1;min-width:0;font-size:13px;font-weight:600;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.side-compare-item .rm { color:var(--fg-dim);font-size:16px;line-height:1;cursor:pointer;background:none;border:none;padding:2px 4px; }
.side-compare-item .rm:hover { color:var(--danger); }
.side-compare-go { display:block;text-align:center;padding:10px;background:var(--accent);color:#fff;border-radius:8px;font-weight:600;font-size:13px;text-decoration:none; }
.side-compare-go:hover { filter:brightness(1.06); }
.side-compare-hint { text-align:center;font-size:12px;color:var(--fg-faint); }
.side-compare-clear { background:none;border:none;color:var(--fg-dim);font-size:12px;cursor:pointer;font-family:var(--font-mono);align-self:center; }
.side-compare-clear:hover { color:var(--accent); }
.side-card h3 { font-family:var(--font-display);font-size:15px;font-weight:600;margin:0 0 12px;color:var(--fg);display:flex;align-items:center;justify-content:space-between;gap:8px; }
.kv { display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px dashed var(--line-strong);font-size:14px; }
.kv:last-child { border-bottom:none; }
.kv .k { color:var(--fg-faint);font-family:var(--font-mono);font-size:12px;letter-spacing:0.04em;text-transform:uppercase;flex-shrink:0; }
.kv .v { color:var(--fg);font-weight:500;font-family:var(--font-mono);font-size:13.5px;text-align:right;font-variant-numeric:tabular-nums; }
.kv-site { display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line-strong);white-space:nowrap;overflow:hidden; }
.kv-site:last-child { border-bottom:none; }
.kv-site .k { font-family:var(--font-display);font-size:13px;color:var(--fg);font-weight:500;flex-shrink:0; }
.kv-site .v { font-family:var(--font-mono);font-size:12px;color:var(--fg-faint);min-width:0;overflow:hidden;text-overflow:ellipsis;text-align:right; }
.kv-link,
.side-link { color:inherit;text-decoration:none;border-bottom:1px dashed transparent;transition:color 120ms,border-color 120ms; }
.kv-link:hover,
.side-link:hover { color:var(--accent);border-bottom-color:var(--accent); }
.upcoming { background:linear-gradient(135deg,rgba(255,106,26,0.1),rgba(255,106,26,0.02));border:1px solid rgba(255,106,26,0.3);border-radius:14px;padding:18px 20px;margin-bottom:16px; }
.upcoming .lb { font-family:var(--font-mono);font-size:11px;color:var(--accent);letter-spacing:0.12em;text-transform:uppercase;margin-bottom:8px; }
.upcoming h4 { font-family:var(--font-display);font-size:17px;font-weight:700;margin:0 0 4px;letter-spacing:-0.01em;color:var(--fg); }
.upcoming .when { font-family:var(--font-mono);font-size:13px;color:var(--fg-muted);margin-bottom:12px;line-height:1.45; }
.upcoming .countdown { display:flex;gap:10px;margin-bottom:14px; }
.upcoming .cd { background:rgba(11,12,14,0.85);border-radius:6px;padding:8px 0;flex:1;text-align:center; }
.upcoming .cd .n { font-family:var(--font-mono);font-size:20px;font-weight:700;color:var(--accent-fg);font-variant-numeric:tabular-nums;line-height:1; }
.upcoming .cd .lb { font-family:var(--font-sans);font-size:10.5px;color:rgba(255,255,255,0.7);margin:4px 0 0;letter-spacing:0.06em;text-transform:uppercase; }
.btn-up { display:block;padding:10px;background:var(--accent);color:var(--accent-fg);text-align:center;font-size:14px;font-weight:600;border-radius:8px;text-decoration:none; }
.btn-up:hover { background:var(--accent-hover); }
@media (max-width: 1120px) {
  .rocket-hero .hero-inner,
  .rocket-main {
    grid-template-columns:1fr;
  }
}

@media (max-width: 760px) {
  .rocket-hero {
    padding-left:18px;
    padding-right:18px;
  }
  .rocket-crumb,
  .rocket-main {
    width:calc(100% - 36px);
  }
  .rocket-hero h1 { font-size:52px; }
  .hero-bg { opacity:0.34; }
  .hero-bg img { object-position:center; }
  .spec-matrix { grid-template-columns:1fr; }
  .flights-stats { gap:16px; }
  .rocket-card { padding:18px 18px; }
}

@media (max-width: 900px) {
  .rocket-root .nav { display:none; }
  .rocket-root .clocks { margin-left:auto; }
}
