* { margin: 0; padding: 0; box-sizing: border-box; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: #F7F8F5; color: #2C2C2A; line-height: 1.6; font-size: 14px;
}
.header { background: #FFFFFF; border-bottom: 1px solid rgba(0,0,0,0.08); padding: 14px 0; position: sticky; top: 0; z-index: 100; }
.header-inner { max-width: 1120px; margin: 0 auto; padding: 0 24px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.logo { font-size: 18px; font-weight: 600; color: #185FA5; letter-spacing: 0.5px; }
.logo span { font-size: 12px; font-weight: 400; color: #888780; margin-left: 8px; letter-spacing: 0; }
.official-badge { font-size: 12px; color: #0F6E56; background: #E1F5EE; border: 1px solid #9FE1CB; border-radius: 6px; padding: 4px 10px; }
.container { max-width: 1120px; margin: 0 auto; padding: 24px; }
.notice { background: #FAEEDA; border: 1px solid #FAC775; border-left: 3px solid #BA7517; border-radius: 8px; padding: 14px 18px; margin-bottom: 20px; font-size: 13px; color: #633806; }
.notice strong { font-weight: 600; }
.hero { margin-bottom: 28px; }
.hero h1 { font-size: 24px; font-weight: 600; margin-bottom: 8px; }
.hero p { color: #5F5E5A; font-size: 14px; max-width: 760px; }

.region-bar { background: #FFFFFF; border: 1px solid rgba(0,0,0,0.08); border-radius: 12px; padding: 18px 20px; margin-bottom: 24px; }
.region-bar h3 { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
.region-bar .hint { font-size: 12px; color: #888780; margin-bottom: 14px; }
.region-selects { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.region-selects select { width: 100%; padding: 9px 12px; border: 1px solid rgba(0,0,0,0.12); border-radius: 6px; font-size: 13px; background: #FFFFFF; color: #2C2C2A; font-family: inherit; }
.region-result { margin-top: 16px; padding: 16px; background: #F7F8F5; border-radius: 8px; font-size: 13px; display: none; }
.region-result.show { display: block; }
.region-result .label { font-size: 12px; color: #888780; margin-bottom: 4px; }
.region-result .value { font-size: 20px; font-weight: 600; color: #185FA5; margin-bottom: 10px; }
.region-result .note { font-size: 12px; color: #5F5E5A; }
.calc-detail { margin-top: 12px; padding: 12px; background: #FFFFFF; border-radius: 6px; border-left: 3px solid #85B7EB; font-size: 12px; color: #444441; }
.calc-detail code { background: #F1EFE8; padding: 1px 5px; border-radius: 3px; font-family: var(--font-mono, monospace); font-size: 11px; }

.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 16px; margin-bottom: 28px; }
.card { background: #FFFFFF; border: 1px solid rgba(0,0,0,0.08); border-radius: 12px; padding: 18px; transition: all 0.2s; }
.card:hover { border-color: #85B7EB; box-shadow: 0 2px 12px rgba(24,95,165,0.08); }
.card-icon { width: 32px; height: 32px; border-radius: 8px; margin-bottom: 10px; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 600; }
.card h3 { font-size: 15px; font-weight: 600; margin-bottom: 6px; }
.card p { font-size: 13px; color: #888780; line-height: 1.5; }
.card-tag { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 4px; margin-top: 10px; }
.tag-hot { background: #FCEBEB; color: #A32D2D; }
.tag-new { background: #E1F5EE; color: #0F6E56; }

.section { background: #FFFFFF; border: 1px solid rgba(0,0,0,0.08); border-radius: 12px; padding: 22px; margin-bottom: 22px; }
.section h2 { font-size: 17px; font-weight: 600; margin-bottom: 4px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.section .sub { font-size: 12px; color: #888780; margin-bottom: 18px; }
.src-badge { font-size: 11px; font-weight: 400; padding: 2px 8px; border-radius: 4px; background: #E6F1FB; color: #185FA5; }

.army-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.army-item { border: 1px solid rgba(0,0,0,0.08); border-radius: 8px; padding: 14px; background: #FCFCFA; }
.army-item .name { font-size: 14px; font-weight: 600; margin-bottom: 4px; display: flex; align-items: center; gap: 8px; }
.army-item .dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.army-item .desc { font-size: 12px; color: #5F5E5A; line-height: 1.5; }
.army-item .posts { font-size: 11px; color: #888780; margin-top: 8px; padding-top: 8px; border-top: 1px dashed rgba(0,0,0,0.08); }
.army-item .era { font-size: 11px; color: #185FA5; }

table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { text-align: left; padding: 10px 12px; background: #F7F8F5; font-weight: 600; font-size: 12px; color: #5F5E5A; border-bottom: 1px solid rgba(0,0,0,0.08); }
td { padding: 10px 12px; border-bottom: 1px solid rgba(0,0,0,0.05); vertical-align: top; }
tr:last-child td { border-bottom: none; }

.checker { background: #F7F8F5; border-radius: 10px; padding: 20px; }
.checker-row { display: grid; grid-template-columns: 110px 1fr; gap: 16px; align-items: center; margin-bottom: 14px; }
.checker-row label { font-size: 13px; font-weight: 500; color: #444441; }
.checker-row select, .checker-row input { width: 100%; padding: 9px 12px; border: 1px solid rgba(0,0,0,0.12); border-radius: 6px; font-size: 13px; background: #FFFFFF; color: #2C2C2A; font-family: inherit; }
.btn { background: #185FA5; color: #FFFFFF; border: none; padding: 10px 24px; border-radius: 6px; font-size: 14px; font-weight: 500; cursor: pointer; font-family: inherit; transition: background 0.2s; }
.btn:hover { background: #0C447C; }
.result { margin-top: 18px; padding: 16px; background: #FFFFFF; border-radius: 8px; border: 1px solid rgba(0,0,0,0.08); display: none; }
.result.show { display: block; }
.result-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; }
.result-ok { color: #0F6E56; }
.result-warn { color: #BA7517; }
.result-fail { color: #A32D2D; }
.result ul { margin-left: 18px; font-size: 13px; color: #444441; }
.result li { margin-bottom: 6px; }

.path-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: 16px; }
.path-card { border: 1px solid rgba(0,0,0,0.08); border-radius: 10px; padding: 18px; background: #FCFCFA; }
.path-card h4 { font-size: 14px; font-weight: 600; margin-bottom: 6px; }
.path-card .hl { font-size: 12px; color: #BA7517; margin-bottom: 10px; }
.path-card ul { margin-left: 16px; font-size: 12px; color: #5F5E5A; }
.path-card li { margin-bottom: 4px; }

.footer { text-align: center; padding: 32px 24px; font-size: 12px; color: #888780; border-top: 1px solid rgba(0,0,0,0.08); margin-top: 32px; }
.footer .warn { color: #A32D2D; font-weight: 500; }

.coverage-map { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.cov-item { font-size: 11px; padding: 3px 9px; border-radius: 4px; background: #E1F5EE; color: #0F6E56; border: 1px solid #9FE1CB; }
.cov-item.pending { background: #F1EFE8; color: #888780; border-color: #D3D1C7; }
.cov-item.partial { background: #FAEEDA; color: #854F0B; border-color: #FAC775; }

/* ===== 体检标准模块 ===== */
.mtabs { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; border-bottom: 1px solid rgba(0,0,0,0.08); padding-bottom: 12px; }
.mtab { font-size: 12px; padding: 6px 12px; border-radius: 6px; border: 1px solid rgba(0,0,0,0.1); background: #FCFCFA; color: #5F5E5A; cursor: pointer; transition: all .15s; font-family: inherit; }
.mtab:hover { background: #F1EFE8; }
.mtab.active { background: #185FA5; color: #fff; border-color: #185FA5; font-weight: 600; }

.mchap-intro { font-size: 12px; color: #5F5E5A; background: #F1EFE8; padding: 10px 12px; border-radius: 6px; margin-bottom: 14px; line-height: 1.7; }
.mitem { border: 1px solid rgba(0,0,0,0.08); border-radius: 8px; margin-bottom: 10px; overflow: hidden; background: #FFFFFF; }
.mitem-head { display: flex; align-items: center; gap: 10px; padding: 11px 14px; background: #FCFCFA; flex-wrap: wrap; }
.mitem-no { font-size: 11px; color: #888780; font-family: ui-monospace, monospace; }
.mitem-name { font-size: 13.5px; font-weight: 600; color: #2C2C2A; }
.mitem-level { font-size: 10.5px; padding: 2px 8px; border-radius: 4px; font-weight: 600; white-space: nowrap; }
.lv-hard { background: #FCEBEB; color: #A32D2D; border: 1px solid #F7C1C1; }
.lv-mix { background: #FAEEDA; color: #854F0B; border: 1px solid #FAC775; }
.lv-range { background: #E6F1FB; color: #185FA5; border: 1px solid #B5D4F4; }
.mitem-body { padding: 12px 14px; font-size: 13px; color: #444441; line-height: 1.85; border-top: 1px solid rgba(0,0,0,0.06); }
.mitem-body .lbl { font-weight: 600; color: #2C2C2A; margin-right: 6px; }
.mrow { margin-bottom: 8px; }
.mformula { background: #F1EFE8; padding: 8px 10px; border-radius: 5px; font-family: ui-monospace, monospace; font-size: 12px; color: #0F6E56; margin: 8px 0; display: inline-block; }
.mexc { background: #EAF6F0; border-left: 3px solid #5DCAA5; padding: 10px 12px; border-radius: 0 6px 6px 0; margin: 8px 0; }
.mexc-t { font-size: 12px; font-weight: 600; color: #0F6E56; margin-bottom: 5px; }
.mexc ul { margin-left: 16px; font-size: 12.5px; color: #2C2C2A; }
.mexc li { margin-bottom: 4px; line-height: 1.7; }
.mcond { background: #FAEEDA; border-left: 3px solid #EF9F27; padding: 9px 12px; border-radius: 0 6px 6px 0; margin: 8px 0; font-size: 12.5px; color: #633806; line-height: 1.7; }
.mtip { background: #F1EFE8; padding: 9px 12px; border-radius: 6px; margin-top: 8px; font-size: 12.5px; color: #444441; line-height: 1.75; }
.mtip .lbl { color: #185FA5; }
.mtag-row { margin-top: 7px; display: flex; gap: 6px; flex-wrap: wrap; }
.mtag { font-size: 10.5px; padding: 2px 8px; border-radius: 4px; background: #F1EFE8; color: #5F5E5A; }
.mtag.ok { background: #E1F5EE; color: #0F6E56; }
.mtag.no { background: #FCEBEB; color: #A32D2D; }
.mfold { margin: 8px 0; border: 1px solid #E3E1D9; border-radius: 6px; background: #FAFAF7; }
.mfold > summary { cursor: pointer; padding: 8px 12px; font-size: 12px; font-weight: 600; color: #185FA5; list-style: none; user-select: none; }
.mfold > summary::-webkit-details-marker { display: none; }
.mfold > summary::before { content: '▸ '; color: #888780; }
.mfold[open] > summary::before { content: '▾ '; }
.mfold > summary:hover { color: #0C3E6E; }
.mfold > ul { margin: 0 12px 10px 28px; font-size: 12px; color: #444441; }
.mfold > ul li { margin-bottom: 4px; line-height: 1.7; }

.timeline { position: relative; padding-left: 22px; }
.timeline::before { content: ''; position: absolute; left: 5px; top: 6px; bottom: 6px; width: 2px; background: #D3D1C7; }
.tl-item { position: relative; margin-bottom: 16px; }
.tl-item::before { content: ''; position: absolute; left: -21px; top: 5px; width: 10px; height: 10px; border-radius: 50%; background: #185FA5; border: 2px solid #fff; box-shadow: 0 0 0 1px #B5D4F4; }
.tl-stage { font-size: 12.5px; font-weight: 600; color: #185FA5; margin-bottom: 5px; }
.tl-item ul { margin-left: 16px; font-size: 12.5px; color: #444441; }
.tl-item li { margin-bottom: 4px; line-height: 1.7; }

.selfcheck { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 8px; }
.sc-item { border: 1px solid rgba(0,0,0,0.08); border-radius: 6px; padding: 10px 12px; background: #FCFCFA; }
.sc-q { font-size: 12.5px; font-weight: 600; color: #2C2C2A; margin-bottom: 4px; }
.sc-a { font-size: 12px; color: #5F5E5A; line-height: 1.65; }

.myth { margin-bottom: 9px; border: 1px solid rgba(0,0,0,0.08); border-radius: 7px; overflow: hidden; }
.myth-q { padding: 10px 13px; background: #FCEBEB; font-size: 12.5px; color: #A32D2D; font-weight: 600; }
.myth-q::before { content: '✕ 传言　'; opacity: .65; font-weight: 400; }
.myth-a { padding: 11px 13px; background: #EAF6F0; font-size: 12.5px; color: #0C447C; line-height: 1.8; }
.myth-a::before { content: '✓ 标准原文　'; color: #0F6E56; font-weight: 600; }

.taxonomy { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 7px; }
.tax-item { border: 1px solid rgba(0,0,0,0.08); border-radius: 6px; padding: 9px 11px; background: #FCFCFA; }
.tax-name { font-size: 12.5px; font-weight: 600; color: #185FA5; margin-bottom: 3px; }
.tax-detail { font-size: 11.5px; color: #5F5E5A; line-height: 1.6; }

.pa-scope { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 10px; margin-bottom: 14px; }
.scope-card { border: 1px solid rgba(0,0,0,0.08); border-radius: 8px; padding: 13px 15px; background: #FCFCFA; }
.scope-card h5 { font-size: 12.5px; font-weight: 600; margin-bottom: 8px; color: #2C2C2A; }
.scope-card ul { margin-left: 16px; font-size: 12.5px; color: #444441; }
.scope-card li { margin-bottom: 4px; line-height: 1.7; }
.scope-card.must { border-color: #B5D4F4; background: #F5F9FE; }
.scope-card.must h5 { color: #185FA5; }
.scope-card.may { border-color: #FAC775; background: #FEFBF5; }
.scope-card.may h5 { color: #854F0B; }
.scope-card.not { border-color: #9FE1CB; background: #F5FCF9; }
.scope-card.not h5 { color: #0F6E56; }

.faq-list { margin-bottom: 6px; }
.faq { border: 1px solid rgba(0,0,0,0.08); border-radius: 7px; margin-bottom: 8px; overflow: hidden; }
.faq-q { padding: 11px 14px; background: #FCFCFA; font-size: 13px; font-weight: 600; color: #2C2C2A; }
.faq-q::before { content: 'Q　'; color: #185FA5; }
.faq-a { padding: 12px 14px; font-size: 12.5px; color: #444441; line-height: 1.85; border-top: 1px solid rgba(0,0,0,0.06); background: #FFFFFF; }
.faq-a::before { content: 'A　'; color: #0F6E56; font-weight: 600; }
.faq-concl { display: inline-block; margin-top: 8px; font-size: 11.5px; padding: 3px 10px; border-radius: 4px; background: #E1F5EE; color: #0F6E56; font-weight: 600; }

.advice { display: grid; gap: 8px; }
.adv-item { border-left: 3px solid #185FA5; background: #F5F9FE; padding: 11px 14px; border-radius: 0 6px 6px 0; }
.adv-t { font-size: 12.5px; font-weight: 600; color: #0C447C; margin-bottom: 4px; }
.adv-d { font-size: 12.5px; color: #444441; line-height: 1.75; }

@media (max-width: 640px) {
  .checker-row { grid-template-columns: 1fr; gap: 6px; }
  .hero h1 { font-size: 20px; }
  .container { padding: 16px; }
  .mtabs { gap: 4px; }
  .mtab { font-size: 11px; padding: 5px 9px; }
}
/* ============================================================
   多页站点导航（拆分后新增）
   ============================================================ */
.site-nav { background: #FFFFFF; border-bottom: 1px solid rgba(0,0,0,0.08); }
/* 导航条宽度预算是硬约束：1120 − 48（内边距）= 1072px 要装下「全部导航项 + 搜索框」。
   12 项后余量只剩约 50px，所以内边距压到 11px、间距 3px。
   大屏另加 flex-wrap 作兜底 —— 万一估算偏窄（用户字体渲染更宽），
   宁可换行，也不要出现横向滚动条把搜索框推到可视区之外。 */
.site-nav-inner { max-width: 1120px; margin: 0 auto; padding: 0 24px; display: flex; gap: 3px; overflow-x: auto; }
.site-nav a {
  display: block; padding: 11px 11px; font-size: 13px; color: #5F5E5A; text-decoration: none;
  border-bottom: 2px solid transparent; white-space: nowrap; transition: all .15s;
}
.site-nav a:hover { color: #185FA5; background: #F7F8F5; }
.site-nav a.active { color: #185FA5; font-weight: 600; border-bottom-color: #185FA5; }
/* 大屏兜底：导航项加多后若仍装不下，宁可换行也不要横向滚动
   （窄屏不受影响，仍走 overflow-x 横滑 + 640px 断点） */
@media (min-width: 861px) { .site-nav-inner { flex-wrap: wrap; } }
.logo a { color: inherit; text-decoration: none; }

.breadcrumb { font-size: 12px; color: #888780; margin-bottom: 14px; }
.breadcrumb a { color: #185FA5; text-decoration: none; }
.breadcrumb a:hover { text-decoration: underline; }

.page-head { margin-bottom: 22px; }
.page-head h1 { font-size: 21px; font-weight: 600; margin-bottom: 6px; }
.page-head p { font-size: 13.5px; color: #5F5E5A; max-width: 820px; }

.toc { background: #FFFFFF; border: 1px solid rgba(0,0,0,0.08); border-radius: 10px; padding: 14px 18px; margin-bottom: 20px; }
.toc h4 { font-size: 12px; color: #888780; font-weight: 600; margin-bottom: 8px; letter-spacing: .5px; }
.toc ul { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.toc a { font-size: 12.5px; color: #185FA5; text-decoration: none; padding: 4px 10px; background: #F5F9FE; border-radius: 5px; display: inline-block; }
.toc a:hover { background: #E6F1FB; }

.page-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 28px; flex-wrap: wrap; }
.page-nav a {
  flex: 1; min-width: 200px; padding: 14px 18px; background: #FFFFFF; border: 1px solid rgba(0,0,0,0.08);
  border-radius: 10px; text-decoration: none; color: #2C2C2A; transition: all .15s;
}
.page-nav a:hover { border-color: #B5D4F4; background: #F5F9FE; }
.page-nav .pn-dir { font-size: 11px; color: #888780; margin-bottom: 3px; }
.page-nav .pn-title { font-size: 13.5px; font-weight: 600; color: #185FA5; }
.page-nav .next { text-align: right; }
.page-nav .pn-spacer { flex: 1; min-width: 200px; }

.card.link { text-decoration: none; color: inherit; display: block; cursor: pointer; transition: all .15s; }
.card.link:hover { border-color: #B5D4F4; box-shadow: 0 2px 10px rgba(24,95,165,0.09); transform: translateY(-1px); }

@media (max-width: 640px) {
  .site-nav-inner { padding: 0 16px; }
  .site-nav a { padding: 10px 11px; font-size: 12.5px; }
  .page-head h1 { font-size: 18px; }
}

/* ============================================================
   报名全流程时间轴（timeline.html 专用）
   ============================================================ */

/* --- 甘特图容器 --- */
.gantt-wrap { overflow-x: auto; padding: 4px 0 8px; -webkit-overflow-scrolling: touch; }

/* --- 甘特图双视图切换（重要，勿回退） -------------------------------
   960px 定宽 SVG 在 375px 手机上会被等比缩到 39%，12px 字变约 4.7px，不可读。
   所以窄屏不再缩图，改用 .gtm-* 条卡视图（宽度自适应、字号真实）。
   两套 DOM 同时生成，用 media query 切换 —— 避免 resize 时重新渲染。
   防回归：tests/site-test.js 会断言这两个类名与 768px 断点都存在。 */
.gantt-mobile { display: none; }

@media (max-width: 768px) {
  .gantt-desktop { display: none; }
  .gantt-mobile { display: block; }
}

.gtm-axis {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 11px; color: #8A8A82;
  padding: 0 2px 6px; border-bottom: 1px solid #E5E5DE; margin-bottom: 14px;
}
.gtm-axis-end { color: #B0B0A8; }

.gtm-track { margin-bottom: 18px; }
.gtm-tname { font-size: 13.5px; font-weight: 700; margin-bottom: 9px; letter-spacing: .2px; }

.gtm-row { margin-bottom: 10px; }
.gtm-rowhd { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 3px; }
.gtm-name { font-size: 13px; font-weight: 600; color: #2F2E2A; }
.gtm-time { font-size: 11.5px; color: #8A8A82; flex-shrink: 0; margin-left: 8px; }

.gtm-barwrap { position: relative; height: 15px; background: #F4F4EF; border-radius: 8px; }
.gtm-bar { position: absolute; top: 0; height: 15px; border-radius: 8px; min-width: 3px; }

.gtm-note { font-size: 11.5px; color: #8A8A82; line-height: 1.65; margin-top: 4px; }

/* --- 男女兵窗口对比 --- */
.cmprow { display: grid; grid-template-columns: 130px 1fr 200px; gap: 14px; align-items: center; margin-bottom: 12px; }
.cmpk { font-size: 12.5px; font-weight: 600; color: #2C2C2A; }
.cmpv { font-size: 12.5px; color: #5F5E5A; }
.cmpbar { position: relative; height: 22px; background: #F1EFE8; border-radius: 5px; overflow: hidden; }
.cmpbar-in { height: 100%; border-radius: 5px; }
.cmpbar-in.long { background: linear-gradient(90deg,#C0392B,#E06C5A); }
.cmpbar-in.short { background: linear-gradient(90deg,#8E44AD,#B07CC6); }
.cmplen { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font-size: 11px; font-weight: 600; color: #2C2C2A; }
.cmpnote { margin-top: 14px; padding: 12px 14px; background: #FCEBEB; border-left: 3px solid #C0392B; border-radius: 6px; font-size: 12.5px; color: #7A2222; line-height: 1.6; }

/* --- 前置条件卡 --- */
.tlpre { border: 1px solid rgba(0,0,0,0.08); border-radius: 10px; padding: 16px 18px; margin-bottom: 14px; background: #FCFCFA; }
.tlpre.hard { border-color: #FAC775; background: #FFFBF3; }
.tlpre-hd { font-size: 14px; font-weight: 600; margin-bottom: 10px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tlpre-row { font-size: 12.5px; color: #444441; margin-bottom: 5px; }
.tlpre-row b { color: #2C2C2A; font-weight: 600; }
.tlpre-note { font-size: 12.5px; color: #5F5E5A; line-height: 1.65; margin-top: 8px; padding-top: 8px; border-top: 1px dashed rgba(0,0,0,0.08); }
.tlpre-formula { margin-top: 9px; padding: 9px 12px; background: #F1EFE8; border-radius: 6px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11.5px; color: #444441; }
.tlpre-caveat { margin-top: 9px; padding: 10px 12px; background: #FAEEDA; border-left: 3px solid #BA7517; border-radius: 5px; font-size: 12px; color: #633806; line-height: 1.6; }

/* --- 倒推节点 --- */
.cdwrap { display: grid; grid-template-columns: repeat(auto-fit, minmax(215px, 1fr)); gap: 14px; }
.cdcol { border: 1px solid rgba(0,0,0,0.08); border-radius: 10px; padding: 15px 16px; background: #FCFCFA; }
.cdwhen { font-size: 17px; font-weight: 700; color: #185FA5; letter-spacing: -0.3px; }
.cdlabel { font-size: 11.5px; color: #888780; margin-bottom: 11px; }
.cdlist { list-style: none; }
.cditem { font-size: 12.5px; color: #444441; line-height: 1.6; padding: 5px 0 5px 0; border-bottom: 1px dashed rgba(0,0,0,0.06); }
.cditem:last-child { border-bottom: none; }
.cdtag { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 3px; margin-right: 6px; background: #F1EFE8; color: #888780; vertical-align: 1px; }
.cdtag.must { background: #E6F1FB; color: #185FA5; }
.cdtag.hard { background: #FCEBEB; color: #A32D2D; font-weight: 600; }

/* --- 八步流程卡 --- */
.tlstep { border: 1px solid rgba(0,0,0,0.08); border-radius: 10px; padding: 16px 18px; margin-bottom: 12px; background: #FFFFFF; }
.tlstep-hd { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 10px; }
.tlstep-no { flex-shrink: 0; width: 28px; height: 28px; border-radius: 7px; background: #E6F1FB; color: #185FA5; font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; }
.tlstep-name { font-size: 14.5px; font-weight: 600; }
.tlstep-who { font-size: 11.5px; color: #888780; margin-top: 2px; }
.tlstep-desc { font-size: 13px; color: #444441; line-height: 1.65; margin-bottom: 9px; }
.tlstep-list { list-style: none; }
.tlstep-list li { font-size: 12.5px; color: #5F5E5A; line-height: 1.6; padding: 4px 0 4px 16px; position: relative; }
.tlstep-list li::before { content: '·'; position: absolute; left: 4px; color: #185FA5; font-weight: 700; }
.tlstep-tip { margin-top: 10px; padding: 10px 12px; background: #E1F5EE; border-left: 3px solid #0F6E56; border-radius: 5px; font-size: 12.5px; color: #085041; line-height: 1.6; }
.tlstep-tip b { color: #0F6E56; }

/* --- 时间坑 --- */
.tltrap { border-left: 3px solid #BA7517; background: #FFFBF3; border-radius: 0 8px 8px 0; padding: 13px 16px; margin-bottom: 11px; }
.tltrap-t { font-size: 13.5px; font-weight: 600; color: #633806; margin-bottom: 5px; }
.tltrap-d { font-size: 12.5px; color: #7A5A2E; line-height: 1.65; }

/* --- 双批次说明 --- */
.btnote { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; margin-bottom: 20px; }
.btcard { border: 1px solid rgba(0,0,0,0.08); border-radius: 10px; padding: 15px 17px; background: #FCFCFA; }
.btcard.s1 { border-top: 3px solid #E08A3C; }
.btcard.s2 { border-top: 3px solid #C0392B; }
.btcard-t { font-size: 14px; font-weight: 600; margin-bottom: 4px; }
.btcard-n { font-size: 12px; color: #888780; }

@media (max-width: 720px) {
  .cmprow { grid-template-columns: 1fr; gap: 6px; }
  .cmpbar { height: 18px; }
  .cdwrap { grid-template-columns: 1fr; }
  .btnote { grid-template-columns: 1fr; }
}

/* ---------- 全站搜索框 ---------- */
/* 注意：.site-nav-inner 有 overflow-x:auto，绝对定位的下拉会被裁剪，
   因此下拉使用 position:fixed，由 search.js 计算 left/top/width。 */
.nav-search { margin-left: auto; position: relative; flex-shrink: 0; display: flex; align-items: center; padding: 4px 0; }
.nav-search input {
  width: 150px; padding: 6px 10px; font-size: 13px; color: #2F2E2A;
  border: 1px solid #D3D1C7; border-radius: 7px; background: #F7F8F5; outline: none;
  transition: all .15s;
}
/* 聚焦刻意不加宽（原为 210px）：导航到 12 项后单行余量只剩约 50px，
   再加宽会把搜索框挤到第二行，布局跳动比「输入框宽一点」更影响体验 */
.nav-search input:focus { background: #FFFFFF; border-color: #185FA5; box-shadow: 0 0 0 2px rgba(24,95,165,0.10); }
.search-drop {
  position: fixed; width: 320px; max-height: 340px; overflow-y: auto;
  background: #FFFFFF; border: 1px solid rgba(0,0,0,0.12); border-radius: 8px;
  box-shadow: 0 6px 18px rgba(0,0,0,0.13); z-index: 900; padding: 6px;
}
.sd-item { display: block; padding: 7px 10px; border-radius: 6px; cursor: pointer; }
.sd-item:hover, .sd-item.sd-on { background: #F0F5FB; }
.sd-t { display: block; font-size: 13px; font-weight: 600; color: #2F2E2A; }
.sd-d { display: block; font-size: 11.5px; color: #888780; margin-top: 1px; }
.sd-g { display: inline-block; font-size: 10px; color: #185FA5; background: #EDF3FA; border-radius: 4px; padding: 1px 5px; margin-top: 3px; }
.sd-empty { padding: 10px; font-size: 12px; color: #888780; }
.sd-hot-t { font-size: 11px; color: #888780; padding: 4px 8px 6px; }
.sd-chip {
  display: inline-block; font-size: 12px; color: #185FA5; background: #F0F5FB;
  border: 1px solid #CFE0F2; border-radius: 20px; padding: 4px 11px; margin: 0 5px 5px 0; cursor: pointer;
}
.sd-chip:hover { background: #185FA5; color: #FFFFFF; border-color: #185FA5; }
@media (max-width: 860px) {
  .nav-search { width: 100%; margin: 0 0 4px; }
  .nav-search input, .nav-search input:focus { width: 100%; }
}

/* ---------- 报名入口引导 & 纠错反馈（由 site-footer.js 注入） ---------- */
.enroll-cta {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px;
  background: #0F3D2E; border-radius: 12px; padding: 22px 24px; margin-top: 28px;
}
.enroll-cta .ec-body { flex: 1 1 360px; min-width: 0; }
.enroll-cta .ec-t { font-size: 16px; font-weight: 600; color: #FFFFFF; margin-bottom: 9px; }
.enroll-cta .ec-d { font-size: 13px; line-height: 1.75; color: #B9D2C8; }
.enroll-cta .ec-d strong { color: #F0CE6A; font-weight: 500; }
.enroll-cta .ec-note {
  font-size: 12px; line-height: 1.7; color: #8FB3A5; margin-top: 10px;
  padding-left: 11px; border-left: 2px solid #2C6350;
}
.enroll-cta .ec-act { flex: 0 0 auto; text-align: center; }
.enroll-cta .ec-btn {
  display: inline-block; background: #D4A72C; color: #2A1F04; text-decoration: none;
  font-size: 14px; font-weight: 600; padding: 12px 26px; border-radius: 8px; transition: background .18s;
}
.enroll-cta .ec-btn:hover { background: #E5BB46; }
.enroll-cta .ec-url { font-size: 11px; color: #7FA294; margin-top: 7px; }

.fb-box { background: #FCFCFA; border: 1px solid rgba(0,0,0,0.08); border-radius: 12px; padding: 20px 22px; margin-top: 14px; }
.fb-box .fb-t { font-size: 15px; font-weight: 600; color: #2F2E2A; margin-bottom: 9px; }
.fb-box .fb-d { font-size: 13px; line-height: 1.75; color: #5F5E5A; }
.fb-box .fb-tpl {
  font-family: inherit; font-size: 12px; line-height: 1.85; color: #444441; white-space: pre-wrap; word-break: break-word;
  background: #FFFFFF; border: 1px dashed #D3D1C7; border-radius: 8px; padding: 12px 14px; margin: 13px 0;
}
.fb-box .fb-act { display: flex; flex-wrap: wrap; gap: 10px; }
.fb-box .fb-btn {
  font-family: inherit; font-size: 13px; padding: 8px 17px; border-radius: 6px; cursor: pointer;
  background: #FFFFFF; color: #185FA5; border: 1px solid #B5D4F4; text-decoration: none; transition: all .15s;
}
.fb-box .fb-btn:hover { background: #E6F1FB; border-color: #85B7EB; }
.fb-box .fb-btn-primary { background: #185FA5; color: #FFFFFF; border-color: #185FA5; }
.fb-box .fb-btn-primary:hover { background: #0C447C; border-color: #0C447C; }

/* 页脚链接行（指向「关于本站」）。
   为什么合规页必须从页脚也能到：窄屏上 .site-nav-inner 要横向滚动，
   11 个条目里排在最后的「关于本站」默认在屏幕外 ——
   而「我是谁、收不收费、怎么处理你的信息」是最该让人一眼找到的内容。 */
.fb-links { margin-top: 14px; display: flex; flex-wrap: wrap; gap: 14px; font-size: 12.5px; }
.fb-links a { color: #5F5E5A; text-decoration: none; border-bottom: 1px solid rgba(0,0,0,0.15); padding-bottom: 1px; }
.fb-links a:hover { color: #185FA5; border-bottom-color: #85B7EB; }

@media (max-width: 720px) {
  .enroll-cta { padding: 20px; }
  .enroll-cta .ec-act { flex: 1 1 100%; text-align: left; }
  .enroll-cta .ec-btn { display: block; text-align: center; }
}

/* ---------- 区县数据三层标注（A / B / C）----------
   用途：告诉用户「你现在看到的数字是哪一级的」。
     A 绿 —— 本区县有独立标准，数字直接适用
     B 蓝 —— 本区县无独立标准，引用上级（市/省）标准，可能略有出入
     C 橙 —— 暂无可用标准，只给线下咨询路径
   配色沿用站内既有语义：绿=确定、蓝=参考、橙=需注意。 */
.tier-badge {
  display: flex; align-items: flex-start; gap: 9px;
  padding: 10px 13px; border-radius: 8px;
  font-size: 12.5px; line-height: 1.75; margin-bottom: 12px;
}
.tier-badge .tb-dot {
  flex: none; width: 8px; height: 8px; border-radius: 50%;
  margin-top: 6px; background: currentColor;
}
.tier-a { background: #E1F5EE; color: #085041; border: 1px solid #5DCAA5; }
.tier-b { background: #E6F1FB; color: #0C447C; border: 1px solid #85B7EB; }
.tier-c { background: #FAEEDA; color: #633806; border: 1px solid #E8A33D; }
@media (max-width: 720px) {
  .tier-badge { font-size: 12px; padding: 9px 11px; gap: 7px; }
}

/* ============================================================
   手机端表格适配 —— 类名与 data-label 由 data-js/site-ui.js 在运行时生成

     · .tbl-stack  —— ≤3 列的「标签 + 说明」型表，窄屏下每行转成一张卡片，
                      每个单元格前面用它所属列的表头文字作标签
     · .tbl-scroll —— ≥4 列或含合并单元格的网格型表，保留表格形状并允许左右滑动

   宽屏（>720px）下两类表都保持原来的表格形状，桌面端表现不变。
   背景：375px 屏下 .container(16px) + .section(22px) 之后正文可用宽度仅约 297px，
        4 列以上中文会逐字断行，实际不可读。详见 data-js/site-ui.js 顶部说明。
   ============================================================ */
.tbl-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.tbl-hint { display: none; }

@media (max-width: 720px) {

  /* --- 网格型：保留表格形状，允许左右滑动 --- */
  .tbl-wrap table.tbl-scroll { min-width: 540px; }
  .tbl-hint { display: block; margin: 2px 0 10px; font-size: 12px; color: #888780; }

  /* --- 标签型：每行一张卡片 --- */
  .tbl-wrap table.tbl-stack,
  .tbl-wrap table.tbl-stack tbody,
  .tbl-wrap table.tbl-stack tr,
  .tbl-wrap table.tbl-stack td { display: block; width: auto; }
  .tbl-wrap table.tbl-stack thead { display: none; }

  .tbl-wrap table.tbl-stack tr {
    background: #F7F8F5;
    border: 1px solid rgba(0, 0, 0, 0.07);
    border-radius: 10px;
    margin-bottom: 10px;
    overflow: hidden;
  }
  .tbl-wrap table.tbl-stack td {
    display: flex; align-items: baseline; gap: 10px;
    padding: 9px 12px; border: 0; font-size: 13px; line-height: 1.6;
  }
  .tbl-wrap table.tbl-stack td + td { border-top: 1px solid rgba(0, 0, 0, 0.06); }
  .tbl-wrap table.tbl-stack td::before {
    content: attr(data-label);
    flex: 0 0 auto; min-width: 66px; max-width: 42%;
    font-size: 12.5px; font-weight: 500; color: #5F5E5A;
  }
  .tbl-wrap table.tbl-stack td:not([data-label])::before { content: none; }
}

/* ---------- 正文里的站外链接（如「全国征兵网」） ----------
   为什么要有这条：域名写成纯文本时用户只能手打，打错一个字母就可能落到钓鱼站。
   统一加下划线与主色，让「这里能点」一眼看得出来。 */
.official-badge a { color: inherit; font-weight: 500; text-decoration: underline; text-underline-offset: 2px; }
.tbl-wrap a, td a, .note a { color: #185FA5; text-decoration: underline; text-underline-offset: 2px; }

/* ============================================================
   决策页（decision.html）专用样式
   —— 这一页的形态是「对比」，和站内其他「查数据」页不同，
      所以需要一组并列栏与小清单样式。其余一律复用已有 class。
   ============================================================ */

/* 三栏并列（拿到什么 / 付出什么 / 带走什么）
   窄屏下 auto-fit 自动降为单列，无需额外媒体查询 */
.dec-grid3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(258px, 1fr)); gap: 14px; }
.dec-col { border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 10px; overflow: hidden; background: #FFFFFF; }
.dec-col > h4 { font-size: 13px; font-weight: 600; padding: 11px 14px; margin: 0; }
.dec-col.gain > h4 { background: #E1F5EE; color: #0F6E56; }
.dec-col.cost > h4 { background: #FAEEDA; color: #854F0B; }
.dec-col.keep > h4 { background: #E6F1FB; color: #185FA5; }
.dec-col .dec-it { padding: 11px 14px; border-top: 1px solid rgba(0, 0, 0, 0.05); }
.dec-col .dec-it b { display: block; font-size: 12.5px; font-weight: 600; color: #2C2C2A; margin-bottom: 4px; }
.dec-col .dec-it span { display: block; font-size: 12.5px; color: #5F5E5A; line-height: 1.75; }

/* 「想当然」清单：复用 .myth 的双段结构，只换前缀文案
   为什么不用默认的「✕ 传言 / ✓ 标准原文」：这里的每一条是「常见说法」与
   「实际规定」的关系，不是「传言」与「标准原文」——后者对政策类条款不贴切 */
.myth.belief .myth-q::before { content: '✕ 常见说法　'; }
.myth.belief .myth-a::before { content: '✓ 实际规定　'; }
.myth.belief .myth-a .dec-src {
  margin-top: 8px; padding-top: 7px; border-top: 1px dashed rgba(0, 0, 0, 0.12);
  font-size: 11.5px; color: #6B7A85; line-height: 1.65;
}

/* 路径推荐：条件 → 建议 */
.dec-rec { display: grid; gap: 10px; }
.dec-rec-row { border: 1px solid rgba(0, 0, 0, 0.08); border-left: 3px solid #85B7EB; border-radius: 0 9px 9px 0; padding: 12px 15px; background: #FBFCFD; }
.dec-rec-row .cond { font-size: 12.5px; color: #5F5E5A; }
.dec-rec-row .go { font-size: 13.5px; font-weight: 600; color: #185FA5; margin: 3px 0 5px; }
.dec-rec-row .why { font-size: 12.5px; color: #444441; line-height: 1.75; }

/* 带编号的提问清单（去人武部前用） */
.dec-ask { counter-reset: decask; margin: 0; padding: 0; }
.dec-ask li {
  list-style: none; position: relative; padding: 10px 0 10px 32px;
  font-size: 13px; color: #444441; line-height: 1.75;
  border-bottom: 1px dashed rgba(0, 0, 0, 0.07);
}
.dec-ask li:last-child { border-bottom: none; }
.dec-ask li::before {
  counter-increment: decask; content: counter(decask);
  position: absolute; left: 0; top: 11px; width: 21px; height: 21px;
  border-radius: 5px; background: #E6F1FB; color: #185FA5;
  font-size: 11.5px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}

/* ============================================================
   首页「当前阶段」提示条（data-js/cycle.js 渲染）
   —— 按访客本机日期判定所处环节。四种 tone 对应四类时段：
       open 报名窗口期 / busy 考核与定兵期 / prep 准备期 / ship 起运收尾期
   ⚠ 这里必须显式声明「不是官方日历」，样式上也要让这句免责话看得见，
      不能让用户把推算当成通知（详见 data/cycle.json 的 disclaimer）。
   ============================================================ */
.cyc {
  margin: 0 0 18px; padding: 15px 17px;
  background: #FFFFFF; border: 1px solid rgba(0, 0, 0, 0.09);
  border-radius: 11px;
}
.cy-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.cy-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cy-now { font-size: 12px; color: #888780; }
.cy-phase {
  font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 4px;
}
.cy-phase.tone-open { background: #E6F1FB; color: #185FA5; }
.cy-phase.tone-busy { background: #FAEEDA; color: #854F0B; }
.cy-phase.tone-prep { background: #EEEDFE; color: #534AB7; }
.cy-phase.tone-ship { background: #E1F5EE; color: #0F6E56; }
.cy-name { font-size: 15px; font-weight: 600; color: #2C2C2A; }
.cy-date { font-size: 12px; color: #888780; }

.cy-bar { height: 4px; border-radius: 2px; background: #F1F0EC; margin: 11px 0 13px; overflow: hidden; }
.cy-bar-fill { height: 100%; border-radius: 2px; }
.cy-bar-fill.tone-open { background: #85B7EB; }
.cy-bar-fill.tone-busy { background: #EFB96B; }
.cy-bar-fill.tone-prep { background: #A9A3E8; }
.cy-bar-fill.tone-ship { background: #7BCBAE; }

.cy-body { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 16px; }
.cy-h { font-size: 12px; font-weight: 600; color: #5F5E5A; margin-bottom: 7px; }
.cy-list { margin: 0; padding-left: 17px; }
.cy-list li { font-size: 12.5px; color: #444441; line-height: 1.8; margin-bottom: 6px; }
.cy-list li:last-child { margin-bottom: 0; }
.cy-link { font-size: 12.5px; margin-top: 9px; color: #5F5E5A; }
.cy-link a { color: #185FA5; font-weight: 500; }

.cy-next {
  align-self: start; padding: 11px 13px; border-radius: 9px;
  background: #FBFBF9; border: 1px solid #EFEEEB;
}
.cy-next-urgent { background: #FEFAF9; border-color: #F7C1C1; }
.cy-next-k { display: block; font-size: 11.5px; color: #888780; margin-bottom: 5px; }
.cy-next-t { display: block; font-size: 12.5px; font-weight: 600; color: #2C2C2A; line-height: 1.65; margin-bottom: 6px; }
.cy-next-d { display: block; font-size: 12.5px; color: #5F5E5A; }
.cy-next-d strong { font-size: 16px; font-weight: 700; color: #185FA5; }
.cy-next-urgent .cy-next-d strong { color: #A32D2D; }

.cy-note {
  margin-top: 13px; padding-top: 11px; border-top: 1px dashed rgba(0, 0, 0, 0.11);
  font-size: 11.5px; color: #6B7A85; line-height: 1.75;
}
.cy-note strong { color: #854F0B; }
.cy-note a { color: #185FA5; }

/* 窄屏：两栏并一栏，日期换行 */
@media (max-width: 700px) {
  .cy-body { grid-template-columns: 1fr; }
  .cy-date { font-size: 11.5px; }
}

/* ============================================================
   打印样式（2026-09-18）—— 面向「家长把某一节打印出来给孩子看」

   五条原则：
     ① 纸上点不动的东西一律删掉：导航、搜索、面包屑、上下篇、反馈按钮、页脚链接墙
     ② 交互控件换静态呈现：科室标签页隐藏、甘特图换成条卡视图
     ③ 外链在纸上要能看出网址 —— 否则等于信息丢失（打印后没法点）
     ④ 卡片 / 条款 / 表格行不许跨页断开
     ⑤ 去掉底色与阴影，黑白可读且省墨

   为什么值得单独做：这个站的内容是给家长的「资料」，
   他们习惯打印出来对着孩子逐条核对。默认打印出来导航按钮全在、正文被压窄，
   等于把 13 页内容变成不好用的东西。
    ============================================================ */

/* ============================================================
   禁用脚本时的提示条（<noscript>）

   为什么需要：
     本站多数页面的正文由 data-js/*.js 渲染。浏览器禁用脚本时（或
     搜索引擎 / 社交抓取器不执行脚本时），页面只剩下外壳 ——
     用户看到的是「一片空白」，且不知道为什么。
     加一条说明 + 两个出路（静态页 / 官方入口），至少不让人茫然。

   注意：省级落地页（region-*.html）正文是静态固化的，
     脚本关掉也能读，所以那里的文案要说明「正文可正常阅读」，
     不能套用「正文显示不出来」的说法 —— 那是错的。
   ============================================================ */
.nsnote {
  max-width: 900px;
  margin: 14px auto 0;
  padding: 12px 16px;
  background: #FFF4E5;
  border: 1px solid #E8A33D;
  border-radius: 10px;
  color: #5C3A0A;
  font-size: 13.5px;
  line-height: 1.75;
}
.nsnote a { color: #8A5A12; font-weight: 600; }

@media print {
  /* ---- ① 删掉交互外壳 ---- */
  .site-nav, .nav-search, .search-drop,
  .breadcrumb, .page-nav, .fb-links, .fb-box,
  .mtabs, .gantt-desktop, .cy-link, .tbl-hint,
  .btn, .region-selects,
  /* 打印时脚本必然已执行，这条提示没有意义，反而是噪音 */
  .nsnote {
    display: none !important;
  }

  /* ---- ② 版面：满宽、白底、黑字 ---- */
  html, body {
    background: #fff !important;
    color: #000 !important;
    font-size: 11pt;
    line-height: 1.55;
  }
  .container, .header-inner {
    max-width: none !important;
    width: auto !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  /* 页眉只留站点名 + 官方报名渠道，让纸上也知道出处 */
  .header {
    background: #fff !important;
    border-bottom: 1px solid #999 !important;
    padding: 0 0 6px !important;
    margin-bottom: 10px !important;
  }
  .logo { font-size: 13pt !important; }
  .logo span { display: none; }
  .official-badge {
    display: block !important;
    color: #000 !important;
    font-size: 9pt !important;
  }

  /* 卡片一律去掉底色与阴影：黑白可读、省墨 */
  .card, .hero, .notice, .calc-detail, .region-result, .enroll-cta,
  .dec-col, .cy, .tlpre, .btcard, .scope-card, .path-card, .tax-item,
  .result, .result-ok, .result-warn, .result-fail, .advice, .selfcheck {
    background: #fff !important;
    box-shadow: none !important;
    border: 1px solid #999 !important;
  }

  /* ---- ③ 外链要把网址印出来 ---- */
  a { color: #000 !important; text-decoration: none; }
  a[href^="http"]::after {
    content: " <" attr(href) ">";
    font-size: 9pt;
    word-break: break-all;
  }
  /* 这两处的域名正文里已经写了，不必再印一遍长地址 */
  .official-badge a::after,
  .enroll-cta a::after { content: ""; }

  /* ---- ④ 不许跨页断开的地方 ---- */
  .mitem, .sc-item, .myth, .faq, .adv-item, .tlstep, .tltrap,
  .cy-list li, .card, .btcard, .path-card, .cov-item, .faq-list > *,
  tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }
  h1, h2, h3 { break-after: avoid; page-break-after: avoid; }

  /* 表格：纸上看不到 hover，需要实边框；跨页时表头要重复 */
  table { width: 100% !important; border-collapse: collapse !important; font-size: 9.5pt; }
  th, td {
    border: 1px solid #999 !important;
    padding: 4px 6px !important;
    background: #fff !important;
  }
  thead { display: table-header-group; }
  .tbl-wrap { overflow: visible !important; }

  /* ---- ⑤ 甘特图：桌面版是定宽画布，纸上一定被裁 → 换条卡视图 ---- */
  .gantt-mobile { display: block !important; }
  .gantt-wrap { overflow: visible !important; }

  /* 目录在纸上反而有用，只去掉可点样式 */
  .toc { border: 1px solid #999 !important; }
  .toc a { text-decoration: none; }

  /* 页脚保留非官方声明与官方入口，去掉链接墙已由 .fb-links 处理 */
  .footer {
    background: #fff !important;
    border-top: 1px solid #999 !important;
    font-size: 9pt;
  }
}

/* @page 必须放在顶层（不放进 @media print），否则部分浏览器忽略 */
@page { margin: 14mm; }
