/* Rabbit Lingo 管理后台（D5b）· 长相照《设计准则》（docs/梳理/设计准则/设计准则.md）。
   令牌不另起：tokens.css 是 App 那一份（src/core/design/rabbitlingo-tokens.css，部署时由 scripts/admin-site.mjs 原样拷进来）；
   字体是 App 那一份（src/shared-ui/fonts/，同样拷进来、本站加载）。这里只写后台自己的版式，外加深色一层（App 现在没有深色，后台按湖青推一套）。
   准则用到的地方：原则 1 颜色不大面积铺（只有一块最浅档面）· 二 三款字 · 三 尺度 6 的倍数、圆角（胶囊 / 12 / 18 / 6）、线 1px · 三-7 三层 ·
   七 部件（按钮 · 输入 · 标签 · 表格行 · 确认对话框 · 空状态 · 警告）· 八 版式（侧栏 240 · 页边 48 / 24 · 区块之间 48 / 36）· 十 节首短线 · 统计大数字。 */

/* ── 深色（准则只有浅色；后台按湖青推的一套：字与线的明暗对调，主色提亮一档，按钮底不变）──────────── */
@media (prefers-color-scheme: dark) {
  :root:not([data-mode='light']) {
    --nx-deep: #9fe6ea; --nx-main: #4fc3d0; --nx-light: #2e6e74; --nx-faint: #15292d;
    --nx-btn: #247586; --nx-btn-hover: #2b8798;
    --nx-mate: #fe8ba9; --nx-mate-ink: #ffb3c6; --nx-mate-soft: #3a2229;
    --nx-n900: #e8ecef; --nx-n700: #c9d0d8; --nx-n600: #a3acb6; --nx-n500: #8b95a0; --nx-n400: #6b747f;
    --nx-n300: #3a454b; --nx-n200: #2a3338; --nx-n100: #20282c; --nx-n50: #171d21; --nx-n0: #12171a;
    --nx-black: #ffffff;
    --nx-lift: 0 6px 18px rgb(0 0 0 / 0.4); --nx-modal: 0 12px 36px rgb(0 0 0 / 0.5); --nx-scrim: rgb(0 0 0 / 0.55);
    color-scheme: dark;
  }
}
:root[data-mode='dark'] {
  --nx-deep: #9fe6ea; --nx-main: #4fc3d0; --nx-light: #2e6e74; --nx-faint: #15292d;
  --nx-btn: #247586; --nx-btn-hover: #2b8798;
  --nx-mate: #fe8ba9; --nx-mate-ink: #ffb3c6; --nx-mate-soft: #3a2229;
  --nx-n900: #e8ecef; --nx-n700: #c9d0d8; --nx-n600: #a3acb6; --nx-n500: #8b95a0; --nx-n400: #6b747f;
  --nx-n300: #3a454b; --nx-n200: #2a3338; --nx-n100: #20282c; --nx-n50: #171d21; --nx-n0: #12171a;
  --nx-black: #ffffff;
  --nx-lift: 0 6px 18px rgb(0 0 0 / 0.4); --nx-modal: 0 12px 36px rgb(0 0 0 / 0.5); --nx-scrim: rgb(0 0 0 / 0.55);
  color-scheme: dark;
}
:root { color-scheme: light; }

* { box-sizing: border-box; }
[hidden] { display: none !important; }
html, body { margin: 0; background: var(--nx-n50); color: var(--nx-n900); }
body { font: 400 var(--nx-fz-s) / var(--nx-lh-zh) var(--nx-font-zh); -webkit-font-smoothing: antialiased; }
p { margin: 0; }
h1, h2, h3 { margin: 0; font-family: var(--nx-font-zh); color: var(--nx-n900); }
h1 { font-size: var(--nx-fz-l); font-weight: 600; line-height: var(--nx-lh-title); }
/* 小节标题：二级字号加粗 + 节首短线（准则八-2 · 十-1）*/
h2 { font-size: 15px; font-weight: 600; line-height: var(--nx-lh-title); display: flex; align-items: center; gap: var(--nx-sp-12); }
h2::before { content: ''; width: 24px; height: 2px; background: var(--nx-main); flex: none; }
h3 { font-size: 15px; font-weight: 600; line-height: var(--nx-lh-title); }
.mono, .num { font-family: var(--nx-font-ui); font-variant-numeric: tabular-nums; }
.muted { color: var(--nx-n600); }
.faint { color: var(--nx-n600); font-size: var(--nx-fz-xs); font-weight: 500; }
.note { color: var(--nx-n600); font-size: var(--nx-fz-xs); font-weight: 500; line-height: 1.6; }
.err { color: var(--nx-deep); font-size: var(--nx-fz-xs); font-weight: 500; }
.err:not(:empty)::before { content: '! '; font-family: var(--nx-font-ui); font-weight: 600; }
.ok { color: var(--nx-mate-ink); }
.ok::before { content: '✓ '; }
:focus-visible { outline: 2px solid var(--nx-main); outline-offset: 3px; }

/* ── 图标（准则四：24 格 · 2 线宽 · 平头直角；几何是 App 那一份 core/design/nx-icons.ts）── */
.icon { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: butt; stroke-linejoin: miter; }

/* ── 门楣（准则五-2 疏纹样：60° 网格交点上的小芒，n300；只在登录与空状态）── */
.lintel { height: 72px; border-bottom: 1px solid var(--nx-n100); overflow: hidden; }
.lintel svg { display: block; width: 100%; height: 100%; }
.lintel path { fill: none; stroke: var(--nx-n300); stroke-width: 1; }

/* ── 登录 ── */
.gate { max-width: 432px; margin: 12vh auto 0; padding: 0 var(--nx-page-x); display: grid; gap: var(--nx-sp-24); }
.gate .card { padding: 0; overflow: hidden; gap: 0; }
.gate .card > .inner { padding: var(--nx-card-pad); display: grid; gap: var(--nx-sp-18); }
.gate .brand { display: flex; align-items: baseline; gap: var(--nx-sp-12); }
.gate .brand b { font: 500 var(--nx-fz-l) / 1 var(--nx-font-display); color: var(--nx-deep); letter-spacing: 0.01em; }
.gate .brand span { font-size: var(--nx-fz-xs); font-weight: 500; color: var(--nx-n600); }
.gate .qr { width: 192px; height: 192px; background: #fff; border-radius: var(--nx-r-card); padding: var(--nx-sp-12); justify-self: center; border: 1px solid var(--nx-n200); }
.env { font: 500 var(--nx-fz-xs) / 1 var(--nx-font-zh); height: var(--nx-h-tag); padding: 0 var(--nx-sp-12); display: inline-flex; align-items: center; border-radius: var(--nx-r-pill); border: 1px solid var(--nx-n300); color: var(--nx-n700); white-space: nowrap; }

/* ── 骨架：侧栏 240（不铺色）+ 主区（准则八-1）── */
.shell { display: grid; grid-template-columns: var(--nx-side) minmax(0, 1fr); min-height: 100vh; }
.nav { background: var(--nx-n0); border-right: 1px solid var(--nx-n200); padding: var(--nx-sp-24) var(--nx-sp-12); display: flex; flex-direction: column; gap: 2px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.nav .brand { padding: 0 var(--nx-sp-12) var(--nx-sp-24); display: grid; gap: var(--nx-sp-6); }
.nav .brand b { font: 500 22px / 1.1 var(--nx-font-display); color: var(--nx-deep); }
.nav .brand span.sub { font-size: var(--nx-fz-xs); font-weight: 500; color: var(--nx-n600); display: flex; gap: var(--nx-sp-6); align-items: center; }
.nav button { all: unset; cursor: pointer; display: flex; align-items: center; gap: var(--nx-sp-12); min-height: 42px; padding: 0 var(--nx-sp-12); border-radius: var(--nx-r-card); font: 500 14px / 1.3 var(--nx-font-zh); color: var(--nx-n700); position: relative; transition: background var(--nx-t1) var(--nx-ease-in); }
.nav button .icon { color: var(--nx-n600); }
.nav button:hover { background: var(--nx-n50); }
.nav button[aria-current='page'] { color: var(--nx-btn); }
.nav button[aria-current='page'] .icon { color: var(--nx-main); }
.nav button[aria-current='page']::before { content: ''; position: absolute; left: 0; top: 9px; bottom: 9px; width: 3px; background: var(--nx-main); border-radius: 0 2px 2px 0; }
.nav button:focus-visible { outline: 2px solid var(--nx-main); outline-offset: 0; }
.nav .who { margin-top: auto; padding: var(--nx-sp-18) var(--nx-sp-12) 0; border-top: 1px solid var(--nx-n200); font: 500 var(--nx-fz-xs) / 1.6 var(--nx-font-ui); color: var(--nx-n600); overflow-wrap: anywhere; display: grid; gap: var(--nx-sp-6); }
.page { padding: var(--nx-page-top) var(--nx-page-x) var(--nx-page-bottom); display: grid; gap: var(--nx-sp-24); align-content: start; min-width: 0; max-width: 1104px; width: 100%; }
/* 工具行：页名 + 此刻一句（准则八-1 一级页不写大标题，这里只一行）*/
.head { display: grid; gap: var(--nx-sp-6); padding-bottom: var(--nx-sp-12); }
.head h1 { font-size: var(--nx-fz-l); }
.head .say { color: var(--nx-n600); font-size: var(--nx-fz-xs); font-weight: 500; line-height: 1.7; max-width: 760px; }

/* ── 卡片（准则七-3：白底 · 1px n200 · 圆角 12 · 内边距 24 / 18 · 不套框、无阴影）── */
.card { background: var(--nx-n0); border: 1px solid var(--nx-n200); border-radius: var(--nx-r-card); padding: var(--nx-card-pad); display: grid; gap: var(--nx-sp-18); align-content: start; min-width: 0; }
.card .card { border: 0; padding: 0; border-radius: 0; }
/* 每屏一块最浅档的面：看板顶上那一块（准则〇-1 例外）*/
.card.focus { background: var(--nx-faint); border-color: transparent; }
.grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--nx-sp-24); }
.grid2 > * { min-width: 0; }

/* ── 统计数字（准则十-1：EB Garamond 500；最要看的两三个用主色）── */
.kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--nx-sp-12); }
.kpi { border-top: 1px solid var(--nx-n200); padding: var(--nx-sp-12) 0 0; min-width: 0; display: grid; gap: var(--nx-sp-3); align-content: start; }
.card.focus .kpi { border-top-color: var(--nx-light); }
.kpi small { font-size: var(--nx-fz-xs); font-weight: 500; color: var(--nx-n600); }
.kpi strong { font: 500 34px / var(--nx-lh-word) var(--nx-font-display); color: var(--nx-n900); font-variant-numeric: lining-nums tabular-nums; overflow-wrap: anywhere; }
.kpi strong .unit { font: 500 var(--nx-fz-xs) / 1 var(--nx-font-zh); color: var(--nx-n600); margin-left: var(--nx-sp-6); }
.kpi.lead strong { color: var(--nx-main); font-size: var(--nx-fz-big); }
.kpi .faint { font-weight: 500; }
.kpi.warn strong { color: var(--nx-deep); }
.kpi.pending strong { font: 600 15px / 1.6 var(--nx-font-zh); color: var(--nx-n600); }
.kpi.pending strong::before { content: '— '; color: var(--nx-n400); }

/* ── 图：一天一根主色细柱（与报告页两周轮同一套语汇：主色点线 · n200 细线 · 没数据的一截虚线）── */
.bars { height: 96px; display: flex; align-items: flex-end; gap: 0; border-bottom: 1px solid var(--nx-n200); }
.bars i { flex: 1; display: flex; justify-content: center; align-items: flex-end; height: 100%; }
.bars i b { width: 6px; background: var(--nx-main); border-radius: 3px 3px 0 0; min-height: 2px; }
.bars i.zero b { background: none; border-left: 1px dashed var(--nx-n300); width: 0; height: 12px !important; border-radius: 0; }
.bars i:hover b { background: var(--nx-deep); }
.axis { display: flex; justify-content: space-between; gap: var(--nx-sp-12); font: 500 var(--nx-fz-xs) / 1 var(--nx-font-ui); color: var(--nx-n600); font-variant-numeric: tabular-nums; }
/* 用量：高 6 的胶囊进度条（准则七-3）*/
.meter { height: 6px; border-radius: var(--nx-r-pill); background: var(--nx-n100); overflow: hidden; }
.meter b { display: block; height: 100%; background: var(--nx-main); border-radius: var(--nx-r-pill); }
.meter.warn b { background: var(--nx-deep); }

/* ── 表格（准则七-3：行间 1px n100 · 悬停 n50 · 不隔行上色、选中不铺底）── */
.tablewrap { overflow-x: auto; margin: 0 calc(-1 * var(--nx-sp-6)); }
table { width: 100%; border-collapse: collapse; font-size: 14px; }
th { text-align: left; font: 500 var(--nx-fz-xs) / 1.4 var(--nx-font-zh); color: var(--nx-n600); padding: var(--nx-sp-6) var(--nx-sp-6) var(--nx-sp-12); border-bottom: 1px solid var(--nx-n200); white-space: nowrap; }
td { padding: var(--nx-sp-12) var(--nx-sp-6); border-bottom: 1px solid var(--nx-n100); vertical-align: top; overflow-wrap: anywhere; line-height: 1.6; }
tbody tr { transition: background var(--nx-t1) var(--nx-ease-in); }
tbody tr:hover { background: var(--nx-n50); }
td.num, th.num { text-align: right; font-family: var(--nx-font-ui); font-variant-numeric: tabular-nums; white-space: nowrap; }
tr:last-child td { border-bottom: 0; }
.empty { color: var(--nx-n600); font-size: 14px; padding: var(--nx-sp-12) 0; }
/* 空状态：门楣 + 一句原因（准则七-5）*/
.emptyblock { border: 1px solid var(--nx-n200); border-radius: var(--nx-r-card); overflow: hidden; }
.emptyblock p { padding: var(--nx-sp-18) var(--nx-sp-24) var(--nx-sp-24); color: var(--nx-n600); font-size: 14px; }

/* ── 表单（准则七-2：高 48 · 圆角 12 · n300 框 · 聚焦 2px 主色）── */
.form { display: grid; gap: var(--nx-sp-18); }
.row { display: flex; gap: var(--nx-sp-12); flex-wrap: wrap; align-items: end; }
.row .grow-right { margin-left: auto; margin-right: auto; }
label.f { display: grid; gap: var(--nx-sp-6); font-size: var(--nx-fz-xs); font-weight: 500; color: var(--nx-n600); min-width: 0; }
label.f.grow { flex: 1 1 240px; }
input, select, textarea { font: 400 15px / 1.5 var(--nx-font-ui); color: var(--nx-n900); background: var(--nx-n0); border: 1px solid var(--nx-n300); border-radius: var(--nx-r-card); padding: 0 var(--nx-sp-12); min-width: 0; height: var(--nx-h-btn); }
select { padding-right: var(--nx-sp-36); appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--nx-n600) 50%), linear-gradient(135deg, var(--nx-n600) 50%, transparent 50%); background-position: calc(100% - 20px) 21px, calc(100% - 14px) 21px; background-size: 6px 6px; background-repeat: no-repeat; }
textarea { font-family: var(--nx-font-zh); resize: vertical; min-height: 96px; width: 100%; padding: var(--nx-sp-12); height: auto; line-height: 1.7; }
input[type='file'] { height: auto; padding: var(--nx-sp-12); }
input::placeholder, textarea::placeholder { color: var(--nx-n500); }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--nx-main); outline-offset: -1px; border-color: transparent; }
input:disabled, select:disabled, textarea:disabled { background: var(--nx-n50); color: var(--nx-n400); }
input[type='checkbox'] { accent-color: var(--nx-n900); width: 20px; height: 20px; border-radius: var(--nx-r-box); padding: 0; }
input.wide { min-width: 9em; }

/* ── 按钮（准则七-1：胶囊 · 主 = 按钮底白字（一屏一个）· 次 = 白底 n300 框 · 纯文字 · 危险 = n900 实底，只在确认对话框里）── */
.btn { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: var(--nx-sp-6); height: var(--nx-h-btn); padding: 0 var(--nx-sp-24); border-radius: var(--nx-r-pill); font: 500 15px / 1 var(--nx-font-zh); white-space: nowrap; background: var(--nx-n0); color: var(--nx-deep); border: 1px solid var(--nx-n300); transition: background var(--nx-t1) var(--nx-ease-in), border-color var(--nx-t1) var(--nx-ease-in); }
.btn:hover { border-color: var(--nx-n400); background: var(--nx-n50); }
.btn:active { background: var(--nx-n100); }
.btn.primary { background: var(--nx-btn); color: #fff; border-color: transparent; }
.btn.primary:hover { background: var(--nx-btn-hover); }
.btn.primary:active { background: var(--nx-deep); }
.btn.text { border-color: transparent; background: none; color: var(--nx-n900); padding: 0 var(--nx-sp-12); }
.btn.text:hover { background: var(--nx-n50); }
.btn.danger { color: var(--nx-n900); }
.btn.solid { background: var(--nx-n900); color: var(--nx-n0); border-color: transparent; }
.btn.solid:hover { background: var(--nx-black); }
.btn.small { height: var(--nx-h-btn-sm); padding: 0 var(--nx-sp-18); font-size: 14px; }
.btn[disabled] { background: var(--nx-n100); color: var(--nx-n400); border-color: transparent; cursor: default; }
.btn:focus-visible { outline: 2px solid var(--nx-main); outline-offset: 3px; }

/* ── 标签（准则七-2：高 24 胶囊 · 1px n300 · n700 字；警告 = n100 底 n700 字带 !）── */
.tag { display: inline-flex; align-items: center; gap: var(--nx-sp-6); height: var(--nx-h-tag); padding: 0 var(--nx-sp-12); border-radius: var(--nx-r-pill); border: 1px solid var(--nx-n300); color: var(--nx-n700); font: 500 var(--nx-fz-xs) / 1 var(--nx-font-zh); white-space: nowrap; }
.tag::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--nx-main); }
.tag.off::before { background: var(--nx-n300); }
.tag.off { color: var(--nx-n600); }
.tag.warn { background: var(--nx-n100); border-color: transparent; color: var(--nx-n700); }
.tag.warn::before { content: '!'; width: auto; height: auto; background: none; font: 600 var(--nx-fz-xs) / 1 var(--nx-font-ui); }

/* ── 警告（准则一-5：n100 底 · n700 字 · !；不用彩色横幅）── */
.alert { background: var(--nx-n100); color: var(--nx-n700); border-radius: var(--nx-r-card); padding: var(--nx-sp-12) var(--nx-sp-18); display: grid; gap: var(--nx-sp-6); font-size: 14px; font-weight: 500; }
.alert p { display: flex; gap: var(--nx-sp-12); }
.alert p::before { content: '!'; font: 600 14px / 1.7 var(--nx-font-ui); flex: none; width: 18px; height: 18px; margin-top: 3px; border-radius: 50%; border: 2px solid currentColor; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; }

/* ── 预览 · 结果（原地展开的那一块）── */
.preview { border: 1px solid var(--nx-n200); border-radius: var(--nx-r-card); padding: var(--nx-sp-18) var(--nx-sp-24); display: grid; gap: var(--nx-sp-12); font-size: 15px; background: var(--nx-n0); }
.preview ul { margin: 0; padding-left: 1.2em; display: grid; gap: var(--nx-sp-6); }
.preview .warn, p.warn { color: var(--nx-deep); font-size: 14px; font-weight: 500; }
.preview .warn::before, p.warn::before { content: '! '; font-family: var(--nx-font-ui); font-weight: 600; }
.codes { font: 400 15px / 1.8 var(--nx-font-ui); letter-spacing: 0.04em; min-height: 144px; }

/* ── 确认对话框（准则七-4：两道框 · 阴影 · 遮罩 · 圆角 18 · 内边距 24；按钮右对齐 取消 + 主操作；手机从底部升起）── */
.scrim { position: fixed; inset: 0; background: var(--nx-scrim); display: grid; place-items: center; padding: var(--nx-sp-24); z-index: 20; animation: fade var(--nx-t2) var(--nx-ease-in); }
.dialog { width: min(560px, 100%); max-height: 80vh; overflow: auto; background: var(--nx-n0); border-radius: var(--nx-r-dialog); box-shadow: var(--nx-modal); padding: var(--nx-sp-6); }
.dialog > .in { border: 1px solid var(--nx-n200); border-radius: var(--nx-r-dialog-in); padding: var(--nx-sp-24); display: grid; gap: var(--nx-sp-18); }
.dialog h3 { font-size: var(--nx-fz-m); font-weight: 600; }
.dialog .acts { display: flex; justify-content: flex-end; gap: var(--nx-sp-12); flex-wrap: wrap; }
.dialog .preview { border: 0; padding: 0; }
@keyframes fade { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .scrim { animation: none; } * { transition: none !important; } }

.toggles { display: grid; grid-template-columns: repeat(auto-fill, minmax(232px, 1fr)); gap: var(--nx-sp-12); }
.toggles label { display: flex; gap: var(--nx-sp-12); align-items: center; border: 1px solid var(--nx-n200); border-radius: var(--nx-r-card); min-height: var(--nx-h-btn); padding: 0 var(--nx-sp-12); font-size: 14px; font-weight: 500; }
.toggles label.on { border-color: var(--nx-n900); }
.annc { border: 1px solid var(--nx-n200); border-radius: var(--nx-r-card); padding: var(--nx-sp-12) var(--nx-sp-18); display: flex; gap: var(--nx-sp-12); align-items: flex-start; font-size: 15px; background: var(--nx-n0); }
.annc b { color: var(--nx-btn); font-weight: 600; white-space: nowrap; }
.annc em { font-style: normal; color: var(--nx-n600); margin-left: auto; }
details > summary { cursor: pointer; color: var(--nx-n600); font-size: var(--nx-fz-xs); font-weight: 500; }
ol.chain { margin: 0; padding-left: 1.4em; display: grid; gap: var(--nx-sp-12); }
ol.chain li { font-size: 15px; }
ol.chain li::marker { font-family: var(--nx-font-display); color: var(--nx-main); font-weight: 500; }
.toast { position: fixed; bottom: var(--nx-sp-24); left: 50%; transform: translateX(-50%); background: #1a1e26; color: #fff; padding: 0 var(--nx-sp-24); height: var(--nx-h-btn); display: flex; align-items: center; border-radius: var(--nx-r-pill); font-size: 14px; font-weight: 500; box-shadow: var(--nx-lift); max-width: calc(100vw - 48px); z-index: 30; }

/* ── 窄屏（手机：页边 24 · 卡片内边距 18 · 侧栏变成顶上一行可横滑的页签）── */
@media (max-width: 900px) {
  .grid2 { grid-template-columns: 1fr; }
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .shell { grid-template-columns: 1fr; }
  .nav { position: sticky; top: 0; height: auto; z-index: 5; flex-direction: row; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--nx-n200); padding: 0 var(--nx-sp-12); gap: 0; scrollbar-width: none; }
  .nav .brand, .nav .who { display: none; }
  .nav button { white-space: nowrap; min-height: 48px; border-radius: 0; padding: 0 var(--nx-sp-12); }
  .nav button .icon { display: none; }
  .nav button[aria-current='page']::before { left: var(--nx-sp-12); right: var(--nx-sp-12); top: auto; bottom: 0; width: auto; height: 2px; border-radius: 0; }
  .page { padding: var(--nx-sp-24) var(--nx-sp-24) var(--nx-sp-36); gap: var(--nx-sp-18); }
  .kpi.lead strong { font-size: 40px; }
  .kpi strong { font-size: 28px; }
  .scrim { align-items: end; padding: 0; }
  .dialog { width: 100%; border-radius: var(--nx-r-dialog) var(--nx-r-dialog) 0 0; max-height: 86vh; }
  .btn { height: var(--nx-h-btn); }
  .phone-out { display: inline-flex !important; }
  .tablewrap table { min-width: 560px; }
  .kpi.compact strong { font-size: 20px; }
}
.phone-out { display: none !important; }
.kpi.compact strong { font-size: 24px; line-height: 1.3; }
/* 概况（键 · 值两列；不用表头）*/
.kv { display: grid; grid-template-columns: minmax(96px, max-content) minmax(0, 1fr); margin: 0; }
.kv dt, .kv dd { margin: 0; padding: var(--nx-sp-12) 0; border-bottom: 1px solid var(--nx-n100); line-height: 1.6; }
.kv dt { color: var(--nx-n600); font-size: var(--nx-fz-xs); font-weight: 500; padding-right: var(--nx-sp-24); }
.kv dd { overflow-wrap: anywhere; }
.kv dt:last-of-type, .kv dd:last-of-type { border-bottom: 0; }
td.nw { white-space: nowrap; font-family: var(--nx-font-ui); font-variant-numeric: tabular-nums; }
@media (max-width: 760px) { .kv { grid-template-columns: 1fr; } .kv dt { border-bottom: 0; padding-bottom: 0; } }
