/* MOS 系统基础样式（框架层，D91）。与 tokens.css 配套，管理台和 bi 都吃。
 *
 * 只放【两边含义一样】的东西：元素级原语（body / a / code / button / input / select / textarea /
 * table / dialog）和几个同义通用类（.muted .hint .card .pill .tag .kv .err .empty）。
 * 含义不同的不进来——.tile 在管理台是 KPI 小卡、在 bi 是面板卡，各留各的。
 * app 层只加自己的类，不改这里的值；两边都要变的，改这里。
 *
 * 两处有意的取舍（2026-08-24）：
 *   · 表头不再大写——中文列名大写什么都不发生，BI 表又密，小号次要色就够
 *   · 按钮一律「卡底 + 细边框」，主按钮实底强调色；没有第三种按钮 */
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:var(--fs-m)/1.5 var(--font);-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code{font:12px/1.45 var(--mono)}

/* 文字 */
.muted{color:var(--dim);font-size:var(--fs-s)}
.hint{font-size:var(--fs-xs);color:var(--dim);margin-top:4px}
.err{color:var(--bad);font-size:var(--fs-s);white-space:normal;max-width:360px}
.kv{margin:0;font-size:var(--fs-s);color:var(--dim)}
.kv b{color:var(--fg);font-weight:600}
.empty{max-width:620px;margin:60px auto;color:var(--dim)}
.empty h2{font-weight:600;margin-bottom:8px;font-size:18px;color:var(--fg)}

/* 容器 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}

/* 表 */
table{border-collapse:collapse;width:100%;font-size:var(--fs);font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:top}
th{font-size:var(--fs-xs);color:var(--dim);font-weight:600;letter-spacing:.03em}
tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--bg)}

/* 小标签：.pill 实底圆角（状态），.tag 细边框方角（分类） */
.pill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:var(--fs-s);font-weight:600}
.pill.ok{background:var(--okbg);color:var(--ok)}   .pill.warn{background:var(--warnbg);color:var(--warn)}
.pill.bad{background:var(--badbg);color:var(--bad)} .pill.run{background:var(--runbg);color:var(--run)}
.pill.dim{background:var(--bg);color:var(--dim)}
.tag{display:inline-block;font-size:var(--fs-xs);line-height:16px;padding:0 6px;margin-right:4px;border-radius:4px;border:1px solid var(--line);color:var(--dim)}
.tag.ok{border-color:var(--ok);color:var(--ok)}     .tag.warn{border-color:var(--warn);color:var(--warn);font-weight:600}
.tag.bad{border-color:var(--bad);color:var(--bad)}  .tag.run{border-color:var(--run);color:var(--run)}
.tag.accent{border-color:var(--accent);color:var(--accent)}

/* 按钮 */
button{font:inherit;font-size:var(--fs);padding:4px 11px;border-radius:var(--radius-s);border:1px solid var(--line);
       background:var(--card);color:var(--fg);cursor:pointer}
button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
button:disabled{opacity:.5;cursor:default}
button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
button.primary:hover:not(:disabled){opacity:.88;color:var(--accent-fg)}
button.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
button.ghost{background:transparent;color:var(--dim)}
button.ghost:hover:not(:disabled){color:var(--fg);border-color:var(--dim)}
button.mini{font-size:var(--fs-s);padding:2px 8px}
button.danger:hover:not(:disabled){border-color:var(--bad);color:var(--bad)}

/* 输入 */
input,select,textarea{font:inherit;font-size:var(--fs);padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius-s);
                      background:var(--card);color:var(--fg)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}
input:disabled,select:disabled,textarea:disabled{opacity:.55}

/* 对话框 */
dialog{border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg);padding:0;min-width:380px}
dialog::backdrop{background:rgba(0,0,0,.4)}
