@charset "UTF-8";
/* ==========================================================================
   工程部质量中心知识库 · 全站移动端适配层   mobile.css   (v2.0 重写版)
   --------------------------------------------------------------------------
   加载方式：由所有页面在 widescreen.css 之后引入，因此同权重声明以本文件为准。
   覆盖的页面体系（四套并存）：
     1) 首页 / 门户页      —— index.html、digital-twin/index.html
     2) 实验室管理页        —— laboratory 体系   （lab-common.css）
     3) 培训 / 试题页       —— training/tests 体系（test-common.css）
     4) LIMS 数据看板       —— lims/lims.html（页内样式）
   重写要点（v2.0 相对 v1.0 的改动）：
     · 删除 v1.0 的「大锤」规则：[class*="grid"]、[class*="card"]、[class*="icon-"]
       等通配选择器会误伤大量无关元素，并把所有卡片压成全宽单列；已全部改为
       针对真实类名的精确规则。
     · 删除 `div/span/p/li` 等 `font-size: inherit !important`：它会把全站字号
       压平到 13px，摧毁原有层级；改为只压缩「过大的展示型字号」。
     · 修正 v1.0 用 body 承载安全区导致实验室页 24px 内边距被清零的问题，
       安全区改由 html 承担。
     · 补齐「标签/徽章」统一宽度规则（v1.0 缺失）。
     · 修复 widescreen.css 把 .table-box 设为 overflow:hidden 造成表格撑破
       页面的问题。
   分级：基础规则全尺寸生效且安全；布局/字号变化只在窄屏与原生 App 生效。
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. 移动端设计令牌
   -------------------------------------------------------------------------- */
:root {
  --m-gutter: 14px;        /* 页面左右留白 */
  --m-gap: 12px;           /* 卡片/模块之间的间距 */
  --m-pad: 15px;           /* 卡片内边距 */
  --m-pad-sm: 11px;        /* 紧凑区块内边距 */
  --m-radius: 12px;        /* 卡片圆角 */
  --m-radius-sm: 8px;      /* 小控件圆角 */
  --m-line: 1px;           /* 边框粗细（窄屏统一 1px，避免 2px 太笨重） */
  --m-tag-pad-y: 3px;      /* 标签上下内边距 */
  --m-tag-pad-x: 9px;      /* 标签左右内边距 */
  --m-tag-radius: 10px;    /* 标签圆角 */
  --m-fs-tag: 11.5px;      /* 标签字号 */
  --m-fs-min: 11px;        /* 最小可读字号 */
  --m-fs-body: 15px;       /* 正文字号 */
  --m-fs-h1: 22px;
  --m-fs-h2: 18px;
  --m-fs-h3: 16px;
  --m-tap: 32px;           /* 可点区域最小高度 */
  --m-safe-top: env(safe-area-inset-top, 0px);
  --m-safe-bottom: env(safe-area-inset-bottom, 0px);
  --m-safe-left: env(safe-area-inset-left, 0px);
  --m-safe-right: env(safe-area-inset-right, 0px);
}

/* --------------------------------------------------------------------------
   1. 基础防溢出（桌面端同样安全，无副作用）
   -------------------------------------------------------------------------- */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  /* 安全区避让：放在 html 上，避免覆盖各页面 body 自身的内边距 */
  padding-top: var(--m-safe-top);
  padding-bottom: var(--m-safe-bottom);
  padding-left: var(--m-safe-left);
  padding-right: var(--m-safe-right);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

/* overflow-x: clip 不会创建滚动容器（比 hidden 更安全，不影响 position:sticky） */
html,
body {
  max-width: 100%;
  overflow-x: clip;
}
@supports not (overflow-x: clip) {
  html,
  body {
    overflow-x: hidden;
  }
}

/* 替换元素自适应，绝不超出父容器 */
img,
video,
iframe,
canvas,
embed,
object,
picture {
  max-width: 100%;
  height: auto;
}
svg {
  max-width: 100%;
}

/* 长英文单词 / 连续数字 / URL 不撑破容器 */
body,
p,
li,
dt,
dd,
td,
th,
h1,
h2,
h3,
h4,
h5,
h6,
figcaption,
blockquote,
a,
span,
strong,
em,
label {
  overflow-wrap: break-word;
  word-break: break-word;
}

pre,
code,
kbd,
samp {
  max-width: 100%;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* 裸表格防溢出；有滚动容器的表格交给容器横向滚动，因此不受 max-width 限制 */
table {
  max-width: 100%;
  border-collapse: collapse;
}
.table-box > table,
.tbl-wrap > table,
.table-wrap > table,
.table-responsive > table,
.table-container > table,
.data-table-wrap > table {
  max-width: none;
}

/* 横向滚动容器：统一开启惯性滚动，避免表格/宽内容撑破页面 */
.table-box,
.tbl-wrap,
.table-wrap,
.table-responsive,
.table-container,
.data-table-wrap,
.chart-scroll,
.scroll-x {
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

/* flex / grid 子项允许收缩（横向溢出的头号成因，全尺寸安全） */
[class*="-grid"] > *,
[class*="-cards"] > *,
[class*="-row"] > *,
[class*="-list"] > *,
[class*="grid-"] > *,
.flex > *,
.flex-row > *,
.d-flex > * {
  min-width: 0;
}

/* --------------------------------------------------------------------------
   2. 原生 App（Capacitor）专用：由 mobile.js 给 <html> 挂 .app-native
      这些规则在任意宽度下都安全，用于保证 APK 内始终是可用的移动版式
   -------------------------------------------------------------------------- */
html.app-native {
  --m-gutter: 15px;
  -webkit-tap-highlight-color: transparent;
  -webkit-touch-callout: none;
}
html.app-native body {
  overscroll-behavior-y: none;          /* 去掉整页下拉回弹/刷新观感 */
}
html.app-native * {
  -webkit-tap-highlight-color: transparent;
}
/* App 内禁用悬停才出现的浮层（触屏上会变成"卡住"的遮罩），例如 lims 的 600px 图表预览 */
html.app-native .chart-card .chart-popup,
html.app-native .chart-popup {
  display: none !important;
}
/* App 内输入框字号不小于 16px 以外仍需避免 iOS 自动放大：保持可读 */
html.app-native input,
html.app-native select,
html.app-native textarea {
  font-size: max(16px, 1em);
}
/* App 内（含平板/横屏）强制单列版式，避免桌面栅格挤在窄屏里 */
@media (min-width: 769px) {
  html.app-native .container,
  html.app-native .header-inner,
  html.app-native .topbar-inner,
  html.app-native .layout {
    max-width: 100% !important;
    padding-left: var(--m-gutter) !important;
    padding-right: var(--m-gutter) !important;
  }
  html.app-native .layout,
  html.app-native .portal-grid,
  html.app-native .dept-grid,
  html.app-native .staff-grid,
  html.app-native .gallery-grid,
  html.app-native .section-grid,
  html.app-native .kpi-grid,
  html.app-native .charts-grid,
  html.app-native .dt-charts {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  html.app-native .sidebar {
    position: static !important;
  }
}

/* --------------------------------------------------------------------------
   3. 窄屏适配（≤768px）—— 间距 / 字号 / 标签 / 布局
   -------------------------------------------------------------------------- */
@media (max-width: 768px) {

  /* ====== 3.1 页面留白：修正 widescreen.css 在窄屏仍留 32/40px 的问题 ====== */
  body:has(.content-box),
  body:has(.back-link) {
    padding-left: var(--m-gutter) !important;
    padding-right: var(--m-gutter) !important;
    max-width: 100% !important;
  }
  body:has(.content-box) .content-box,
  body:has(.back-link) .content-box {
    max-width: 100% !important;
  }

  /* 所有"页头/容器"类统一到同一留白，消除各处 16/20/32/40px 的不一致 */
  .container,
  .header-inner,
  .topbar-inner,
  .footer-inner,
  .footer-content,
  .hero-inner,
  .layout,
  .wrap,
  .wrapper,
  .page-container,
  .main-container,
  .content-wrapper,
  .section-inner {
    width: 100% !important;
    max-width: 100% !important;
    padding-left: var(--m-gutter) !important;
    padding-right: var(--m-gutter) !important;
    margin-left: auto !important;
    margin-right: auto !important;
  }

  /* .content 已在 .layout 的留白之内，不能再叠一层 */
  .layout > .content,
  .layout > .sidebar {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .content-section:not(.academy-overview) .container {
    max-width: 100% !important;
  }

  /* ====== 3.2 边框与卡片内边距：2px 边框 + 28/36px 内边距在窄屏过于占位 ====== */
  .content-box {
    padding: var(--m-pad) !important;
    border-width: var(--m-line) !important;
    border-radius: var(--m-radius) !important;
    box-shadow: 0 2px 10px rgba(28, 25, 23, .05) !important;
  }
  .content-box h2 {
    font-size: var(--m-fs-h2) !important;
  }

  .category-box,
  .category-card,
  .section-card,
  .section-box,
  .test-card,
  .test-item,
  .stat-card,
  .year-card,
  .month-card,
  .policy-card,
  .strategy-card,
  .filter-btn,
  .download-btn,
  .search-box,
  .standard-tag,
  .table-box,
  .portal-card,
  .dept-card,
  .staff-item,
  .gallery-item,
  .chart-card,
  .kpi-card,
  .alert-card,
  .dt-stat-card,
  .dt-chart-card,
  .ov-card,
  .highlight-box,
  .report-tpl {
    border-width: var(--m-line) !important;
  }

  .section,
  .section-card,
  .section-box,
  .highlight-box,
  .note,
  .clause-ref {
    max-width: 100% !important;
  }
  .highlight-box {
    padding: var(--m-pad-sm) var(--m-pad) !important;
    border-radius: var(--m-radius) !important;
  }
  .section-card {
    padding: var(--m-pad) !important;
    border-radius: var(--m-radius) !important;
  }
  .section-grid {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: var(--m-gap) !important;
  }

  /* 卡片类统一圆角，避免 24/28px 大圆角在窄屏显得空 */
  .portal-card,
  .dept-card,
  .equip-modal,
  .dt-entry,
  .dt-dashboard,
  .table-wrapper {
    border-radius: var(--m-radius) !important;
  }

  /* ====== 3.3 字号：只压缩"过大的展示型字号"，不再压平正文字号 ====== */
  body {
    line-height: 1.6;
  }

  /* 首页 Hero / 门户标题 */
  .hero {
    padding: 44px 0 38px !important;
  }
  .hero-inner h2,
  .hero-title,
  .page-hero h1,
  .page-hero h2,
  .banner h1,
  .banner h2 {
    font-size: clamp(23px, 6.4vw, 30px) !important;
    line-height: 1.28 !important;
  }
  .hero-subtitle,
  .hero-sub {
    font-size: 13.5px !important;
    line-height: 1.7 !important;
    margin-bottom: 24px !important;
  }
  .hero-stats {
    gap: 20px !important;
    padding-top: 22px !important;
  }
  .hero-stat .num {
    font-size: 26px !important;
  }
  .hero-stat .label {
    font-size: var(--m-fs-min) !important;
    letter-spacing: .5px !important;
  }

  /* 区块标题 */
  .section {
    padding: 42px 0 !important;
  }
  .section-head {
    margin-bottom: 26px !important;
    gap: 10px !important;
  }
  .section-head h3,
  .portal-head h3,
  .section-title,
  .section-header h2,
  .section-header h3 {
    font-size: 20px !important;
    line-height: 1.3 !important;
  }
  .section-head h3::before,
  .section-head h3::after,
  .portal-head h3::before,
  .portal-head h3::after {
    width: 14px !important;
  }
  .section-sub,
  .portal-head p {
    font-size: 13px !important;
  }

  /* 数据看板标题 */
  .section-head h2 {
    font-size: 20px !important;
  }
  .section-head h2::before {
    height: 20px !important;
    margin-right: 10px !important;
    width: 4px !important;
  }
  .section-sub {
    font-size: var(--m-fs-min) !important;
  }

  /* 试题页标题体系 */
  .hero h1 {
    font-size: clamp(21px, 5.8vw, 26px) !important;
    line-height: 1.3 !important;
  }
  .hero-sub {
    font-size: 13px !important;
  }
  .section-title,
  .ov-value {
    font-size: 17px !important;
  }
  .p,
  .lead,
  .ul li,
  .ol li {
    font-size: 14px !important;
    line-height: 1.75 !important;
  }
  .lead {
    font-size: 14.5px !important;
  }
  table.tbl {
    font-size: 12.5px !important;
  }
  .card-title,
  .card h3,
  .card h4,
  .content-box h3 {
    font-size: var(--m-fs-h3) !important;
    line-height: 1.4 !important;
  }

  /* 首页数字孪生入口 */
  .dt-entry {
    padding: 22px 18px !important;
  }
  .dt-entry-title {
    font-size: 21px !important;
  }
  .dt-entry-desc {
    font-size: 13px !important;
    margin-bottom: 18px !important;
  }
  .dt-entry-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }
  .portal-card {
    padding: 22px 18px 20px !important;
  }

  /* LIMS 看板字号 */
  .kpi-num {
    font-size: 26px !important;
  }
  .kpi-num .unit {
    font-size: 12px !important;
  }
  .kpi-card {
    padding: 13px 13px 11px !important;
    border-radius: var(--m-radius) !important;
  }
  .chart-card {
    padding: 12px !important;
    border-radius: var(--m-radius) !important;
  }
  .chart-title {
    font-size: 14px !important;
  }
  .chart-body,
  .chart-body.tall {
    height: 150px !important;
  }
  .footer,
  .page-footer {
    padding: 16px var(--m-gutter) !important;
    margin-top: 24px !important;
  }

  /* ====== 3.4 标签 / 徽章 / 按钮：统一宽度，绝不撑破容器 ====== */
  /* 标签类元素统一为"按内容宽度、可换行、超长可断行" */
  .tag,
  .tag-sm,
  .badge,
  .cr-tag,
  .topbar-badge,
  .period-badge,
  .hero-cat,
  .hero-eyebrow,
  .hero-meta-item,
  .dt-entry-badge,
  .dt-status-badge,
  .dt-zone-meta-item,
  .dt-legend-item,
  .alert-type-badge,
  .alert-level-txt,
  .alert-meta-row > span,
  .kpi-trend,
  .step-meta > span,
  .quick-nav > a,
  .toolbar .count,
  .staff-role,
  .dept-badge,
  .ov-label,
  .stat-label,
  .kpi-label,
  .kpi-foot,
  .vc-label,
  .chart-sub,
  .donut-lbl {
    display: inline-flex !important;
    align-items: center !important;
    width: auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    flex: 0 0 auto !important;
    align-self: flex-start;
    white-space: normal !important;
    overflow-wrap: anywhere;
    word-break: break-word;
    line-height: 1.35 !important;
    text-align: left;
    box-sizing: border-box;
  }

  /* 紧凑标签：内边距与圆角统一，避免 30px 胶囊 + 6px 内边距显得臃肿 */
  .tag,
  .tag-sm,
  .badge,
  .cr-tag,
  .step-meta > span {
    padding: var(--m-tag-pad-y) var(--m-tag-pad-x) !important;
    border-radius: var(--m-tag-radius) !important;
    font-size: var(--m-fs-tag) !important;
    /* 竖排换行时留出行距；横排由容器 gap 或行内空格分隔 */
    margin: 0 5px 5px 0 !important;
  }
  .period-badge,
  .topbar-badge,
  .hero-cat,
  .dt-entry-badge,
  .alert-type-badge {
    padding: 3px 9px !important;
    border-radius: 999px !important;
    font-size: var(--m-fs-tag) !important;
    letter-spacing: .2px !important;
  }
  .hero-meta-item,
  .dt-zone-meta-item,
  .dt-legend-item,
  .kpi-trend,
  .ov-label,
  .stat-label,
  .kpi-label,
  .vc-label,
  .chart-sub,
  .donut-lbl,
  .alert-level-txt,
  .kpi-foot {
    font-size: var(--m-fs-min) !important;
    letter-spacing: .2px !important;
  }
  /* 原 9~10px 的极小字号提到 11px 保底可读 */
  .alert-type-badge,
  .alert-level-txt,
  .alert-meta-row,
  .kpi-label,
  .chart-sub,
  .donut-lbl {
    font-size: var(--m-fs-min) !important;
  }

  /* 标签容器：允许换行，不再溢出 */
  .staff-tags,
  .hero-meta,
  .quick-nav,
  .step-meta,
  .tag-list,
  .topbar-breadcrumb,
  .topbar-actions,
  .chart-legend,
  .dt-legend,
  .alert-meta-row,
  .filter-group,
  .dt-control-bar,
  .dt-svg-toolbar,
  .dt-export-section {
    flex-wrap: wrap !important;
    gap: 6px !important;
    max-width: 100% !important;
  }
  .quick-nav > a {
    padding: 5px 11px !important;
    border-radius: var(--m-radius-sm) !important;
    font-size: var(--m-fs-tag) !important;
  }

  /* 按钮：可点区域不小于 32px，但不再把标签/链接一并拉高 */
  button,
  .btn,
  .add-row-btn,
  .back-link,
  .back-btn,
  .topbar-home,
  .row-actions button,
  input[type="submit"],
  input[type="button"],
  input[type="reset"] {
    min-height: var(--m-tap) !important;
    padding: 7px 13px !important;
    font-size: 12.5px !important;
    border-radius: var(--m-radius-sm) !important;
  }
  .back-link,
  .back-btn,
  .topbar-home {
    padding: 6px 11px !important;
    font-size: 12px !important;
  }
  .row-actions button {
    min-height: 26px !important;
    padding: 3px 8px !important;
    font-size: var(--m-fs-tag) !important;
  }

  /* 输入控件：占满宽度，避免 260px 固定宽度撑破 */
  .search-wrap,
  .search-box,
  .toolbar label {
    width: 100% !important;
    max-width: 100% !important;
  }
  .search-wrap input,
  .search-box input,
  .toolbar select,
  .toolbar input {
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
  }
  .filter-group,
  .toolbar {
    width: 100% !important;
  }
  .toolbar {
    padding: var(--m-pad-sm) !important;
    gap: 10px !important;
    border-radius: var(--m-radius) !important;
  }
  .filter-group > label {
    flex: 1 1 140px;
  }
  .search-wrap {
    margin-left: 0 !important;
  }
  .add-row-btn {
    justify-content: center;
  }
  .toolbar .count {
    text-align: center;
    justify-content: center;
  }

  /* ====== 3.5 布局坍缩：只针对真实栅格容器，不再用 [class*=grid] 通配 ====== */
  .portal-grid,
  .dept-grid,
  .gallery-grid,
  .staff-grid,
  .stats-grid,
  .equip-grid,
  .verdict,
  .section-grid,
  .dt-stat-cards,
  .dt-charts,
  .charts-grid,
  .overview,
  .equip-modal-specs,
  .equip-modal-layout,
  .report-tpl .rt-meta,
  .twin-legend {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: var(--m-gap) !important;
  }
  /* 小尺寸指标卡保留两列，避免一屏只剩一张卡 */
  .hero-meta,
  .dt-entry-stats,
  .kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
  .kpi-grid {
    gap: 10px !important;
  }
  .layout {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 16px !important;
    padding-top: 16px !important;
    padding-bottom: 40px !important;
  }
  .twin-wrap,
  .dt-entry-inner,
  .lims-card {
    grid-template-columns: minmax(0, 1fr) !important;
  }

  /* 侧边栏取消粘滞，避免窄屏占据半屏 */
  .sidebar,
  .twin-info-panel,
  .dt-legend {
    position: static !important;
    top: auto !important;
    padding: var(--m-pad-sm) !important;
    max-width: 100% !important;
  }

  /* 横向排列的行容器/导航允许换行 */
  [class*="-row"],
  nav,
  .nav,
  .main-nav,
  .navbar,
  .header-nav,
  .nav-list,
  .nav-links,
  .site-nav,
  .breadcrumb,
  .tabs,
  .tab-bar {
    flex-wrap: wrap !important;
  }
  .header-inner,
  .topbar-inner {
    gap: 10px !important;
  }

  /* ====== 3.6 表格 / 代码 / 图片 ====== */
  /* 修复 widescreen.css 的 .table-box{overflow:hidden} 导致表格撑破页面 */
  .table-box,
  .tbl-wrap,
  .table-wrap,
  .table-responsive,
  .table-container,
  .data-table-wrap {
    overflow-x: auto !important;
    overflow-y: visible !important;
    -webkit-overflow-scrolling: touch;
    border-radius: var(--m-radius-sm) !important;
  }
  thead th,
  tbody td {
    padding: 8px 10px !important;
  }
  thead th {
    font-size: var(--m-fs-min) !important;
  }
  .table-container {
    max-height: 62vh !important;
  }
  pre {
    padding: var(--m-pad-sm) !important;
    border-radius: var(--m-radius-sm) !important;
  }

  /* 步骤/流程：左侧留白 56px 在窄屏过宽 */
  .step,
  .steps .step {
    padding-left: 44px !important;
    padding-right: 0 !important;
  }
  .step::before,
  .steps .step::before {
    width: 26px !important;
    height: 26px !important;
    left: 9px !important;
    font-size: 12px !important;
  }
  .process-flow {
    flex-direction: column !important;
    align-items: center;
  }
  .process-step {
    width: 100% !important;
    max-width: 100% !important;
  }

  /* LIMS 预警轮播与浮层 */
  .alerts-viewport,
  .alerts-track,
  .alert-card {
    width: 100% !important;
  }
  .alert-card {
    margin-right: 0 !important;
    padding: 9px 11px !important;
    border-left-width: 5px !important;
  }
  .alert-card.red {
    border-left-width: 6px !important;
  }
  .chart-card .chart-popup,
  .chart-popup {
    display: none !important;   /* 600px 固定宽度浮层在窄屏必然溢出 */
  }
  .alerts-empty {
    padding: 22px !important;
  }

  /* 弹窗 */
  .equip-modal,
  .dt-equip-modal {
    max-height: 92vh !important;
    margin: 8px !important;
  }
  .equip-modal-header,
  .dt-equip-modal-header {
    padding: 14px var(--m-pad) 10px !important;
  }
  .equip-modal-body,
  .dt-equip-modal-body {
    padding: var(--m-pad) !important;
  }
  .equip-modal-title,
  .dt-equip-modal-title {
    font-size: 17px !important;
    padding-right: 38px !important;
  }
  .equip-modal-photo,
  .dt-equip-photo,
  .equip-modal-img-wrap,
  .lims-photo {
    height: 200px !important;
  }

  /* 数字孪生 SVG 画布高度 */
  .dt-iframe {
    height: 460px !important;
  }
  .dt-dashboard {
    padding: 18px !important;
  }
  .dt-dash-header,
  .dt-control-bar,
  .dt-svg-toolbar,
  .dt-export-section {
    flex-direction: column !important;
    align-items: stretch !important;
  }
  .dt-export-label {
    margin: 0 0 8px 0 !important;
  }

  /* ====== 3.7 首页头部与汉堡菜单（index.html 依赖 .header-nav.show） ====== */
  .header-inner {
    flex-wrap: wrap !important;
    padding-top: 12px !important;
    padding-bottom: 12px !important;
  }
  .brand-logo {
    width: 36px !important;
    height: 36px !important;
    font-size: 16px !important;
  }
  .brand-text h1 {
    font-size: 15px !important;
  }
  .brand-text span {
    display: none !important;
  }
  .nav-toggle {
    display: flex !important;
    width: 40px !important;
    height: 40px !important;
    padding: 9px !important;
  }
  .nav-toggle span {
    width: 18px !important;
    height: 2px !important;
    background: var(--text) !important;
  }
  /* 用 flex 换行铺开，替代 v1.0 的绝对定位（不再依赖父级 position） */
  .header-nav {
    display: none !important;
    flex-basis: 100%;
    order: 9;
    flex-direction: column !important;
    flex-wrap: nowrap !important;
    gap: 0 !important;
    padding: 4px 0 !important;
    border-top: 1px solid var(--border-light);
  }
  .header-nav.show {
    display: flex !important;
  }
  .header-nav a {
    display: flex;
    align-items: center;
    width: 100% !important;
    padding: 11px 4px !important;
    font-size: 14.5px !important;
    white-space: normal !important;
    border-bottom: 1px solid var(--border-light);
  }
  .header-nav a:last-child {
    border-bottom: none;
  }

  /* 顶栏面包屑：长中文标题不撑破 */
  .topbar-inner {
    padding-top: 9px !important;
    padding-bottom: 9px !important;
  }
  .topbar-breadcrumb {
    min-width: 0;
    font-size: 12.5px !important;
    row-gap: 4px !important;
  }
  .topbar-breadcrumb .crumb,
  .breadcrumb .crumb {
    max-width: 100%;
    overflow-wrap: anywhere;
  }
  .topbar-actions {
    flex-shrink: 0;
  }

  /* ====== 3.8 培训课件（training/plan/*/courseware-*.html）幻灯片 ====== */
  /* 该体系自建：html/body 高 100% 且 overflow:hidden，靠 .slide-body 内部滚动。
     窄屏下取消 20px 外框与 768px 高度上限，让幻灯片铺满可用区域。 */
  .presentation {
    padding: 0 !important;
  }
  .slide {
    height: 100% !important;
    max-height: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }
  .slide-header {
    height: auto !important;
    min-height: 52px !important;
    padding: 10px 16px !important;
    flex-wrap: wrap;
    gap: 4px;
  }
  .slide-header .logo {
    font-size: 17px !important;
  }
  .slide-header .date {
    font-size: 12px !important;
  }
  .slide-body {
    padding: 20px 16px !important;
  }
  .slide-body::-webkit-scrollbar {
    width: 4px;
  }
  .slide-footer {
    height: auto !important;
    min-height: 34px !important;
    padding: 8px 16px !important;
    font-size: 12px !important;
    flex-wrap: wrap;
    gap: 4px;
  }
  .title-slide {
    padding: 28px 18px !important;
  }
  .title-slide h1 {
    font-size: clamp(21px, 6.2vw, 27px) !important;
    margin-bottom: 14px !important;
  }
  .title-slide h2 {
    font-size: 16px !important;
    margin-bottom: 24px !important;
  }
  .title-slide .meta,
  .title-slide .trainer-info {
    font-size: 14px !important;
    margin-bottom: 16px !important;
  }
  .title-slide .stats {
    flex-wrap: wrap;
    gap: 22px !important;
  }
  .title-slide .stat-value {
    font-size: 30px !important;
  }
  .title-slide .stat-label {
    font-size: 12.5px !important;
  }
  .content-slide h1 {
    font-size: 20px !important;
    margin-bottom: 20px !important;
    padding-bottom: 10px !important;
    border-bottom-width: 2px !important;
  }
  .content-slide h2 {
    font-size: 16.5px !important;
    margin: 18px 0 10px !important;
    padding-left: 10px !important;
    border-left-width: 3px !important;
  }
  .content-slide p,
  .content-slide li {
    font-size: 14.5px !important;
    line-height: 1.8 !important;
  }
  .content-slide ul {
    padding-left: 20px !important;
  }
  .tool-grid {
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)) !important;
    gap: 10px !important;
  }
  .tool-item {
    padding: 14px !important;
  }
  .tool-item .icon {
    font-size: 26px !important;
  }
  .tool-item .name {
    font-size: 14px !important;
  }
  .tool-item .desc {
    font-size: 12px !important;
  }
  /* 幻灯片翻页控件：贴底居中，按钮可点高度不缩水 */
  .nav-controls {
    bottom: 10px !important;
    gap: 10px !important;
    padding: 0 10px;
    width: 100%;
    box-sizing: border-box;
  }
  .nav-btn {
    padding: 9px 16px !important;
    font-size: 13.5px !important;
    white-space: nowrap;
  }
  .page-num {
    font-size: 14px !important;
    min-width: 0 !important;
    flex: 0 1 auto;
  }
  .fullscreen-btn {
    top: 10px !important;
    right: 10px !important;
    padding: 6px 11px !important;
    font-size: 12px !important;
  }
}

/* --------------------------------------------------------------------------
   4. 超窄屏（≤480px）
   -------------------------------------------------------------------------- */
@media (max-width: 480px) {
  :root {
    --m-gutter: 12px;
    --m-pad: 13px;
    --m-pad-sm: 10px;
    --m-gap: 10px;
  }

  /* 单列到底 */
  .portal-grid,
  .dept-grid,
  .gallery-grid,
  .staff-grid,
  .stats-grid,
  .equip-grid,
  .verdict,
  .dt-stat-cards,
  .dt-charts,
  .charts-grid,
  .overview,
  .report-tpl .rt-meta,
  .hero-meta,
  .dt-entry-stats,
  .equip-modal-specs,
  .equip-modal-layout,
  .twin-legend {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .kpi-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  /* 首页标题进一步收窄 */
  .hero {
    padding: 34px 0 30px !important;
  }
  .hero-inner h2,
  .hero-title {
    font-size: clamp(20px, 7.2vw, 25px) !important;
  }
  .section,
  .section-head h3,
  .portal-head h3 {
    font-size: 18.5px !important;
  }
  .section {
    padding: 34px 0 !important;
  }
  .hero-stats {
    gap: 16px !important;
  }
  .hero-stat .num {
    font-size: 23px !important;
  }

  /* LIMS 指标卡 */
  .kpi-num {
    font-size: 23px !important;
  }
  .kpi-label {
    letter-spacing: .3px !important;
  }
  .section-head h2 {
    font-size: 18px !important;
  }

  /* 标签更紧凑 */
  .tag,
  .tag-sm,
  .badge,
  .cr-tag,
  .step-meta > span {
    padding: 2px 8px !important;
    font-size: 11px !important;
    margin: 0 4px 4px 0 !important;
  }
  .period-badge,
  .topbar-badge,
  .hero-cat,
  .dt-entry-badge,
  .alert-type-badge {
    padding: 2px 8px !important;
    font-size: 11px !important;
  }
  .quick-nav > a {
    padding: 4px 10px !important;
    font-size: 11px !important;
  }

  /* 按钮 */
  button,
  .btn,
  .add-row-btn,
  .back-link,
  .back-btn,
  .topbar-home {
    padding: 6px 11px !important;
    font-size: 12px !important;
  }

  /* 表格密度 */
  thead th,
  tbody td {
    padding: 7px 8px !important;
  }
  table.tbl {
    font-size: 12px !important;
  }
  .dt-iframe {
    height: 400px !important;
  }

  /* 居中标题的宽字距在超窄屏会浪费横向空间，收窄一档 */
  .hero-inner:has(> .hero-eyebrow) h2,
  .section-head h2,
  .section-head h3,
  .section-header h2,
  .section-header h3,
  .page-head h2,
  .page-head h3 {
    letter-spacing: 1px !important;
  }
}

/* --------------------------------------------------------------------------
   5. 极小屏（≤360px，如 320/360 宽的老机型）
   -------------------------------------------------------------------------- */
@media (max-width: 360px) {
  :root {
    --m-gutter: 10px;
    --m-pad: 11px;
    --m-pad-sm: 9px;
    --m-tag-pad-x: 7px;
  }
  .kpi-grid,
  .dt-entry-stats {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .hero-inner h2,
  .hero-title {
    font-size: 19px !important;
  }
  .kpi-num {
    font-size: 21px !important;
  }
  .step,
  .steps .step {
    padding-left: 38px !important;
  }
  .step::before,
  .steps .step::before {
    width: 23px !important;
    height: 23px !important;
    left: 7px !important;
  }
}

/* --------------------------------------------------------------------------
   6. 无障碍 / 打印
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

@media print {
  body,
  .container,
  .header-inner,
  .topbar-inner,
  .layout {
    padding-left: 0 !important;
    padding-right: 0 !important;
    max-width: 100% !important;
  }
  .nav-toggle,
  .dt-control-bar,
  .dt-export-section,
  .dt-svg-toolbar {
    display: none !important;
  }
}

/* --------------------------------------------------------------------------
   7. 数字孪生页面 + 首页 · 窄屏字号与版式补丁
   --------------------------------------------------------------------------
   digital-twin/index.html 只引入 mobile.css，其页内展示型字号在手机上明显
   过大（页面标题 30px、看板标题 22px、统计数字 32px），且 .dt-stat-cards 被
   3.5 节压成单列，一屏只放得下一张卡。本节的 @media 块置于文件最末，
   以确保覆盖前面所有同权重规则（含 ≤480px 段的单列规则）。
   -------------------------------------------------------------------------- */
@media (max-width: 768px) {
  /* —— 数字孪生页面 —— */
  .dt-wrap { padding: 18px var(--m-gutter) 40px !important; }
  .dt-back { margin-bottom: 14px !important; padding: 7px 13px 7px 10px !important; font-size: 12px !important; }
  .dt-header { margin-bottom: 18px !important; }
  .dt-header h3 { font-size: 19px !important; line-height: 1.35 !important; }
  .dt-header p { font-size: 12.5px !important; line-height: 1.7 !important; }

  .dt-dashboard { padding: 16px !important; border-radius: var(--m-radius) !important; margin-bottom: 12px !important; }
  .dt-dash-header { margin-bottom: 14px !important; gap: 8px !important; }
  .dt-dash-title { font-size: 15px !important; line-height: 1.4 !important; }
  .dt-dash-time { font-size: 11.5px !important; }
  .dt-stat-cards { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; }
  .dt-stat-card { padding: 12px 8px !important; border-radius: 10px !important; }
  .dt-stat-num { font-size: 21px !important; margin-bottom: 4px !important; }
  .dt-stat-label { font-size: 11px !important; letter-spacing: .2px !important; }
  .dt-charts { grid-template-columns: minmax(0, 1fr) !important; gap: 10px !important; }
  .dt-chart-card { padding: 12px !important; }
  .dt-chart-title { font-size: 13px !important; }

  .dt-control-bar { padding: 11px 12px !important; gap: 9px !important; margin-bottom: 12px !important; }
  .dt-layer-btn { padding: 6px 12px !important; font-size: 12px !important; }
  .dt-search-box input { padding: 8px 12px 8px 32px !important; font-size: 12.5px !important; }
  .dt-view-btn { width: 30px !important; height: 30px !important; }
  .dt-view-btn svg { width: 15px !important; height: 15px !important; }
  .dt-legend { gap: 10px !important; }
  .dt-legend-item { font-size: 11px !important; }

  .dt-alert-bar { padding: 11px 12px !important; gap: 8px !important; margin-bottom: 12px !important; }
  .dt-alert-bar-title,
  .dt-alert-item { font-size: 11.5px !important; }

  .dt-zone-title { font-size: 16px !important; }
  .dt-zoom-hint { font-size: 11px !important; padding: 5px 12px !important; }
  .dt-export-label { font-size: 12px !important; }

  /* —— 首页展示型字号再收一档 —— */
  .hero-inner h2,
  .hero-title { font-size: clamp(21px, 5.6vw, 26px) !important; }
  .hero-stat .num { font-size: 22px !important; }

  /* —— 首页「数字孪生入口」卡片：整体收紧，按钮与提示不折行 —— */
  .dt-entry { padding: 20px 16px !important; border-radius: 18px !important; }
  .dt-entry-inner { gap: 20px !important; }
  .dt-entry-badge {
    font-size: 11px !important;
    padding: 3px 10px !important;
    gap: 5px !important;
    margin-bottom: 12px !important;
    letter-spacing: .3px !important;
  }
  .dt-entry-badge::before { width: 5px !important; height: 5px !important; }
  .dt-entry-title { font-size: 18px !important; line-height: 1.3 !important; margin-bottom: 8px !important; }
  .dt-entry-desc { font-size: 12.5px !important; line-height: 1.65 !important; margin-bottom: 16px !important; }
  .dt-entry-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 8px !important;
    margin-bottom: 18px !important;
  }
  .dt-entry-stats .dt-stat { padding: 10px 8px !important; border-radius: 10px !important; }
  .dt-entry-stats .dt-stat-num { font-size: 19px !important; line-height: 1.15 !important; margin-bottom: 2px !important; }
  .dt-entry-stats .dt-stat-label { font-size: 10.5px !important; letter-spacing: .2px !important; }
  .dt-entry-cta { gap: 12px !important; flex-wrap: wrap !important; }
  .dt-enter-btn {
    padding: 11px 18px !important;
    font-size: 13px !important;
    gap: 7px !important;
    border-radius: 999px !important;
    white-space: nowrap !important;
    flex: 0 0 auto;
  }
  .dt-enter-btn svg { width: 15px !important; height: 15px !important; }
  .dt-enter-hint { font-size: 11.5px !important; white-space: nowrap !important; }
}

@media (max-width: 480px) {
  .hero-inner h2,
  .hero-title { font-size: 20px !important; }
  .hero-stat .num { font-size: 21px !important; }
  .hero-stats { gap: 18px !important; }
}

/* 原生 App（平板 / 横屏，宽度 >768px）：桌面字号在 App 内同样偏大 */
@media (min-width: 769px) {
  html.app-native .dt-header h3 { font-size: 24px !important; }
  html.app-native .dt-dash-title { font-size: 18px !important; }
  html.app-native .dt-stat-num { font-size: 26px !important; }
  html.app-native .hero-inner h2 { font-size: clamp(28px, 3.4vw, 38px) !important; }
  html.app-native .hero-stat .num { font-size: 30px !important; }
  html.app-native .section-head h3,
  html.app-native .portal-head h3 { font-size: 22px !important; }
}

/* --------------------------------------------------------------------------
   8. 实验室管理 / 培训中心 / LIMS · 窄屏字号与间距补充
   --------------------------------------------------------------------------
   这三套体系的展示型大字号（52/38/36/34/32/30/28/26/24/22/20px）原先只由
   各自的 640 / 1024 断点降过一档，768px 区间仍按桌面尺寸渲染；而 mobile.css
   第 3 节只覆盖到 .hero h1 / .section-title / .kpi-num 等少数通用类。
   本节按各体系真实类名逐一收敛，置于文件最末以保证优先级。
   -------------------------------------------------------------------------- */
@media (max-width: 768px) {

  /* ====== 8.1 实验室管理（laboratory 体系） ====== */
  .hero h1 { font-size: clamp(20px, 5.4vw, 24px) !important; letter-spacing: .5px !important; }
  .hero-badge { font-size: 11px !important; padding: 4px 11px !important; margin-bottom: 14px !important; }
  .hero-badge::before { font-size: 6px !important; }
  .kpi-value { font-size: 21px !important; }
  .kpi-icon { width: 38px !important; height: 38px !important; font-size: 18px !important; border-radius: 10px !important; }
  .kpi-card { padding: 13px !important; border-radius: var(--m-radius) !important; }
  .module-nav-card { padding: 16px !important; }
  .module-nav-card .nav-icon { font-size: 22px !important; }
  .term-showcase { padding: 16px !important; }
  .term-showcase h3 { font-size: 16px !important; }
  .term-showcase .term-stats strong { font-size: 18px !important; }
  body > header:not(.site-header) { padding: 26px 18px 22px !important; border-radius: var(--m-radius) !important; margin-bottom: 18px !important; }
  body > header:not(.site-header) h1 { font-size: 19px !important; letter-spacing: .3px !important; }
  body > header:not(.site-header) p { font-size: 12.5px !important; }
  .content-box h2 { font-size: 17px !important; padding-bottom: 10px !important; }
  .content-box h2 .ico { width: 28px !important; height: 28px !important; font-size: 14px !important; border-radius: 8px !important; }
  .content-box h3 { font-size: 15.5px !important; margin: 18px 0 10px !important; }
  .content-box p,
  .content-box li { line-height: 1.75 !important; }
  .section-card h4 { font-size: 15px !important; }
  .section-card p { font-size: 13px !important; }
  .step-card { padding: 15px !important; margin-bottom: 12px !important; }
  .step-card h4 { font-size: 15px !important; }
  .step-card p { font-size: 13.5px !important; }
  .breadcrumb { font-size: 12px !important; padding: 8px 11px !important; gap: 6px !important; margin-bottom: 14px !important; }
  .quick-nav { gap: 6px !important; margin: 12px 0 !important; }
  .quick-nav a { padding: 5px 11px !important; font-size: 12px !important; }
  .highlight,
  .tip-box,
  .warn-box,
  .info-box { padding: 12px 14px !important; margin: 12px 0 !important; }

  /* ====== 8.2 培训中心（training 体系） ====== */
  .hero-left h1 { font-size: clamp(20px, 5.6vw, 25px) !important; }
  .hero:has(.hero-left) { padding: 26px 16px 24px !important; }
  .hero-stat-row { padding: 10px 0 !important; }
  .hero-stat-row .hs-label { font-size: 12px !important; }
  .hero-stat-row .hs-value { font-size: 20px !important; }
  .kpi-value { font-size: 22px !important; }
  .kpi-icon { width: 38px !important; height: 38px !important; font-size: 18px !important; border-radius: 10px !important; }
  .section-title { font-size: 17px !important; }
  .section-box { padding: 18px 15px !important; }
  .main-content { padding: 16px var(--m-gutter) !important; }
  .year-card { padding: 16px !important; }
  .year-card .yc-year { font-size: 22px !important; }
  .year-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; }
  .feature-grid { grid-template-columns: minmax(0, 1fr) !important; gap: 10px !important; }
  .feature-card { padding: 16px !important; }
  .feature-card .fc-icon { font-size: 26px !important; margin-bottom: 8px !important; }
  .feature-card .fc-title { font-size: 16px !important; }
  .test-intro { padding: 14px !important; }
  .test-intro .ti-icon { font-size: 22px !important; }
  .tc-icon-box { width: 40px !important; height: 40px !important; font-size: 20px !important; border-radius: 11px !important; }
  .tc-title { font-size: 17px !important; }

  /* ====== 8.3 LIMS 数据看板 ====== */
  .donut-num { font-size: 22px !important; }
  .section-head h2 { font-size: 18px !important; }
  .section-head .sh-num { width: 26px !important; height: 26px !important; font-size: 13px !important; }
}

/* --------------------------------------------------------------------------
   9. 首页页脚联系人 + 培训/实验室 的统计标签与章节标签
   -------------------------------------------------------------------------- */
@media (max-width: 768px) {

  /* ====== 9.1 首页页脚：联系人一行两个 ====== */
  .site-footer { padding: 30px 0 24px !important; }
  .site-footer .footer-title { font-size: 14px !important; margin-bottom: 6px !important; }
  .site-footer .footer-contact {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 5px 10px !important;
    max-width: 440px;
    margin: 10px auto 0 !important;
    line-height: 1.6 !important;
    font-size: 11.5px !important;
    text-align: center;
  }
  .site-footer .footer-contact span { margin: 0 !important; }
  /* HTML 里作为分隔符的 "|" 是偶数位，网格中让位不占格 */
  .site-footer .footer-contact span:nth-child(even) { display: none !important; }

  /* ====== 9.2 培训中心：四个统计标签 / 年度计划汇总 / 6 张年度卡 ====== */
  .kpi-card { padding: 13px !important; gap: 10px !important; border-radius: var(--m-radius) !important; }
  .kpi-value { font-size: 20px !important; }
  .kpi-label { font-size: 11.5px !important; }
  .kpi-trend { font-size: 10.5px !important; margin-top: 1px !important; }
  .section-subtitle { font-size: 12px !important; padding-left: 0 !important; margin-bottom: 14px !important; }
  .section-title { font-size: 17px !important; }
  .section-title .ico { width: 30px !important; height: 30px !important; font-size: 15px !important; border-radius: 9px !important; }
  .year-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 10px !important; }
  .year-card { padding: 14px 13px !important; }
  .year-card .yc-year { font-size: 20px !important; }
  .year-card .yc-theme { font-size: 13px !important; line-height: 1.45 !important; }
  .year-card .yc-instructor { font-size: 12px !important; margin-bottom: 10px !important; }
  .year-card .yc-link { padding: 6px 12px !important; font-size: 12px !important; }

  /* ====== 9.3 实验室管理：4 个统计标签 / 5 个章节标签 / 模块标题栏 ====== */
  .hero-nav { gap: 7px !important; }
  .hero-nav a { padding: 7px 13px !important; font-size: 12px !important; border-radius: 20px !important; }
  .mod-header { padding: 12px 14px !important; gap: 8px !important; flex-wrap: wrap !important; }
  .mod-header .mod-title { font-size: 15px !important; gap: 7px !important; line-height: 1.4 !important; }
  .mod-header .mod-badge { font-size: 10.5px !important; padding: 3px 9px !important; }
  .mod-header .mod-entry { padding: 6px 13px !important; font-size: 11.5px !important; }
  .module-nav-card { padding: 15px 14px !important; }
  .module-nav-card .nav-icon { font-size: 24px !important; margin-bottom: 7px !important; }
  .module-nav-card .nav-title { font-size: 14px !important; }
  .module-nav-card .nav-count { font-size: 11.5px !important; }
}
