  /* Hero 和 footer 的深色 scope 覆盖已移到 globals.css(始终预加载),避免客户端跳转时短暂闪烁。 */

  /* ============ HERO ============ */
  .hero { background:var(--bg);color:var(--fg);padding:28px 32px 32px;position:relative;overflow:hidden; }
  .hero.with-bg { background-image:linear-gradient(105deg, rgba(11,12,14,0.96) 0%, rgba(11,12,14,0.85) 45%, rgba(11,12,14,0.55) 100%), var(--hero-bg); background-size:cover; background-position:center right; }
  .hero::before { content:'';position:absolute;top:-200px;right:-140px;width:620px;height:620px;border-radius:50%;background:radial-gradient(circle,var(--accent) 0%,transparent 60%);opacity:0.25;pointer-events:none; }
  .hero::after { content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,transparent,var(--accent) 50%,transparent);opacity:0.5; }
  .hero-inner { max-width:1320px;margin:0 auto;display:grid;grid-template-columns:1.4fr 1fr;gap:32px;align-items:start;position:relative;z-index:2; }
  .hero .eyebrow { font-family:var(--font-mono);font-size:11px;letter-spacing:0.15em;text-transform:uppercase;color:var(--accent);margin-bottom:14px;display:flex;gap:10px;align-items:center; }
  .hero .eyebrow::before { content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse 1.4s infinite; }
  @keyframes pulse { 0%,100%{opacity:1;transform:scale(1);} 50%{opacity:0.3;transform:scale(0.7);} }
  .hero h1 { font-family:var(--font-display);font-size:44px;font-weight:600;letter-spacing:-0.025em;line-height:1.05;margin:0 0 10px; }
  .hero h1 em { font-style:normal;color:var(--accent); }
  .hero .sub { color:var(--fg-dim);font-size:14px;margin:0 0 18px;max-width:520px;line-height:1.5; }
  .countdown-row { display:flex;align-items:flex-end;gap:5px;margin-bottom:18px; }
  .cd-block { display:flex;flex-direction:column;align-items:center;gap:4px; }
  .cd-block .n { font-family:var(--font-mono);font-size:38px;font-weight:700;line-height:1;letter-spacing:-0.04em;font-variant-numeric:tabular-nums;color:var(--fg); }
  .cd-block .u { font-family:var(--font-mono);font-size:10px;color:var(--fg-faint);letter-spacing:0.12em;text-transform:uppercase; }
  .cd-sep { font-family:var(--font-mono);font-size:30px;font-weight:300;color:#35332e;line-height:1;padding-bottom:6px; }
  /* T− 与**数字**垂直居中对齐，不是与下面的 HRS/MIN 标签对齐。
     做法是把行框高度设成和 .cd-block .n 一样（38px = 数字的 font-size ×
     line-height 1），再 align-self:flex-start —— 两个行框等高且都从顶部起，
     半行距会把各自的字形垂直居中，于是中心必然重合。比硬编一个 padding
     可靠：改数字字号时只需同步这一个数。
     旧站（chx_live_web/app/home.css）原本是 align-self:flex-end + 
     padding-bottom:6px，那样 T− 落在 HRS/MIN 那一行的高度上。 */
  .t-prefix { font-family:var(--font-mono);font-size:20px;font-weight:700;color:var(--accent);line-height:38px;align-self:flex-start;margin-right:6px; }
  .cta { display:flex;gap:12px;flex-wrap:wrap; }
  .btn-pri { padding:10px 16px;border-radius:8px;background:var(--accent);color:var(--accent-fg);font-size:13px;font-weight:600;border:none;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:8px;box-shadow:0 4px 16px rgba(255,106,26,0.35);text-decoration:none; }
  .btn-pri:hover { background:var(--accent-hover); }
  .btn-sec { padding:10px 16px;border-radius:8px;background:transparent;color:var(--fg);font-size:13px;font-weight:500;border:1px solid var(--line-strong);cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:8px; }
  .btn-sec:hover { background:var(--bg-elev);border-color:var(--fg-muted); }

  .mission-panel { background:rgba(255,255,255,0.03);border:1px solid var(--line-strong);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column; }
  .mp-head { display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px; }
  .mp-head .mlabel { font-family:var(--font-mono);font-size:10px;letter-spacing:0.12em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:6px; }
  .mp-head h3 { font-family:var(--font-display);font-size:22px;font-weight:600;margin:0 0 4px; }
  .mp-head .mi-sub { font-size:12px;color:var(--fg-dim);font-family:var(--font-mono); }
  .mp-head .flag { font-size:22px; }
  .mp dl { display:grid;grid-template-columns:1fr 1fr;gap:8px 20px;margin:0 0 10px; }
  .mp dt { font-family:var(--font-mono);font-size:10px;letter-spacing:0.1em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:3px; }
  .mp dd { margin:0;font-size:14px;font-weight:500;color:var(--fg); }
  .mp dd .mono { font-family:var(--font-mono); }
  .mp dd .mp-utc { display:block;font-size:11.5px;color:var(--fg-dim);margin-top:2px;letter-spacing:0.02em; }
  .mp-foot { margin-top:auto;padding-top:16px;border-top:1px solid var(--line-strong);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--fg-dim); }
  .mp-foot a { color:var(--accent);font-weight:500; }
  /* 气象条 —— 嵌在 mission panel 底部 */
  .mission-panel .wx-strip { margin-top:auto; }

  /* ============ Section 标题 ============ */
  .week-head { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:18px; gap:24px; flex-wrap:wrap; }
  .week-head .eyebrow { font-family:var(--font-mono); font-size:12px; letter-spacing:0.15em; text-transform:uppercase; color:var(--fg-faint); margin-bottom:8px; display:flex; align-items:center; gap:10px; }
  .week-head .eyebrow::before { content:''; width:6px; height:6px; background:var(--accent); }
  .week-head h2 { font-family:var(--font-display); font-size:28px; font-weight:600; margin:0; letter-spacing:-0.015em; }
  .week-head .more { font-size:13px; color:var(--fg-muted); font-weight:500; align-self:flex-end; text-decoration:none; }
  .week-head .more:hover { color:var(--accent); }

  /* ============ Section 标题（feed 等） ============ */
  .eyebrow-sec { font-family:var(--font-mono);font-size:11px;letter-spacing:0.15em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:10px;display:flex;align-items:center;gap:10px; }
  .eyebrow-sec::before { content:'';width:6px;height:6px;background:var(--accent); }
  .sec-title { font-family:var(--font-display);font-size:28px;font-weight:600;margin:0;letter-spacing:-0.01em; }
  .sec-head { display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:20px; }
  .sec-head .more { font-size:13px;color:var(--fg-muted);font-weight:500; }
  .sec-head .more:hover { color:var(--accent); }

  /* 信息流 */
  .tweet { display:flex;gap:14px;padding:18px 0;border-bottom:1px solid var(--line-faint); }
  .tweet:last-child { border-bottom:none; }
  .tweet .av { width:44px;height:44px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--accent-fg);font-weight:700;font-size:14px;font-family:var(--font-mono); }
  .tweet .av.spacex { background:#0e0d0b; }
  .tweet .av.nasa { background:#0b3d91; }
  .tweet .av.cnsa { background:var(--accent-soft-fg); }
  .tweet .av.chx { background:linear-gradient(135deg,#0e0d0b,var(--accent)); }
  .tweet .av.user { background:linear-gradient(135deg,var(--info),var(--success)); }
  .tweet .body { flex:1;min-width:0; }
  .tweet .th { font-size:13px;margin-bottom:4px;display:flex;align-items:center;flex-wrap:wrap;gap:4px; }
  .tweet .th b { font-weight:600;font-size:14px; }
  .tweet .th .vrf { color:var(--accent);font-size:12px;margin-left:-2px; }
  .tweet .th .at { color:var(--fg-faint); }
  .tweet .th .dot { color:var(--fg-muted);margin:0 4px; }
  .tweet .th .time { color:var(--fg-faint); }
  .tweet .tb { font-size:14.5px;line-height:1.6;color:var(--fg); }
  .tweet .tb .tag { color:var(--accent);font-weight:500; }
  .tweet .tb .hashtag { color:var(--info);font-weight:500; }
  .tweet .attachment { margin-top:10px;border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;max-width:440px; }
  .tweet .attach-image { aspect-ratio:16/10;flex:1;background:linear-gradient(135deg,#0b0c0e 0%,#1a1d22 50%,var(--accent) 120%);position:relative;min-height:110px; }
  .tweet .attach-image::after { content:'';position:absolute;inset:0;background:radial-gradient(circle at 70% 60%,rgba(255,255,255,0.3),transparent 40%); }
  .tweet .attach-meta { padding:12px 14px;background:var(--bg);min-width:150px;max-width:180px;display:flex;flex-direction:column;justify-content:center; }
  .tweet .attach-meta .host-site { font-family:var(--font-mono);font-size:10px;color:var(--fg-faint);letter-spacing:0.1em;text-transform:uppercase;margin-bottom:4px; }
  .tweet .attach-meta .host-title { font-size:12.5px;font-weight:600;line-height:1.35;margin-bottom:4px; }
  .tweet .attach-meta .host-desc { font-size:11px;color:var(--fg-faint);line-height:1.5; }

  /* ====== 信息流图片媒体 ====== */
  .media { margin-top:10px;border-radius:10px;overflow:hidden;border:1px solid var(--line);max-width:440px; }
  .media.single .ph { aspect-ratio:16/10; }
  .media.grid-4 { display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--line);max-width:320px; }
  .media.grid-4 .ph { aspect-ratio:1/1; }
  .ph { position:relative;overflow:hidden;background:var(--bg); }
  .ph::after { content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(0,0,0,0.4)); }
  .ph-badge { position:absolute;bottom:10px;left:10px;z-index:2;font-family:var(--font-mono);font-size:10px;color:var(--fg);background:rgba(0,0,0,0.55);padding:4px 8px;border-radius:4px;letter-spacing:0.05em;backdrop-filter:blur(6px); }
  .media.video .play-mini { position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;background:rgba(255,106,26,0.9);z-index:3;cursor:pointer;box-shadow:0 4px 12px rgba(0,0,0,0.4); }
  .media.video .play-mini::after { content:'';position:absolute;top:50%;left:55%;transform:translate(-50%,-50%);border-left:11px solid #fff;border-top:7px solid transparent;border-bottom:7px solid transparent; }

  .ph-tianzhou { background:
      linear-gradient(135deg,#d4d1c7 0%,#a8a49a 40%,#78746a 100%); }
  .ph-tianzhou::before { content:'';position:absolute;left:20%;top:25%;right:20%;bottom:25%;background:linear-gradient(180deg,#fafaf7 0%,#e8e6df 30%,var(--accent-soft-fg) 60%,var(--accent-hover) 100%);border-radius:8px 8px 40% 40%;box-shadow:inset 0 -10px 20px rgba(0,0,0,0.3); }
  .ph-tianzhou .ph-badge { background:rgba(11,12,14,0.7); }

  .ph-europa1 { background:
      radial-gradient(circle at 30% 40%,var(--info),transparent 50%),
      linear-gradient(135deg,#0b0c0e,var(--info-dark)); }
  .ph-europa1::before { content:'';position:absolute;right:15%;top:20%;width:45%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 35%,#e8e6df 0%,#a8a49a 30%,#54514a 60%,#0b0c0e 100%);box-shadow:inset -8px -8px 20px rgba(0,0,0,0.6); }
  .ph-europa2 { background:
      linear-gradient(135deg,#0e0d0b 0%,#35332e 100%); }
  .ph-europa2::before { content:'';position:absolute;inset:15%;background:
      repeating-linear-gradient(90deg,var(--accent) 0,var(--accent) 2px,transparent 2px,transparent 14%),
      linear-gradient(180deg,var(--warn) 0%,var(--accent) 50%,var(--danger) 100%);
      border-radius:4px;opacity:0.7; }
  .ph-europa3 { background:
      radial-gradient(ellipse 70% 40% at 50% 50%,var(--accent) 0%,var(--accent) 30%,transparent 60%),
      linear-gradient(180deg,#0b0c0e,#1a1d22); }
  .ph-europa3::before { content:'';position:absolute;left:30%;top:10%;width:40%;height:50%;background:linear-gradient(180deg,#fafaf7,#a8a49a);clip-path:polygon(50% 0,100% 100%,0 100%); }
  .ph-europa4 { background:
      radial-gradient(circle at 50% 50%,transparent 30%,var(--info) 32%,transparent 34%,transparent 50%,var(--info) 52%,transparent 54%,transparent 70%,var(--info) 72%,transparent 74%),
      linear-gradient(135deg,#0b0c0e,#161f55); }
  .ph-europa4::before { content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:10%;aspect-ratio:1;border-radius:50%;background:var(--accent);box-shadow:0 0 20px var(--accent); }

  .ph-reentry { background:
      radial-gradient(ellipse 100% 40% at 30% 60%,rgba(255,106,26,0.6),transparent 50%),
      linear-gradient(180deg,#0b0c0e 0%,#161f55 40%,#0e0d0b 100%); }
  .ph-reentry::before { content:'';position:absolute;top:40%;left:-5%;width:85%;height:4px;background:linear-gradient(90deg,transparent,var(--accent) 30%,var(--accent) 70%,transparent);transform:rotate(-12deg);filter:blur(2px);box-shadow:0 0 12px var(--accent); }
  .ph-reentry::after { content:'';position:absolute;inset:0;background:
      radial-gradient(1px 1px at 15% 20%,#fff,transparent),
      radial-gradient(1px 1px at 75% 15%,#fff,transparent),
      radial-gradient(2px 2px at 55% 80%,#fff,transparent),
      radial-gradient(1px 1px at 85% 65%,#fff,transparent),
      radial-gradient(1px 1px at 25% 85%,#fff,transparent),
      linear-gradient(180deg,transparent 60%,rgba(0,0,0,0.5));opacity:0.8; }

  .ph-weekly { background:
      repeating-linear-gradient(0deg,var(--accent) 0,var(--accent) 18%,transparent 18%,transparent 24%),
      linear-gradient(135deg,var(--accent-soft-bg),var(--accent-soft-bg)); }
  .ph-weekly::before { content:'';position:absolute;left:15%;top:20%;width:3px;height:60%;background:#0e0d0b; }
  .ph-weekly::after { content:'';position:absolute;left:15%;top:20%;width:3px;height:60%;background:#0e0d0b;box-shadow:18% 0 0 #0e0d0b,40% 0 0 #0e0d0b,66% 0 0 #0e0d0b,85% 0 0 #0e0d0b; }
  /* ============ 新闻流 ============ */
  .news-list { background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;overflow:hidden; }
  .news-row { display:grid;grid-template-columns:64px 96px minmax(0,1fr);gap:16px;padding:16px 18px;align-items:start;border-bottom:1px solid var(--line-faint);cursor:pointer;transition:background 120ms; }
  .news-row.no-thumb { grid-template-columns:64px minmax(0,1fr); }
  .news-row.empty { grid-template-columns:1fr;cursor:default; }
  .news-row.empty:hover { background:var(--bg-elev); }
  .news-row:hover { background:var(--accent-soft-bg); }
  .news-row:last-of-type { border-bottom:none; }
  .news-time { font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--fg);line-height:1.2;padding-top:2px; }
  .news-time .ago { display:block;font-size:11px;font-weight:400;color:var(--fg-faint);margin-top:4px; }
  .news-thumb { width:96px;aspect-ratio:1/1;border-radius:8px;flex-shrink:0;position:relative; }
  .news-thumb-video { position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:26px;height:26px;border-radius:50%;background:rgba(255,106,26,0.95);color:var(--accent-fg);font-size:10px;display:flex;align-items:center;justify-content:center;padding-left:2px; }
  .news-main { min-width:0; }
  .news-meta { display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);margin-bottom:6px; }
  .news-meta .dot { color:var(--fg-muted); }
  .news-title { font-family:var(--font-sans);font-size:15px;font-weight:600;margin:0 0 6px;line-height:1.4;color:var(--fg);letter-spacing:-0.002em; }
  .news-desc { font-size:12.5px;line-height:1.55;color:var(--fg-faint);margin:0 0 10px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical; }
  .news-load-more { padding:14px;display:flex;justify-content:center;border-top:1px solid var(--line-faint);background:var(--bg); }
  .news-load-btn { font-family:var(--font-mono);font-size:12px;color:var(--fg-muted);padding:6px 16px;text-decoration:none; }
  .news-load-btn:hover { color:var(--accent); }

  /* 来源署名 · 无底色，仅靠字重与字体区分 */
  .src-tag { font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:0.06em;color:var(--fg);text-transform:uppercase;padding:0; }
  .src-user { color:var(--fg);letter-spacing:0.02em;text-transform:none;font-weight:600; }
  .src-chx  { color:var(--accent);letter-spacing:0.04em; }
  /* 机翻披露 chip。比 .src-tag 更弱：它是免责说明而非来源，不该抢标题的注意力。
     实际会出现在除周报外每张卡片上（外文新闻全部机翻），所以只用描边不用底色。 */
  .ai-tag { font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:0.04em;color:var(--fg-faint);border:1px solid var(--line);border-radius:3px;padding:0 4px;line-height:1.5;flex:none;cursor:help; }
  /* 别的来源保留 className hook 以便 JS 查找，但视觉都走默认 .src-tag */
  .src-spacex, .src-nasa, .src-cnsa, .src-media, .src-isro, .src-rl { /* inherit */ }

  /* ============ 新闻详情浮层 ============ */
  .news-overlay { position:fixed;inset:0;background:rgba(11,12,14,0.55);backdrop-filter:blur(6px);z-index:100;display:none;align-items:center;justify-content:center;padding:40px;opacity:0;transition:opacity 180ms; }
  .news-overlay.on { display:flex;opacity:1; }
  .news-modal { background:var(--bg-elev);max-width:720px;width:100%;max-height:90vh;border-radius:16px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 80px rgba(0,0,0,0.3);transform:translateY(8px) scale(0.98);transition:transform 220ms var(--ease-out); }
  .news-overlay.on .news-modal { transform:translateY(0) scale(1); }
  .news-modal-img { aspect-ratio:16/9;width:100%; }
  .news-modal-body { padding:28px 32px 24px;overflow-y:auto; }
  .news-modal-meta { display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);margin-bottom:12px; }
  .news-modal h2 { font-family:var(--font-display);font-size:24px;font-weight:700;margin:0 0 14px;line-height:1.3;letter-spacing:-0.015em; }
  .news-modal p { font-size:15px;line-height:1.7;color:var(--fg);margin:0 0 14px; }
  .news-modal .modal-footer { margin-top:8px;padding-top:18px;border-top:1px solid var(--line-faint);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px; }
  .news-modal .modal-footer .rel { font-family:var(--font-mono);font-size:11px;color:var(--fg-muted); }
  .news-modal .modal-footer .rel a { color:var(--accent);font-weight:500; }
  .news-modal .modal-footer .actions { display:flex;gap:8px; }
  .news-modal .modal-footer button { font-family:inherit;font-size:12px;padding:7px 12px;border-radius:6px;border:1px solid var(--line);background:var(--bg-elev);cursor:pointer;color:var(--fg); }
  .news-modal .modal-footer button.pri { background:var(--accent);color:var(--accent-fg);border-color:var(--accent); }
  .news-modal-close { position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,0.92);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--fg-strong);z-index:2; }
  .news-modal-close:hover { background:var(--bg-elev); }

  /* 数据卡片（YTD / 机构榜） */
  .stat-grid { display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px; }
  .stat { padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--bg); }
  .stat .val { font-family:var(--font-mono);font-size:24px;font-weight:700;letter-spacing:-0.02em;line-height:1;color:var(--fg); }
  .stat .val .u { font-size:12px;color:var(--fg-faint);font-weight:500;margin-left:2px; }
  .stat .k { font-size:11px;color:var(--fg-faint);font-family:var(--font-mono);letter-spacing:0.05em;text-transform:uppercase;margin-top:6px; }
  .stat .trend { font-size:10px;margin-left:4px;font-weight:500; }
  .stat .trend.up { color:var(--success); }
  .stat .trend.down { color:var(--danger); }
  .mini { display:grid;grid-template-columns:20px 1fr auto auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line-faint);font-size:13px;color:inherit;text-decoration:none; }
  a.mini { transition:background 120ms; }
  a.mini:hover { background:var(--accent-tint-12); }
  a.mini:hover .n { color:var(--accent); }
  .mini:last-child { border-bottom:none; }
  .mini .rk { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);font-weight:700; }
  .mini .rk.top { color:var(--accent); }
  .mini .n { font-weight:500; }
  .mini .bar { width:60px;height:4px;border-radius:2px;background:var(--bg-inset);overflow:hidden; }
  .mini .bar .fill { height:100%;background:var(--accent);border-radius:2px; }
  .mini .v { font-family:var(--font-mono);font-size:11px;color:var(--fg-muted);font-weight:600;width:28px;text-align:right; }

  /* ============ 双列并行 · 全球发射时间表 ‖ 信息流 ============ */
  .parallel-section { max-width:1480px;margin:32px auto 0;padding:0 32px;display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:stretch; }
  /* 2026-09-01：右栏（晨昏线报告）整栏撤掉，只剩日历一列，让它自然撑满。
     用修饰类而不是直接改上面那条：CF 边缘还挂着最长 48h 的老 HTML，那份
     HTML 仍是两列，改原规则会让缓存期内的访客看到一列被拉宽、另一列错位。
     48h 后可以把两条合并，`.col-feed` / `.news-list` 那些规则也一起清。 */
  .parallel-section.parallel-section-solo { grid-template-columns:minmax(0,1fr); }
  .parallel-col { min-width:0;display:flex;flex-direction:column; }
  .parallel-col .week-head, .parallel-col .sec-head { margin-bottom:14px;flex:0 0 auto; }
  .parallel-col .week-head h2, .parallel-col .sec-head h2, .parallel-col .sec-title { font-size:28px; }
  .parallel-col .week-head .eyebrow, .parallel-col .sec-head .eyebrow-sec { margin-bottom:8px; }
  .parallel-col .cal-list, .parallel-col .news-list { flex:1 1 auto;min-height:0; }
  .parallel-col .cal-list { background:transparent;border:none;border-radius:0;padding:0; }
  .parallel-col.col-cal, .parallel-col.col-feed { padding:0;background:transparent;border:none;border-radius:0; }

  /* cal-list 左列：发射时间表 */
  /* 共用 day-head / day-group 基础样式（cal-list 与 news-list 共用） */
  .cal-list .day-group, .parallel-col .news-list .day-group { margin-bottom:18px; }
  .cal-list .day-group:last-child, .parallel-col .news-list .day-group:last-child { margin-bottom:0; }
  /* 当天发射的容器:桌面透明(display:contents 不参与布局,保持原样),手机变 App 卡 */
  .cal-list .lc-cards { display:contents; }
  .cal-list .day-head, .parallel-col .news-list .day-head { display:flex;align-items:baseline;gap:10px;padding:8px 0 10px;border-bottom:2px solid var(--fg);margin-bottom:0; }
  .cal-list .day-head .date, .parallel-col .news-list .day-head .date { font-family:var(--font-mono);font-weight:700;font-size:16px;color:var(--fg);letter-spacing:-0.01em;text-transform:uppercase; }
  .cal-list .day-head .wk, .parallel-col .news-list .day-head .wk { font-family:var(--font-mono);font-size:12.5px;color:var(--fg-faint);letter-spacing:0.1em;text-transform:uppercase; }
  .cal-list .day-head .rel, .parallel-col .news-list .day-head .rel { font-size:13.5px;color:var(--fg-faint);margin-left:auto;font-weight:500;font-family:var(--font-mono);letter-spacing:0.04em; }
  /* cal-list 变体：橙色下划线 + 橙色 rel */
  .cal-list .day-head { border-bottom-color:var(--accent); }
  .cal-list .day-head .rel { color:var(--accent); }
  .parallel-col .news-list .day-group { margin-bottom:14px; }
  .cal-list .lc-item { display:grid;grid-template-columns:72px 56px minmax(0,1fr) auto auto;gap:18px;padding:14px 6px;align-items:center;border-bottom:1px solid var(--line-faint);cursor:pointer;transition:background 120ms;text-decoration:none;color:inherit;border-radius:6px; }
  .cal-list .lc-item:last-child { border-bottom:none; }
  .cal-list .lc-item:hover { background:var(--accent-soft-bg); }
  .cal-list .lc-item .tm { font-family:var(--font-mono);font-size:18px;font-weight:600;letter-spacing:-0.01em;color:var(--fg);line-height:1.1; }
  .cal-list .lc-item .tm .tz { display:block;font-size:11px;color:var(--fg-faint);font-weight:400;letter-spacing:0.06em;margin-top:3px; }
  .cal-list .lc-item .tm-tbd { color:var(--fg-faint);font-weight:600; }
  .cal-list .lc-item .lc-thumb { width:56px;height:56px;border-radius:8px;background-size:cover;background-position:center;background-color:var(--bg-inset);flex-shrink:0;position:relative;overflow:hidden;border:1px solid rgba(0,0,0,0.06); }
  .cal-list .lc-item .lc-thumb::after { content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(11,12,14,0.3)); }
  .cal-list .lc-item .lc-body { min-width:0; }
  .cal-list .lc-item .lc-titleline { display:flex;align-items:center;gap:8px;margin-bottom:5px;min-width:0;white-space:nowrap;overflow:hidden; }
  .cal-list .lc-item .name { font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:-0.005em;color:var(--fg);display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto; }
  .cal-list .lc-item .name-text { min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
  .cal-list .lc-item .lc-flag { font-size:15px;line-height:1;flex:0 0 auto; }
  .cal-list .lc-item .lc-titleline .title-sep { flex:0 0 auto;color:var(--fg-muted); }
  .cal-list .lc-item .lc-sub { display:flex;align-items:center;gap:5px;font-size:13.5px;line-height:1.35;color:var(--fg);font-weight:500;min-width:0;flex:1 1 auto; }
  .cal-list .lc-item .lc-sub-text { min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
  .cal-list .lc-item .meta { font-size:13px;color:var(--fg-muted);display:flex;gap:6px;align-items:center;flex-wrap:wrap; }
  .cal-list .lc-item .meta-item { display:inline-flex;align-items:center;gap:4px;min-width:0; }
  .cal-list .lc-item .meta .sep { color:var(--fg-muted); }
  .cal-list .lc-item .org { font-weight:500;color:var(--fg); }
  .cal-list .lc-item .lc-meta-icon { width:14px;height:14px;flex:0 0 14px;color:var(--fg-dim); }
  .cal-list .lc-item .lc-sub .lc-meta-icon { color:var(--accent); }
  .cal-list .lc-item .org .lc-meta-icon { color:var(--fg-faint); }
  .cal-list .lc-item .arrow { color:var(--fg-dim);font-size:18px;transition:transform 150ms,color 150ms; }
  .cal-list .lc-item:hover .arrow { color:var(--accent);transform:translateX(2px); }
  .cal-list .lc-item.lc-empty { grid-template-columns:1fr;padding:14px 4px;cursor:default;border:1px dashed var(--line-faint);border-radius:8px;margin-top:6px; }
  .cal-list .lc-item.lc-empty:hover { background:transparent; }
  .cal-list .lc-empty-text { color:var(--fg-dim);font-size:13px;font-family:var(--font-mono);text-align:center; }

  /* news-list 右列：信息流（在 parallel-col 中） */
  .parallel-col .news-list { background:transparent;border:none;border-radius:0;overflow:visible; }
  .parallel-col .news-row:hover { background:var(--accent-soft-bg); }
  .parallel-col .news-row { grid-template-columns:60px 80px minmax(0,1fr);gap:14px;padding:14px 4px; }
  .parallel-col .news-row.no-thumb { grid-template-columns:60px minmax(0,1fr); }
  .parallel-col .news-thumb { width:80px;height:80px;aspect-ratio:1/1; }
  .parallel-col .news-title { font-size:16.5px; }
  .parallel-col .news-desc { font-size:14.5px;-webkit-line-clamp:2; }
  .parallel-col .news-time { font-size:15px; }
  .parallel-col .news-time .ago { font-size:12px; }
  .parallel-col .news-load-more { background:transparent;border-top:none;padding:14px 0; }
  .parallel-col .news-list .day-group .news-row:last-child { border-bottom:none; }

  /* 数据卡片 · 横向 2 列 */
  .home-data { max-width:1480px;margin:32px auto 48px;padding:0 32px;display:grid;grid-template-columns:1fr 1fr;gap:24px; }
  .home-data .card { background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:20px 22px; }
  .home-data .card h3 { font-family:var(--font-display);font-size:16px;font-weight:600;margin:0 0 14px;display:flex;justify-content:space-between;align-items:baseline; }
  .home-data .card h3 .y { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);font-weight:500;letter-spacing:0.1em; }

  .home-topics { max-width:1480px;margin:32px auto 0;padding:0 32px; }
  .home-topics-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:16px; }
  .home-topic-card { display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid var(--line);border-radius:14px;background:var(--bg-elev);text-decoration:none;transition:border-color 150ms var(--ease-out); }
  .home-topic-card:hover { border-color:var(--accent); }
  .htc-title { font-family:var(--font-display);font-size:17px;font-weight:600;color:var(--fg-strong); }
  .htc-blurb { font-size:13px;color:var(--fg-muted);line-height:1.5;flex:1; }
  .htc-count { font-family:var(--font-mono);font-size:11px;color:var(--fg-faint);letter-spacing:0.08em; }

  @media (max-width: 1100px) { .parallel-section { gap:40px; } }
  @media (max-width: 900px) { .hero-inner { grid-template-columns:1fr; } .hero h1 { font-size:48px; } .cd-block .n { font-size:44px; } .t-prefix { line-height:44px; } .parallel-section { grid-template-columns:1fr;gap:32px; } .home-data { grid-template-columns:1fr; } .home-topics-grid { grid-template-columns:repeat(2,1fr); } }

  /* 手机专属标记:默认(桌面)隐藏,仅 ≤640 显示 */
  .hero-m-head { display:none; }
  .m-home-wx, .m-home-stats { display:none; }

  /* ============ 手机版式（≤640px）：贴移动设计稿 ============ */
  @media (max-width: 640px) {
    /* Hero → 设计稿「悬浮圆角配图大卡」:深色配图 + NEXT LAUNCH 徽标 + 任务名 + 倒计时 */
    .hero { margin:10px 12px 0;border-radius:18px;overflow:hidden;padding:0; }
    .hero::before { display:none; }
    .hero::after { display:none; }
    .hero-inner { display:block;padding:0; }
    .hero-inner > div:first-child { position:relative;z-index:2;padding:18px 16px 18px; }
    .hero .eyebrow { font-size:10px;margin-bottom:0; }
    .hero h1, .hero .sub { display:none; }
    .hero-m-head { display:block; }
    .hero-m-title { font-family:var(--font-display);font-size:23px;font-weight:700;color:#fafaf7;letter-spacing:-0.01em;line-height:1.15;margin:8px 0 4px; }
    .hero-m-sub { font-family:var(--font-mono);font-size:10.5px;color:#9aa0ab;letter-spacing:0.03em;line-height:1.5;margin:0 0 14px; }
    .countdown-row { gap:4px;margin-bottom:16px; }
    .cd-block .n { font-size:30px; }
    .cd-sep { font-size:24px;padding-bottom:5px; }
    /* 数字在这个断点是 30px，行框同步。 */
    .t-prefix { font-size:16px;line-height:30px; }
    /* 贴设计稿:手机 hero 是纯展示大卡,无按钮(隐藏 查看任务档案/完整日历) */
    .hero .cta { display:none; }
    /* hero 内的桌面气象/规格表整段隐藏(手机气象改用下方浅色 .m-home-wx 卡) */
    .mission-panel { display:none; }

    /* 手机浅色天气卡(贴设计稿 .wx):4 指标网格 */
    .m-home-wx { display:block;margin:12px 12px 0;padding:12px 14px;background:var(--bg-elev);border:1px solid var(--line);border-radius:14px; }
    .m-wx-h { display:flex;align-items:center;justify-content:space-between;margin-bottom:10px; }
    .m-wx-h .m-wx-t { font-family:var(--font-mono);font-size:9.5px;letter-spacing:0.1em;text-transform:uppercase;color:var(--fg-muted);font-weight:700; }
    .m-wx-h .m-wx-src { font-family:var(--font-mono);font-size:9px;color:var(--fg-faint); }
    .m-wx-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:6px; }
    .m-wx-c .m-wx-k { font-size:9.5px;color:var(--fg-muted);margin-bottom:2px; }
    .m-wx-c .m-wx-v { font-family:var(--font-mono);font-size:14px;font-weight:700;letter-spacing:-0.01em;color:var(--fg); }

    /* 手机今日统计三连(贴设计稿 .stat-row) */
    .m-home-stats { display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 12px 0; }
    .m-home-stats .m-stat { background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:11px 13px; }
    .m-home-stats .m-stat-k { font-family:var(--font-mono);font-size:9px;color:var(--fg-muted);letter-spacing:0.08em;text-transform:uppercase;font-weight:700;margin-bottom:4px; }
    .m-home-stats .m-stat-v { font-family:var(--font-mono);font-size:20px;font-weight:700;letter-spacing:-0.01em;line-height:1;color:var(--fg); }
    .m-home-stats .m-stat-v .u { font-size:10px;color:var(--fg-muted);font-weight:400;margin-left:1px; }

    /* 信息流列 / 专题 / 桌面数据区:归属其它 tab,首页手机不展示 */
    .parallel-col.col-feed, .home-topics, .home-data { display:none; }

    /* 区块通用：去桌面大标题感 + 卡片化 + 收紧间距(贴设计稿 App 屏) */
    .parallel-section { margin-top:16px;padding:0 12px;gap:18px; }
    .week-head { margin-bottom:10px;align-items:flex-end; }
    .week-head h2, .parallel-col .week-head h2 { font-size:16px;font-weight:600;letter-spacing:-0.01em; }
    .week-head .eyebrow, .parallel-col .week-head .eyebrow { font-size:9.5px;margin-bottom:5px; }
    .week-head .more { font-size:12px; }
    /* 贴近期发射:每一天是一个独立区域 = 日头(在卡外)+ 当天发射卡(.lc-cards) */
    .parallel-col .cal-list { background:transparent;border:none;border-radius:0;padding:0;overflow:visible; }
    .parallel-col .cal-list .day-group { margin-bottom:20px; }
    .parallel-col .cal-list .day-group:last-child { margin-bottom:0; }
    /* 日头移到卡外、去掉下划线,贴日历 .cal-tl-axis 的「日期 + 周 + 场次」基线排布 */
    .cal-list .day-head { border-bottom:none;padding:14px 2px 8px;gap:8px; }
    .cal-list .day-head .date { font-size:15px; }
    /* 当天发射收进一张 --bg-elev 圆角卡(贴日历 .cal-tl-cards) */
    .cal-list .lc-cards { display:block;background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:0 14px;overflow:hidden; }

    /* 发射行 → 完全贴近期发射 .cal-row:时间(mono 粗)| 任务名 + 机构/工位/轨道竖排 | 实心状态药丸 */
    .cal-list .lc-item { grid-template-columns:54px minmax(0,1fr) auto;gap:12px;padding:13px 0;align-items:center; }
    .cal-list .lc-item .lc-thumb, .cal-list .lc-item .arrow { display:none; }
    .cal-list .lc-item .tm { font-size:17px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums; }
    .cal-list .lc-item .tm .tz { display:block;font-size:9px;margin-top:4px;letter-spacing:0.06em;text-transform:uppercase;color:var(--fg-muted); }
    /* 标题行只留任务名(占满整行,可省略号);桌面把火箭塞在标题内联,手机隐掉避免拥挤 */
    .cal-list .lc-item .lc-titleline { margin-bottom:3px; }
    .cal-list .lc-item .lc-titleline .lc-sub, .cal-list .lc-item .lc-titleline .title-sep { display:none; }
    .cal-list .lc-item .name { font-family:var(--font-sans);font-size:13.5px;font-weight:600;letter-spacing:-0.005em;flex:1 1 auto;min-width:0; }
    /* 副行竖排:机构 / 工位 / 轨道 各占一行(贴近期发射,避免挤压重影);去「·」分隔 */
    .cal-list .lc-item .meta { font-family:var(--font-mono);font-size:10px;color:var(--fg-muted);flex-direction:column;align-items:flex-start;gap:3px;overflow:hidden;white-space:nowrap; }
    .cal-list .lc-item .meta .meta-item { max-width:100%;overflow:hidden;text-overflow:ellipsis; }
    .cal-list .lc-item .meta .lc-meta-icon { display:none; }
    .cal-list .lc-item .meta .sep { display:none; }
    /* 状态实心药丸样式见 globals.css ≤640(.cal-list .launch-result 已覆盖本页发射行) */
  }

  [data-news] { cursor:pointer; position:relative; }
  /* 外链角标 · 告诉用户点开会在新标签页跳外部来源 */
  [data-news][data-ext]::after {
    content:'↗ ' attr(data-domain);
    position:absolute;top:10px;right:10px;
    font-family:var(--font-mono);font-size:10px;letter-spacing:0.03em;
    color:var(--fg-muted);background:rgba(255,255,255,0.92);backdrop-filter:blur(6px);
    padding:3px 7px;border-radius:4px;border:1px solid var(--line);
    opacity:0;transition:opacity 150ms;pointer-events:none;
  }
  [data-news][data-ext]:hover::after { opacity:1; }
