/* BidPal 组件层样式 —— 跨页面复用的组件规范
   变量取自 tokens.css，本文件只放"组件怎么长"，不放颜色值本身。
   引入位置：base.html 中 tokens.css 之后、内联 style 之前（内联可覆盖本文件）。

   ⚠️ 本文件**只有继承 base.html 的页面才加载**（登录页、报价页、注册页等独立页面手动引入，
   扫码认证页/团队确认页/供应商门户页没有引入）。凡是"全站都要一致"的规则（尤其工具类配色）
   请放 tokens.css —— 那里每个页面都会加载。 */

/* ── 表格基础规范 ── */

/* 表头文字不换行：列宽紧时"创建日期"会被压成两行
   表头字号/字重不在此处设置——base.html 的 .table th（0.78rem / 600）权重更高且已生效 */
table th { white-space: nowrap; }

/* 表头粘性：表格在滚动容器里竖向滚动时表头保持可见。
   sticky 只改绘制位置，不改变表格宽度与列宽计算，因此不影响 .table-responsive 的横向滚动 */
table thead th { position: sticky; top: 0; z-index: 2; background: var(--bg-surface); }

/* 宽表首列粘性（可选）：表格本身加 .table-sticky-first，
   横向滚动时首列作为行标签保持可见。
   不设背景——单元格本身已有不透明底色（Bootstrap 的 --bs-table-bg，白底/行底色都算在内），
   强行刷白会把 .table-success / .table-warning 的行底色盖掉 */
.table-sticky-first td:first-child,
.table-sticky-first th:first-child { position: sticky; left: 0; }
/* 左上角那格同时命中「粘性表头」与「粘性首列」，层级要压过 thead th 的 z-index:2 */
.table-sticky-first thead th:first-child { z-index: 3; }

/* 单元格禁止换行开关：编号、日期等不可断行的短字段按需加 */
.nowrap { white-space: nowrap; }

/* 数字右对齐 + 等宽数字：金额、数量纵向比对时位数对齐 */
.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* 表格内所有数字等宽，避免 1 比 0 窄导致纵向跳动 */
table td, table th { font-variant-numeric: tabular-nums; }

/* ── 品牌色落地 ──
   本文件在 zephyr（Bootstrap 5.3）之后加载，同权重靠后生效，因此不用 !important。
   所有取值来自 tokens.css，本文件不写死颜色。 */

/* 主按钮与其它实心/描边按钮的配色见 tokens.css 的「按钮配色」段——
   规则同样因为独立页面不加载本文件而搬了过去。 */

/* 链接：brand-700（7.17:1）打底，hover 提亮到 brand-600 */
a { color: var(--brand-700); }
a:hover { color: var(--brand-600); }

/* ── 表单控件 ──
   已全部搬到 tokens.css（.form-control / .form-select / .form-label / .form-check-input）。
   原因：独立页面（快速报价、供应商门户、团队确认、扫码认证页）不加载本文件，
   放在这里它们的输入框边框一直是 zephyr 的 #dee2e6（1.30:1），不达标。 */

/* ── 徽章与辅助文字的配色覆盖 ──
   已全部搬到 tokens.css，原因：本文件只有继承 base.html 的页面才加载，
   而扫码认证页（evaluate/login/project_doc_scan_auth）、团队确认页、供应商门户页
   是独立页面，只加载 zephyr + tokens.css，放这里会静默失效（实测这些页面仍是 2.66:1 / 1.71:1）。
   全站都要一致的规则一律放 tokens.css；本文件只留「组件怎么长」。 */
