:root {
  --ok: #52c41a; --warn: #faad14; --danger: #ff4d4f; --info: #1890ff;
  --bg: #f5f7fa; --card: #fff; --border: #e8e8e8; --text: #1f2329; --muted: #8c8c8c;
}
* { box-sizing: border-box; }
html, body, #app { height: 100%; margin: 0; }
body { font-family: -apple-system, "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif; background: var(--bg); color: var(--text); }

/* 顶栏 */
.topbar { height: 56px; background: #001529; color: #fff; display: flex; align-items: center; padding: 0 20px; box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.topbar .logo { font-size: 17px; font-weight: 600; margin-right: 32px; white-space: nowrap; }
.topbar .nav { display: flex; gap: 4px; flex: 1; }
.topbar .nav a { color: rgba(255,255,255,.75); text-decoration: none; padding: 8px 14px; border-radius: 4px; font-size: 14px; }
.topbar .nav a:hover { background: rgba(255,255,255,.1); color: #fff; }
.topbar .nav a.active { background: var(--info); color: #fff; }
.topbar .user { font-size: 13px; color: rgba(255,255,255,.85); }

.layout { max-width: 1240px; margin: 0 auto; padding: 20px; }

/* 三态横幅 */
.banner { border-radius: 8px; padding: 18px 22px; margin-bottom: 16px; color: #fff; display: flex; justify-content: space-between; align-items: center; }
.banner.ok { background: linear-gradient(135deg,#52c41a,#389e0d); }
.banner.warn { background: linear-gradient(135deg,#faad14,#d48806); }
.banner.danger { background: linear-gradient(135deg,#ff4d4f,#cf1322); }
.banner .title { font-size: 20px; font-weight: 600; }
.banner .sub { font-size: 13px; opacity: .92; margin-top: 4px; }
.banner .room { text-align: right; font-size: 13px; }
.banner .room b { font-size: 18px; }
.banner .verdict-steps { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.banner .vstep { display: inline-flex; align-items: center; gap: 4px; padding: 5px 13px; border-radius: 16px; font-size: 13px; background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.28); opacity: .7; }
.banner .vstep.active { background: #fff; color: #1f2329; font-weight: 600; opacity: 1; }

.card { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 18px 20px; margin-bottom: 16px; }
.card h3 { margin: 0 0 14px; font-size: 15px; font-weight: 600; border-left: 3px solid var(--info); padding-left: 8px; }
.tier-row { display: flex; gap: 12px; margin: 6px 0; }
.tier { flex: 1; background: var(--bg); border-radius: 6px; padding: 12px; text-align: center; }
.tier .label { font-size: 12px; color: var(--muted); }
.tier .val { font-size: 20px; font-weight: 600; margin-top: 4px; }
.tier .tier-desc { font-size: 11.5px; color: var(--muted); margin-top: 8px; line-height: 1.5; text-align: left; }
.kv { display: flex; justify-content: space-between; padding: 6px 0; border-bottom: 1px dashed var(--border); font-size: 13px; }
.kv .k { color: var(--muted); }
.muted { color: var(--muted); font-size: 12px; }
.tag-internal { background:#fff7e6; color:#d46b08; border:1px solid #ffd591; padding:2px 8px; border-radius:10px; font-size:11px; margin-left:8px; }

/* 分享卡 H5 */
.share-wrap { min-height: 100%; background: linear-gradient(180deg,#f0f5ff,#f5f7fa); padding: 16px; display:flex; justify-content:center; }
.share-card { width: 100%; max-width: 420px; background:#fff; border-radius: 14px; overflow:hidden; box-shadow:0 6px 24px rgba(0,0,0,.08); position:relative; }
.share-card .head { padding: 22px 20px 14px; }
.share-card .proj { font-size: 15px; color: var(--muted); }
.share-card .price { font-size: 30px; font-weight: 700; margin-top: 4px; }
.share-card .sc-banner { margin: 0 20px; border-radius: 8px; padding: 14px; color:#fff; font-weight:600; text-align:center; }
.share-card .sc-body { padding: 16px 20px 22px; }
.share-card .sc-row { display:flex; justify-content:space-between; padding: 9px 0; border-bottom:1px solid #f0f0f0; font-size: 14px; }
.share-card .sc-row .k { color: var(--muted); }
.watermark { text-align:center; font-size:11px; color:#bbb; padding: 10px; letter-spacing:.5px; }
.expired { text-align:center; padding: 60px 20px; color: var(--danger); }

/* 登录 */
.login-wrap { min-height:100%; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#1890ff,#001529); }
.login-box { background:#fff; padding: 32px; border-radius:10px; width: 340px; box-shadow:0 8px 30px rgba(0,0,0,.18); }
.login-box h2 { margin:0 0 6px; font-size:20px; }
.login-box .hint { font-size:12px; color:var(--muted); margin-bottom:18px; }

table.q { width:100%; border-collapse: collapse; font-size:13px; }
table.q th, table.q td { padding:9px 8px; border-bottom:1px solid var(--border); text-align:left; }
table.q th { color:var(--muted); font-weight:500; background:#fafafa; }
.st pill, .st { display:inline-block; padding:2px 8px; border-radius:10px; font-size:12px; }
.st-待回写 { background:#e6f4ff; color:#0958d9; } .st-成交 { background:#f6ffed; color:#389e0d; } .st-流失 { background:#fff1f0; color:#cf1322; }

/* ===== 四期 P4c/P4d 参数工作台（admin.js）===== */
/* 吸底操作条 */
.admin-actionbar { position:fixed; left:0; right:0; bottom:0; z-index:120; background:#fff; border-top:1px solid var(--border); box-shadow:0 -2px 12px rgba(0,0,0,.08); padding:10px 24px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.admin-actionbar .bar-count b { font-size:16px; color:var(--info); }
.admin-has-bar { padding-bottom:76px; }
/* 检查结果面板 */
.admin-checkpanel .chk-item { padding:5px 8px; border-radius:4px; margin-bottom:4px; font-size:12.5px; line-height:1.6; }
.admin-checkpanel .chk-err { background:#fef0f0; color:#cf1322; cursor:pointer; }
.admin-checkpanel .chk-err:hover { background:#fde2e2; }
.admin-checkpanel .chk-warn { background:#fffbe6; }
/* 参考线行着色：error 红底 > 档三<F 红底 > 其他 warning 琥珀描边 > P2d 置灰/高亮/样本不足 */
table.q tr.row-err td { background:#fef0f0; }
table.q tr.row-warn-f td { background:#fee; }
table.q tr.row-warn td { border-top:2px solid #faad14; border-bottom:2px solid #faad14; }
table.q tr.row-warn td:first-child { border-left:2px solid #faad14; }
table.q tr.row-warn td:last-child { border-right:2px solid #faad14; }
table.q tr.row-locked td { opacity:.45; }
table.q tr.row-merged td { background:#f0f9eb; }
table.q tr.row-insuff td { background:#fffbe6; }
/* 定位闪烁 */
.loc-flash { animation: locflash 1.8s ease; }
@keyframes locflash { 0%, 55% { background:#e6f7ff; } 100% { background:transparent; } }
/* P4d ⓘ 悬浮卡 */
.info-dot { display:inline-flex; align-items:center; justify-content:center; width:15px; height:15px; border-radius:50%; background:var(--info); color:#fff; font-size:10.5px; font-style:normal; line-height:1; cursor:help; margin-left:4px; flex:none; }
.refctx-popper { max-width:372px; }
.refctx { max-width:344px; font-size:12px; line-height:1.7; }
.refctx .rc-title { font-weight:600; border-bottom:1px solid #e8e8e8; padding-bottom:4px; margin-bottom:6px; }
.refctx .rc-banner { color:#d46b08; background:#fff7e6; border:1px solid #ffd591; border-radius:4px; padding:2px 8px; margin-bottom:6px; }
.refctx .rt { display:flex; justify-content:space-between; gap:18px; white-space:nowrap; }
.refctx .rt .rv { font-variant-numeric:tabular-nums; text-align:right; }
.refctx .rc-sec { margin-top:6px; padding-top:4px; border-top:1px dashed #e8e8e8; }
.refctx .rc-tight { color:#cf1322; }
.refctx .rc-loose { color:#d46b08; }
.refctx .rc-neutral { color:var(--text); }
/* 五期 P5c：典型报价让价参考紧凑表（悬浮卡内，数字右对齐 tabular-nums） */
.refctx .rc-mini { width:100%; border-collapse:collapse; font-size:12px; margin-top:4px; }
.refctx .rc-mini th, .refctx .rc-mini td { padding:2px 6px; text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.refctx .rc-mini th { font-weight:500; border-bottom:1px solid #e8e8e8; }
.refctx .rc-mini th:first-child, .refctx .rc-mini td:first-child { text-align:left; }
.refctx .rc-mini .rc-neg { color:#cf1322; }
/* diff / 问题清单弹窗 */
.admin-diff-list { max-height:320px; overflow:auto; border:1px solid var(--border); border-radius:4px; padding:6px 10px; font-size:12.5px; line-height:1.9; }
.admin-diff-list .tag { display:inline-block; min-width:46px; text-align:center; border-radius:3px; font-size:11px; margin-right:8px; padding:0 6px; }
.tag-scalar { background:#e6f4ff; color:#0958d9; }
.tag-ref { background:#f6ffed; color:#389e0d; }
.tag-pricing { background:#fff7e6; color:#d46b08; }

/* 五期 P5b：计算过程（calc_trace）折叠卡（calc.js / quotes.js 详情共用组件） */
.trace-line { font-family: ui-monospace, 'SF Mono', Consolas, Menlo, monospace; font-size: 13px; margin: 3px 0; line-height: 1.7; }
.trace-expr { color: var(--text); }
.trace-sub { color: var(--muted); margin: 0 6px; }
.trace-val { color: #1f6feb; font-weight: 600; margin-left: 6px; }
table.trace-steps tr.trace-hit td { background: #f0f9eb; }
