/* CHXLive production contract. No network fonts, generated controls or JS required.
   Latin faces are static weights, not a fictitious variable range. Arial only
   supplies its real regular face; missing Medium/Semibold use the system stack.
   Curly quotes (U+2018–201D) deliberately remain in the Chinese fallback. */
@font-face {
  font-family: "CHX Latin";
  src: local("Inter Regular"), local("Inter-Regular"), local("Arial");
  font-style: normal;
  font-weight: 400;
  size-adjust: 102%;
  unicode-range: U+0020-007E, U+00A0-024F;
}
@font-face {
  font-family: "CHX Latin";
  src: local("Inter Medium"), local("Inter-Medium");
  font-style: normal;
  font-weight: 500;
  size-adjust: 102%;
  unicode-range: U+0020-007E, U+00A0-024F;
}
@font-face {
  font-family: "CHX Latin";
  src: local("Inter SemiBold"), local("Inter-SemiBold");
  font-style: normal;
  font-weight: 600;
  size-adjust: 102%;
  unicode-range: U+0020-007E, U+00A0-024F;
}

:root {
  color-scheme: light;
  --bg: #fafaf7;
  --surface: #fff;
  --inset: #f4f3ee;
  --fg: #15171c;
  --strong: #0e0d0b;
  --muted: #54514a;
  --faint: #706c62;
  --line: #eeece5;
  --line-strong: #dcd8ce;
  --accent: #ff6a1a;
  --accent-hover: #e65c13;
  --accent-ink: #b8420b;
  --accent-soft: #fff4ec;
  --zone-muted: #f1f0e9;
  --zone-soft: #f6f5f0;
  --zone-rule: #dfdcd2;
  --selection: #ffd9c2;
  --good: #047857;
  --tbc: #805d00;
  --tbd: #b8420b;
  --live: #be123c;
  --fail: #9f1239;
  --good-bg: #e9f5ef;
  --tbc-bg: #fbf2dd;
  --tbd-bg: #fceee4;
  --fail-bg: #fbe9ed;
  --weekend: #f0f0ee;
  --chip-hover: #efeee8;
  --next-ink: #c2410c;
  --decoration: #a8a49a;
  --now-rule: #e8c9b5;
  --dot-ring: rgba(255,255,255,.75);
  --orbit-border: rgba(255,106,26,.25);
  --orbit-ripple: rgba(255,106,26,.6);
  --hover-tint: rgba(255,106,26,.045);
  --calendar-hover: rgba(255,106,26,.05);
  --next-start: rgba(255,106,26,.065);
  --next-end: rgba(255,106,26,.018);
  --on-accent: #241b13;
  --text: "CHX Latin", "PingFang SC", "Noto Sans CJK SC", "Microsoft YaHei", "Source Han Sans SC", sans-serif;
  font-family: var(--text);
  font-synthesis: none;
}

/* CSS owns the system fallback, even without JS. Older engines retain the
   complete light palette above rather than invalid custom-property colors. */
@supports (color: light-dark(white, black)) {
  :root {
    color-scheme: light dark;
    --bg: light-dark(#fafaf7, #141619);
    --surface: light-dark(#fff, #1a1d20);
    --inset: light-dark(#f4f3ee, #24272a);
    --fg: light-dark(#15171c, #e7e7e2);
    --strong: light-dark(#0e0d0b, #f5f4ef);
    --muted: light-dark(#54514a, #b9b9b1);
    --faint: light-dark(#706c62, #a1a29a);
    --line: light-dark(#eeece5, #303438);
    --line-strong: light-dark(#dcd8ce, #454a4e);
    --accent: light-dark(#ff6a1a, #ff8a4a);
    --accent-hover: light-dark(#e65c13, #ffa16a);
    --accent-ink: light-dark(#b8420b, #ffae7d);
    --accent-soft: light-dark(#fff4ec, #30231d);
    --zone-muted: light-dark(#f1f0e9, #222629);
    --zone-soft: light-dark(#f6f5f0, #1b1e21);
    --zone-rule: light-dark(#dfdcd2, #3b4043);
    --selection: light-dark(#ffd9c2, #59321e);
    --good: light-dark(#047857, #6cdbad);
    --tbc: light-dark(#805d00, #efc96d);
    --tbd: light-dark(#b8420b, #ffae7d);
    --live: light-dark(#be123c, #ff8ca8);
    --fail: light-dark(#9f1239, #ff8ca8);
    --good-bg: light-dark(#e9f5ef, #18332b);
    --tbc-bg: light-dark(#fbf2dd, #352d1c);
    --tbd-bg: light-dark(#fceee4, #38271e);
    --fail-bg: light-dark(#fbe9ed, #3a222b);
    --weekend: light-dark(#f0f0ee, #1c1f22);
    --chip-hover: light-dark(#efeee8, #303538);
    --next-ink: light-dark(#c2410c, #ffae7d);
    --decoration: light-dark(#a8a49a, #969890);
    --now-rule: light-dark(#e8c9b5, #6c4530);
    --dot-ring: light-dark(rgba(255,255,255,.75), rgba(20,22,25,.85));
    --orbit-border: light-dark(rgba(255,106,26,.25), rgba(255,138,74,.4));
    --orbit-ripple: light-dark(rgba(255,106,26,.6), rgba(255,138,74,.8));
    --hover-tint: light-dark(rgba(255,106,26,.045), rgba(255,138,74,.08));
    --calendar-hover: light-dark(rgba(255,106,26,.05), rgba(255,138,74,.08));
    --next-start: light-dark(rgba(255,106,26,.065), rgba(255,138,74,.12));
    --next-end: light-dark(rgba(255,106,26,.018), rgba(255,138,74,.025));
  }
  :root[data-theme="light"] { color-scheme: light; }
  :root[data-theme="dark"] { color-scheme: dark; }
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--bg); -webkit-text-size-adjust: 100%; scrollbar-gutter: stable; }
body {
  margin: 0;
  color: var(--fg);
  background: var(--bg);
  font-size: 15px;
  line-height: 1.7;
  overflow-wrap: anywhere;
  word-break: normal;
  -webkit-font-smoothing: antialiased;
}
[hidden] { display: none !important; }
h1, h2, h3, h4 { color: var(--strong); font-weight: 600; }
h1 { margin: 0; font-size: clamp(30px, 4vw, 40px); line-height: 1.3; }
h2 { margin: 0 0 16px; font-size: 22px; line-height: 1.4; }
h3 { margin: 0 0 12px; font-size: 18px; line-height: 1.45; }
p { margin: 0 0 16px; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 4px; }
a:hover { color: var(--accent-ink); }
strong, b { font-weight: 600; }
small { font-size: 12px; line-height: 1.6; }
img, svg { max-inline-size: 100%; vertical-align: middle; }
img { height: auto; }
figure { margin: 0; min-width: 0; }
figcaption { margin-top: 8px; color: var(--muted); font-size: 12px; line-height: 1.6; }
button, input, select, textarea { max-width: 100%; min-width: 0; font: inherit; color: inherit; }
button, select, input, textarea {
  border: 1px solid var(--line-strong);
  border-radius: 8px;
  background: var(--surface);
  padding: 8px 12px;
  line-height: 1.5;
}
button, select { cursor: pointer; }
button { min-height: 44px; font-weight: 500; }
button:hover:not(:disabled) { background: var(--accent-soft); border-color: var(--accent-hover); }
:disabled { cursor: not-allowed; opacity: .6; }
input, select { min-height: 44px; }
textarea { width: 100%; resize: vertical; }
::placeholder { color: var(--faint); opacity: 1; }
:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 4px; }
::selection { color: var(--strong); background: var(--selection); }

.shell { width: calc(100% - 48px); max-width: 960px; margin-inline: auto; min-width: 0; }
.site-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 24px;
  min-height: 72px;
  padding-block: 12px;
  border-bottom: 1px solid var(--line);
}
/* Supports header.shell as well as header > .shell. */
.site-header > .shell { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 24px; }
.brand { display: inline-flex; align-items: center; gap: 10px; min-width: 0; text-decoration: none; }
.brand img, .brand svg { display: block; width: 32px; height: 32px; flex: 0 0 32px; object-fit: contain; }
.brand-name { font-size: 18px; line-height: 1.4; font-weight: 600; }
.brand-name small { margin-inline-start: 6px; color: var(--muted); font-size: 10px; font-weight: 400; letter-spacing: .08em; }
.intro { padding-block: 40px 32px; }
.intro p:not(.eyebrow) { max-width: 42em; margin: 12px 0 0; color: var(--muted); font-size: 14px; line-height: 1.75; }
.eyebrow { margin: 0 0 10px; color: var(--muted); font-size: 11px; font-weight: 500; line-height: 1.5; letter-spacing: .08em; }

.filters, .month-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin: 0; padding-block: 16px; border-block: 1px solid var(--line); }
.filters label { display: grid; gap: 4px; min-width: 0; font-size: 12px; color: var(--muted); }
.filters input, .filters select { width: 100%; color: var(--fg); }
.filters > * { min-width: 0; max-width: 100%; }
.filters a, .month-nav a { display: inline-flex; align-items: center; min-height: 44px; padding: 6px 0; }
.month-nav { justify-content: space-between; }
.month-nav h1, .month-nav h2, .month-nav p { margin: 0; font-size: 22px; line-height: 1.4; }
.month-nav time { font-variant-numeric: tabular-nums; }

/* Preferred row structure: li.launch-row > .launch-time + .launch-content
   + .status. Status can instead be nested inside .launch-content. */
.timeline { margin: 0; padding: 0; list-style: none; }
.timeline ul { margin: 0; padding: 0; list-style: none; }
.timeline > h2, .timeline > li > h2, .timeline > section > h2 { margin: 24px 0 12px; font-size: 18px; }
.launch-row {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr) auto;
  align-items: start;
  gap: 16px;
  padding-block: 20px;
  border-bottom: 1px solid var(--line);
  min-width: 0;
}
.launch-row > * { min-width: 0; max-width: 100%; }
.launch-time { font-size: 24px; font-weight: 500; line-height: 1.3; font-variant-numeric: tabular-nums; }
.launch-time time { font-variant-numeric: tabular-nums; }
.launch-time small, .launch-time span { display: block; margin-top: 6px; color: var(--muted); font-size: 11px; font-weight: 400; line-height: 1.5; }
.launch-content { min-width: 0; display: flow-root; }
.launch-title { margin: 0; font-size: 17px; font-weight: 600; line-height: 1.45; }
.launch-title a { text-decoration: none; }
.launch-title a:hover { text-decoration: underline; }
.launch-meta { display: flex; flex-wrap: wrap; gap: 2px 12px; margin: 6px 0 0; color: var(--muted); font-size: 12px; line-height: 1.65; }
.launch-meta > * { min-width: 0; }
.launch-content > .status { margin-top: 8px; }
.status { display: inline-block; color: var(--muted); font-size: 12px; font-weight: 500; line-height: 1.6; }
.launch-row > .status { margin-top: 4px; text-align: end; max-width: 10em; }
/* Both .status.good and .status.status-good are accepted. Text labels must
   name the state: color alone is not an accessible status indication.
   Go/Success = good; TBC/Hold/Partial Failure = tbc; TBD = tbd. */
.status.good, .status.status-good { color: var(--good); }
.status.tbc, .status.status-tbc { color: var(--tbc); }
.status.tbd, .status.status-tbd { color: var(--tbd); }
.status.live, .status.status-live { color: var(--live); }
.status.fail, .status.status-fail { color: var(--fail); }
.status.sched, .status.status-sched { color: var(--muted); }
.empty-state { padding-block: 40px; color: var(--muted); border-bottom: 1px solid var(--line); }
.empty-state p:last-child { margin-bottom: 0; }

.detail-header { padding-block: 40px 24px; border-bottom: 1px solid var(--line); }
.detail-header .launch-meta { margin-top: 16px; }
.detail-header .status { margin-top: 12px; }
/* dl.detail-grid uses direct dt/dd pairs; no wrapper elements required. */
.detail-grid { display: grid; grid-template-columns: minmax(100px, 160px) minmax(0, 1fr); gap: 0 24px; margin: 24px 0; }
.detail-grid dt, .detail-grid dd { min-width: 0; margin: 0; padding-block: 12px; border-bottom: 1px solid var(--line); line-height: 1.7; }
.detail-grid dt { color: var(--muted); font-size: 13px; }
.detail-grid dd { font-size: 14px; }
.detail-description { max-width: 72ch; margin-block: 32px; font-size: 15px; line-height: 1.75; }
.detail-description ul, .detail-description ol { padding-inline-start: 24px; }
.detail-description pre, .plain-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.task-image { display: block; width: 100%; max-width: 640px; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 6px; margin-block: 24px; }
figure.task-image { aspect-ratio: auto; }
figure.task-image img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 6px; }

/* Keep real titles and seven weekday columns. Narrow screens scroll only
   this labelled region, never squeeze each day into unreadable 40px strips. */
.calendar-scroll { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; margin-block: 24px; }
.calendar-scroll-note { display: none; color: var(--muted); font-size: 12px; }
.month-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); min-width: 770px; gap: 1px; margin: 0; padding: 1px; list-style: none; background: var(--line); }
@media (max-width: 820px) { .calendar-scroll-note { display: block; } }
.day-cell { min-width: 0; min-height: 112px; padding: 10px 8px; background: var(--bg); }
.day-cell[aria-current="date"] { background: var(--accent-soft); }
.day-number { display: block; font-size: 13px; font-weight: 500; line-height: 1.5; font-variant-numeric: tabular-nums; }
.day-launch { display: block; margin-top: 8px; font-size: 12px; line-height: 1.55; overflow-wrap: anywhere; }
.day-launch time { display: block; white-space: nowrap; color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.error-page { max-width: 640px; min-height: 40vh; padding-block: 64px; }
.error-page p { margin-top: 16px; color: var(--muted); }
.turbo-progress-bar { height: 3px; background: var(--accent); }
.skip-link { position: fixed; top: -10rem; left: 12px; z-index: 100; padding: 8px 16px; background: var(--surface); color: var(--fg); border: 2px solid var(--accent); }
.skip-link:focus { top: 12px; }
.weekday { padding-block: 8px; text-align: center; font-size: 12px; color: var(--muted); border-bottom: 1px solid var(--line); }
.uncertain-plans { margin-top: 32px; }
.uncertain-plans > p { color: var(--muted); font-size: 13px; }

/* Display preferences never change the Beijing date groups or month grid. */
.date-group { margin-block: 28px 12px; min-width: 0; }
.date-group > h2, h2.date-group { margin-block: 0 12px; font-size: 18px; }
.row-thumbnail {
  float: right;
  display: block;
  width: 96px;
  max-width: 32%;
  margin: 0 0 8px 16px;
  border-radius: 6px;
}
img.row-thumbnail, .row-thumbnail img { aspect-ratio: 4 / 3; object-fit: cover; }
.row-thumbnail img { display: block; width: 100%; border-radius: inherit; }
html:not([data-thumbnails="true"]) .row-thumbnail { display: none; }
.display-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 16px;
  min-width: 0;
  margin-block: 16px;
}
.display-controls { padding-block: 12px; color: var(--muted); font-size: 12px; border-bottom: 1px solid var(--line); }
.display-controls > * { min-width: 0; max-width: 100%; }
.display-controls label { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 44px; }
.display-controls select { color: var(--fg); }
.display-controls input[type="checkbox"] { flex: 0 0 20px; width: 20px; height: 20px; min-height: 20px; margin: 0; padding: 0; accent-color: var(--accent-ink); }
.display-controls p, .display-controls > small { flex-basis: 100%; margin: 0; }
.next-launch { margin-block: 24px; padding: 20px; border: 1px solid var(--line); border-inline-start: 3px solid var(--accent); border-radius: 6px; background: var(--surface); min-width: 0; }
.next-launch h2 { margin-bottom: 10px; font-size: 18px; }
.next-launch p:last-child { margin-bottom: 0; }
[data-countdown-iso] { font-variant-numeric: tabular-nums; }
.detail-extra { margin-block: 32px; min-width: 0; }
.detail-extra h2 { font-size: 20px; }
.detail-extra ul, .detail-extra ol { padding-inline-start: 24px; }
.detail-extra pre { max-width: 100%; white-space: pre-wrap; overflow-wrap: anywhere; }
.detail-extra table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; }
.detail-extra th, .detail-extra td { padding: 8px; border-bottom: 1px solid var(--line); text-align: start; }
.window-range { color: var(--muted); font-size: 13px; line-height: 1.7; font-variant-numeric: tabular-nums; }
.window-range time { display: inline; }
.image-attribution { margin-block: 8px 24px; color: var(--muted); font-size: 12px; line-height: 1.7; }
.updates { margin-block: 24px; padding: 0; list-style: none; }
.update-row { display: grid; grid-template-columns: minmax(100px, 160px) minmax(0, 1fr); gap: 8px 24px; padding-block: 16px; border-bottom: 1px solid var(--line); }
.update-row > * { min-width: 0; margin: 0; }
.update-row time { color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.update-row p:last-child { margin-bottom: 0; }
.pagination, .pagination ul { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 16px; }
.pagination { margin-block: 28px; }
.pagination ul { padding: 0; margin: 0; list-style: none; }
.pagination a, .pagination span { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 6px 10px; }
.pagination [aria-current="page"] { color: var(--accent-ink); background: var(--accent-soft); border-radius: 6px; }
.pagination [aria-disabled="true"] { color: var(--muted); text-decoration: none; }
.sitemap-note { margin-block: 20px; color: var(--muted); font-size: 12px; line-height: 1.7; }
main[aria-busy="true"] { cursor: progress; }

@media (max-width: 600px) {
  .display-controls { gap: 8px 12px; }
  .row-thumbnail { width: 72px; margin-inline-start: 10px; }
  .next-launch { padding: 16px; }
  .update-row { grid-template-columns: minmax(0, 1fr); gap: 6px; }
  .shell { width: calc(100% - 32px); }
  .site-header { min-height: 64px; gap: 4px 16px; }
  .intro { padding-block: 28px 24px; }
  .launch-row { grid-template-columns: 72px minmax(0, 1fr); gap: 6px 12px; padding-block: 16px; }
  .launch-time { grid-column: 1; grid-row: 1 / span 2; font-size: 22px; }
  .launch-time time[data-time-precision="Second"] { font-size: 16px; }
  .launch-content { grid-column: 2; }
  .launch-title { font-size: 16px; }
  .launch-row > .status { grid-column: 2; margin: 0; max-width: 100%; text-align: start; }
  .launch-meta { gap: 2px 8px; }
  .detail-header { padding-block: 28px 20px; }
  .detail-grid { grid-template-columns: 80px minmax(0, 1fr); column-gap: 16px; }
  .filters { align-items: end; }
  .filters label { flex: 1 1 140px; }
  .day-cell { min-height: 88px; padding: 8px 4px; }
  .day-launch { font-size: 12px; }
  .day-launch time { font-size: 11px; }
}
@media (max-width: 360px) {
  .shell { width: calc(100% - 24px); }
  .launch-row { grid-template-columns: 64px minmax(0, 1fr); column-gap: 8px; }
  .launch-time { font-size: 20px; }
  .launch-time time[data-time-precision="Second"] { font-size: 14px; }
  .day-cell { padding-inline: 2px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
  .day-cell[aria-current="date"] { outline: 2px solid Highlight; outline-offset: -2px; }
}

/* Homepage restoration: final V2.5 cascade, not the older design-token draft.
   These rules deliberately do not alter calendar/detail/error layouts. */
.page-home {
  font-size: 14px;
  line-height: 1.64;
  letter-spacing: -.012em;
  text-rendering: optimizeLegibility;
  /* Match the reference's synthetic bold when only a regular CJK face exists. */
  font-synthesis: weight;
}
.page-home .shell, .page-calendar .shell { width: calc(100% - 72px); max-width: 1000px; }
.page-home a { text-decoration: none; }
.ui-icon { display: inline-block; width: 14px; height: 14px; flex: none; vertical-align: -2px; }
.ui-icon-external { width: 16px; height: 16px; }
/* Shared masthead owns typography as well as geometry; never inherit route
   body settings (notably font synthesis and line-height). */
.landing-header, .site-header-band { font-size: 14px; line-height: 1.64; letter-spacing: -.012em; text-rendering: optimizeLegibility; font-synthesis: weight; }
.landing-header .hero { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 14px 36px; align-items: stretch; padding: 32px 0; }
.landing-header .hero-countdown { margin: 12px 0 0; color: var(--next-ink); font-size: 24px; font-weight: 600; line-height: 1.4; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.landing-header .hero-summary { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; margin: 10px 0 0; max-width: 48em; color: var(--muted); font-size: 13px; line-height: 1.85; }
.landing-header .hero-orbit { margin: 10px 0 0; padding-top: 10px; border-top: 1px solid var(--line); color: var(--faint); font-size: 11px; line-height: 1.75; }
.landing-header .hero-detail { margin: 8px 0 0; }
.landing-header .hero-detail-link { display: inline-flex; align-items: center; gap: 5px; min-height: 24px; color: var(--accent-ink); font-size: 11px; font-weight: 400; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.landing-header .hero-figure { grid-column: 2; grid-row: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; align-self: center; }
.landing-header .hero-image-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; width: 100%; aspect-ratio: 25 / 16; flex: none; min-height: 0; padding: 16px; background: var(--zone-soft); border-block: 1px solid var(--line); color: var(--faint); text-align: center; font-size: 13px; }
.landing-header .hero-image-empty small { max-width: 20em; font-size: 10px; }
.landing-header .hero-copy { min-width: 0; }
.landing-header .kicker { font-size: 10px; color: var(--faint); font-weight: 650; letter-spacing: .11em; margin: 0 0 10px; }
.landing-header .kicker span { color: var(--accent); padding-inline: 3px; }
.landing-header h1 { font-size: clamp(25px, 2.8vw, 35px); font-weight: 690; letter-spacing: -.037em; line-height: 1.31; white-space: normal; min-height: 0; overflow-wrap: anywhere; }
.landing-header h1 a { color: inherit; text-decoration: none; }
.landing-header h1 a:hover { color: var(--accent-ink); }
.landing-header .hero-window { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 8px; margin: 8px 0 0; color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }
/* Hero and calendar popovers share badge states; route styles stay scoped. */
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status { display: inline-block; margin: 0; padding: 1px 6px; border: 0; border-radius: 4px; background: var(--inset); color: var(--muted); font-size: 12px; font-weight: 500; line-height: 1.6; letter-spacing: 0; white-space: nowrap; }
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status.good { background: var(--good-bg); color: var(--good); }
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status.tbc { background: var(--tbc-bg); color: var(--tbc); }
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status.tbd { background: var(--tbd-bg); color: var(--tbd); }
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status.fail { background: var(--fail-bg); color: var(--fail); }
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status.live { background: var(--fail-bg); color: var(--live); }
:is(.landing-header .hero-window, .page-calendar .cal-tip) .status.sched { background: var(--inset); color: var(--muted); }
.landing-header .hero-period { color: var(--accent); font: inherit; letter-spacing: 0; margin-left: 2px; }
.landing-header .lede { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 12px; margin: 11px 0 0; font-size: 13px; line-height: 1.75; color: var(--muted); letter-spacing: 0; max-width: 420px; }
.landing-header .lede > span { min-width: 0; overflow-wrap: anywhere; }
.landing-header .hero-figure img { display: block; width: 100%; height: auto; min-height: 0; flex: none; object-fit: contain; object-position: center; border-radius: 2px; }
.landing-header .hero-figure figcaption { font-size: 10px; color: var(--faint); margin-top: 5px; line-height: 1.55; }
.landing-header .view-switcher { display: flex; align-items: stretch; height: 60px; }
.landing-header .tabs { display: flex; align-items: stretch; gap: 26px; }
/* Equal weights reserve the same link widths when the active tab changes. */
.landing-header .tab { display: flex; align-items: center; position: relative; padding: 0 1px; white-space: nowrap; color: var(--faint); font-size: 13px; font-weight: 650; text-decoration: none; }
.landing-header .tab:hover { color: var(--muted); }
.landing-header .tab[aria-current="page"] { color: var(--fg); }
.landing-header .tab[aria-current="page"]::after { content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 2px; background: var(--accent); }
.page-home .tools { display: flex; align-items: center; gap: 15px; min-width: 0; }
.page-home .display-controls { display: flex; flex-wrap: nowrap; align-items: center; gap: 8px; margin: 0; padding: 0; border: 0; }
.page-home .display-controls { gap: 15px; }
.page-home .display-controls label { flex-wrap: nowrap; gap: 5px; min-height: 30px; white-space: nowrap; font-size: 11px; color: var(--faint); }
.page-home .display-controls .tz { border: 0; background: transparent; max-width: 116px; padding: 4px 0; min-height: 30px; font-size: 11px; color: var(--muted); }
.page-home .display-controls input[type="checkbox"] { width: 12px; height: 12px; min-height: 12px; flex-basis: 12px; accent-color: var(--accent-ink); }
.page-home .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.page-home .heading-line { padding: 24px 0 10px; display: flex; align-items: baseline; justify-content: space-between; gap: 16px; }
.page-home .heading-line h2 { margin: 0; font-size: 18px; line-height: 1.4; font-weight: 670; letter-spacing: -.025em; }
.page-home .heading-line small { font-size: 11px; color: var(--faint); }
.page-home .timeline-section { margin-bottom: 8px; }
.page-home .timeline-heading { padding: 13px 0 8px; display: flex; align-items: baseline; justify-content: space-between; gap: 15px; }
.page-home .timeline-heading h3 { margin: 0; font-size: 14px; font-weight: 660; letter-spacing: 0; line-height: 1.64; flex-shrink: 0; }
.page-home .timeline-heading small { font-size: 11px; color: var(--faint); text-align: right; }
.page-home .recent-section .timeline-heading { padding-top: 1px; }
.page-home .upcoming-section .timeline-heading { padding-top: 4px; }
.page-home .date-group.day-title { display: flex; align-items: baseline; gap: 8px; margin: 0; padding: 11px 0 8px; }
.page-home .day-title h4 { margin: 0; font-size: 12px; font-weight: 620; letter-spacing: 0; color: var(--muted); line-height: 1.64; }
.page-home .day-count { font-size: 10px; letter-spacing: 0; color: var(--decoration); margin-left: auto; }
:is(.page-home, .page-calendar) .launch-row.record { display: grid; grid-template-columns: 86px minmax(0, 1fr) 167px 78px; gap: 15px; align-items: center; min-height: 79px; width: 100%; padding: 12px 14px 13px 0; border: 0; border-top: 1px solid var(--line); background: transparent; text-align: left; color: var(--fg); transition: background .12s; }
:is(.page-home, .page-calendar) .record:hover { background: var(--hover-tint); }
/* Contained next-launch highlight: one full-height rail, no detached timeline dot.
   Insets are deducted from the edge columns so mission text keeps its axis. */
.page-home .record.next-launch { position: relative; isolation: isolate; margin: 0; padding: 14px 14px 14px 16px; grid-template-columns: 70px minmax(0, 1fr) 167px 78px; border-radius: 4px; background: linear-gradient(90deg,var(--next-start),var(--next-end)); }
.page-home .record.next-launch:hover { background: var(--accent-soft); }
.page-home .record.next-launch::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 2px; background: var(--accent); border-radius: 2px; pointer-events: none; }
.page-home .heading-line { min-height: 26px; }
.timeline-tools { display: flex; align-items: center; gap: 10px; }
/* Only time content is inset: the mission column and contained rail stay put. */
:is(.page-home, .page-calendar) .record:not(.next-launch) .time-col { padding-inline-start: 16px; }
:is(.page-home, .page-calendar) .record .time-col { position: relative; align-self: center; grid-column: auto; grid-row: auto; font-size: inherit; line-height: inherit; }
:is(.page-home, .page-calendar) .record .clock { font-size: 24px; font-weight: 640; line-height: 1.06; letter-spacing: -.045em; font-variant-numeric: tabular-nums; }
:is(.page-home, .page-calendar) .record .clock.undetermined { font-size: 15px; color: var(--muted); letter-spacing: 0; }
.page-home .record .clock[data-time-precision="Second"] { font-size: 19px; }
.page-home .next-launch .clock { display: block; color: var(--next-ink); }
.page-home .next-label { display: block; margin-bottom: 6px; color: var(--next-ink); font-size: 9px; font-weight: 550; line-height: 1.3; letter-spacing: .03em; }
.page-home .next-countdown { display: block; margin-top: 7px; color: var(--next-ink); font-size: 16px; font-weight: 500; line-height: 1.5; letter-spacing: 0; font-variant-numeric: tabular-nums; }
.page-home .next-countdown span { font: inherit; font-variant-numeric: tabular-nums; }
:is(.page-home, .page-calendar) .record .time-note { display: block; font-size: 10px; line-height: 1.3; letter-spacing: 0; margin-top: 6px; color: var(--faint); font-weight: 400; }
.page-home .launch-time .time-note span { display: inline; margin: 0; font: inherit; color: inherit; }
:is(.page-home, .page-calendar) .record .main-col { display: flex; align-items: center; gap: 13px; grid-column: auto; }
:is(.page-home, .page-calendar) .record .thumb { float: none; display: block; width: 94px; height: 61px; flex: 0 0 94px; max-width: none; margin: 0; border-radius: 6px; background: var(--inset); overflow: hidden; }
:is(.page-home, .page-calendar) .record .thumb img { display: block; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; border-radius: inherit; }
html:not([data-thumbnails="true"]) :is(.page-home, .page-calendar) .record .thumb { display: none; }
.page-home .record-copy { min-width: 0; }
:is(.page-home, .page-calendar) .record .mission { margin: 0; font-size: 15px; line-height: 1.42; font-weight: 650; letter-spacing: -.013em; overflow-wrap: anywhere; }
:is(.page-home, .page-calendar) .record .subline { display: flex; flex-wrap: wrap; gap: 0 8px; font-size: 11px; line-height: 1.65; margin: 5px 0 0; color: var(--muted); }
:is(.page-home, .page-calendar) .record .precision-note { display: block; font-size: 10px; line-height: 1.5; color: var(--faint); margin-top: 3px; }
:is(.page-home, .page-calendar) .record .place { font-size: 11px; color: var(--faint); line-height: 1.65; }
.page-home .place em { display: none; }
.page-home .record > .status { grid-column: auto; display: flex; align-items: center; justify-content: flex-end; white-space: nowrap; margin: 0; max-width: none; font-size: 11px; font-weight: 590; text-align: right; line-height: 1.6; }
.page-home .status .arr { display: inline-block; flex: none; font-size: 13px; font-weight: 400; line-height: 1; margin-left: 4px; color: var(--decoration); }
.page-home .now-divider { display: flex; align-items: center; gap: 11px; margin: 24px 0 14px; color: var(--next-ink); }
.page-home .now-divider::before, .page-home .now-divider::after { content: ""; height: 1px; background: var(--line); flex: 1; }
.page-home .now-divider::before { max-width: 21px; background: var(--line-strong); }
.page-home .now-orbit { position: relative; width: 18px; height: 18px; flex: 0 0 18px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--orbit-border); border-radius: 50%; background: var(--accent-soft); }
.page-home .now-orbit i { width: 8px; height: 8px; background: var(--accent); display: block; border-radius: 50%; box-shadow: 0 0 0 2px var(--dot-ring); }
/* Only the decorative halo expands. The dot, NOW text and divider stay fixed. */
.page-home .now-orbit::after { content: ""; position: absolute; inset: -1px; border: 1px solid var(--orbit-ripple); border-radius: 50%; opacity: 0; transform: scale(1); pointer-events: none; }
@keyframes now-orbit-ripple {
  0% { opacity: 0; transform: scale(.85); }
  20% { opacity: .65; }
  100% { opacity: 0; transform: scale(1.85); }
}
@media (prefers-reduced-motion: no-preference) {
  .page-home .now-orbit[data-now-attention]::after { animation: now-orbit-ripple 2.2s ease-out 2; }
  .page-home .now-orbit[data-now-attention]:hover::after { animation-play-state: paused; }
}
.page-home .now-center { display: flex; align-items: baseline; gap: 6px; font-size: 12px; font-weight: 650; letter-spacing: 0; white-space: nowrap; }
.page-home .now-center small { color: var(--faint); font-size: 9px; font-weight: 550; letter-spacing: .07em; }
.page-home .note { border-top: 1px solid var(--line); padding: 19px 0 8px; display: flex; gap: 12px; align-items: flex-start; color: var(--faint); font-size: 11px; line-height: 1.8; margin-top: 20px; }
.page-home .note a { color: var(--muted); text-decoration: underline; }

@media (max-width: 920px) {
  .page-home .shell, .page-calendar .shell { width: calc(100% - 52px); }
  .landing-header .hero { grid-template-columns: minmax(0, 1fr) 300px; column-gap: 24px; }
  :is(.page-home, .page-calendar) .launch-row.record { grid-template-columns: 76px minmax(0, 1fr) 115px 78px; gap: 11px; }
  .page-home .record.next-launch { grid-template-columns: 60px minmax(0, 1fr) 115px 78px; }
  :is(.page-home, .page-calendar) .record .thumb { width: 83px; height: 58px; flex-basis: 83px; }
  :is(.page-home, .page-calendar) .record .main-col { gap: 11px; }
}
@media (max-width: 740px) {
  .page-home .shell, .page-calendar .shell { width: calc(100% - 34px); }
  .landing-header .hero { grid-template-columns: minmax(0, 1fr); align-items: start; gap: 14px; padding: 24px 0 22px; }
  .landing-header .hero-figure { grid-column: 1; grid-row: auto; align-self: start; width: 100%; }
  .landing-header .hero-countdown { font-size: 20px; }
  .landing-header .hero-summary { font-size: 12px; line-height: 1.8; }
  .landing-header .hero-orbit { font-size: 10px; }
  .landing-header .hero-image-empty { padding: 10px; gap: 5px; font-size: 11px; }
  .landing-header .hero-image-empty small { font-size: 9px; line-height: 1.5; }
  .landing-header .kicker { font-size: 9px; margin-bottom: 9px; letter-spacing: .04em; }
  .landing-header h1 { font-size: clamp(25px, 7vw, 29px); line-height: 1.29; letter-spacing: -.052em; }
  .landing-header .lede { font-size: 11px; line-height: 1.65; margin-top: 9px; max-width: 225px; }
  .landing-header .desktop-only { display: none; }
  .landing-header .hero-figure img { width: 100%; }
  .landing-header .hero-figure figcaption { display: block; font-size: 9px; line-height: 1.45; overflow-wrap: anywhere; }
  .landing-header .view-switcher { height: 52px; padding-bottom: 9px; }
  .landing-header .tabs { gap: 24px; }
  .page-home .tools { width: 100%; min-height: 33px; gap: 8px; justify-content: space-between; flex-wrap: wrap; }
  .page-home .display-controls { gap: 8px; }
  .page-home .display-controls .tz { max-width: 94px; font-size: 11px; }
  .page-home .display-controls label { font-size: 11px; }
  .page-home .heading-line { padding: 20px 0 6px; }
  .page-home .heading-line h2 { font-size: 16px; }
  .page-home .heading-line small { font-size: 10px; text-align: right; }
  .page-home .timeline-heading { padding: 11px 0 7px; }
  .page-home .timeline-heading h3 { font-size: 13px; }
  .page-home .timeline-heading small { font-size: 10px; }
  .page-home .recent-section .timeline-heading { padding-top: 2px; }
  .page-home .date-group.day-title { padding: 10px 0 8px; }
  :is(.page-home, .page-calendar) .launch-row.record { grid-template-columns: 65px minmax(0, 1fr); grid-template-areas: "time main" "time place"; gap: 1px 8px; min-height: 79px; padding: 11px 12px 12px 0; }
  :is(.page-home, .page-calendar) .record .time-col { grid-area: time; align-self: start; padding-top: 2px; }
  :is(.page-home, .page-calendar) .record .clock { font-size: 20px; }
  :is(.page-home, .page-calendar) .record .clock.undetermined { font-size: 12px; }
  .page-home .record .clock[data-time-precision="Second"] { font-size: 15px; }
  :is(.page-home, .page-calendar) .record .time-note { font-size: 9px; margin-top: 5px; }
  :is(.page-home, .page-calendar) .record .main-col { grid-area: main; align-items: flex-start; gap: 9px; }
  :is(.page-home, .page-calendar) .record .thumb { width: 69px; height: 51px; flex: 0 0 69px; border-radius: 5px; }
  :is(.page-home, .page-calendar) .record .mission { font-size: 13px; line-height: 1.4; font-weight: 660; }
  :is(.page-home, .page-calendar) .record .subline { font-size: 10px; line-height: 1.55; margin-top: 4px; }
  :is(.page-home, .page-calendar) .record .precision-note { font-size: 9px; }
  :is(.page-home, .page-calendar) .record .place { grid-area: place; display: flex; flex-wrap: wrap; gap: 0 7px; align-items: baseline; font-size: 10px; line-height: 1.5; padding-top: 3px; }
  .page-home .place em.status { display: inline; margin-left: auto; font-size: 10px; font-style: normal; white-space: nowrap; }
  .page-home .record > .row-status { display: none; }
  .page-home .place .arr { font-size: 10px; }
  .page-home .record.next-launch { grid-template-columns: 51px minmax(0, 1fr); padding: 13px 12px 13px 14px; }
  .page-home .next-label { font-size: 8.5px; margin-bottom: 5px; }
  .page-home .next-countdown { font-size: 14px; margin-top: 6px; }
  :is(.page-home, .page-calendar) .record:not(.next-launch) .time-col { padding-inline-start: 14px; }
  .page-home .now-divider { margin: 19px 0 10px; gap: 10px; }
  .page-home .now-orbit { width: 16px; height: 16px; flex-basis: 16px; }
  .page-home .now-orbit i { height: 7px; width: 7px; }
  .page-home .now-center { font-size: 11px; }
  .page-home .note { margin-top: 13px; }
}
@media (max-width: 370px) {
  .page-home .shell, .page-calendar .shell { width: calc(100% - 28px); }
  .landing-header .hero { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .landing-header h1 { font-size: 24px; }
  .landing-header .lede { font-size: 10px; }
  .page-home .tools { gap: 6px; }
  .page-home .display-controls .tz { max-width: 83px; }
  .page-home .display-controls, .page-home .display-controls label { gap: 5px; font-size: 10px; }
  :is(.page-home, .page-calendar) .record .thumb { width: 62px; height: 48px; flex-basis: 62px; }
  :is(.page-home, .page-calendar) .record .main-col { gap: 7px; }
  :is(.page-home, .page-calendar) .launch-row.record { grid-template-columns: 60px minmax(0, 1fr); gap: 2px 6px; }
  .page-home .record.next-launch { grid-template-columns: 46px minmax(0, 1fr); }
  .page-home .next-launch .clock[data-time-precision="Second"] { font-size: 13px; }
  :is(.page-home, .page-calendar) .record .clock { font-size: 19px; }
  :is(.page-home, .page-calendar) .record .mission { font-size: 12px; }
}
@media (prefers-reduced-motion: reduce) { :is(.page-home, .page-calendar) .launch-row.record { transition: none; } }
@media (forced-colors: active) {
  .page-home .now-orbit, .page-home .record.next-launch::before { border: 1px solid Highlight; }
  .page-home .now-orbit i { background: Highlight; }
  .page-home .now-orbit[data-now-attention]::after { animation: none; }
  .landing-header .tab[aria-current="page"] { text-decoration: underline; }
}

/* v2.5 alignment for the calendar and detail routes without changing their
   DOM contracts. Home keeps its own .page-home scope and visual gate. */
.page-calendar .shell, .page-detail .shell { max-width: 1000px; }
.page-calendar .site-header, .page-detail .site-header { min-height: 64px; }
.page-calendar .intro, .page-detail .detail-header { padding-block: 32px 24px; }
.page-calendar .intro h1, .page-detail .detail-header h1 { font-size: clamp(28px, 3vw, 36px); letter-spacing: -.03em; line-height: 1.3; }
.page-calendar .month-nav h2, .page-calendar .month-nav p { font-size: 20px; }
@media (max-width: 740px) {
  .page-calendar .shell, .page-detail .shell { width: calc(100% - 34px); }
}
@media (max-width: 370px) {
  .page-calendar .shell, .page-detail .shell { width: calc(100% - 28px); }
}

/* ---------------------------------------------------------------------------
   2026-10 visual pass: bring /calendar and /launches onto the same warm-white,
   type-led rhythm as the v2.5 home page. These rules are scoped so the home
   visual gate and the existing DOM contracts stay untouched.
--------------------------------------------------------------------------- */
.page-calendar, .page-detail { font-size: 14px; line-height: 1.7; letter-spacing: -.008em; }
.page-calendar .shell, .page-detail .shell { max-width: 1000px; }
.page-calendar .site-header, .page-detail .site-header { min-height: 64px; }
.page-calendar .intro { padding-block: 34px 20px; }
.page-calendar .intro h1 { font-size: clamp(30px, 3.4vw, 40px); font-weight: 680; letter-spacing: -.038em; line-height: 1.22; }
.page-calendar .intro p:not(.eyebrow) { max-width: 46em; margin-top: 10px; color: var(--muted); font-size: 12.5px; line-height: 1.8; }
.page-calendar .eyebrow, .page-detail .eyebrow { color: var(--faint); font-size: 10px; font-weight: 600; letter-spacing: .12em; }

/* One quiet toolbar instead of three stacked full-width rows. */
.page-calendar .filters { display: flex; align-items: flex-end; gap: 12px; margin: 6px 0 0; padding: 14px 16px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.page-calendar .filters label { display: grid; gap: 5px; flex: 0 1 170px; font-size: 10px; font-weight: 500; letter-spacing: .06em; color: var(--faint); }
.page-calendar .filters label:nth-child(2) { flex-basis: 190px; }
.page-calendar .filters label:nth-child(3) { flex-basis: 130px; }
.page-calendar .filters input, .page-calendar .filters select { width: 100%; min-height: 38px; padding: 6px 10px; border-color: var(--line); border-radius: 7px; background: var(--bg); font-size: 12.5px; }
.page-calendar .filters input[type="month"] { font-variant-numeric: tabular-nums; }
.page-calendar .filters button[type="submit"] { flex: 0 0 auto; min-height: 38px; padding: 6px 20px; border-color: var(--strong); background: var(--strong); color: var(--surface); font-size: 12px; font-weight: 600; letter-spacing: .08em; border-radius: 7px; }
.page-calendar .filters button[type="submit"]:hover { border-color: var(--accent); background: var(--accent); color: var(--on-accent); }

.page-calendar .calendar-bar { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 10px; padding-block: 9px; border-bottom: 1px solid var(--line-strong); }
.page-calendar .calendar-bar .month-nav { flex: 1 1 auto; display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0; padding: 0; border: 0; }
.page-calendar .calendar-bar .month-nav a { min-height: 32px; padding: 5px 9px; border-radius: 7px; color: var(--muted); font-size: 11.5px; }
.page-calendar .calendar-bar .month-nav a:hover { background: var(--accent-soft); color: var(--accent-ink); }
.page-calendar .calendar-bar .month-nav > span:not([aria-disabled]) { padding: 3px 12px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); color: var(--strong); font-size: 11.5px; font-weight: 600; letter-spacing: .07em; font-variant-numeric: tabular-nums; }
.page-calendar .calendar-bar .month-nav [aria-disabled] { color: var(--faint); font-size: 11px; }
.page-calendar .calendar-bar .display-controls { flex: 0 0 auto; display: flex; align-items: center; gap: 12px; margin: 0; padding: 0; border: 0; font-size: 11px; color: var(--faint); }
.page-calendar .calendar-bar .display-controls label { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; white-space: nowrap; font-size: 11px; }
.page-calendar .calendar-bar .display-controls select { min-height: 30px; padding: 3px 7px; border-color: var(--line); border-radius: 6px; background: var(--surface); font-size: 11px; color: var(--muted); }
.page-calendar .calendar-bar .display-controls input[type="checkbox"] { width: 13px; height: 13px; min-height: 13px; margin: 0; accent-color: var(--accent-ink); }
.page-calendar .calendar-bar [data-display-scope-note] { display: none; }

/* Date headings become quiet rules rather than repeated full-width titles. */
.page-calendar .timeline { margin-top: 8px; border-top: 0; }
.page-calendar .date-group { display: flex; align-items: center; gap: 12px; margin: 0; padding: 17px 0 7px; }
.page-calendar .date-group h2 { margin: 0; color: var(--muted); font-size: 11px; font-weight: 600; letter-spacing: .09em; line-height: 1.5; font-variant-numeric: tabular-nums; }
.page-calendar .date-group::after { content: ""; flex: 1 1 auto; height: 1px; background: var(--line); }

.page-calendar .launch-row { grid-template-columns: 80px minmax(0, 1fr) auto; align-items: center; gap: 16px; padding-block: 14px; border-bottom: 1px solid var(--line); transition: background .15s ease; }
.page-calendar .launch-row:hover { background: linear-gradient(90deg, var(--calendar-hover), transparent 58%); }
.page-calendar .launch-time { font-size: 22px; font-weight: 620; letter-spacing: -.035em; line-height: 1.15; }
.page-calendar .launch-time small { display: block; margin-top: 5px; color: var(--faint); font-size: 9.5px; letter-spacing: .02em; }
.page-calendar .launch-title { font-size: 15.5px; font-weight: 640; line-height: 1.4; }
.page-calendar .launch-meta { margin-top: 4px; color: var(--muted); font-size: 11px; line-height: 1.6; }
.page-calendar .launch-row > .status, .page-calendar .uncertain-tail > .status { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 9px; border-radius: 999px; background: var(--inset); color: var(--muted); font-size: 10.5px; font-weight: 600; white-space: nowrap; }
.page-calendar .launch-row > .status::before, .page-calendar .uncertain-tail > .status::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.calendar-body .status.good { background: var(--good-bg); color: var(--good); }
.calendar-body .status.tbc { background: var(--tbc-bg); color: var(--tbc); }
.calendar-body .status.tbd { background: var(--tbd-bg); color: var(--tbd); }
.calendar-body .status.fail { background: var(--fail-bg); color: var(--fail); }
.calendar-body .status.live { background: var(--fail-bg); color: var(--live); }
.calendar-body .status.sched { background: var(--inset); }

/* Month grid: denser cells, two-line task titles, calmer weekend tint. */
.page-calendar .month-grid { border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: var(--line); }
.page-calendar .weekday { padding: 9px 8px; border-bottom: 0; background: var(--inset); color: var(--faint); font-size: 10px; font-weight: 600; letter-spacing: .1em; text-align: left; }
.page-calendar .day-cell { min-height: 88px; padding: 6px 7px 8px; background: var(--surface); }
.page-calendar .day-cell[aria-current="date"] { background: var(--accent-soft); }
.page-calendar .weekday:nth-child(6), .page-calendar .weekday:nth-child(7), .page-calendar .day-cell:nth-child(7n+6), .page-calendar .day-cell:nth-child(7n+7) { background: var(--weekend); box-shadow: 0 0 0 1px var(--line-strong); }
.page-calendar .day-number { margin: 0 0 4px; color: var(--faint); font-size: 10px; font-weight: 600; letter-spacing: .04em; }
.page-calendar .day-cell:nth-child(7n+6) > .day-number, .page-calendar .day-cell:nth-child(7n+7) > .day-number { color: var(--muted); }
.page-calendar .day-cell[aria-current="date"] > .day-number { color: var(--accent-ink); }
.page-calendar .today-label { display: inline-block; margin-inline-start: 3px; font-size: 9px; font-weight: 600; letter-spacing: 0; }
.page-calendar .day-launch { display: block; margin: 1px -4px; padding: 3px 4px; border-radius: 5px; font-size: 10.5px; line-height: 1.38; color: var(--fg); text-decoration: none; }
.page-calendar .day-launch:hover { background: var(--accent-soft); }
.page-calendar .day-launch .launch-name { display: block; font-weight: 620; overflow-wrap: anywhere; }
.page-calendar .day-launch time { display: block; margin-top: 1px; color: var(--muted); font-size: 9.5px; font-variant-numeric: tabular-nums; }
.page-calendar .day-launch > .status { display: block; margin-top: 1px; font-size: 9px; font-weight: 600; }
.page-calendar .uncertain-plans { margin-top: 26px; padding: 18px 20px 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }
.page-calendar .uncertain-plans h2 { margin-bottom: 5px; font-size: 15px; letter-spacing: -.01em; }
.page-calendar .uncertain-plans > p { margin-bottom: 10px; color: var(--muted); font-size: 11px; line-height: 1.7; }

/* Detail: editorial hierarchy, warm accents, and a source-ordered update timeline. */
.page-detail .breadcrumb { display: flex; align-items: center; gap: 8px; padding: 20px 0 0; color: var(--faint); font-size: 12px; }
.page-detail .breadcrumb a { display: inline-flex; align-items: center; min-height: 28px; color: var(--muted); text-decoration: none; }
.page-detail .breadcrumb a:hover { color: var(--accent-ink); text-decoration: underline; }
.page-detail .detail-header { margin: 0; padding: 20px 0 24px; border: 0; background: none; }
.page-detail .detail-kicker { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; }
.page-detail .detail-kicker .eyebrow { margin: 0; color: var(--accent-ink); }
.page-detail .detail-header h1 { margin: 0; font-size: clamp(30px, 3.2vw, 36px); font-weight: 680; letter-spacing: -.035em; line-height: 1.3; overflow-wrap: anywhere; text-wrap: pretty; }
.page-detail .detail-summary { margin: 10px 0 0; color: var(--muted); font-size: 13px; line-height: 1.7; }
.page-detail .detail-header .status { display: inline-flex; align-items: center; gap: 6px; margin: 0; padding: 3px 10px; border-radius: 4px; background: var(--inset); font-size: 12px; font-weight: 600; }
.page-detail .detail-header .status::before { content: ""; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
.page-detail .detail-header .status.good { background: var(--good-bg); }
.page-detail .detail-header .status.tbc { background: var(--tbc-bg); }
.page-detail .detail-header .status.tbd { background: var(--tbd-bg); }
.page-detail .detail-header .status.fail, .page-detail .detail-header .status.live { background: var(--fail-bg); }
.page-detail .detail-overview { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 32px 40px; }
.page-detail .detail-overview:has(> .detail-media) { grid-template-columns: minmax(0, 1fr) minmax(0, 44%); }
.page-detail .detail-overview > * { min-width: 0; }
.page-detail .detail-schedule { display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; gap: 16px 20px; margin: 0; max-width: 600px; padding-top: 4px; }
.page-detail .detail-schedule dt { color: var(--muted); font-size: 12px; }
.page-detail .detail-schedule dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.page-detail .schedule-primary dd { margin-top: 5px; color: var(--strong); font-size: clamp(20px, 2.2vw, 26px); font-weight: 600; line-height: 1.4; font-variant-numeric: tabular-nums; }
.page-detail .time-utc, .page-detail .schedule-note { display: block; margin-top: 3px; color: var(--muted); font-size: 12px; font-weight: 400; line-height: 1.7; font-variant-numeric: tabular-nums; }
.page-detail .schedule-secondary { grid-column: 1 / -1; display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 12px; font-size: 13px; line-height: 1.7; }
.page-detail .schedule-secondary .window-range { color: var(--fg); }
.page-detail .detail-reference-clock { display: block; padding: 0; border: 0; background: none; }
.page-detail .detail-reference-clock dd { color: var(--accent-ink); font-size: 22px; font-weight: 500; line-height: 1.5; font-variant-numeric: tabular-nums; }
.page-detail .detail-reference-clock small { display: block; color: var(--muted); font-size: 12px; font-weight: 400; }
.page-detail .detail-media { margin: 0; }
.page-detail .detail-media .task-image { display: block; width: 100%; max-width: 100%; height: auto; max-height: none; margin: 0; aspect-ratio: auto; object-fit: contain; border-radius: 9px; box-shadow: 0 8px 24px color-mix(in srgb, var(--fg) 7%, transparent); }
.page-detail .image-attribution, .page-detail .rocket-overview figcaption { margin: 8px 0 0; color: var(--muted); font-size: 12px; line-height: 1.7; overflow-wrap: anywhere; }
.page-detail .detail-grid { grid-template-columns: 92px minmax(0, 1fr) 92px minmax(0, 1fr); gap: 0 20px; margin: 10px 0 0; padding: 0; background: transparent; border: 0; border-radius: 0; }
.page-detail .detail-grid dt, .page-detail .detail-grid dd { padding: 9px 0; border: 0; background: transparent; overflow-wrap: anywhere; }
.page-detail .detail-grid dt { color: var(--muted); font-size: 12px; font-weight: 400; }
.page-detail .detail-grid dd { color: var(--fg); font-size: 14px; }
.page-detail .detail-description, .page-detail .detail-extra { min-width: 0; margin: 32px 0 0; padding-top: 24px; border-top: 1px solid var(--line); }
.page-detail .detail-description { max-width: 74ch; padding-top: 0; border: 0; }
.page-detail .detail-description h2, .page-detail .detail-extra h2 { margin: 0 0 12px; font-size: 18px; font-weight: 660; letter-spacing: -.02em; }
.page-detail .detail-description h2::before, .page-detail .detail-extra h2::before { content: ""; display: inline-block; width: 4px; height: 15px; margin-right: 10px; border-radius: 3px; background: var(--detail-section-accent, var(--accent)); vertical-align: -1px; }
.page-detail .detail-description h2::after, .page-detail .detail-extra h2::after { display: none; }
.page-detail .detail-description p, .page-detail .detail-extra p { margin-block: 0; font-size: 15px; line-height: 1.85; }
.page-detail .detail-extra .sitemap-note { margin-top: 16px; color: var(--muted); font-size: 12px; }
.page-detail .detail-section-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; margin-bottom: 8px; }
.page-detail .detail-section-heading h2, .page-detail .detail-section-heading .sitemap-note { margin: 0; }
.page-detail .detail-resources { margin: 0; padding: 0; list-style: none; }
.page-detail .detail-resources li + li { margin-top: 12px; }
.page-detail .resource-link { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 44px; color: var(--fg); font-size: 14px; line-height: 1.7; text-decoration: none; }
.page-detail .resource-link > span:first-child { min-width: 0; overflow-wrap: anywhere; }
.page-detail .resource-arrow { display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--accent-soft); color: var(--accent-ink); font-size: 17px; }
.page-detail .resource-link:hover, .page-detail .resource-link:focus-visible { color: var(--accent-ink); }
.page-detail .resource-link:hover > span:first-child { text-decoration: underline; text-underline-offset: 4px; }
.page-detail .detail-resources small { display: block; color: var(--muted); font-size: 12px; line-height: 1.7; }
.page-detail .detail-extra .detail-empty { color: var(--muted); font-size: 14px; }
.page-detail .updates { --update-axis: 146px; --update-node-y: 10px; margin: 20px 0 0; padding: 0; border: 0; list-style: none; }
.page-detail .update-row { position: relative; display: grid; grid-template-columns: 136px minmax(0, 1fr); gap: 24px; padding: 0 0 20px; border: 0; }
.page-detail .update-row::before { content: ""; position: absolute; top: var(--update-node-y); bottom: calc(-1 * var(--update-node-y)); left: var(--update-axis); width: 1px; background: var(--line-strong); pointer-events: none; }
.page-detail .update-row::after { content: ""; position: absolute; top: calc(var(--update-node-y) - 2px); left: calc(var(--update-axis) - 2px); width: 5px; height: 5px; border-radius: 50%; background: var(--faint); pointer-events: none; }
.page-detail .update-row:last-child { padding-bottom: 0; }
.page-detail .update-row:last-child::before { display: none; }
.page-detail .update-meta { min-width: 0; }
.page-detail .update-meta time, .page-detail .update-meta small { display: block; color: var(--muted); font-size: 12px; line-height: 1.7; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.page-detail .update-author { margin-top: 4px; }
.page-detail .update-content { min-width: 0; padding: 0; border: 0; background: none; }
.page-detail .update-row p { margin: 0; font-size: 14px; line-height: 1.85; }
.page-detail .update-row a { display: inline-flex; align-items: center; gap: 6px; min-height: 28px; margin-top: 6px; color: var(--accent-ink); font-size: 12px; }
.page-detail .pagination { gap: 14px; margin: 16px 0 0; padding-top: 12px; border: 0; color: var(--muted); font-size: 12px; }
.page-detail #rocket h3 { margin: 0 0 12px; font-size: 16px; font-weight: 600; }
.page-detail .detail-return { margin: 32px 0 0; font-size: 13px; }
.page-detail .detail-return a { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; }
.page-detail :is(#detail-top, #launch-schedule, #mission-description, #mission-anomaly, #mission-info, #videos, #trajectory, #rocket, #updates) { scroll-margin-top: 72px; }
/* Native section links: the desktop rail stays outside the 1000px reading axis. */
.page-detail .detail-toc { position: fixed; top: 50%; right: max(16px, calc((100vw - 1000px) / 2 - 148px)); z-index: 10; transform: translateY(-50%); display: flex; flex-direction: column; gap: 2px; width: 124px; max-height: calc(100dvh - 96px); padding: 10px; overflow: auto; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); }
.page-detail .detail-toc-task { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; margin: 0 6px 6px; color: var(--strong); font-size: 12px; font-weight: 600; line-height: 1.6; overflow-wrap: anywhere; }
.page-detail .detail-toc a { display: flex; align-items: center; flex: none; min-height: 30px; padding: 4px 6px; border-inline-start: 2px solid transparent; border-radius: 3px; color: var(--muted); font-size: 12px; line-height: 1.5; text-decoration: none; white-space: nowrap; }
.page-detail .detail-toc a:hover, .page-detail .detail-toc a:focus-visible { color: var(--accent-ink); background: var(--accent-soft); }
.page-detail .detail-toc a[aria-current="location"] { color: var(--accent-ink); background: var(--accent-soft); border-inline-start-color: var(--accent); font-weight: 600; }
@media (max-width: 1319px) {
  .page-detail .detail-toc { position: sticky; top: 8px; right: auto; transform: none; flex-direction: row; gap: 4px; width: 100%; max-height: none; margin: 12px 0 4px; padding: 4px 6px; overflow-x: auto; }
  .page-detail .detail-toc-task { display: block; flex: none; max-width: 96px; margin: 0; padding: 10px 8px 10px 2px; border-inline-end: 1px solid var(--line); white-space: nowrap; text-overflow: ellipsis; -webkit-line-clamp: unset; }
  .page-detail .detail-toc a { min-height: 40px; border-inline-start: 0; border-bottom: 2px solid transparent; }
  .page-detail .detail-toc a[aria-current="location"] { border-bottom-color: var(--accent); }
  .page-detail :is(#detail-top, #launch-schedule, #mission-description, #mission-anomaly, #mission-info, #videos, #trajectory, #rocket, #updates) { scroll-margin-top: 76px; }
}
@media (prefers-reduced-motion: no-preference) and (forced-colors: none) {
  .page-detail .resource-link { transition: color 150ms ease; }
  .page-detail .resource-arrow { transition: transform 150ms ease; }
  .page-detail .resource-link:hover .resource-arrow, .page-detail .resource-link:focus-visible .resource-arrow { transform: translate(2px, -1px); }
}

@media (forced-colors: active) {
  .page-detail .update-row::before, .page-detail .update-row::after { background: CanvasText; }
  .page-detail .detail-toc a[aria-current="location"] { outline: 1px solid Highlight; }
}

@media (max-width: 740px) {
  .page-calendar .filters { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 12px; padding: 12px; }
  .page-calendar .filters label, .page-calendar .filters label:nth-child(2), .page-calendar .filters label:nth-child(3) { flex: none; }
  .page-calendar .filters label:nth-child(3) { grid-column: 1 / -1; }
  .page-calendar .filters button[type="submit"] { grid-column: 1 / -1; min-height: 44px; }
  .page-calendar .calendar-bar { flex-direction: column; align-items: stretch; gap: 8px; }
  .page-calendar .calendar-bar .display-controls { justify-content: flex-start; flex-wrap: wrap; }
  .page-calendar .launch-row { grid-template-columns: 66px minmax(0, 1fr); gap: 4px 12px; padding-block: 13px; }
  .page-calendar .launch-time { grid-column: 1; grid-row: 1 / span 2; font-size: 19px; }
  .page-calendar .launch-content { grid-column: 2; }
  .page-calendar .launch-row > .status { grid-column: 2; justify-self: start; margin-top: 2px; }
  .page-calendar .uncertain-tail { grid-column: 2; justify-content: space-between; }
  .page-calendar .day-cell { min-height: 78px; }
  .page-detail .breadcrumb { padding-top: 14px; }
  .page-detail .detail-header { margin: 0; padding: 16px 0 22px; }
  .page-detail .detail-header h1 { font-size: 28px; }
  .page-detail .detail-overview:has(> .detail-media) { grid-template-columns: minmax(0, 1fr); gap: 22px; }
  .page-detail .detail-media { width: min(100%, 520px); }
  .page-detail .detail-schedule { gap: 14px 16px; }
  .page-detail .schedule-primary dd { font-size: 22px; }
  .page-detail .schedule-secondary { grid-template-columns: 64px minmax(0, 1fr); gap: 12px; }
  .page-detail .detail-grid { grid-template-columns: 92px minmax(0, 1fr); gap: 0 16px; }
  .page-detail .detail-description, .page-detail .detail-extra { margin-top: 28px; padding-top: 20px; }
  .page-detail .detail-description { padding-top: 0; }
  .page-detail .updates { --update-axis: 4px; --update-node-y: 10px; }
  .page-detail .update-row { display: block; padding: 0 0 22px 20px; }
  .page-detail .update-meta { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin-bottom: 8px; padding: 0; }
  .page-detail .update-author { margin: 0; }
}
.page-calendar .day-launch .status { width: max-content; max-width: 100%; }
.page-calendar .intro h1 { text-wrap: balance; }
.page-detail .update-row:hover { background: transparent; }
.page-detail .pagination a { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 4px 10px; border-radius: 7px; text-decoration: none; }
.page-detail .pagination a:hover { background: var(--accent-soft); color: var(--accent-ink); }
@media (forced-colors: active) {
  .page-calendar .launch-row > .status, .page-calendar .uncertain-tail > .status, .page-detail .detail-header .status, .page-calendar .day-launch .status { border: 1px solid currentColor; }
}
.page-calendar .empty-state { margin: 22px 0; padding: 30px 22px; border: 1px dashed var(--line-strong); border-bottom: 1px dashed var(--line-strong); border-radius: 10px; background: var(--surface); text-align: center; color: var(--muted); }
.page-calendar .empty-state h2 { margin-bottom: 6px; font-size: 16px; letter-spacing: -.01em; }
.page-calendar .empty-state p { margin: 0; font-size: 12px; line-height: 1.7; }
@media (max-width: 740px) {
  .page-calendar .day-cell { min-height: 64px; }
}
/* Old-calendar information architecture, restyled for the current identity. */
.page-calendar .cal-stats { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin: 16px 0 0; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); overflow: hidden; }
.page-calendar .cal-stat { padding: 11px 14px; border-inline-end: 1px solid var(--line); min-width: 0; }
.page-calendar .cal-stat:last-child { border-inline-end: 0; }
.page-calendar .cal-stat .n { display: block; color: var(--strong); font-size: 22px; font-weight: 660; letter-spacing: -.04em; line-height: 1.15; font-variant-numeric: tabular-nums; }
.page-calendar .cal-stat .k { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; font-weight: 400; line-height: 1.5; }
.page-calendar .cal-stat.ok .n { color: var(--good); }
.page-calendar .cal-view-tabs { display: flex; flex: 0 0 auto; gap: 3px; padding: 3px; border: 1px solid var(--line); border-radius: 8px; background: var(--inset); }
.page-calendar .cal-view-tabs .tab { padding: 4px 11px; border-radius: 6px; color: var(--muted); font-size: 11px; text-decoration: none; white-space: nowrap; }
.page-calendar .cal-view-tabs .tab:hover { color: var(--accent-ink); }
.page-calendar .cal-view-tabs .tab.on { background: var(--surface); color: var(--strong); font-weight: 600; }
.page-calendar .cal-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 2px; }
.page-calendar .cal-chip { display: inline-flex; align-items: center; padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; background: var(--surface); color: var(--muted); font-size: 11px; text-decoration: none; white-space: nowrap; }
.page-calendar .cal-chip:hover { border-color: var(--line-strong); color: var(--strong); }
.page-calendar .cal-chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-ink); font-weight: 600; }
.page-calendar .cal-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 10px 0 0; color: var(--faint); font-size: 10px; }
.page-calendar .lg-dot { display: inline-block; width: 6px; height: 6px; margin-inline-end: 5px; border-radius: 50%; background: currentColor; vertical-align: 1px; }
.page-calendar .lg-dot.good { color: var(--good); }
.page-calendar .lg-dot.tbc { color: var(--tbc); }
.page-calendar .lg-dot.tbd { color: var(--tbd); }
.page-calendar .lg-dot.fail { color: var(--fail); }
@media (max-width: 740px) {
  .page-calendar .cal-stats { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .page-calendar .cal-stat { padding: 9px 11px; border-bottom: 1px solid var(--line); }
  .page-calendar .cal-stat:nth-child(3n) { border-inline-end: 0; }
  .page-calendar .cal-stat:nth-child(n + 4) { border-bottom: 0; }
  .page-calendar .cal-stat .n { font-size: 19px; }
  .page-calendar .cal-chips { flex-wrap: wrap; overflow: visible; padding-bottom: 0; }
}
.page-calendar .cal-toolbar { display: flex; align-items: center; gap: 16px; margin-top: 14px; }
.page-calendar .cal-toolbar .filters { flex: 0 0 auto; display: flex; align-items: center; gap: 8px; margin: 0; padding: 0; border: 0; background: transparent; }
.page-calendar .cal-toolbar .filters label { display: inline-flex; align-items: center; gap: 6px; flex: none; font-size: 10px; letter-spacing: .04em; }
.page-calendar .cal-toolbar .filters select { width: auto; min-height: 36px; padding: 5px 9px; border-color: var(--line); background: var(--surface); font-size: 12px; }
.page-calendar .cal-toolbar .filters button[type="submit"] { min-height: 36px; padding: 5px 14px; border-color: var(--strong); background: var(--strong); color: var(--surface); }
.page-calendar .cal-toolbar .filters button[type="submit"]:hover { border-color: var(--accent); background: var(--accent); }
.page-calendar .cal-toolbar .cal-chips { flex: 1 1 auto; justify-content: flex-end; margin: 0; }
@media (max-width: 740px) {
  .page-calendar .cal-toolbar { flex-direction: column; align-items: stretch; gap: 9px; }
  .page-calendar .cal-toolbar .filters { justify-content: space-between; }
  .page-calendar .cal-toolbar .cal-chips { justify-content: flex-start; }
}
#calendar-content { display: block; }
.page-calendar .month-picker { position: relative; color: var(--strong); font-size: 12px; }
.page-calendar .month-picker summary { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 34px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 6px; cursor: pointer; list-style: none; font-weight: 600; }
.page-calendar .month-picker summary::-webkit-details-marker { display: none; }
.page-calendar .month-picker[open] summary { border-color: var(--accent); background: var(--accent-soft); }
.page-calendar .month-picker-panel { position: absolute; z-index: 10; top: calc(100% + 7px); left: 50%; transform: translateX(-50%); width: 236px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--bg); box-shadow: 0 8px 24px #0002; }
.page-calendar .month-picker-year { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 7px; }
.page-calendar .month-picker-year a { display: inline-flex; justify-content: center; width: 32px; min-height: 32px; padding: 0; border-radius: 4px; text-decoration: none; font-size: 20px; }
.page-calendar .month-picker-year a[aria-disabled] { opacity: .4; }
.page-calendar .month-picker-months { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.page-calendar .month-picker-months a { display: flex; align-items: center; justify-content: center; min-height: 34px; padding: 4px; border-radius: 4px; text-decoration: none; font-size: 12px; color: var(--muted); }
.page-calendar .month-picker-months a:hover, .page-calendar .month-picker-year a[href]:hover { color: var(--accent-ink); background: var(--accent-soft); }
.page-calendar .month-picker-months a[aria-current] { color: var(--accent-ink); background: var(--accent-soft); font-weight: 650; }
/* Native top-layer popovers escape the horizontally scrollable month grid. */
.cal-tip { display: none; position: fixed; inset: auto; margin: 0; width: min(310px, calc(100vw - 24px)); max-height: calc(100vh - 24px); overflow: auto; padding: 13px 15px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg); color: var(--fg); box-shadow: 0 8px 24px #0003; text-align: left; font-size: 11px; line-height: 1.6; cursor: default; }
.cal-tip:popover-open { display: block; }
.cal-tip-title { display: block; margin-bottom: 8px; font-size: 13px; overflow-wrap: anywhere; }
.cal-tip-row { display: grid; grid-template-columns: 5em minmax(0, 1fr); gap: 8px; margin-top: 3px; overflow-wrap: anywhere; }
.cal-tip-row > span:first-child { color: var(--muted); }
@media (max-width: 740px) {
  .page-calendar .calendar-bar { flex-direction: column; align-items: stretch; gap: 8px; }
  .page-calendar .month-nav { justify-content: space-between; }
  .page-calendar .cal-view-tabs { align-self: flex-start; }
}
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.page-calendar .day-launch { position: relative; }
.page-calendar .cal-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; padding: 26px 0 20px; }
.page-calendar .cal-head-copy { min-width: 0; }
.page-calendar .cal-head-copy h1 { font-size: clamp(30px, 3.4vw, 40px); font-weight: 680; letter-spacing: -.038em; line-height: 1.22; }
.page-calendar .cal-head-note { max-width: 42em; margin: 8px 0 0; color: var(--muted); font-size: 12px; line-height: 1.75; }
.page-calendar .cal-head-nav { flex: 0 0 auto; display: flex; align-items: center; gap: 14px; margin: 0; padding: 0; border: 0; }
.page-calendar .cal-head-nav > a, .page-calendar .cal-head-nav > span { min-height: 34px; display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 7px; color: var(--muted); font-size: 11.5px; }
.page-calendar .cal-head-nav > a:hover { background: var(--accent-soft); color: var(--accent-ink); }
.page-calendar .cal-head-nav [aria-disabled] { color: var(--faint); }
.page-calendar .cal-stats { margin-top: 6px; border: 0; background: var(--surface); }
.page-calendar .cal-stat { border-inline-end: 0; padding: 13px 18px; }
.page-calendar .cal-stat + .cal-stat { border-inline-start: 0; }
.page-calendar .cal-chips { margin-top: 14px; }
.page-calendar .cal-chip { border-color: transparent; background: var(--inset); color: var(--muted); }
.page-calendar .cal-chip:hover { border-color: transparent; background: var(--chip-hover); color: var(--strong); }
.page-calendar .cal-chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent-ink); }
/* Fixed colors follow the existing agency groups across months and filters. */
.page-calendar [data-org="spx"] { --agency-ink: #2457a7; --agency-bg: #edf3fb; }
.page-calendar [data-org="cnsa"] { --agency-ink: #a83b16; --agency-bg: #fff0e7; }
.page-calendar [data-org="nasa"] { --agency-ink: #6b46a0; --agency-bg: #f4eefb; }
.page-calendar [data-org="esa"] { --agency-ink: #16736b; --agency-bg: #e9f5f1; }
.page-calendar [data-org="rl"] { --agency-ink: #397222; --agency-bg: #eef5e9; }
.page-calendar [data-org="ula"] { --agency-ink: #a13b6b; --agency-bg: #fbeef4; }
.page-calendar [data-org="isro"] { --agency-ink: #88611d; --agency-bg: #faf2df; }
.page-calendar [data-org="jaxa"] { --agency-ink: #176d8e; --agency-bg: #eaf3f8; }
.page-calendar [data-org="other"] { --agency-ink: #59616b; --agency-bg: #f0f1f3; }
@supports (color: light-dark(white, black)) {
  .page-calendar [data-org="spx"] { --agency-ink: light-dark(#2457a7, #9bc2ff); --agency-bg: light-dark(#edf3fb, #1c2a40); }
  .page-calendar [data-org="cnsa"] { --agency-ink: light-dark(#a83b16, #ffb38d); --agency-bg: light-dark(#fff0e7, #3a261e); }
  .page-calendar [data-org="nasa"] { --agency-ink: light-dark(#6b46a0, #c9abf5); --agency-bg: light-dark(#f4eefb, #2d243c); }
  .page-calendar [data-org="esa"] { --agency-ink: light-dark(#16736b, #7dd7c8); --agency-bg: light-dark(#e9f5f1, #17332e); }
  .page-calendar [data-org="rl"] { --agency-ink: light-dark(#397222, #a7d787); --agency-bg: light-dark(#eef5e9, #25321c); }
  .page-calendar [data-org="ula"] { --agency-ink: light-dark(#a13b6b, #efabcb); --agency-bg: light-dark(#fbeef4, #382432); }
  .page-calendar [data-org="isro"] { --agency-ink: light-dark(#88611d, #e9ca77); --agency-bg: light-dark(#faf2df, #352e1d); }
  .page-calendar [data-org="jaxa"] { --agency-ink: light-dark(#176d8e, #80d1eb); --agency-bg: light-dark(#eaf3f8, #1b2f39); }
  .page-calendar [data-org="other"] { --agency-ink: light-dark(#59616b, #bcc4ce); --agency-bg: light-dark(#f0f1f3, #282d34); }
}
.page-calendar .cal-chip[data-org]:not([data-org=""]) { gap: 5px; color: var(--agency-ink); background: var(--agency-bg); }
.page-calendar .cal-chip[data-org]:not([data-org=""])::before { content: ""; width: 6px; height: 6px; flex: none; border-radius: 50%; background: currentColor; }
.page-calendar .cal-chip.on[data-org]:not([data-org=""]), .page-calendar .cal-chip[data-org]:not([data-org=""]):hover { border-color: var(--agency-ink); }
.page-calendar .day-launch[data-org] { background: var(--agency-bg); }
.page-calendar .day-launch[data-org] > .launch-name { color: var(--agency-ink); }
.page-calendar .day-launch[data-org]:hover > .launch-name { text-decoration: underline; text-underline-offset: 2px; }
.page-calendar .month-scroll-note, .page-calendar .calendar-scroll-note { color: var(--faint); }
.page-calendar .uncertain-plans { border: 0; background: var(--surface); }
.page-calendar .uncertain-plans .launch-row { border-bottom: 0; color: inherit; text-decoration: none; }
.page-calendar .uncertain-plans .launch-row:hover .launch-title { color: var(--accent-ink); text-decoration: underline; }
.page-calendar .uncertain-tail { display: flex; align-items: center; gap: 14px; padding-inline-end: 4px; min-width: 0; }
.page-calendar .uncertain-tail > .status { margin: 0; max-width: none; }
.page-calendar .uncertain-action { display: block; flex: none; font-size: 15px; line-height: 1; font-weight: 500; color: var(--accent-ink); }
@media (max-width: 740px) {
  .page-calendar .cal-head { flex-direction: column; align-items: stretch; gap: 12px; padding-top: 20px; }
  .page-calendar .cal-head-nav { justify-content: space-between; }
  .page-calendar .cal-stat { padding: 10px 11px; border-bottom: 0; }
}
/* One shared brand header for home, calendar and detail. The full-width band
   owns the hairline so the brand row has identical geometry on every page. */
.site-header-band { border-bottom: 1px solid var(--line); }
.site-header-band .site-header { min-height: 64px; height: 64px; padding-block: 0; flex-wrap: nowrap; border-bottom: 0; gap: 8px 20px; }
.site-header-band .brand { gap: 10px; letter-spacing: 0; white-space: nowrap; }
.theme-control { display: none; flex: 0 0 auto; align-items: center; justify-content: flex-end; margin-inline-start: auto; gap: 0; width: 44px; height: 44px; min-height: 44px; padding: 0; appearance: none; border: 0; border-radius: 0; background: transparent; box-shadow: none; font-family: var(--text); font-size: 11px; font-weight: 400; line-height: 1.4; letter-spacing: 0; color: var(--muted); }
.theme-control:hover:not(:disabled), .theme-control:active { border: 0; background: transparent; box-shadow: none; color: var(--accent-ink); }
.theme-control svg { display: block; flex: 0 0 16px; stroke-linecap: round; stroke-linejoin: round; }
.theme-control .theme-auto, .theme-control .theme-sun, .theme-control .theme-moon { display: none; }
:root[data-theme-mode="auto"] .theme-control .theme-auto,
:root[data-theme-mode="light"] .theme-control .theme-sun,
:root[data-theme-mode="dark"] .theme-control .theme-moon { display: block; }
@supports (color: light-dark(white, black)) { .theme-control { display: inline-flex; } }
.site-header .brand-name { font-size: 17px; font-weight: 680; }
.site-header .brand-name small { color: var(--faint); font-size: 10px; font-weight: 540; letter-spacing: .095em; margin-inline-start: 3px; }
@media (max-width: 740px) {
  .site-header-band .site-header { min-height: 56px; height: 56px; }
  .site-header-band .brand { gap: 8px; }
  .site-header .brand img { width: 28px; height: 28px; flex-basis: 28px; }
  .site-header .brand-name { font-size: 16px; }
  .site-header .brand-name small { font-size: 9px; letter-spacing: .08em; margin-inline-start: 2px; }
}
.page-calendar .cal-head-copy .cal-month { margin: 0; font-size: clamp(30px, 3.4vw, 40px); font-weight: 680; letter-spacing: -.038em; line-height: 1.22; }
/* Editorial zones: rules mark changes of purpose, never every task row.
   Warm-gray fills stay local to labels and supporting information, not cards. */
.site-header-band { border-bottom: 0; }
.landing-header .tabs { flex: 1; box-shadow: inset 0 -1px var(--zone-rule); }

/* A date is a small index label. Tasks themselves remain unboxed. */
.page-home .date-group.day-title { padding-block: 16px 8px; }
.page-home .day-title h4 { padding: 3px 8px; border-radius: 3px; background: var(--zone-muted); font-size: 11px; letter-spacing: .015em; }
.page-home .day-count { color: var(--faint); }
.page-home .launch-row.record { border-top: 0; }
.page-home .timeline-section + .timeline-section { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--zone-rule); }
.page-home .now-divider::before { display: none; }
.page-home .now-divider::after { display: block; background: linear-gradient(90deg, var(--now-rule), var(--line) 65%); }
.page-home .note { border-top: 1px solid var(--line); margin-top: 28px; }

/* A single statistical band, not six cards. Tiny vertical ticks group numbers. */
.page-calendar .cal-stats { background: var(--zone-muted); border-radius: 6px; }
.page-calendar .cal-stat { position: relative; }
.page-calendar .cal-stat + .cal-stat::before { content: ""; position: absolute; left: 0; top: 50%; width: 1px; height: 24px; transform: translateY(-50%); background: var(--zone-rule); }
.page-calendar .cal-chips { margin-top: 18px; }
.page-calendar .uncertain-plans { margin-top: 28px; padding: 18px 0 0; border: 0; border-top: 1px solid var(--zone-rule); border-radius: 0; background: transparent; }
.page-calendar .uncertain-plans .launch-row.record { border-top: 0; text-decoration: none; }
.page-calendar .uncertain-plans .record:hover { background: var(--hover-tint); }
.page-calendar .uncertain-plans .record-copy { min-width: 0; }
.page-calendar .uncertain-plans .record .place { display: contents; }
.page-calendar .uncertain-plans .uncertain-tail { justify-content: flex-end; }
.page-calendar .uncertain-plans .uncertain-tail > .status { padding: 0; border-radius: 0; background: transparent; color: var(--faint); font-size: 11px; font-weight: 590; line-height: 1.6; }
.page-calendar .uncertain-plans .uncertain-tail > .status::before { display: none; }
.page-calendar .uncertain-plans .status.good { color: var(--good); }
.page-calendar .uncertain-plans .status.tbc { color: var(--tbc); }
.page-calendar .uncertain-plans .status.tbd { color: var(--tbd); }
.page-calendar .uncertain-plans .status.fail { color: var(--fail); }
.page-calendar .uncertain-plans .status.live { color: var(--live); }
.page-calendar .launch-row { border-bottom: 0; }
.page-calendar .cal-legend { margin-top: 14px; }

@media (max-width: 740px) {
  .page-home .date-group.day-title { padding-block: 14px 7px; }
  .page-home .day-title h4 { font-size: 10.5px; padding: 3px 6px; }
  .page-home .timeline-section + .timeline-section { margin-top: 18px; padding-top: 14px; }
  .page-calendar .cal-stat:nth-child(4)::before { display: none; }
  .page-calendar .uncertain-plans { padding: 16px 0 0; }
  .page-calendar .uncertain-plans .record .place { display: flex; }
  .page-calendar .uncertain-plans .uncertain-tail { margin-left: auto; }
  .page-calendar .uncertain-plans .uncertain-tail > .status { font-size: 10px; }
}
/* Detail imagery stays upright and uncropped; absent images leave no empty column. */
.page-detail .rocket-overview { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; align-items: start; margin-block: 16px 28px; }
.page-detail .rocket-overview:has(> figure) { grid-template-columns: 240px minmax(0, 1fr); }
.page-detail .rocket-overview > * { min-width: 0; }
.page-detail .rocket-image { display: block; width: 100%; height: auto; max-height: 420px; object-fit: contain; object-position: center; background: var(--zone-soft); border-radius: 2px; }
.page-detail .rocket-specs { margin-block: 18px; }
.page-detail .rocket-overview:has(> figure) .rocket-specs { grid-template-columns: 104px minmax(0, 1fr); }

/* A quiet homepage follow section; QR pixels and white quiet zone stay intact. */
.page-home .wechat-follow { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 14px; margin-top: 16px; padding: 12px 0 0; border-top: 1px solid var(--line); }
.page-home .wechat-follow-copy { grid-column: 2; grid-row: 1; min-width: 0; }
.page-home .wechat-follow h2 { margin: 0; color: var(--muted); font-size: 13px; font-weight: 500; line-height: 1.5; }
.page-home .wechat-follow p { max-width: 36em; margin: 4px 0 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
.page-home .wechat-qrcode { grid-column: 1; grid-row: 1; display: block; width: max-content; max-width: 100%; padding: 4px; background: #fff; }
.page-home .wechat-qrcode img { display: block; width: 86px; height: 86px; max-width: 100%; margin: 0; background: #fff; filter: none; mix-blend-mode: normal; }
@media (max-width: 740px) {
  .page-home .wechat-follow { gap: 12px; margin-top: 12px; }
}

/* About shares the same editorial width and quiet warm-white section rhythm. */
.page-about { font-size: 14px; line-height: 1.8; letter-spacing: -.008em; }
.page-about .shell { width: calc(100% - 72px); max-width: 1000px; }
.about-content { width: 100%; max-width: none; padding-block: 36px 12px; }
.about-hero, .about-section > :is(h2, h3, p, ul, ol) { max-width: 760px; }
.about-content h1 { margin-bottom: 16px; font-size: clamp(28px, 3.4vw, 40px); letter-spacing: -.035em; }
.page-about .breadcrumb { display: flex; align-items: center; gap: 8px; margin: 0 0 20px; color: var(--faint); font-size: 12px; }
.page-about .breadcrumb a { display: inline-flex; align-items: center; min-height: 28px; color: var(--muted); text-decoration: none; }
.page-about .breadcrumb a:hover { color: var(--accent-ink); text-decoration: underline; }
.about-lead { max-width: 42em; margin: 0; color: var(--muted); font-size: 16px; line-height: 1.85; }
.about-section { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 10px 32px; margin-top: 36px; padding: 0; border: 0; }
.about-section > :not(h2) { grid-column: 2; min-width: 0; }
.about-section h2 { margin: 0; font-size: 17px; font-weight: 600; line-height: 1.7; }
.about-section h3 { margin-block: 20px 8px; font-size: 16px; }
.about-section p, .about-section li { line-height: 1.85; }
.about-section ul, .about-section ol { padding-inline-start: 22px; }
.about-section li + li { margin-top: 8px; }
.about-section a { color: var(--accent-ink); }
@media (max-width: 920px) { .page-about .shell { width: calc(100% - 52px); } }
@media (max-width: 740px) {
  .page-about .shell { width: calc(100% - 34px); }
  .about-content { padding-block: 26px 8px; }
  .about-section { grid-template-columns: minmax(0, 1fr); margin-top: 28px; }
  .about-section > :not(h2) { grid-column: 1; }
  .page-detail .rocket-overview:has(> figure) { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .page-detail .rocket-overview > figure { width: min(100%, 280px); margin-inline: auto; }
  .page-detail .rocket-image { max-height: 320px; }
  .page-detail .rocket-specs { grid-template-columns: 92px minmax(0, 1fr); }
}
@media (max-width: 370px) { .page-about .shell { width: calc(100% - 28px); } }

/* One footer for all four routes. It owns typography and shell breakpoints,
   rather than inheriting subtly different page text metrics. */
.site-footer.shell { width: calc(100% - 72px); max-width: 1000px; margin-top: 40px; padding-block: 24px 30px; border-top: 1px solid var(--line); color: var(--muted); font-family: var(--text); font-size: 11px; line-height: 1.8; letter-spacing: 0; font-synthesis: weight; text-rendering: optimizeLegibility; }
.site-footer p { margin: 0; }
.site-footer .footer-main { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 12px 24px; }
.site-footer .footer-brand { min-width: 0; }
.site-footer .footer-name { color: var(--strong); font-size: 13px; font-weight: 600; margin-bottom: 3px; }
.site-footer .footer-name span { margin-left: 6px; color: var(--faint); font-size: 10px; font-weight: 400; letter-spacing: .04em; }
.site-footer nav { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; min-width: 0; }
.site-footer nav a { display: inline-flex; align-items: center; min-height: 28px; }
.site-footer .footer-bottom { display: flex; justify-content: space-between; align-items: baseline; gap: 8px 24px; margin-top: 0; }
.site-footer .footer-source { display: flex; align-items: baseline; flex-wrap: wrap; gap: 3px 6px; min-width: 0; }
.site-footer .footer-about { display: inline-flex; flex: none; align-items: center; min-height: 28px; white-space: nowrap; }
.site-footer .footer-source > * { white-space: nowrap; }
.page-home .site-footer.shell { margin-top: 12px; }
.site-footer a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.site-footer a:hover { color: var(--accent-ink); }
@media (max-width: 920px) { .site-footer.shell { width: calc(100% - 52px); } }
@media (max-width: 740px) {
  .site-footer.shell { width: calc(100% - 34px); margin-top: 32px; padding-block: 22px 26px; }
  .site-footer .footer-main { gap: 8px 18px; }
  .site-footer nav { gap: 4px 18px; }
  .site-footer .footer-bottom { column-gap: 14px; margin-top: 0; }
}
@media (max-width: 370px) { .site-footer.shell { width: calc(100% - 28px); } }

@media (forced-colors: active) {
  .landing-header .tabs { border-bottom: 1px solid CanvasText; }
  .page-home .day-title h4 { outline: 1px solid GrayText; }
  .page-calendar .cal-stats { outline: 1px solid GrayText; }
}
