/* ==============================================================================
 * 管理后台内容区样式（生产归档与微调 / 塘口主图档案）
 * 现代数字化农业中枢风格：阳澄湖深湖蓝绿 (#08261e) + 智慧荧光金 (#d4af37)
 *
 * 本文件只负责**内容区**。顶栏、侧栏、页面骨架、日/夜令牌与 body 全部来自
 * console.css（18 页共用单壳）——此处不得重现 .admin-navbar/.admin-sidebar 那套，
 * 否则又长出第二套壳（2026-09-21 收敛，见 AGENTS.md §4.4）。
 * 加载次序固定 layui.css → console.css → admin.css：admin.css 必须最后，
 * 内容组件与 Layui 皮肤覆写才压得住框架默认值。
 * ============================================================================== */

:root {
    --admin-primary: #0b3328;
    --admin-accent: #c59b27;
    --admin-card: #ffffff;
    --admin-text: #1d2b24;
    --admin-border: #e2ebe6;
    /* 内容区专属语义色。暗色段整组覆写，内容区与页脚本因此都不得再写行内色值
       （AdminPageFlowTest 有合同）。画布底色归 console.css 的 --bg-base 统管，
       这里不再定义 --admin-bg：它随 body 规则一起删掉后消费点为 0，留着就是第二份真相。 */
    /* 次要文字必须同时压得住卡片 #ffffff 与画布 --bg-base #f2f6f4：旧值 #6b8277 对画布只有
       3.79:1（.page-intro 就直接落在画布上）。以下浅色段取值一律按「保持色相、逐档压暗到目标比值」
       求解所得，深色段逐条实测全达标（最低 5.75:1）故未改动。 */
    --admin-muted: #5d7268;
    /* --admin-faint 只服务**非文本**装饰（链接下划线色）与暗色 laydate 越月日字；
       一旦把它当正文色用就会掉到 2.59:1——13px 的 .stat-unit 因此挂 --admin-muted。 */
    --admin-faint: #8fa69c;
    --admin-surface-2: #f7faf8;
    --admin-row-hover: #f2f7f4;
    --admin-hint-bg: #f8faf9;
    --admin-hint-tx: #5a7266;
    --admin-th-tx: #3b5046;
    --kpi-green: #1a8246;
    /* 语义色分两档门槛：.stat-value--* 是 24px/700 的大字号文本（WCAG 1.4.3 放宽到 3:1），
       .cell-* 与 .water-cell-* 是 14px 正文（须 4.5:1）。旧值里 amber/gold 连大字号的 3:1 都不到。 */
    --kpi-amber: #c68119;
    --kpi-gold: #b08a23;
    --kpi-blue: #2b73b9;
    /* 表格着色一律还要过 Layui 的行悬停灰 #f8f8f8（框架 .layui-table-hover / -click / [lay-even]
       三条共用这一处写死值、浅色段未覆写），那比卡片更严：白底上刚好解到 4.5:1 的前景，
       压到 #f8f8f8 只剩 4.24:1（--kpi-green 现值白底 4.86 → 悬停 4.57，是全部行里最紧的一条）。 */
    --kpi-red: #d3332f;
    /* 水质两档是全站**唯一只靠颜色承载信息**的语义对（bad/warn 由数值越界深度决定，格子里除了
       颜色没有任何文字或符号区别「偏离最适」与「超生理临界」）⇒ 除 4.5:1 外还必须互相可辨。
       4.5:1 又把两者的相对亮度都钉在 ≈0.19 上（互比只剩 1.00），此时唯一的区分轴是色相，
       而红绿色盲恰好只毁色相轴：Viénot 1999 模拟下 #d53300(红橙,b*60) 对 #936a00 的 ΔE
       仅 deutan 6.1 / protan 9.1（改动前的 #ff5722 对 #ffb800 靠亮度差拿到 22.3 / 36.1）。
       故把 bad 压暗为砖红 #b43c3c（悬停底上 5.41:1，仍达标）：deutan 21.8 / protan 36.1 /
       正常视觉 ΔE 48.8 —— 三轴都不低于本轮对比度工作之前的水平。
       下限由 ConsolePagesTest 的 CVD 用例（两轴 ΔE ≥ 18 且亮度互比 ≥ 1.12）钉住，改回亮红即报红。 */
    --water-bad: #b43c3c;
    /* --water-warn 是 AGENTS.md §4.7 徽标口径里的那一档「橙」。近白行底上要到 4.5:1，
       黄色系只能压到 #936a00 这个深度 ⇒ 实际渲染是深金/赭色而不是亮橙；档位判据不变
       （waterBadgeLevel 与阈值由 AdminPageFlowTest 逐档钉住），此处仅登记观感与措辞的差异，
       改措辞须与 §4.7 同一次提交一并处理。 */
    --water-warn: #936a00;
    --icon-primary: #0e3d30;
    /* 正文里的链接色必须独立于装饰金：--admin-accent #c59b27 压浅色画布只有 2.38:1，
       下划线解决"看得出是链接"（WCAG 1.4.1），解决不了"文字本身可读"（1.4.3）。
       取 console.css 的 --focus-ring 同值深金，对 #f2f6f4 为 4.71:1。 */
    --admin-link: #8a682a;
    --banner-bg: #fff7e6;
    --banner-line: #e3c98a;
    --banner-tx: #6b5417;
    --banner-link: #7d5f16;
}

:root[data-theme='dark'] {
    --admin-primary: #cfe3d8;
    --admin-accent: #d8b063;
    --admin-card: #151c22;
    --admin-text: #e9eef7;
    --admin-border: rgba(160, 176, 205, .17);
    --admin-muted: #a6b1c4;
    --admin-faint: #8b96a8;
    --admin-surface-2: #1b242b;
    --admin-row-hover: #202b34;
    --admin-hint-bg: #182128;
    --admin-hint-tx: #b3c2bd;
    --admin-th-tx: #dfe8f2;
    --kpi-green: #4ecb8b;
    --kpi-amber: #f0b968;
    --kpi-gold: #d8b063;
    --kpi-blue: #74b6ea;
    --kpi-red: #ff8177;
    --water-bad: #ff7a52;
    --water-warn: #ffcb3d;
    --icon-primary: #7fd0b6;
    --admin-link: #d8b063;
    --banner-bg: #2a2413;
    --banner-line: #6b5a20;
    --banner-tx: #e8d5a0;
    --banner-link: #f0c96a;
}

/* ---------- 页首 ---------- */
.admin-container {
    padding: 24px 28px;
    max-width: 1440px;
    margin: 0 auto;
    /* 内容列现在是 .console-layout 网格的第二列（grid 子项），不是 flex 子项：
       原先的 flex:1 1 auto 在这里永不生效，留着只会让下一个读者以为还有 flex 上下文。
       min-width:0 是承重的——没有它，宽表格会把网格列撑破。 */
    min-width: 0;
}

.admin-container h1 {
    margin: 0 0 6px;
    font-size: 22px;
    font-weight: 700;
    letter-spacing: -.01em;
    color: var(--admin-text);
}

.page-intro {
    margin: 0 0 20px;
    font-size: 13.5px;
    color: var(--admin-muted);
    max-width: 76ch;
}

.page-intro a {
    color: var(--admin-link);
    font-weight: 600;
    /* layui.css 有 `a{text-decoration:none}`：不给下划线，链接与周围正文无从区分。 */
    text-decoration: underline;
    text-decoration-color: var(--admin-faint);
    text-underline-offset: 2px;
}

/* 初始密码未修改的软提醒横幅（不阻断操作）。三值一律令牌化：
   字面量写法曾让暗色下的链接与相邻正文亮度相同（#f0c96a vs #e8d5a0 = 1.09:1），
   令牌化后 ConsolePagesTest 能直接把每对前景/底色拿出来算 WCAG 比值。 */
.admin-banner {
    padding: 10px 18px;
    background: var(--banner-bg);
    border-bottom: 1px solid var(--banner-line);
    color: var(--banner-tx);
    font-size: 13px;
    border-radius: 8px;
    margin-bottom: 16px;
}

.admin-banner a {
    color: var(--banner-link);
    font-weight: 600;
    /* layui.css 的 `a{text-decoration:none}` 抹掉了唯一的非颜色线索；
       暗色下链接与正文只差 1.09:1，没有下划线就无从区分。 */
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* ---------- KPI 卡片栅格 ---------- */
.stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 18px;
    margin-bottom: 24px;
}

.stat-card {
    background: var(--admin-card);
    border-radius: 14px;
    padding: 18px 20px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
    border-top: 4px solid var(--admin-primary);
    transition: transform 0.2s ease;
}

.stat-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);
}

.stat-card--green { border-top-color: var(--kpi-green); }
.stat-card--amber { border-top-color: var(--kpi-amber); }
.stat-card--gold  { border-top-color: var(--kpi-gold); }
.stat-card--blue  { border-top-color: var(--kpi-blue); }

.stat-title {
    font-size: 12px;
    color: var(--admin-muted);
    margin-bottom: 6px;
}

.stat-value {
    font-size: 24px;
    font-weight: 700;
    color: var(--admin-primary);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

.stat-value--green { color: var(--kpi-green); }
.stat-value--amber { color: var(--kpi-amber); }
.stat-value--gold  { color: var(--kpi-gold); }
.stat-value--blue  { color: var(--kpi-blue); }

.stat-unit {
    font-size: 13px;
    font-weight: normal;
    /* 单位字（盒/只/%）是正文级信息，不是装饰：旧值 --admin-faint 对卡片只有 2.59:1。
       层级靠 13px + normal weight 与 .stat-title 区分，不再靠压暗颜色。 */
    color: var(--admin-muted);
    margin-left: 4px;
}

.stat-context {
    margin: -10px 0 16px;
    color: var(--admin-muted);
    font-size: 12px;
}

/* ---------- 控制模块区块 ---------- */
.panel-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 24px;
}

.control-card {
    background: var(--admin-card);
    border-radius: 14px;
    padding: 20px 24px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
}

.card-heading {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--admin-border);
}

.card-title {
    font-size: 16px;
    font-weight: 700;
    color: var(--admin-primary);
    display: flex;
    align-items: center;
    gap: 8px;
}

.panel-lead {
    font-size: 13px;
    color: var(--admin-muted);
    margin-bottom: 16px;
}

.hint-box {
    background: var(--admin-hint-bg);
    border-radius: 8px;
    padding: 12px 14px;
    font-size: 12px;
    color: var(--admin-hint-tx);
}

.icon-accent { color: var(--admin-accent); }
.icon-primary { color: var(--icon-primary); }
.range-sep { color: var(--admin-muted); }

/* 表格单元格内的着色：原先由 admin.js/pond-admin.js 拼 `style="color:#hex"`，
   那类字面量不吃令牌、暗色下不跟随（实测良品率绿字对暗卡片仅 3.54:1），故一律收进令牌。 */
.cell-rate-good { color: var(--kpi-green); font-weight: 600; }
.cell-rate-bad { color: var(--kpi-red); }
.water-cell-bad { color: var(--water-bad); font-weight: 600; }
.water-cell-warn { color: var(--water-warn); font-weight: 600; }

/* 内容级断点：与壳的 768px 抽屉断点正交，只管双列面板塌成单列。 */
@media (max-width: 992px) {
    .panel-row {
        grid-template-columns: 1fr;
    }
}

/* ---------- 数据表格卡片 ---------- */
.table-card {
    background: var(--admin-card);
    border-radius: 14px;
    padding: 20px 24px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
}

.pond-module-lead {
    font-size: 13px;
    color: var(--admin-muted);
    margin: 0 0 16px;
    line-height: 1.6;
}

.pond-water-statusbar {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 12px;
}

.filter-bar {
    display: flex;
    gap: 12px;
    align-items: center;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

/* ---------- 快捷按钮组 ---------- */
/* 反白字压在装饰金上只有 2.60:1（旧渐变浅端 #c59b27），而 #ffffff 已是最亮、无向上空间
   ⇒ 只能压暗底色。两端都过 4.5:1（浅端 4.73 / 深端 5.97），中间插值必然也过。 */
.btn-gold {
    background: linear-gradient(135deg, #8e6f1c, #7d5f16) !important;
    border: none !important;
    color: #ffffff !important;
}

.btn-primary {
    background: linear-gradient(135deg, #0e3d30, #175242) !important;
    border: none !important;
    color: #ffffff !important;
}

/* ---------- 状态徽标 ----------
   Layui 的 .layui-bg-green/#16baaa 与 .layui-bg-orange/#ffb800 是 `!important` 反白字
   （2.43 / 1.73:1），而这两页把**正文级信息**放进去（"ThinkPHP 8 CLI驱动"、"双写一致性"、
   "塘口数量：…"），12px 须 4.5:1。压暗底色同理。admin.css 层叠在 layui.css 之后，
   同为 !important 时由次序取胜（.layui-badge 复合选择器特异性也更高）。
   刻意写成主题无关的基线规则、不进 :root[data-theme='dark'] 段：徽标底色自成一个
   封闭前景/背景对，暗色下同样成立，令牌化反而会让暗色段的亮色覆写把它带崩。 */
.layui-badge.layui-bg-green { background-color: #0f7f74 !important; }
.layui-badge.layui-bg-orange { background-color: #936a00 !important; }

.status-badge-success {
    /* 底色从 #eaf6ee 提到 #f2faf5，好让绿色仍等于 --kpi-green 一个真相源（4.57:1） */
    background: #f2faf5;
    color: var(--kpi-green);
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
}

.status-badge-sim {
    background: #fdf6ec;
    /* 不复用 --kpi-amber：那个值是按 24px/700 大字号（门槛 3:1）解的，压在本徽标 11px 上只有 2.99:1。
       字号门槛不同 ⇒ 两个值不算两份真相源，合并反而会让大字号那条被无谓压暗。 */
    color: #9a6413;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
}

:root[data-theme='dark'] .status-badge-success {
    background: rgba(78, 203, 139, .16);
    color: var(--kpi-green);
}

:root[data-theme='dark'] .status-badge-sim {
    background: rgba(240, 185, 104, .16);
    color: var(--kpi-amber);
}

/* ---------- Layui 盒模型差异（收敛后必须逐条点名） ----------
   admin 两页现在加载 console.css，其 `* { box-sizing: border-box }`（console.css:86）
   会命中 layui.css 里唯一没自报 box-sizing 的表单盒：基础态 .layui-form-label
   （`padding:9px 15px;width:80px`，按 content-box 标定；`.layui-input/.layui-btn/.layui-select/
   .layui-textarea/.layui-table-cell/.layui-layer-btn a/.layui-form-switch/.layui-laydate *`
   都已在分组规则里自带 border-box，`.layui-form-pane .layui-form-label` 也自带）。
   不还原则文字盒从 80→65px、内联 width:70px 的标签从 70→55px，而「归档日期」四个中文字
   在 14px 下就要 56px ⇒ 微调面板标签折行、同排 .layui-input-inline 错位。
   只还原这一个组件：扩到全局等于把整份 layui.css 重新赌一遍。 */
.layui-form-label { box-sizing: content-box; }

/* ---------- Layui Table 定制微调 ---------- */
.layui-table-view {
    border-radius: 10px;
    overflow: hidden;
    border-color: var(--admin-border) !important;
}

.layui-table th {
    background-color: var(--admin-surface-2) !important;
    font-weight: 700;
    color: var(--admin-th-tx);
}

/* ---------- Layui 暗色覆写 ----------
   表格/表单/弹层/日期面板由 Layui 自带浅色硬编码绘制，不吃上面的令牌，
   必须逐条点名；!important 是压框架同权重声明所需，不是装饰。
   ⚠ 这一组刻意**不含 td 与 .layui-table-cell**（2026-09-22 浏览器实测修正）：td/cell 若也铺上
   不透明的 --admin-card，它会把所在行 tr 的底色整个盖住，于是下面两条「行悬停 / 行点击高亮」
   在暗色里根本画不出来（实测 td 计算底色恒为 #151c22，鼠标扫过去毫无变化）——典型「写了不生效」。
   底色铺到 tr/table 即可，td 与 cell 透明继承，浅色段本来就是这种形态（Layui 只给 tr 上底色）。 */
:root[data-theme='dark'] .layui-table-view,
:root[data-theme='dark'] .layui-table,
:root[data-theme='dark'] .layui-table tr,
:root[data-theme='dark'] .layui-table-body {
    background: var(--admin-card);
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-table {
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-table th {
    background-color: var(--admin-surface-2) !important;
    /* 表头字色必须走 --admin-th-tx（与浅色段同一条语义）：写 --admin-text 会让暗色段的
       --admin-th-tx 变成零消费的死值，而 ConsolePagesTest 的「暗色表头文字」那一行
       量的就是这个令牌——令牌活着而合同量的是它，比合同量一个画不出来的值要诚实。 */
    color: var(--admin-th-tx) !important;
}

:root[data-theme='dark'] .layui-table-cell {
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-table-box,
:root[data-theme='dark'] .layui-table-header {
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-table tbody tr:hover,
:root[data-theme='dark'] .layui-table-view .layui-table-hover {
    background: var(--admin-row-hover) !important;
}

:root[data-theme='dark'] .layui-table-page {
    background: var(--admin-card);
    border-top: 1px solid var(--admin-border);
}

:root[data-theme='dark'] .layui-laypage a,
:root[data-theme='dark'] .layui-laypage span,
:root[data-theme='dark'] .layui-laypage input {
    background: var(--admin-surface-2);
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-laypage .layui-laypage-curr .layui-laypage-em {
    background: var(--admin-accent);
    color: #10261d;
}

/* 「当前页」是 <span class=layui-laypage-curr> 里叠两层 em：绝对定位的色片 + 装页码的 em。
   给 em 整族上底色会让页码自己的深色底糊在金色色片上，故这一条必须透明、只留字色。 */
:root[data-theme='dark'] .layui-laypage .layui-laypage-curr em {
    background: transparent;
    color: #10261d;
}

:root[data-theme='dark'] .layui-none {
    color: var(--admin-muted);
}

:root[data-theme='dark'] .layui-form-label {
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-input,
:root[data-theme='dark'] .layui-textarea,
:root[data-theme='dark'] .layui-select {
    background: var(--admin-surface-2);
    color: var(--admin-text);
    border-color: var(--admin-border) !important;
}

:root[data-theme='dark'] .layui-input:focus,
:root[data-theme='dark'] .layui-textarea:focus {
    border-color: var(--admin-accent) !important;
}

:root[data-theme='dark'] .layui-form-select dl {
    background: var(--admin-surface-2);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-form-select dl dd {
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-form-select dl dd.layui-this {
    background: var(--admin-accent);
    color: #10261d;
}

:root[data-theme='dark'] .layui-form-switch {
    background: var(--admin-surface-2);
    border-color: var(--admin-border);
    color: var(--admin-text);
}

/* 开关文案在子 div 上，框架以 color:!important 写死（ON 态 #fff、OFF 态 #999）；
   不点名到子元素，父级 color 就是惰性声明——ON 态白字压暗金底实测仅 2.04:1。
   ON 态元素同时带 .layui-form-switch 与 .layui-form-onswitch（layui.js 的
   c["switch"]=["layui-form-switch","layui-form-onswitch","switch"]），两条规则若同特异性
   就只剩书写顺序决胜；用复合选择器把 ON 态抬高，顺序依赖归零。 */
:root[data-theme='dark'] .layui-form-switch > div {
    color: var(--admin-muted) !important;
}

:root[data-theme='dark'] .layui-form-switch.layui-form-onswitch > div {
    color: #10261d !important;
}

:root[data-theme='dark'] .layui-form-switch.layui-form-onswitch {
    background: var(--admin-accent);
    border-color: var(--admin-accent);
    color: #10261d;
}

:root[data-theme='dark'] .layui-btn-primary {
    background: transparent;
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-layer {
    background: var(--admin-card);
    border-color: var(--admin-border);
    box-shadow: 0 12px 40px rgba(0, 0, 0, .5);
}

:root[data-theme='dark'] .layui-layer-title {
    background: var(--admin-surface-2);
    color: var(--admin-text);
    border-bottom: 1px solid var(--admin-border);
}

:root[data-theme='dark'] .layui-layer-content {
    color: var(--admin-text);
}

/* Layui 的关闭叉是黑色字体图标，暗色下反相提亮才看得见 */
:root[data-theme='dark'] .layui-layer-setwin .layui-layer-close1 {
    filter: invert(1) brightness(1.7);
}

:root[data-theme='dark'] .layui-layer-btn {
    background: var(--admin-surface-2);
    border-top: 1px solid var(--admin-border);
}

:root[data-theme='dark'] .layui-layer-btn a {
    background: var(--admin-card);
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-layer-btn .layui-layer-btn0 {
    background: var(--admin-accent);
    border-color: var(--admin-accent);
    color: #10261d;
}

:root[data-theme='dark'] .layui-layer-msg {
    background: var(--admin-surface-2);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-layer-msg .layui-layer-content {
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-laydate,
:root[data-theme='dark'] .layui-laydate-main,
:root[data-theme='dark'] .layui-laydate-content {
    background: var(--admin-card);
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-laydate-header {
    background: var(--admin-surface-2);
    border-bottom: 1px solid var(--admin-border);
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-laydate-content th,
:root[data-theme='dark'] .layui-laydate-content td {
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-laydate-content .laydate-day-prev,
:root[data-theme='dark'] .layui-laydate-content .laydate-day-next {
    color: var(--admin-faint);
}

/* 悬停底挂在 td>div 上（框架 .layui-laydate-content td>div{padding:7px 0;height:100%}），
   写 td:hover 选不中那层圆角块。 */
:root[data-theme='dark'] .layui-laydate-content td > div:hover {
    background: var(--admin-row-hover);
    color: var(--admin-text);
}

/* 选中态框架是 .layui-laydate .layui-this{background-color:#16b777 !important}，
   不带 !important 压不住；且 2.9.21 没有 .laydate-selected/.laydate-this 这类名，
   按它们写就是永不匹配的死规则。 */
:root[data-theme='dark'] .layui-laydate .layui-this,
:root[data-theme='dark'] .layui-laydate .layui-this > div {
    background-color: var(--admin-accent) !important;
    color: #10261d !important;
}

:root[data-theme='dark'] .layui-laydate .layui-this.laydate-disabled,
:root[data-theme='dark'] .layui-laydate .layui-this.laydate-disabled > div {
    background-color: var(--admin-surface-2) !important;
    color: var(--admin-faint) !important;
}

:root[data-theme='dark'] .layui-laydate-footer {
    background: var(--admin-card);
    border-top: 1px solid var(--admin-border);
}

:root[data-theme='dark'] .layui-laydate-footer span {
    color: var(--admin-muted);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-laydate-footer span:hover {
    color: var(--admin-accent);
}

:root[data-theme='dark'] .layui-laydate-list li {
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-laydate-list li:hover {
    background: var(--admin-row-hover);
    color: var(--admin-accent);
}

/* 以下为评审补漏：这些浅色底/深字是 layui.css 里写死的，两页都配了
   `defaultToolbar: ['filter']`（admin.js:55、pond-admin.js:51）且 laydate 默认带
   「清空/现在」按钮，全部可达，不是纸面担忧。 */

/* 列筛选下拉：面板与悬停行都是框架写死的 #fff / #f8f8f8 */
:root[data-theme='dark'] .layui-table-tool-panel {
    background: var(--admin-card);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-table-tool-panel li,
:root[data-theme='dark'] .layui-table-tool-panel li:hover {
    color: var(--admin-text);
}

:root[data-theme='dark'] .layui-table-tool-panel li:hover {
    background: var(--admin-row-hover);
}

/* 工具条图标按钮：框架 #333 压在 #151c22 卡片上约 1.4:1，等于看不见 */
:root[data-theme='dark'] .layui-table-tool .layui-inline[lay-event] {
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-table-tool .layui-inline[lay-event]:hover {
    border-color: var(--admin-accent);
}

/* 年/月切换浮层：框架写死 background-color:#fff 且压在日期面板之上 */
:root[data-theme='dark'] .layui-laydate .layui-laydate-list {
    background: var(--admin-card);
}

/* 面板底栏「清空/现在」：原覆写只给了 color 与 border，#fff 底色漏了 */
:root[data-theme='dark'] .layui-laydate-footer span {
    background: var(--admin-surface-2);
}

/* 日期单元格的悬停态实际挂在 td>div 上，不是 td（原覆写选不中） */
:root[data-theme='dark'] .layui-laydate-content td > div:hover {
    background: var(--admin-row-hover);
    color: var(--admin-accent);
}

/* 行点击态与斑马行：与 hover 同族但框架另给了 #f8f8f8。
   注意 [lay-even] 这一半今天永不匹配（两页 table.render 均未传 even:true）；留着是因为
   一旦有人启用斑马，它与 hover 同色会让两种状态不可分——届时须换独立令牌。
   !important 是必需的：`.layui-table-click` 特异性 (0,3,0) 低于上面那组的
   `:root[data-theme='dark'] .layui-table tr` (0,3,1)，不带 !important 时点击行照样是卡片色
   （2026-09-22 浏览器实测：去掉 !important 前该高亮从未生效）。 */
:root[data-theme='dark'] .layui-table-click,
:root[data-theme='dark'] .layui-table[lay-even] tbody tr:nth-child(even) {
    background: var(--admin-row-hover) !important;
}

/* 截断单元格的「展开」方块、其展开后的滚动面板、以及固定右列表头的修补条：
   框架一律 background-color:#fff。归档表的「生产记录说明」与塘口表的「备注」都是长文本列，
   鼠标扫过就会在深色行里点出一块 24px 白斑。 */
:root[data-theme='dark'] .layui-table-grid-down,
:root[data-theme='dark'] .layui-table-mend,
:root[data-theme='dark'] .layui-table-tips-main {
    background: var(--admin-card);
    color: var(--admin-text);
    border-color: var(--admin-border);
}

:root[data-theme='dark'] .layui-table-grid-down:hover {
    background: var(--admin-row-hover);
}

/* 分页「跳至」按钮：框架 background-color:#fff，会继承 --admin-text 成白底白字 */
:root[data-theme='dark'] .layui-laypage button {
    background: var(--admin-surface-2);
    color: var(--admin-text);
    border-color: var(--admin-border);
}

/* 暗色下卡片与画布仅差约 1.1:1，阴影在深底上等于没有；补一条 console 卡片同款的发丝边。
   必须逐边写：`border:` 简写会连带重置 border-top-*，把 .stat-card 的 4px 指标色条
   （及 .stat-card--green/amber/gold/blue 的 border-top-color）整条抹掉——
   本规则特异性 (0,3,0) 高于 .stat-card 的 (0,1,0)，简写必输。 */
:root[data-theme='dark'] .stat-card,
:root[data-theme='dark'] .control-card,
:root[data-theme='dark'] .table-card {
    border-right: 1px solid var(--admin-border);
    border-bottom: 1px solid var(--admin-border);
    border-left: 1px solid var(--admin-border);
}
