/* ═══════════════════════════════════════════════════════
   贷准 · AI信用分析 · Design System B
   深色金融科技风 · Palantir/Bloomberg Terminal Style
   来源: design-preview.html + cto_upgrade_2/style.css 适配
   ═══════════════════════════════════════════════════════ */

/* ── CSS Variables (B-scheme) ── */
:root {
  --void:    #F4F7FD;
  --base:    #F0F4FC;
  --surface: #FFFFFF;
  --raised:  #F4F7FD;
  --card:    #EBF0FF;
  --border:  #D8E3F5;
  --border2: #B8CAEA;
  --accent:  #1340A8;
  --accentB: #1B50CC;
  --glow:    rgba(27,80,204,0.08);
  --cyan:    #0A7A9A;
  --cyanG:   rgba(10,122,154,0.08);
  --silver:  #8A9AB8;
  --plat:    #2D4468;
  --white:   #0F2742;
  --muted:   #5A6E90;
  --success: #0D9668;
  --warn:    #B85C00;
  --danger:  #C42B2B;
  --grid:    rgba(27,80,204,0.04);
}
*{margin:0;padding:0;box-sizing:border-box;}

body {
  font-family:'Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  background:var(--base);
  color:var(--white);
  min-height:100vh;
  overflow-x:hidden;
}

/* ── Grid background ── */
body::before {
  content:'';
  position:fixed;inset:0;
  background-image:
    linear-gradient(var(--grid) 1px,transparent 1px),
    linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:52px 52px;
  pointer-events:none;z-index:0;
}

/* ── Slow scan line ── */
.scanline {
  display:none;
  position:fixed;top:0;left:0;right:0;
  height:2px;
  background:linear-gradient(90deg,transparent,rgba(27,80,204,0.25),transparent);
  animation:scanmove 6s linear infinite;
  pointer-events:none;z-index:2;
}
@keyframes scanmove{0%{top:-2px}100%{top:100vh}}

/* ── Header ── */
header {
  position:fixed;top:0;left:0;right:0;height:54px;
  background:rgba(255,255,255,0.97);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 28px;
  z-index:100;
}
.logo {display:flex;align-items:center;gap:10px;}
.logo-mark {
  width:30px;height:30px;
  border:1px solid var(--accentB);
  display:flex;align-items:center;justify-content:center;
  position:relative;
}
.logo-mark::before {
  content:'';position:absolute;inset:4px;
  border:1px solid rgba(27,80,204,0.3);
}
.logo-mark svg{position:relative;z-index:1;}
.logo-text {
  font-family:'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:15px;font-weight:800;
  color:var(--white);letter-spacing:0.06em;
}
.logo-text em {
  font-style:normal;
  color:var(--accentB);
}
.logo-sep {
  width:1px;height:20px;
  background:var(--border2);
  margin:0 16px;
}
.logo-sub {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:10px;color:var(--silver);
  letter-spacing:0.1em;
}
.header-r {margin-left:auto;display:flex;align-items:center;gap:14px;}
.h-badge {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--success);
  background:rgba(12,184,122,0.08);
  border:1px solid rgba(12,184,122,0.25);
  padding:3px 8px;letter-spacing:0.1em;
  cursor:pointer;
  display:inline-flex;align-items:center;gap:5px;
  transition:opacity .2s;
}
.h-badge:hover { opacity:0.72; }
.h-badge--offline {
  color:var(--silver);
  background:rgba(110,125,156,0.08);
  border-color:rgba(110,125,156,0.25);
}
.h-badge-dot {
  width:5px;height:5px;border-radius:50%;
  background:var(--success);flex-shrink:0;
}
.h-badge-dot.pulsing {
  animation:badge-pulse 2s ease-in-out infinite;
}
.h-badge--offline .h-badge-dot { background:var(--silver);animation:none; }
@keyframes badge-pulse {
  0%,100%{opacity:1} 50%{opacity:0.35}
}
.h-icp {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--muted);letter-spacing:0.05em;
}
.h-agent-quota {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:#e6963a;
  background:rgba(230,150,58,0.08);
  border:1px solid rgba(230,150,58,0.28);
  padding:3px 8px;letter-spacing:0.05em;
}

/* ── Main ── */
main {
  position:relative;z-index:1;
  padding-top:54px;min-height:100vh;
}
.container {
  max-width:900px;margin:0 auto;padding:36px 20px 80px;
}

/* ── Page heading ── */
.pg-eyebrow {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:10px;
  color:var(--accentB);letter-spacing:0.2em;text-transform:uppercase;
  margin-bottom:8px;display:flex;align-items:center;gap:8px;
  animation:fadeUp .4s ease both;
}
.pg-eyebrow::before {
  content:'';display:inline-block;
  width:22px;height:1px;background:var(--accentB);
}
.pg-h1 {
  font-family:'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:clamp(20px,4vw,28px);
  font-weight:700;color:var(--white);
  letter-spacing:-0.01em;line-height:1.2;
  margin-bottom:4px;
  animation:fadeUp .4s .08s ease both;
}
.pg-sub {
  font-size:12px;color:var(--silver);font-weight:300;
  letter-spacing:0.03em;margin-bottom:28px;
  animation:fadeUp .4s .14s ease both;
}

/* ── Tab nav ── */
.tab-nav {
  display:flex;
  border-bottom:1px solid var(--border);
  margin-bottom:28px;
  animation:fadeUp .4s .18s ease both;
}
.tab-btn {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:11px;
  color:var(--silver);background:none;border:none;
  padding:10px 18px;cursor:pointer;
  letter-spacing:0.06em;position:relative;
  display:flex;align-items:center;gap:7px;
  transition:color .2s;
}
.tab-num {
  width:16px;height:16px;border:1px solid currentColor;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:9px;opacity:.5;
}
.tab-btn.active {color:var(--accentB);}
.tab-btn.active::after {
  content:'';position:absolute;bottom:-1px;left:0;right:0;
  height:2px;background:var(--accentB);
}
.tab-btn:hover:not(.active){color:var(--plat);}

/* nav-tabs alias */
.nav-tabs {
  display:flex;
  border-bottom:1px solid var(--border);
  margin-bottom:28px;
}

/* ── Panels ── */
.tab-panel{display:none;}
.tab-panel.active{display:block;}

/* ── Card base ── */
.pcard {
  background:var(--surface);
  border:1px solid var(--border);
  position:relative;overflow:hidden;
  animation:fadeUp .35s ease both;
}
.pcard::before,.pcard::after {
  content:'';position:absolute;
  width:10px;height:10px;
  border-color:var(--accentB);border-style:solid;
  pointer-events:none;
}
.pcard::before{top:-1px;left:-1px;border-width:2px 0 0 2px;}
.pcard::after{bottom:-1px;right:-1px;border-width:0 2px 2px 0;}

.card-bar {
  display:flex;align-items:center;gap:10px;
  padding:12px 18px;
  border-bottom:1px solid var(--border);
  background:var(--raised);
}
.step-tag {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--accentB);
  background:rgba(27,80,204,0.1);
  border:1px solid rgba(27,80,204,0.25);
  padding:2px 8px;letter-spacing:0.1em;text-transform:uppercase;
}
.card-title {
  font-size:12px;font-weight:500;
  color:var(--plat);letter-spacing:0.04em;
}
.card-status {
  margin-left:auto;
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--muted);
  display:flex;align-items:center;gap:5px;
}
.dot {
  width:6px;height:6px;border-radius:50%;
  background:var(--success);
  animation:blink 2s ease-in-out infinite;
}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.25}}

.cbody {padding:22px;}

/* ── Upload zone ── */
.upload-zone {
  border:1px dashed var(--border2);
  padding:44px 20px;text-align:center;cursor:pointer;
  transition:border-color .2s,background .2s;
  background:rgba(27,80,204,0.02);
  position:relative;
}
.upload-zone:hover {
  border-color:var(--accentB);
  background:var(--glow);
}
.upload-zone:hover .uz-ring {
  border-color:var(--accentB);
  box-shadow:0 0 24px var(--glow);
}
.uz-ring {
  width:56px;height:56px;
  border:1px solid var(--border2);
  display:inline-flex;align-items:center;justify-content:center;
  margin-bottom:14px;position:relative;
  transition:all .2s;
}
.uz-ring::before {
  content:'';position:absolute;inset:5px;
  border:1px solid rgba(27,80,204,0.15);
}
.uz-title {
  font-size:13px;font-weight:500;
  color:var(--plat);margin-bottom:4px;
  letter-spacing:0.03em;
}
.uz-sub, .uz-hint {
  font-size:11px;color:var(--muted);font-weight:300;margin-bottom:14px;text-align:center;line-height:1.6;
}
.uz-specs {
  display:flex;justify-content:center;gap:20px;flex-wrap:wrap;
}
.spec {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:10px;
  color:var(--muted);display:flex;align-items:center;gap:5px;
}
.spec::before{
  content:'◆';font-size:5px;
  color:var(--accentB);opacity:.7;
}

/* ── Upload button & file info ── */
.uz-btn {
  display:inline-flex;align-items:center;gap:6px;
  background:var(--raised);color:var(--plat);
  padding:9px 20px;border:1px solid var(--border2);
  cursor:pointer;font-size:12px;font-weight:600;
  font-family:inherit;letter-spacing:.04em;
  transition:all .2s;
}
.uz-btn:hover { background:var(--card);border-color:var(--accentB);color:var(--white); }
.uz-formats { display:flex;gap:8px;justify-content:center;margin-top:12px;flex-wrap:wrap; }
.uz-format {
  background:var(--raised);border:1px solid var(--border);
  padding:3px 10px;font-size:10px;color:var(--muted);letter-spacing:.5px;font-weight:600;
}

/* ── Download Guide ── */
.uz-guide-wrap { margin-top:14px;text-align:center; }
.uz-guide-toggle {
  display:inline-flex;align-items:center;gap:5px;
  font-size:11px;color:var(--silver);
  text-decoration:none;cursor:pointer;
  border-bottom:1px dashed var(--muted);
  padding-bottom:1px;
  transition:color .2s;
}
.uz-guide-toggle:hover { color:var(--accentB); }
.guide-arrow { display:inline-block;transition:transform .2s;font-size:10px; }
.uz-guide-panel {
  margin-top:12px;
  background:var(--raised);
  border:1px solid var(--border);
  padding:12px 14px;
  text-align:left;
}
.uz-guide-tip {
  display:flex;align-items:flex-start;gap:6px;
  font-size:11px;color:var(--success);
  margin-bottom:10px;line-height:1.5;
}
.uz-guide-steps { display:flex;flex-direction:column;gap:8px;margin-bottom:10px; }
.uz-guide-step {
  display:flex;align-items:flex-start;gap:8px;
  font-size:11px;color:var(--plat);line-height:1.5;
}
.uz-step-num {
  flex-shrink:0;
  width:16px;height:16px;
  background:var(--accent);
  border-radius:50%;
  font-size:10px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  color:var(--white);margin-top:1px;
}
.uz-guide-wx {
  font-size:11px;color:var(--silver);
  border-top:1px solid var(--border);
  padding-top:8px;line-height:1.6;
}
.uz-guide-wx strong { color:var(--accentB); }

.file-info {
  display:none;align-items:center;gap:10px;
  background:rgba(12,184,122,0.06);border:1px solid rgba(12,184,122,0.2);
  padding:10px 14px;margin-top:12px;
}
.file-info.show { display:flex; }
.fi-icon { width:34px;height:34px;background:rgba(12,184,122,0.1);display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.fi-name { font-size:13px;font-weight:700;color:var(--white); }
.fi-size { font-size:11px;color:var(--silver); }
.fi-remove {
  margin-left:auto;background:none;border:none;cursor:pointer;
  width:28px;height:28px;display:flex;align-items:center;justify-content:center;
  color:var(--silver);font-size:18px;transition:color .2s;
}
.fi-remove:hover { color:var(--danger); }

/* ── Upload button & file info ── */
.uz-btn {
  display:inline-flex;align-items:center;gap:6px;
  background:var(--raised);color:var(--plat);
  padding:9px 20px;border:1px solid var(--border2);
  cursor:pointer;font-size:12px;font-weight:600;
  font-family:inherit;letter-spacing:.04em;
  transition:all .2s;
}
.uz-btn:hover { background:var(--card);border-color:var(--accentB);color:var(--white); }
.uz-formats { display:flex;gap:8px;justify-content:center;margin-top:12px;flex-wrap:wrap; }
.uz-format {
  background:var(--raised);border:1px solid var(--border);
  padding:3px 10px;font-size:10px;color:var(--muted);letter-spacing:.5px;font-weight:600;
}
.file-info {
  display:none;align-items:center;gap:10px;
  background:rgba(12,184,122,0.06);border:1px solid rgba(12,184,122,0.2);
  padding:10px 14px;margin-top:12px;
}
.file-info.show { display:flex; }
.fi-icon { width:34px;height:34px;background:rgba(12,184,122,0.1);display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.fi-name { font-size:13px;font-weight:700;color:var(--white); }
.fi-size { font-size:11px;color:var(--silver); }
.fi-remove {
  margin-left:auto;background:none;border:none;cursor:pointer;
  width:28px;height:28px;display:flex;align-items:center;justify-content:center;
  color:var(--silver);font-size:18px;transition:color .2s;
}
.fi-remove:hover { color:var(--danger); }

/* ── Consent ── */
.consent-row {
  display:flex;align-items:flex-start;gap:10px;
  margin:18px 0 16px;padding:11px 14px;
  border-left:2px solid var(--accentB);
  background:rgba(27,80,204,0.04);
}
.consent-row input[type=checkbox]{
  margin-top:1px;flex-shrink:0;
  accent-color:var(--accentB);
  width:13px;height:13px;cursor:pointer;
}
.consent-row label {
  font-size:11px;color:var(--silver);
  line-height:1.65;font-weight:300;cursor:pointer;
}
.consent-row a{color:var(--accentB);text-decoration:none;}
.consent-row a:hover{text-decoration:underline;}

/* ── CTA button ── */
.btn-cta {
  width:100%;background:var(--accent);border:none;
  padding:14px 24px;
  font-family:'Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:13px;font-weight:500;color:#fff;
  cursor:pointer;letter-spacing:0.1em;
  position:relative;overflow:hidden;
  transition:background .2s;
  display:flex;align-items:center;justify-content:center;gap:8px;
}
.btn-cta::after {
  content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.07),transparent);
  transform:translateX(-100%);transition:transform .5s;
}
.btn-cta:hover{background:var(--accentB);}
.btn-cta:hover::after{transform:translateX(100%);}
.btn-cta:disabled{background:var(--muted);cursor:not-allowed;opacity:.45;}

.sec-note {
  text-align:center;
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--muted);margin-top:12px;letter-spacing:0.06em;
  display:flex;align-items:center;justify-content:center;gap:6px;
}

/* ── Loading screen ── */
.loading-wrap{padding:52px 20px;text-align:center;}

.geo-loader {
  width:68px;height:68px;margin:0 auto 28px;
  position:relative;
}
.geo-outer {
  position:absolute;inset:0;border:1px solid var(--border2);
  animation:rotateCW 4s linear infinite;
}
.geo-mid {
  position:absolute;inset:12px;border:1px solid var(--accent);
  animation:rotateCCW 2.5s linear infinite;
}
.geo-inner {
  position:absolute;inset:24px;
  background:var(--accentB);
  animation:pulsate 1.4s ease-in-out infinite;
}
@keyframes rotateCW{to{transform:rotate(360deg)}}
@keyframes rotateCCW{to{transform:rotate(-360deg)}}
@keyframes pulsate{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.2;transform:scale(.6)}}

.ld-eyebrow {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:10px;
  color:var(--accentB);letter-spacing:.18em;text-transform:uppercase;margin-bottom:6px;
}
.ld-title {
  font-family:'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:18px;font-weight:700;color:var(--white);margin-bottom:26px;
}

.steps-list{list-style:none;max-width:340px;margin:0 auto;text-align:left;}
.sl-item {
  display:flex;align-items:center;gap:12px;
  padding:10px 0;border-bottom:1px solid var(--border);
  font-size:12px;color:var(--silver);
}
.sl-item:last-child{border-bottom:none;}
.sl-n {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  width:18px;flex-shrink:0;color:var(--muted);
}
.sl-item.done{color:var(--plat);}
.sl-item.done .sl-n{color:var(--success);}
.sl-item.running,.sl-item.active{color:var(--white);}
.sl-item.running .sl-n,.sl-item.active .sl-n{color:var(--accentB);}
/* icon states via CSS only */
.sl-idle {
  width:14px;height:14px;flex-shrink:0;
  border:1px solid var(--muted);
  box-sizing:border-box;
}
.sl-item.active .sl-idle {
  border:1.5px solid var(--border2);
  border-top-color:var(--accentB);
  border-radius:50%;
  animation:rotateCW .7s linear infinite;
}
.sl-item.done .sl-idle {
  border:none;
  width:14px;height:14px;
  display:flex;align-items:center;justify-content:center;
  color:var(--success);font-size:13px;font-weight:700;
}
.sl-item.done .sl-idle::before { content:'✓'; }
.sl-spin {
  width:14px;height:14px;flex-shrink:0;
  border:1.5px solid var(--border2);
  border-top-color:var(--accentB);
  border-radius:50%;
  animation:rotateCW .7s linear infinite;
}
.sl-check {
  width:14px;height:14px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  color:var(--success);
}

/* ── Result sections & tables ── */
.result-section {
  background:var(--surface);border:1px solid var(--border);
  margin-bottom:12px;overflow:hidden;
}
.rs-header {
  padding:10px 16px;background:var(--raised);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:8px;
}
.rs-title { font-size:13px;font-weight:700;color:var(--white); }
.rs-count {
  margin-left:auto;background:var(--accentB);color:#fff;
  font-size:10px;font-weight:800;padding:2px 9px;
}
.rs-body { padding:0; }
.tbl-scroll { overflow-x:auto;-webkit-overflow-scrolling:touch; }
.tbl-scroll .data-table { min-width:520px; }
.data-table { width:100%;border-collapse:collapse;font-size:12px; }
.data-table th {
  padding:8px 10px;text-align:left;
  font-size:10px;font-weight:700;color:var(--accentB);
  letter-spacing:.08em;text-transform:uppercase;
  border-bottom:1px solid var(--border);
  background:var(--raised);white-space:nowrap;
}
.data-table td {
  padding:10px;border-bottom:1px solid var(--border);
  color:var(--plat);vertical-align:middle;
}
.data-table tr:last-child td { border-bottom:none; }
.data-table tr:hover td { background:rgba(27,80,204,.03); }
.badge { display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;letter-spacing:.03px; }
.badge-bad { background:rgba(217,48,48,0.1);color:var(--danger); }

/* ── Result sections & tables ── */
.result-section {
  background:var(--surface);border:1px solid var(--border);
  margin-bottom:12px;overflow:hidden;
}
.rs-header {
  padding:10px 16px;background:var(--raised);
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:8px;
}
.rs-title { font-size:13px;font-weight:700;color:var(--white); }
.rs-count {
  margin-left:auto;background:var(--accentB);color:#fff;
  font-size:10px;font-weight:800;padding:2px 9px;
}
.rs-body { padding:0; }
.tbl-scroll { overflow-x:auto;-webkit-overflow-scrolling:touch; }
.tbl-scroll .data-table { min-width:520px; }
.data-table { width:100%;border-collapse:collapse;font-size:12px; }
.data-table th {
  padding:8px 10px;text-align:left;
  font-size:10px;font-weight:700;color:var(--accentB);
  letter-spacing:.08em;text-transform:uppercase;
  border-bottom:1px solid var(--border);
  background:var(--raised);white-space:nowrap;
}
.data-table td {
  padding:10px;border-bottom:1px solid var(--border);
  color:var(--plat);vertical-align:middle;
}
.data-table tr:last-child td { border-bottom:none; }
.data-table tr:hover td { background:rgba(27,80,204,.03); }
.badge { display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;letter-spacing:.03px; }
.badge-bad { background:rgba(217,48,48,0.1);color:var(--danger); }

/* ── Results ── */
/* Metric grid */
.metrics-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;background:var(--border);
  border:1px solid var(--border);
  margin-bottom:16px;
}
.mcell {
  background:var(--surface);padding:8px 8px 6px;
  position:relative;cursor:default;
  transition:background .2s;
}
.mcell::after {
  content:'';position:absolute;
  top:0;left:0;right:0;height:2px;
  background:transparent;transition:background .2s;
}
.mcell:hover{background:var(--raised);}
.mcell:hover::after{background:var(--accentB);}
.mlabel {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin-bottom:4px;
  display:flex;align-items:center;gap:4px;
}
.mlabel svg { color:var(--accentB);opacity:0.7;flex-shrink:0; }
.mval {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:18px;
  font-weight:500;line-height:1;margin-bottom:3px;
}
.mval.ok{color:var(--success);}
.mval.warn{color:var(--warn);}
.mval.bad{color:var(--danger);}
.msub {
  font-family:'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;font-size:10px;
  color:var(--muted);letter-spacing:.02em;
}

/* Two-col layout */
.two-col {
  display:grid;
  grid-template-columns:1fr 260px;
  gap:16px;margin-bottom:16px;
}

/* Score card */
.score-card {
  background:var(--surface);border:1px solid var(--border);
  padding:24px;text-align:center;position:relative;
}
.score-card::before,.score-card::after {
  content:'';position:absolute;
  width:8px;height:8px;
  border-color:var(--accentB);border-style:solid;
}
.score-card::before{top:-1px;left:-1px;border-width:1px 0 0 1px;}
.score-card::after{bottom:-1px;right:-1px;border-width:0 1px 1px 0;}

.ring-wrap {
  width:120px;height:120px;margin:0 auto 14px;position:relative;
}
.ring-wrap svg{transform:rotate(-90deg);}
.ring-center {
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
}
.ring-num {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:28px;font-weight:500;
  color:var(--white);line-height:1;
}
.ring-lbl {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--muted);
  letter-spacing:.08em;margin-top:3px;
}
.score-tier {
  font-family:'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:14px;font-weight:700;
  color:var(--success);margin-bottom:4px;
  letter-spacing:.04em;
}
.score-desc {
  font-size:11px;color:var(--silver);
  font-weight:300;line-height:1.55;margin-bottom:12px;
}
.score-card-eyebrow {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;
  margin-bottom:14px;
}
.score-stats {
  margin-top:16px;padding-top:14px;border-top:1px solid var(--border);
}
.score-stat-row {
  display:flex;justify-content:space-between;margin-bottom:8px;
}
.score-stat-row:last-child{margin-bottom:0;}
.score-stat-lbl {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--muted);
}
.score-stat-val {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:11px;color:var(--accentB);
}
.score-stat-val.green{color:var(--success);}

/* Risk card */
.risk-card {
  background:var(--surface);border:1px solid var(--border);
}
.risk-rows {
  display:grid;grid-template-columns:1fr 1fr;
}
.risk-row {
  padding:9px 12px;border-bottom:1px solid var(--border);border-right:1px solid var(--border);
}
.risk-row:nth-child(2n){border-right:none;}
.risk-row:nth-last-child(-n+2){border-bottom:none;}
.risk-row:last-child:nth-child(odd){grid-column:1/-1;border-right:none;}
.risk-top {
  display:flex;align-items:center;
  justify-content:space-between;margin-bottom:6px;
}
.risk-name{font-size:11px;color:var(--silver);}
.risk-v {font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:11px;font-weight:500;}
.bar-track{height:3px;background:var(--border);}
.bar-fill{height:100%;}

/* Products section */
.sec-hdr {
  display:flex;align-items:center;gap:10px;
  margin-bottom:10px;
  padding-bottom:10px;border-bottom:1px solid var(--border);
}
.sec-hdr-title {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:10px;
  color:var(--plat);letter-spacing:.1em;text-transform:uppercase;
}
.sec-hdr-count {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:10px;
  color:var(--accentB);
  background:var(--glow);
  border:1px solid rgba(27,80,204,.25);
  padding:1px 7px;
}
.sec-hdr-line {flex:1;height:1px;background:var(--border);}

.ptable {
  width:100%;border-collapse:collapse;
}
.ptable th {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  color:var(--muted);letter-spacing:.12em;text-transform:uppercase;
  padding:9px 13px;text-align:left;
  border-bottom:1px solid var(--border);
  white-space:nowrap;background:var(--raised);
}
.ptable td {
  padding:12px 13px;border-bottom:1px solid var(--border);
  font-size:12px;color:var(--plat);vertical-align:middle;
}
.ptable tr:last-child td{border-bottom:none;}
.ptable tbody tr:hover td{background:rgba(27,80,204,.03);}

.prod-name{font-weight:500;color:var(--white);font-size:12px;margin-bottom:2px;}
.prod-bank{
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;color:var(--muted);
}

.ttag {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:9px;
  padding:2px 6px;letter-spacing:.04em;
}
.ttag-b{
  background:rgba(27,80,204,.12);
  color:var(--accentB);
  border:1px solid rgba(27,80,204,.3);
}
.ttag-f{
  background:rgba(217,128,0,.1);
  color:var(--warn);
  border:1px solid rgba(217,128,0,.3);
}

.mb-wrap{display:flex;align-items:center;gap:8px;}
.mb-track{flex:1;height:4px;background:var(--border);}
.mb-fill{height:100%;}
.mb-pct{
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:11px;
  font-weight:500;min-width:30px;text-align:right;
}

.rate-mono{
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;font-size:11px;
}

/* Paywall (design-preview 原版) */
.paywall {
  background:var(--raised);
  border:1px solid var(--border);
  border-top:2px solid var(--accentB);
  padding:28px 20px;text-align:center;
  position:relative;overflow:hidden;margin-top:16px;
}
.paywall::before {
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse at 50% 0%,var(--glow),transparent 70%);
  pointer-events:none;
}
.pw-count {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:36px;font-weight:600;color:var(--accentB);
  line-height:1;margin-bottom:4px;position:relative;
}
.pw-label {
  font-size:12px;color:var(--silver);margin-bottom:4px;font-weight:300;
}
.pw-warn {
  font-size:12px;color:var(--warn);margin-bottom:18px;font-weight:400;
}
.btn-unlock {
  display:inline-flex;align-items:center;gap:10px;
  background:var(--accent);border:none;
  padding:13px 36px;
  font-family:'Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:13px;font-weight:500;color:#fff;
  cursor:pointer;letter-spacing:.06em;
  position:relative;z-index:1;
  transition:background .2s;
}
.btn-unlock:hover{background:var(--accentB);}
.btn-unlock .price {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:17px;font-weight:600;
  color:#FFD15C;
}

/* Path section */
.path-step {
  display:flex;gap:14px;
  padding:15px 0;border-bottom:1px solid var(--border);
  align-items:flex-start;
}
.path-step:last-child{border-bottom:none;}
.path-left{flex-shrink:0;display:flex;flex-direction:column;align-items:center;}
.path-num {
  width:24px;height:24px;
  border:1px solid var(--accentB);
  display:flex;align-items:center;justify-content:center;
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:11px;font-weight:500;color:var(--accentB);
}
.path-vline {
  width:1px;flex:1;min-height:16px;
  background:var(--border2);margin-top:6px;
}
.path-body{flex:1;padding-top:2px;}
.path-title{font-size:12px;font-weight:500;color:var(--white);margin-bottom:3px;line-height:1.4;}
.path-title em{font-style:normal;color:var(--cyan);}
.path-desc{font-size:11px;color:var(--silver);font-weight:300;line-height:1.5;}

/* Advice card */
.advice-card {
  background:var(--surface);border:1px solid var(--border);
  margin-top:16px;
}
.advice-row {
  display:flex;gap:12px;padding:13px 16px;
  border-bottom:1px solid var(--border);align-items:flex-start;
}
.advice-row:last-child{border-bottom:none;}
.adv-dot {
  width:6px;height:6px;border-radius:50%;
  flex-shrink:0;margin-top:5px;
}
.adv-pt{font-size:12px;font-weight:500;color:var(--white);margin-bottom:2px;}
.adv-im{font-size:11px;color:var(--silver);font-weight:300;}

/* Animations */
@keyframes fadeUp{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}
.tab-panel.active .pcard{animation:fadeUp .3s ease both;}
.tab-panel.active .metrics-grid{animation:fadeUp .3s .05s ease both;}
.tab-panel.active .two-col{animation:fadeUp .3s .1s ease both;}

/* ═══════════════════════════════════════════════════════
   从 cto_upgrade_2/style.css 适配的组件
   颜色变量已映射到 B-scheme
   ═══════════════════════════════════════════════════════ */

/* ── Notice tag ── */
.notice-tag {
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(12,184,122,0.07);
  border:1px solid rgba(12,184,122,0.2);
  padding:4px 10px;
  font-size:11px;color:var(--success);margin-bottom:12px;
}

/* ── ID Info Bar (横排) ── */
.id-info-bar {
  display:grid;
  grid-template-columns:1fr auto 1.6fr auto 0.8fr auto 1fr;
  align-items:center;
  background:var(--raised);
  padding:14px 18px;margin-bottom:14px;gap:0;
  border:1px solid var(--border);
}
.iib-divider { width:1px;height:28px;background:var(--border2);flex-shrink:0; }
.iib-icon {
  width:28px;height:28px;
  background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;font-size:14px;
}
.iib-label { font-size:10px;color:var(--muted);letter-spacing:0.04em;margin-bottom:2px;white-space:nowrap; }
.iib-val   { font-size:13px;font-weight:600;color:var(--white);white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.iib-idno  { font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;letter-spacing:1.5px;font-size:12px;color:var(--plat); }

/* ── br-wrap / 爆查风险 ── */
.br-wrap {
  background:var(--surface);border:1px solid var(--border);
  padding:12px 14px;margin-bottom:12px;
}
.br-top { display:flex;align-items:center;justify-content:space-between;margin-bottom:12px; }
.br-title { font-size:12px;font-weight:700;color:var(--white); }
.br-badge { font-size:10px;padding:2px 10px;font-weight:700; }
.br-safe     { background:rgba(12,184,122,0.12);color:var(--success);border:1px solid rgba(12,184,122,0.25); }
.br-warn     { background:rgba(217,128,0,0.12);color:var(--warn);border:1px solid rgba(217,128,0,0.25); }
.br-danger   { background:rgba(217,48,48,0.12);color:var(--danger);border:1px solid rgba(217,48,48,0.22); }
.br-critical { background:rgba(217,48,48,0.1);color:var(--danger);border:1px solid rgba(217,48,48,0.2); }
.br-meters   { display:flex;gap:8px;margin-bottom:8px; }
.br-meter    { flex:1;text-align:center;background:var(--raised);padding:6px 4px; }
.br-meter-val { font-size:18px;font-weight:800;color:var(--white); }
.br-meter-lbl { font-size:9px;color:var(--muted);margin-top:1px; }
.br-tip {
  font-size:11px;color:var(--muted);line-height:1.6;
  padding-top:8px;border-top:1px solid var(--border);
}

/* ── cs-wrap / 评分卡 ── */
.cs-wrap {
  background:var(--surface);border:1px solid var(--border);
  padding:14px 16px;margin-bottom:12px;
}
.cs-row { display:flex;align-items:center;gap:14px; }
.cs-gauge { position:relative;width:84px;height:84px;flex-shrink:0; }
.cs-gauge svg { width:84px;height:84px;transform:rotate(-90deg); }
.cs-gauge-bg   { fill:none;stroke:var(--border2);stroke-width:7; }
.cs-gauge-fill { fill:none;stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset 1s ease; }
.cs-num {
  position:absolute;inset:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
}
.cs-num-val { font-size:22px;font-weight:800;color:var(--white);line-height:1; }
.cs-num-lbl { font-size:9px;color:var(--muted);margin-top:2px;letter-spacing:0.8px; }
.cs-info    { flex:1;min-width:0; }
.cs-info-title { font-size:13px;font-weight:700;color:var(--white);margin-bottom:6px; }
.cs-level {
  display:inline-flex;align-items:center;gap:4px;
  font-size:11px;padding:2px 10px;
  font-weight:700;margin-bottom:6px;
}
.cs-lv-exc { background:rgba(12,184,122,0.15);color:var(--success);border:1px solid rgba(12,184,122,0.25); }
.cs-lv-gd  { background:rgba(27,80,204,0.15);color:var(--accentB);border:1px solid rgba(27,80,204,0.25); }
.cs-lv-ok  { background:rgba(217,128,0,0.15);color:var(--warn);border:1px solid rgba(217,128,0,0.25); }
.cs-lv-wk  { background:rgba(217,128,0,0.15);color:var(--warn);border:1px solid rgba(217,128,0,0.25); }
.cs-lv-bad { background:rgba(217,48,48,0.12);color:var(--danger);border:1px solid rgba(217,48,48,0.2); }
.cs-hint   { font-size:11px;color:var(--silver);line-height:1.55; }

/* ── Risk Banner ── */
.risk-banner {
  padding:14px 16px;margin-bottom:14px;
  display:flex;align-items:center;gap:14px;
  border:1px solid var(--border);
}
.rb-icon {
  width:40px;height:40px;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;background:var(--raised);
}
.rb-level { font-size:16px;font-weight:800; }
.rb-desc  { font-size:12px;opacity:0.75;margin-top:3px; }
.risk-healthy { background:rgba(12,184,122,0.09);border-color:rgba(12,184,122,0.22);color:var(--success); }
.risk-mild    { background:rgba(217,128,0,0.08);border-color:rgba(217,128,0,0.2);color:var(--warn); }
.risk-medium  { background:rgba(217,128,0,0.08);border-color:rgba(217,128,0,0.2);color:var(--warn); }
.risk-high    { background:rgba(217,48,48,0.08);border-color:rgba(217,48,48,0.2);color:var(--danger); }

/* ── Analysis section ── */
.analysis-section {
  background:var(--surface);border:1px solid var(--border);
  margin-bottom:12px;overflow:hidden;
}
.as-header {
  padding:12px 16px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:12px;background:var(--raised);
}
.as-icon {
  width:28px;height:28px;
  background:var(--surface);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;border:1px solid var(--border);
}
.as-title { font-size:12px;font-weight:800;color:var(--white);letter-spacing:0.3px; }
.as-body  { padding:14px 16px; }
.as-item  {
  display:flex;gap:12px;padding:10px 0;
  border-bottom:1px solid var(--border);font-size:12px;
}
.as-item:last-child { border-bottom:none; }
.as-dot {
  width:6px;height:6px;border-radius:50%;
  flex-shrink:0;margin-top:5px;
}
.as-dot-green { background:var(--success); }
.as-dot-red   { background:var(--danger); }
.as-dot-amber { background:var(--warn); }
.as-dot-navy  { background:var(--silver); }
.as-point  { font-weight:700;color:var(--white);margin-bottom:3px; }
.as-impact { color:var(--silver);line-height:1.6; }
.as-step-num {
  width:20px;height:20px;background:var(--raised);border:1px solid var(--border2);
  color:var(--white);font-size:10px;font-weight:800;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;
}
.as-step-meta { font-size:11px;color:var(--silver);margin-top:4px; }
.as-step-tag {
  display:inline-block;background:var(--glow);
  color:var(--plat);font-size:10px;font-weight:700;
  padding:2px 8px;margin-right:4px;
  border:1px solid rgba(27,80,204,0.2);
}

/* ── Advice sub-blocks ── */
.adv-sub { border-bottom:1px solid var(--border); }
.adv-sub:last-child { border-bottom:none; }
.adv-sub-header {
  padding:8px 16px;font-size:11px;font-weight:800;letter-spacing:0.3px;
}
.adv-green { background:rgba(12,184,122,0.06);color:var(--success); }
.adv-red   { background:rgba(217,48,48,0.05);color:var(--danger); }
.adv-gold  { background:rgba(27,80,204,0.07);color:var(--accentB); }
.adv-sub-body { padding:10px 16px; }

/* ── Conv top / 结果顶部 ── */
.conv-top {
  background:var(--raised);border:1px solid var(--border);
  padding:16px 16px 14px;margin-bottom:12px;
}
.conv-eyebrow {
  font-size:10px;color:var(--muted);
  letter-spacing:2.5px;margin-bottom:10px;text-transform:uppercase;
}
.conv-headline {
  font-size:17px;font-weight:800;color:var(--white);
  line-height:1.4;margin-bottom:14px;
}
.conv-headline em { color:var(--accentB);font-style:normal; }

.conv-compare {
  display:grid;grid-template-columns:1fr 24px 1fr;
  gap:8px;align-items:center;margin-bottom:12px;
}
.conv-col {
  background:var(--surface);border:1px solid var(--border);
  padding:10px 8px;text-align:center;
}
.conv-col.bad  { border-color:rgba(217,48,48,0.25); }
.conv-col.good { border-color:rgba(12,184,122,0.25);background:rgba(12,184,122,0.04); }
.conv-col-lbl  { font-size:9px;color:var(--muted);margin-bottom:4px; }
.conv-col-rate {
  font-size:22px;font-weight:800;line-height:1;
}
.conv-col-rate.red   { color:var(--danger); }
.conv-col-rate.green { color:var(--success); }
.conv-col-amt  { font-size:11px;color:var(--silver);margin-top:3px; }
.conv-col-amt em { font-style:normal;font-weight:700;color:var(--plat); }
.conv-arrow { font-size:14px;color:var(--muted);text-align:center; }
.conv-gap {
  background:rgba(217,48,48,0.08);border:1px solid rgba(217,48,48,0.2);
  padding:7px 10px;text-align:center;
}
.conv-gap-lbl { font-size:9px;color:var(--muted);margin-bottom:2px; }
.conv-gap-val { font-size:18px;font-weight:800;color:var(--danger); }
.conv-gap-sub { font-size:9px;color:var(--muted);margin-top:1px; }

/* ── Conv sec (通用节块) ── */
.conv-sec {
  background:var(--surface);border:1px solid var(--border);
  padding:14px;margin-bottom:12px;
}
.conv-sec-hd    { display:flex;align-items:center;gap:8px;margin-bottom:12px; }
.conv-sec-icon  {
  width:26px;height:26px;
  background:var(--glow);
  border:1px solid rgba(27,80,204,0.2);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.conv-sec-title { font-size:12px;font-weight:800;color:var(--white);letter-spacing:0.3px; }

/* ── Loss cols (损失对比) ── */
.loss-cols { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px; }
.loss-col  { padding:12px 12px; }
.loss-col.now { background:rgba(217,48,48,0.06);border:1px solid rgba(217,48,48,0.16); }
.loss-col.opt { background:rgba(12,184,122,0.06);border:1px solid rgba(12,184,122,0.2); }
.loss-tag {
  font-size:10px;font-weight:800;padding:1px 8px;
  display:inline-block;margin-bottom:8px;
}
.loss-col.now .loss-tag { background:rgba(217,48,48,0.15);color:var(--danger); }
.loss-col.opt .loss-tag { background:rgba(12,184,122,0.15);color:var(--success); }
.loss-type { font-size:12px;font-weight:700;color:var(--white);margin-bottom:2px; }
.loss-rate { font-size:11px;color:var(--silver);line-height:1.5; }
.loss-interest { font-size:13px;font-weight:800;margin-top:8px; }
.loss-col.now .loss-interest { color:var(--danger); }
.loss-col.opt .loss-interest { color:var(--success); }
.loss-diff {
  background:rgba(217,48,48,0.07);border:1px solid rgba(217,48,48,0.16);
  padding:7px;text-align:center;
}
.loss-diff-lbl { font-size:10px;color:var(--silver); }
.loss-diff-val { font-size:16px;font-weight:800;color:var(--danger); }

/* ── Lift sec (提升空间) ── */
.lift-sec {
  background:var(--surface);border:1px solid rgba(12,184,122,0.2);
  padding:14px;margin-bottom:12px;
}
.lift-action { display:flex;align-items:flex-start;gap:8px;padding:4px 0; }
.lift-check {
  width:16px;height:16px;
  background:rgba(12,184,122,0.15);border:1px solid rgba(12,184,122,0.35);
  display:flex;align-items:center;justify-content:center;
  font-size:9px;color:var(--success);flex-shrink:0;margin-top:1px;
}
.lift-txt { font-size:12px;color:var(--silver);line-height:1.5; }
.lift-compare { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px; }
.lift-col { background:var(--raised);padding:9px 11px;border:1px solid var(--border); }
.lift-col-lbl { font-size:9px;color:var(--muted);margin-bottom:4px; }
.lift-col-val { font-size:13px;font-weight:700;color:var(--white);margin-bottom:2px; }
.lift-col-val.green { color:var(--success); }
.lift-col-sub { font-size:11px;color:var(--silver); }
.lift-gap {
  margin-top:8px;text-align:center;
  background:rgba(12,184,122,0.08);border:1px solid rgba(12,184,122,0.18);
  padding:5px;
  font-size:12px;font-weight:700;color:var(--success);
}

/* ── CT sec (客户标签) ── */
.ct-sec {
  background:var(--surface);border:1px solid rgba(27,80,204,0.18);
  padding:12px 14px;margin-bottom:12px;
  position:relative;overflow:hidden;
}
/* 角落 L 括号 */
.ct-sec::before,.ct-sec::after {
  content:'';position:absolute;width:10px;height:10px;
  border-color:var(--accentB);border-style:solid;opacity:.5;
}
.ct-sec::before{top:0;left:0;border-width:1px 0 0 1px;}
.ct-sec::after{bottom:0;right:0;border-width:0 1px 1px 0;}
/* 扫描线 */
.ct-sec .ct-scan {
  position:absolute;top:0;left:-100%;width:60%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(27,80,204,0.04),transparent);
  animation:ctScan 4s 1s ease-in-out infinite;
  pointer-events:none;
}
@keyframes ctScan { 0%{left:-60%} 100%{left:120%} }

.ct-row    { display:flex;align-items:center;gap:12px; }
.ct-badge  {
  flex-shrink:0;
  background:linear-gradient(135deg,rgba(27,80,204,0.08),rgba(27,80,204,0.03));
  border:1px solid rgba(27,80,204,0.28);
  padding:12px 10px;text-align:center;min-width:68px;
  position:relative;
  /* 细点阵底纹 */
  background-image:
    linear-gradient(135deg,rgba(27,80,204,0.06),rgba(27,80,204,0.02)),
    radial-gradient(circle,rgba(27,80,204,0.15) 1px,transparent 1px);
  background-size:auto, 8px 8px;
}
/* badge 右下角小三角切角 */
.ct-badge::after {
  content:'';position:absolute;bottom:0;right:0;
  border-style:solid;border-width:0 0 8px 8px;
  border-color:transparent transparent var(--accentB) transparent;
  opacity:.4;
}
.ct-badge-icon {
  width:28px;height:28px;margin:0 auto 6px;
  display:flex;align-items:center;justify-content:center;
  color:var(--accentB);
}
.ct-badge-icon svg { width:22px;height:22px; }
.ct-badge-type {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;font-weight:700;color:var(--accentB);
  letter-spacing:.08em;text-transform:uppercase;
}
.ct-title { font-size:13px;font-weight:700;color:var(--white);margin-bottom:4px; }
.ct-desc  { font-size:11px;color:var(--silver);line-height:1.6; }

/* ── WL tip (白名单提示) ── */
.wl-tip {
  background:var(--raised);border:1px solid rgba(27,80,204,0.2);
  padding:14px;margin-bottom:12px;
}
.wl-hd    { display:flex;align-items:center;gap:8px;margin-bottom:8px; }
.wl-title { font-size:13px;font-weight:800;color:var(--plat); }
.wl-body  { font-size:11px;color:var(--silver);line-height:1.7;margin-bottom:12px; }
.wl-btn {
  display:block;text-align:center;
  background:var(--glow);border:1px solid rgba(27,80,204,0.25);
  color:var(--accentB);padding:8px 16px;
  font-size:12px;font-weight:700;cursor:pointer;width:100%;
  transition:background .2s;
  font-family:inherit;
}
.wl-btn:hover { background:rgba(27,80,204,0.25); }

/* ── Urgent sec (紧迫提醒) ── */
.urgent-sec {
  background:rgba(217,48,48,0.06);border:1px solid rgba(217,48,48,0.2);
  padding:14px;margin-bottom:12px;
}
.urgent-title {
  display:flex;align-items:center;gap:8px;
  font-size:13px;font-weight:800;color:var(--danger);margin-bottom:8px;
}
.urgent-body  { font-size:12px;color:var(--silver);line-height:1.8; }
.urgent-body strong { color:var(--danger); }
.urgent-result {
  background:rgba(217,48,48,0.1);
  padding:8px 12px;margin-top:8px;
  font-size:11px;color:var(--silver);line-height:1.6;font-weight:600;
}

/* ── ML steps (匹配加载) ── */
.ml-steps { display:flex;flex-direction:column;gap:8px;max-width:240px;margin:14px auto 0; }
.ml-step  { font-size:12px;color:var(--silver);display:flex;align-items:center;gap:12px;padding:5px 0; }
.ml-step.done   { color:var(--success); }
.ml-step.active { color:var(--white);font-weight:700; }
.ml-dot { width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0; }
.ml-step.active .ml-dot { animation:blink 1.2s infinite; }
.ml-title { font-size:15px;font-weight:700;color:var(--white);margin-bottom:8px; }
.ml-sub   { font-size:12px;color:var(--silver); }

/* ── Terminal loading ── */
.term-hd {
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:10px;
}
.term-badge {
  font-family:'SF Mono','Menlo',monospace;
  font-size:10px;font-weight:600;letter-spacing:.12em;
  color:var(--accentB);text-transform:uppercase;
}
.term-badge-r {
  font-family:'SF Mono','Menlo',monospace;
  font-size:10px;color:var(--muted);letter-spacing:.06em;
}
.term-log {
  background:var(--void);border:1px solid var(--border2);
  height:148px;overflow:hidden;
  padding:8px 10px;
  display:flex;flex-direction:column;justify-content:flex-end;gap:0;
  position:relative;
}
.term-log::before {
  content:'';position:absolute;top:0;left:0;right:0;height:36px;
  background:linear-gradient(to bottom,var(--void),transparent);
  pointer-events:none;z-index:1;
}
.term-row {
  display:flex;align-items:baseline;gap:0;
  font-family:'SF Mono','Menlo',monospace;
  font-size:11px;line-height:1.9;
  white-space:nowrap;overflow:hidden;
  opacity:0;
  animation:termFadeIn .18s ease forwards;
}
.term-row.done  { color:var(--muted); }
.term-row.active{ color:var(--white); }
.term-row.ok    { color:var(--success); }
.term-code { color:var(--accentB);min-width:56px;flex-shrink:0; }
.term-row.ok .term-code { color:var(--success); }
.term-label { flex:1;overflow:hidden;text-overflow:ellipsis; }
.term-state { min-width:40px;text-align:right;flex-shrink:0; }
.term-row.active .term-state { color:var(--gold);animation:blink 1s infinite; }
.term-row.ok     .term-state { color:var(--success); }
.term-row.done   .term-state { color:var(--border2); }
.term-cursor { display:inline-block;width:6px;height:11px;background:var(--accentB);margin-left:3px;vertical-align:middle;animation:blink .8s infinite; }
.term-footer {
  display:flex;align-items:center;gap:10px;margin-top:8px;
}
.term-bar-wrap {
  flex:1;height:2px;background:var(--border2);border-radius:1px;overflow:hidden;
}
.term-bar {
  height:100%;background:var(--accentB);border-radius:1px;
  width:0%;transition:width .25s linear;
}
.term-status {
  font-family:'SF Mono','Menlo',monospace;
  font-size:9px;letter-spacing:.1em;color:var(--muted);
  min-width:80px;text-align:right;
}
@keyframes termFadeIn { from{opacity:0;transform:translateY(4px)} to{opacity:1;transform:translateY(0)} }

/* ── Matching loading 视觉增强 ── */
.matching-loading {
  position:relative;padding:14px 16px 12px;
}
/* 角标 */
.ml-corners { position:absolute;inset:0;pointer-events:none; }
.ml-c {
  position:absolute;width:10px;height:10px;
  border-color:var(--accentB);border-style:solid;
  opacity:0;animation:mlCornerIn .5s ease forwards;
}
.ml-c.tl { top:0;left:0;border-width:1.5px 0 0 1.5px;animation-delay:.1s }
.ml-c.tr { top:0;right:0;border-width:1.5px 1.5px 0 0;animation-delay:.2s }
.ml-c.bl { bottom:0;left:0;border-width:0 0 1.5px 1.5px;animation-delay:.3s }
.ml-c.br { bottom:0;right:0;border-width:0 1.5px 1.5px 0;animation-delay:.4s }
@keyframes mlCornerIn { to{opacity:.8} }

/* 雷达眼 */
.term-eye {
  position:relative;width:22px;height:22px;flex-shrink:0;margin-right:10px;
}
.term-eye-r1,.term-eye-r2 {
  position:absolute;inset:0;border-radius:50%;border:1px solid var(--accentB);
}
.term-eye-r1 { opacity:.35;animation:eyePulse 2s ease-in-out infinite; }
.term-eye-r2 { opacity:.18;animation:eyePulse 2s ease-in-out infinite .6s;transform:scale(1.4); }
.term-eye-dot {
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:5px;height:5px;border-radius:50%;
  background:var(--accentB);box-shadow:0 0 6px var(--accentB);
  animation:eyePulse 1.4s ease-in-out infinite;
}
@keyframes eyePulse { 0%,100%{opacity:.5;transform:scale(1)} 50%{opacity:1;transform:scale(1.15)} }
.term-eye-dot { animation:dotPulse 1.4s ease-in-out infinite; }
@keyframes dotPulse { 0%,100%{opacity:.6;box-shadow:0 0 3px var(--accentB)} 50%{opacity:1;box-shadow:0 0 8px var(--accentB),0 0 14px rgba(27,80,204,.25)} }

/* term-log 发光边框 + 扫描线 */
.term-log {
  animation:logGlow 3s ease-in-out infinite;
}
@keyframes logGlow {
  0%,100% { border-color:var(--border2);box-shadow:none }
  50%      { border-color:rgba(27,80,204,.3);box-shadow:0 0 8px rgba(27,80,204,.08),inset 0 0 12px rgba(27,80,204,.03) }
}
.term-scan {
  position:absolute;left:0;right:0;height:2px;
  background:linear-gradient(90deg,transparent 0%,rgba(27,80,204,.08) 20%,rgba(27,80,204,.4) 50%,rgba(10,122,154,.5) 65%,rgba(27,80,204,.08) 85%,transparent 100%);
  animation:scanDown 2.4s cubic-bezier(.4,0,.6,1) infinite;
  pointer-events:none;z-index:2;
}
@keyframes scanDown {
  0%   { top:0%;opacity:0 }
  8%   { opacity:1 }
  92%  { opacity:1 }
  100% { top:100%;opacity:0 }
}

/* term-hd 加 display:flex */
.term-hd { display:flex;align-items:center; }

/* ── Info form ── */
.info-form { padding:18px; }
.info-form-grid { display:grid;grid-template-columns:1fr 1fr;gap:14px 18px; }
.if-group      { display:flex;flex-direction:column;gap:6px; }
.if-group-full { grid-column:1 / -1; }
.if-label { font-size:12px;font-weight:600;color:var(--plat); }
.if-req   { color:var(--danger);margin-left:2px; }
.if-input {
  padding:10px 12px;border:1px solid var(--border2);
  font-size:13px;
  color:var(--white);background:var(--raised);
  transition:border-color .2s;outline:none;
  font-family:inherit;
}
.if-input:focus { border-color:var(--accentB); }
.if-input::placeholder { color:var(--muted); }
.if-select {
  padding:10px 12px;border:1px solid var(--border2);
  font-size:13px;
  color:var(--white);background:var(--raised);
  cursor:pointer;outline:none;transition:border-color .2s;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235A6E90' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;
  padding-right:32px;
  font-family:inherit;
}
.if-select:focus { border-color:var(--accentB); }
.if-select option { background:var(--raised);color:var(--white); }
.if-toggle-row { display:flex;gap:8px; }
.if-toggle {
  flex:1;padding:9px 0;font-size:12px;font-weight:700;
  border:1px solid var(--border2);background:var(--raised);
  color:var(--silver);cursor:pointer;transition:all .2s;
  font-family:inherit;
}
.if-toggle.active-yes { background:rgba(12,184,122,0.08);border-color:rgba(12,184,122,0.4);color:var(--success); }
.if-toggle.active-no  { background:rgba(217,48,48,0.06);border-color:rgba(217,48,48,0.4);color:var(--danger); }
.if-asset-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:12px; }
.if-asset {
  border:1px solid var(--border2);
  padding:16px 8px;text-align:center;cursor:pointer;
  background:var(--raised);transition:all .2s;
  display:flex;flex-direction:column;align-items:center;gap:8px;
}
.if-asset:hover   { border-color:var(--accentB);background:var(--glow); }
.if-asset.selected { border-color:var(--accentB);background:var(--glow); }
.ia-btn { display:flex;flex-direction:column;align-items:center;gap:6px;width:100%; }
.ia-label { font-size:11px;color:var(--silver);font-weight:600;line-height:1.3; }
.ia-check {
  width:14px;height:14px;flex-shrink:0;
  border:1.5px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  transition:border-color .15s, background .15s;
}
.ia-check::after {
  content:'';display:none;
  width:7px;height:4px;
  border-left:1.5px solid #fff;border-bottom:1.5px solid #fff;
  transform:rotate(-45deg) translateY(-1px);
}
.if-asset.selected .ia-check {
  border-color:var(--accentB);background:var(--accentB);
}
.if-asset.selected .ia-check::after { display:block; }

/* 社保月数容器 */
.social-months-wrap { margin-top:8px; }

/* 房产子选项 */
.house-sub {
  margin-top:8px;padding:10px 12px;
  background:var(--raised);border:1px solid var(--border);
}

/* ── Pay modal ── */
.pay-overlay {
  display:none;position:fixed;inset:0;
  background:rgba(0,0,0,0.78);z-index:2000;
  align-items:center;justify-content:center;
}
.pay-overlay.show { display:flex; }
.pay-modal {
  background:var(--surface);border:1px solid var(--border);
  padding:36px 28px 28px;
  max-width:360px;width:92%;text-align:center;
  box-shadow:0 32px 96px rgba(0,0,0,0.6);position:relative;
  animation:fadeUp .4s ease;
}
.pay-inner { position:relative; }
.pay-close {
  position:absolute;top:14px;right:14px;
  background:none;border:none;font-size:20px;
  color:var(--silver);cursor:pointer;line-height:1;
  width:32px;height:32px;
  display:flex;align-items:center;justify-content:center;
  transition:color .2s;
}
.pay-close:hover { color:var(--white); }
.pay-title { font-size:17px;font-weight:700;color:var(--white);margin-bottom:4px; }
.pay-sub   { font-size:12px;color:var(--silver);margin-bottom:18px; }
.pay-btn-row { display:flex;gap:12px;margin:18px 0 12px; }
.pay-btn {
  flex:1;border:none;
  padding:15px 0;font-size:14px;font-weight:800;
  cursor:pointer;transition:all .2s;letter-spacing:0.5px;
  font-family:inherit;
}
.pay-btn:hover  { transform:translateY(-1px); }
.pay-btn:active { transform:none; }
.pay-btn-wechat { background:#07c160;color:#fff; }
.pay-btn-alipay { background:#1677ff;color:#fff; }

/* ── QR overlay ── */
.qr-overlay {
  display:none;position:fixed;inset:0;
  background:rgba(0,0,0,0.72);z-index:9999;
  align-items:center;justify-content:center;
  overflow:hidden;padding:16px;box-sizing:border-box;
  -webkit-overflow-scrolling:touch;
}
.qr-overlay.show { display:flex; }
.qr-modal {
  background:var(--surface);border:1px solid var(--border);
  padding:28px 22px 22px;
  max-width:320px;width:90%;text-align:center;
  box-shadow:0 24px 80px rgba(0,0,0,0.5);position:relative;
  animation:fadeUp .4s ease;
  box-sizing:border-box;
}
.qr-modal img {
  width:100%;max-width:200px;height:auto;display:block;margin:16px auto;
}
.qr-close {
  position:absolute;top:12px;right:12px;
  background:none;border:none;font-size:18px;
  color:var(--silver);cursor:pointer;
  width:28px;height:28px;
  display:flex;align-items:center;justify-content:center;
}
.qr-close:hover { color:var(--white); }

/* ── Lead modal (opt-in 咨询索要) ── */
.lead-input {
  width:100%;box-sizing:border-box;
  background:var(--raised);border:1px solid var(--border);
  color:var(--white);font-size:16px;
  padding:14px 12px;margin:14px 0 10px;
  font-family:inherit;letter-spacing:1px;
  text-align:center;
  outline:none;transition:border-color .2s;
}
.lead-input:focus { border-color:var(--accentB); }
.lead-privacy {
  font-size:12px;color:var(--silver);line-height:1.9;
  text-align:left;margin:6px 0 16px;
  padding:10px 12px;background:rgba(255,255,255,0.03);
  border-left:2px solid var(--accentB);
}
.lead-submit-btn {
  width:100%;background:var(--accentB);color:#fff;
  border:none;padding:14px 0;font-size:14px;font-weight:700;
  cursor:pointer;font-family:inherit;letter-spacing:0.5px;
  margin-bottom:8px;transition:transform .15s;
}
.lead-submit-btn:hover  { transform:translateY(-1px); }
.lead-submit-btn:active { transform:none; }
.lead-submit-btn:disabled {
  opacity:0.5;cursor:not-allowed;transform:none;
}
.lead-skip-btn {
  width:100%;background:none;
  border:1px solid var(--border);
  color:var(--silver);padding:11px 0;font-size:13px;
  cursor:pointer;font-family:inherit;transition:color .15s,border-color .15s;
}
.lead-skip-btn:hover { color:var(--white);border-color:var(--silver); }
.lead-msg {
  font-size:13px;color:#0CB87A;
  margin:8px 0 12px;text-align:center;
  display:none;
}
.lead-msg.show { display:block; }
.lead-msg.error { color:#ff6b6b; }

/* ── Match header ── */
.match-header {
  background:var(--raised);border:1px solid var(--border);
  padding:22px;margin-bottom:16px;
  display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  position:relative;overflow:hidden;
}
.match-header::after {
  content:'';position:absolute;top:0;right:0;
  width:200px;height:100%;
  background:radial-gradient(ellipse at right center,var(--glow),transparent 70%);
  pointer-events:none;
}
.mh-left { flex:1;min-width:0; }
.mh-eyebrow {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:10px;color:var(--muted);letter-spacing:2.5px;
  text-transform:uppercase;margin-bottom:6px;
}
.mh-title { font-size:20px;font-weight:800;color:var(--white);margin-bottom:4px;letter-spacing:0.5px; }
.mh-sub   { font-size:12px;color:var(--silver); }
.mh-count {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:40px;font-weight:800;color:var(--accentB);
  text-align:center;line-height:1;
}
.mh-count-label {
  font-size:10px;color:var(--muted);
  text-align:center;margin-top:4px;letter-spacing:0.5px;
}

/* ── Products grid ── */
.products-grid { display:grid;grid-template-columns:1fr 1fr;gap:12px; }

/* ── Credit card installment tips ── */
.cc-tips-wrap {
  margin-top:12px;
  border:1px solid var(--border);
  padding:12px 14px;
  background:var(--raised);
}
.cc-tips-hd {
  display:flex;align-items:center;gap:6px;
  font-size:11px;color:var(--silver);
  font-weight:600;margin-bottom:10px;
}
.cc-tips-list {
  display:flex;flex-wrap:wrap;gap:7px;margin-bottom:8px;
}
.cc-tip-item {
  font-size:10px;color:var(--plat);
  background:var(--card);border:1px solid var(--border);
  padding:3px 9px;letter-spacing:.02em;
}
.cc-tips-sub {
  font-size:10px;color:var(--muted);line-height:1.5;
}

/* ── Gap visualization ── */
.gap-section { margin-top:12px; }
.gap-hd { font-size:11px;font-weight:700;color:var(--silver);letter-spacing:.06em;margin-bottom:8px; }
.gap-item { background:var(--raised);border:1px solid var(--border);padding:10px 12px;margin-bottom:6px; }
.gap-top { display:flex;justify-content:space-between;align-items:center;margin-bottom:6px; }
.gap-bank { font-size:12px;font-weight:600;color:var(--plat); }
.gap-rate { font-size:11px;color:var(--muted); }
.gap-issues { display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px; }
.gap-tag { font-size:10px;color:var(--warn);background:rgba(217,128,0,.1);border:1px solid rgba(217,128,0,.3);padding:2px 7px; }
.gap-fix { display:flex;align-items:center;gap:5px;font-size:11px;color:var(--silver);line-height:1.5; }

/* Product card */
.product-card {
  background:var(--surface);border:1px solid var(--border);
  padding:16px;
  transition:all .3s ease;
  cursor:default;position:relative;overflow:hidden;
}
.product-card::before {
  content:'';position:absolute;left:0;top:16px;bottom:16px;
  width:3px;background:var(--accentB);
  opacity:0;transition:all .3s ease;transform:scaleY(0.6);
}
.product-card:hover {
  border-color:var(--border2);
  background:var(--raised);
}
.product-card:hover::before { opacity:1;transform:scaleY(1); }

.pc-top { display:flex;align-items:flex-start;gap:12px;margin-bottom:12px; }
.pc-bank-icon {
  width:40px;height:40px;
  background:var(--raised);border:1px solid var(--border2);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:800;color:var(--accentB);
}
.pc-info { flex:1;min-width:0; }
.pc-name { font-size:13px;font-weight:800;color:var(--white); }
.pc-bank { font-size:13px;font-weight:800;color:var(--white); }
.pc-product { font-size:11px;color:var(--silver);margin-top:2px; }
.pc-rate {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:20px;font-weight:800;color:var(--accentB);
  text-align:right;flex-shrink:0;white-space:nowrap;
}
.pc-amount {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:13px;font-weight:600;color:var(--plat);
}
.pc-prob { display:flex;align-items:center;gap:8px;margin-bottom:12px; }
.pc-prob-bar { flex:1;height:5px;background:var(--border);overflow:hidden; }
.pc-prob-fill { height:100%; }
.pc-prob-val { font-size:12px;font-weight:800;color:var(--white);flex-shrink:0;width:36px;text-align:right; }
.pc-tags { display:flex;gap:4px;flex-wrap:wrap;margin-bottom:12px; }
.pc-tag {
  font-size:9px;padding:2px 8px;
  background:var(--glow);color:var(--accentB);
  border:1px solid rgba(27,80,204,0.2);
  font-weight:700;letter-spacing:0.3px;
}
.pc-reason {
  font-size:12px;color:var(--silver);line-height:1.6;
  border-top:1px solid var(--border);padding-top:12px;
  cursor:pointer;display:flex;align-items:flex-start;
  justify-content:space-between;gap:8px;
}
.pc-reason-text { flex:1; }
.pc-reason-toggle {
  font-size:10px;color:var(--muted);flex-shrink:0;margin-top:2px;
  user-select:none;transition:transform .25s;
}
.pc-reason-toggle.open { transform:rotate(180deg); }
.pc-reason-detail {
  font-size:11px;color:var(--silver);line-height:1.7;
  margin-top:8px;padding-top:8px;
  border-top:1px dashed var(--border2);display:none;
}
.pc-reason-detail.show { display:block; }
.badge-ok   { background:rgba(12,184,122,0.1);color:var(--success);padding:2px 8px;font-size:10px;font-weight:700; }
.badge-warn { background:rgba(217,128,0,0.1);color:var(--warn);padding:2px 8px;font-size:10px;font-weight:700; }

/* ── Footer ── */
footer {
  background:var(--base);padding:32px 5vw 24px;
  border-top:1px solid var(--border);text-align:center;
}
.footer-logo {
  font-family:'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  font-size:15px;font-weight:700;color:var(--white);
  letter-spacing:1.5px;margin-bottom:12px;
}
.footer-logo em { color:var(--accentB);font-style:normal; }
.footer-disc {
  font-size:11px;color:var(--muted);
  line-height:1.65;max-width:520px;margin:0 auto;
}
.footer-disc .fd-line { margin:0 0 4px; }
.footer-disc .fd-fade { color:var(--faint); }
.footer-disc .fd-meta {
  margin-top:10px;font-size:10px;color:var(--faint);line-height:1.7;
}
.footer-disc .fd-meta a { color:inherit; }

/* ═══════════════════════════════════════════════════════
   新增组件
   ═══════════════════════════════════════════════════════ */

/* ── CTA & restart buttons ── */
.conv-cta {
  background:linear-gradient(140deg, #1240AA, #0D2E80);
  border:1px solid rgba(27,80,204,0.3);
  padding:20px 18px;margin-bottom:12px;text-align:center;
}
.conv-cta-sub {
  font-size:13px;color:rgba(255,255,255,0.88);margin-bottom:14px;line-height:1.7;
}
.conv-cta-badge {
  display:inline-block;
  background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.25);
  padding:3px 12px;font-size:10px;color:rgba(255,255,255,0.9);
  letter-spacing:.06em;margin-bottom:14px;
  font-family:'SF Mono',monospace;
}
.conv-btns { display:flex;gap:10px;justify-content:center;margin-bottom:10px; }
.conv-btn-p {
  background:#fff;color:#1240AA;border:none;
  padding:13px 0;font-size:13px;font-weight:700;cursor:pointer;
  flex:1;max-width:180px;letter-spacing:.04em;
  font-family:inherit;transition:opacity .15s;
}
.conv-btn-p:active { opacity:.85; }
.conv-btn-s {
  background:rgba(255,255,255,0.1);color:#fff;
  border:1px solid rgba(255,255,255,0.3);
  padding:13px 0;font-size:13px;font-weight:600;cursor:pointer;
  flex:1;max-width:180px;font-family:inherit;transition:all .15s;
}
.conv-btn-s:hover { background:rgba(255,255,255,0.2); }
.conv-proof { font-size:10px;color:rgba(255,255,255,0.55);letter-spacing:.04em; }
.restart-btn {
  background:none;border:1px solid var(--border2);
  padding:9px 18px;font-size:12px;color:var(--silver);
  cursor:pointer;font-family:inherit;transition:all .2s;
}
.restart-btn:hover { border-color:var(--accentB);color:var(--accentB); }

/* ── CTA & restart buttons ── */
.conv-cta {
  background:linear-gradient(140deg, #1240AA, #0D2E80);
  border:1px solid rgba(27,80,204,0.3);
  padding:20px 18px;margin-bottom:12px;text-align:center;
}
.conv-cta-sub {
  font-size:13px;color:rgba(255,255,255,0.88);margin-bottom:14px;line-height:1.7;
}
.conv-cta-badge {
  display:inline-block;
  background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.25);
  padding:3px 12px;font-size:10px;color:rgba(255,255,255,0.9);
  letter-spacing:.06em;margin-bottom:14px;
  font-family:'SF Mono',monospace;
}
.conv-btns { display:flex;gap:10px;justify-content:center;margin-bottom:10px; }
.conv-btn-p {
  background:#fff;color:#1240AA;border:none;
  padding:13px 0;font-size:13px;font-weight:700;cursor:pointer;
  flex:1;max-width:180px;letter-spacing:.04em;
  font-family:inherit;transition:opacity .15s;
}
.conv-btn-p:active { opacity:.85; }
.conv-btn-s {
  background:rgba(255,255,255,0.1);color:#fff;
  border:1px solid rgba(255,255,255,0.3);
  padding:13px 0;font-size:13px;font-weight:600;cursor:pointer;
  flex:1;max-width:180px;font-family:inherit;transition:all .15s;
}
.conv-btn-s:hover { background:rgba(255,255,255,0.2); }
.conv-proof { font-size:10px;color:rgba(255,255,255,0.55);letter-spacing:.04em; }
.restart-btn {
  background:none;border:1px solid var(--border2);
  padding:9px 18px;font-size:12px;color:var(--silver);
  cursor:pointer;font-family:inherit;transition:all .2s;
}
.restart-btn:hover { border-color:var(--accentB);color:var(--accentB); }

/* ── Query record grid ── */
.query-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1px;background:var(--border);
}
.qi-card {
  background:var(--surface);
  padding:10px 10px 8px;
  display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:3px;
}
.qi-head {
  display:flex;align-items:center;gap:6px;
  margin-bottom:4px;
  flex-wrap:wrap;justify-content:center;
}
.qi-type {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;
}
.qi-period {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--accentB);
  background:rgba(27,80,204,0.1);
  border:1px solid rgba(27,80,204,0.2);
  padding:1px 6px;letter-spacing:.06em;
}
.qi-num {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:22px;font-weight:700;line-height:1;
}
.qi-unit {
  font-size:10px;color:var(--muted);letter-spacing:.04em;margin-bottom:8px;
}
.qi-bar-track {
  width:100%;height:2px;background:var(--border);overflow:hidden;margin-bottom:6px;
}
.qi-bar-fill { height:100%;transition:width .6s ease; }
.qi-status {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;letter-spacing:.1em;text-transform:uppercase;
}

/* ── Query record grid ── */
.query-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1px;background:var(--border);
}
.qi-card {
  background:var(--surface);
  padding:10px 10px 8px;
  display:flex;flex-direction:column;align-items:center;
  text-align:center;gap:3px;
}
.qi-head {
  display:flex;align-items:center;gap:6px;
  margin-bottom:4px;
  flex-wrap:wrap;justify-content:center;
}
.qi-type {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase;
}
.qi-period {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--accentB);
  background:rgba(27,80,204,0.1);
  border:1px solid rgba(27,80,204,0.2);
  padding:1px 6px;letter-spacing:.06em;
}
.qi-num {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:22px;font-weight:700;line-height:1;
}
.qi-unit {
  font-size:10px;color:var(--muted);letter-spacing:.04em;margin-bottom:8px;
}
.qi-bar-track {
  width:100%;height:2px;background:var(--border);overflow:hidden;margin-bottom:6px;
}
.qi-bar-fill { height:100%;transition:width .6s ease; }
.qi-status {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;letter-spacing:.1em;text-transform:uppercase;
}

/* ── Warn box ── */
.warn-box { margin-bottom:12px;display:flex;flex-direction:column;gap:6px; }
.warn-item {
  background:rgba(231,76,60,0.05);
  border:1px solid rgba(231,76,60,0.18);
  border-left:2px solid var(--danger);
  padding:9px 12px;font-size:12px;color:var(--plat);line-height:1.6;
}
.warn-item strong { color:var(--danger); }

/* ── Problem list (当前核心问题) ── */
.prob-item {
  display:flex;gap:12px;align-items:flex-start;
  padding:10px 0;border-bottom:1px solid var(--border);
}
.prob-item:last-child { border-bottom:none; }
.prob-n {
  flex-shrink:0;width:20px;height:20px;
  border:1px solid var(--accentB);
  display:flex;align-items:center;justify-content:center;
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:10px;font-weight:600;color:var(--accentB);
}
.prob-name { font-size:12px;color:var(--white);line-height:1.5;margin-bottom:3px; }
.prob-name strong { color:var(--white); }
.prob-desc { font-size:11px;color:var(--muted);letter-spacing:.02em; }

/* ── Paywall (新版卡片列表内嵌) ── */
.pw-wrap { overflow:hidden; grid-column:1/-1; }
.pw-preview {
  position:relative;
  padding:0;
  pointer-events:none;
  user-select:none;
  /* 细网格底纹 */
  background-image:
    linear-gradient(rgba(27,80,204,0.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(27,80,204,0.05) 1px, transparent 1px);
  background-size:28px 28px;
}
/* 扫描光束 */
.pw-preview::before {
  content:'';position:absolute;
  top:0;left:-80%;width:40%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(27,80,204,0.06),transparent);
  animation:pwBeam 3.5s 0.5s ease-in-out infinite;
  pointer-events:none;z-index:1;
}
@keyframes pwBeam { 0%{left:-40%} 100%{left:120%} }

/* 锁图标遮罩层 */
.pw-lock-overlay {
  position:absolute;inset:0;
  display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:6px;z-index:2;pointer-events:none;
}
.pw-lock-ring {
  width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(27,80,204,0.35);
  background:rgba(27,80,204,0.08);
  display:flex;align-items:center;justify-content:center;
  color:var(--accentB);
  animation:lockPulse 2.4s ease-in-out infinite;
}
@keyframes lockPulse {
  0%,100%{box-shadow:0 0 0 0 rgba(27,80,204,0.2);}
  50%{box-shadow:0 0 0 8px rgba(27,80,204,0);}
}
.pw-lock-lbl {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:9px;color:var(--accentB);letter-spacing:.14em;opacity:.7;
}

.pw-ghost {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:16px 18px;
  border-bottom:1px solid rgba(27,80,204,0.08);
  filter:blur(3px);
  opacity:0.7;
}
.pw-ghost-l { display:flex;flex-direction:column;gap:8px; }
.pw-ghost-r { display:flex;flex-direction:column;align-items:flex-end;gap:8px; }

/* shimmer 动画 */
@keyframes pwShimmer {
  0%  { background-position:200% 0; }
  100%{ background-position:-200% 0; }
}
.pw-ghost-name {
  width:130px;height:11px;border-radius:1px;
  background:linear-gradient(90deg,rgba(27,80,204,0.15) 25%,rgba(27,80,204,0.28) 50%,rgba(27,80,204,0.15) 75%);
  background-size:200% 100%;
  animation:pwShimmer 2s infinite;
}
.pw-ghost-sub {
  width:88px;height:9px;border-radius:1px;
  background:linear-gradient(90deg,rgba(27,80,204,0.07) 25%,rgba(27,80,204,0.14) 50%,rgba(27,80,204,0.07) 75%);
  background-size:200% 100%;
  animation:pwShimmer 2s .3s infinite;
}
.pw-ghost-pct {
  width:50px;height:13px;border-radius:1px;
  background:linear-gradient(90deg,rgba(27,80,204,0.18) 25%,rgba(27,80,204,0.32) 50%,rgba(27,80,204,0.18) 75%);
  background-size:200% 100%;
  animation:pwShimmer 2s .15s infinite;
}
.pw-ghost-rate {
  width:64px;height:9px;border-radius:1px;
  background:linear-gradient(90deg,rgba(27,80,204,0.07) 25%,rgba(27,80,204,0.13) 50%,rgba(27,80,204,0.07) 75%);
  background-size:200% 100%;
  animation:pwShimmer 2s .45s infinite;
}

.pw-fade {
  position:absolute;
  bottom:0;left:0;right:0;
  height:100px;
  background:linear-gradient(to bottom,transparent,rgba(240,244,252,0.96));
  pointer-events:none;z-index:3;
}
.pw-hint {
  text-align:center;
  font-size:13px;
  color:var(--silver);
  padding:14px 16px 10px;
  line-height:1.6;
}
.pw-btn {
  display:block;
  width:100%;
  padding:17px 16px;
  background:var(--accentB);
  color:#fff;
  font-size:15px;
  font-weight:700;
  letter-spacing:.08em;
  border:none;
  cursor:pointer;
  font-family:inherit;
  transition:all .2s;
  position:relative;overflow:hidden;
}
.pw-btn::after {
  content:'';position:absolute;
  top:0;left:-100%;width:60%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,0.12),transparent);
  animation:pwBtnSheen 2.5s 1s ease-in-out infinite;
}
@keyframes pwBtnSheen { 0%{left:-60%} 100%{left:130%} }
.pw-btn:active { opacity:0.85; }

/* ── ID Info Grid (2-col personal info) ── */
.id-info-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  border-bottom:1px solid var(--border);
}
.iib-item {
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;
  border-right:1px solid var(--border);
}
.iib-item:nth-child(even) { border-right:none; }
.iib-item:nth-child(3), .iib-item:nth-child(4) { border-top:1px solid var(--border); }

/* ── Score card stats ── */
.score-stats { padding:12px 20px 0;border-top:1px solid var(--border);margin-top:8px; }
.score-stat-row { display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid var(--border); }
.score-stat-row:last-child { border-bottom:none; }
.score-stat-lbl { font-size:12px;color:var(--silver); }
.score-stat-val { font-size:13px;font-weight:600;color:var(--white); }
.score-stat-val.green { color:var(--success); }
.cs-unlock { margin:12px;padding:12px;background:var(--glow);border:1px solid rgba(27,80,204,0.25);cursor:pointer; }
.cs-unlock-txt { font-size:12px;color:var(--silver);margin-bottom:4px; }
.cs-unlock-btn { font-size:12px;color:var(--accentB);font-weight:600; }
.cs-dims { padding:0 0 4px;display:grid;grid-template-columns:1fr 1fr; }
.cs-dim {
  padding:8px 14px;
  border-bottom:1px solid var(--border);border-right:1px solid var(--border);
}
.cs-dim:nth-child(2n){border-right:none;}
.cs-dim:nth-last-child(-n+2){border-bottom:none;}
.cs-dim:last-child:nth-child(odd){grid-column:1/-1;border-right:none;}
.cs-dim-name {
  font-size:11px;color:var(--silver);margin-bottom:6px;
}
.cs-dim-row {
  display:flex;align-items:center;gap:10px;
}
.cs-dim-bar {
  flex:1;height:3px;background:var(--border);overflow:hidden;
}
.cs-dim-fill { height:100%;transition:width .6s ease; }
.cs-dim-val {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:11px;font-weight:500;flex-shrink:0;width:28px;text-align:right;
}

/* ── Mobile / WeChat ── */
@media(max-width:640px){
  /* 微信内置浏览器顶部有约44px系统栏，header需留出空间 */
  header { height:50px; padding:0 16px; }
  main   { padding-top:50px; }
  .container { padding:20px 12px 60px; }

  /* Logo简化：隐藏副标题 */
  .logo-sep, .logo-sub { display:none; }
  .logo-text { font-size:14px; }
  .h-icp { display:none; }

  /* 页标题紧凑 */
  .pg-h1  { font-size:18px; }
  .pg-sub { font-size:11px; }

  /* Tab：可横滑 */
  .tab-nav { overflow-x:auto; -webkit-overflow-scrolling:touch; white-space:nowrap; flex-wrap:nowrap; }
  .tab-btn { flex-shrink:0; padding:10px 14px; }

  /* 指标格：2列 */
  .metrics-grid { grid-template-columns:repeat(2,1fr); }
  .mval { font-size:18px; }

  /* 评分+风险：单列（评分在下） */
  .two-col { grid-template-columns:1fr; }
  .score-card { order:2; }
  .risk-card  { order:1; }

  /* 产品表：隐藏列 → 改为卡片式 */
  .ptable thead { display:none; }
  .ptable, .ptable tbody, .ptable tr, .ptable td { display:block; width:100%; }
  .ptable tr {
    background:var(--raised);
    border:1px solid var(--border);
    margin-bottom:8px;
    padding:12px;
    position:relative;
  }
  .ptable tr:last-child { margin-bottom:0; }
  .ptable td { padding:3px 0; border:none; font-size:11px; }
  .ptable td:nth-child(3) { margin-top:8px; }
  .mb-wrap { margin-top:4px; }
  .ptable td:nth-child(2) { display:none; }

  /* 卡片内边距收紧 */
  .cbody { padding:16px 14px; }
  .card-bar { padding:10px 14px; }

  /* 按钮高度增加，确保触摸友好 */
  .btn-cta, .btn-unlock { min-height:48px; font-size:14px; }

  /* 路径步骤文字 */
  .path-title { font-size:12px; }
  .path-desc  { font-size:11px; }

  /* 上传区收紧 */
  .upload-zone { padding:30px 16px; }
  .uz-specs { gap:12px; }

  /* 关闭扫描线（省电） */
  .scanline { display:none; }

  /* 加载居中 */
  .loading-wrap { padding:36px 16px; }

  /* id-info-bar 移动端 */
  .id-info-bar { grid-template-columns:1fr 1fr; gap:8px 12px; padding:12px 14px; }
  .iib-divider { display:none; }
  .iib-item { padding:8px 12px; border-bottom:1px solid var(--border); }
  .iib-item:first-child { padding-left:12px; }
  .iib-item:last-child  { padding-right:12px; }
  .iib-item:nth-last-child(-n+2) { border-bottom:none; }

  /* 产品网格单列 */
  .products-grid { grid-template-columns:1fr; }

  /* 匹配头部 */
  .match-header { flex-direction:column; gap:12px; }

  /* 信息表单 */
  .info-form-grid { grid-template-columns:1fr; }
  .if-asset-grid  { grid-template-columns:1fr 1fr; }

  /* 分析区块 */
  .as-header { padding:10px 12px; }
  .as-body   { padding:12px; }
  .adv-sub-header { padding:7px 12px; }
  .adv-sub-body   { padding:8px 12px; }

  /* 风险 banner */
  .risk-banner { padding:12px; gap:12px; margin-bottom:12px; }
  .rb-icon { width:32px; height:32px; }
  .rb-level { font-size:14px; }
  .rb-desc  { font-size:11px; }

  /* 转化区块 */
  .conv-top { padding:14px 12px 12px; }
  .conv-headline { font-size:15px; }
  .conv-col-rate { font-size:18px; }
  .conv-compare  { grid-template-columns:1fr 18px 1fr; gap:4px; }
  .conv-sec { padding:12px; }

  /* 评分卡 */
  .cs-wrap  { padding:12px; }
  .cs-gauge { width:72px; height:72px; }
  .cs-gauge svg { width:72px; height:72px; }
  .cs-num-val { font-size:18px; }

  /* 爆查 */
  .br-meter-val { font-size:16px; }

  /* 损失/提升 */
  .loss-cols { grid-template-columns:1fr; }
  .lift-compare { grid-template-columns:1fr 1fr; }
}

/* iOS 安全区适配（刘海屏/底部横条） */
@supports(padding-bottom: env(safe-area-inset-bottom)){
  .container { padding-bottom:calc(60px + env(safe-area-inset-bottom)); }
}



/* ── Header clock ── */
.h-clock {
  font-family:'SF Mono','Menlo','Consolas','Courier New',monospace;
  font-size:10px;
  color:var(--muted);
  letter-spacing:.08em;
  display:none;
}
@media(min-width:600px){
  .h-clock { display:block; }
}

/* ── Background dot grid ── */
body::before {
  content:'';
  position:fixed;
  inset:0;
  background-image:radial-gradient(circle, rgba(27,80,204,0.08) 1px, transparent 1px);
  background-size:28px 28px;
  pointer-events:none;
  z-index:0;
}
main, header { position:relative; z-index:1; }

/* ── Number counter animation ── */
@keyframes countUp {
  from { opacity:0; transform:translateY(4px); }
  to   { opacity:1; transform:translateY(0); }
}
.mval.updated {
  animation:countUp .4s ease both;
}

/* ── Upload zone scan beam ── */
.upload-zone::after {
  content:'';
  position:absolute;
  left:0;right:0;top:-2px;
  height:2px;
  background:linear-gradient(90deg, transparent 0%, var(--accentB) 50%, transparent 100%);
  opacity:0;
  animation:scanBeam 3s ease-in-out infinite;
}
@keyframes scanBeam {
  0%   { top:-2px; opacity:0; }
  10%  { opacity:0.6; }
  90%  { opacity:0.6; }
  100% { top:100%; opacity:0; }
}

/* ── Card coordinate marks ── */
.pcard > .card-bar::after {
  content:attr(data-coord);
  font-family:'SF Mono',monospace;
  font-size:8px;
  color:var(--border2);
  letter-spacing:.06em;
  margin-left:auto;
  display:none;
}

/* ── Score tier animated underline ── */
.score-tier {
  position:relative;
}
.score-tier::after {
  content:'';
  position:absolute;
  bottom:-4px;left:50%;transform:translateX(-50%);
  width:0;height:1px;
  background:var(--accentB);
  animation:tierLine .8s .3s ease forwards;
}
@keyframes tierLine {
  to { width:40px; }
}

/* ── Risk bar gradient fill ── */
.bar-fill {
  background:linear-gradient(90deg, var(--accentB), var(--cyan));
  transition:width .8s cubic-bezier(.4,0,.2,1);
}

/* ── Live pulse on RISK badge ── */
.br-safe   { color:var(--success); }
.br-warn   { color:var(--warn); }
.br-danger { color:var(--danger); }
.br-critical { color:var(--danger); font-weight:700; }
.card-status .dot {
  display:inline-block;
  width:6px;height:6px;border-radius:50%;
  background:var(--success);
  margin-right:5px;
  animation:pulse 2s infinite;
}
@keyframes pulse {
  0%,100%{ opacity:1;transform:scale(1); }
  50%{ opacity:.4;transform:scale(.7); }
}

/* ── 差异化英雄区 ── */
.hero-wrap { padding: 16px 0 8px; }
.hero-eyebrow { font-size: 9px; letter-spacing: .14em; text-transform: uppercase; margin-bottom: 8px; font-family: 'SF Mono', monospace; }
.hero-title { font-size: 20px; font-weight: 700; color: var(--white); margin-bottom: 6px; line-height: 1.3; }
.hero-sub { font-size: 12px; margin-bottom: 14px; }
.hero-metrics { display: grid; gap: 8px; margin-bottom: 12px; }
.hero-metrics.cols-3 { grid-template-columns: 1fr 1fr 1fr; }
.hero-metrics.cols-2 { grid-template-columns: 1fr 1fr; }
.hero-metric { border-radius: 5px; padding: 10px; text-align: center; }
.hero-metric-label { font-size: 10px; color: #6b7280; margin-bottom: 3px; }
.hero-metric-val { font-size: 17px; font-weight: 700; }
.hero-metric-sub { font-size: 10px; margin-top: 2px; color: #9ca3af; }
.hero-note { border-radius: 5px; padding: 10px 13px; font-size: 12px; }
/* A级 绿色 */
.hero-a .hero-eyebrow { color: #16a34a; }
.hero-a .hero-sub { color: #15803d; }
.hero-a .hero-metric { background: #f0fdf4; }
.hero-a .hero-metric-val { color: #16a34a; }
.hero-a .hero-note { background: #f0fdf4; border: 1px solid rgba(22,163,74,.25); color: #15803d; }
/* B级 蓝色 */
.hero-b .hero-eyebrow { color: #1B50CC; }
.hero-b .hero-sub { color: #2D4468; }
.hero-b .hero-metric { background: #EBF0FF; }
.hero-b .hero-metric-val { color: #0F2742; }
.hero-b .hero-metric-val.gain { color: #16a34a; }
.hero-b .hero-note { background: #EBF0FF; border: 1px solid rgba(196,43,43,.25); color: #C42B2B; }
/* C级 琥珀色 */
.hero-c .hero-eyebrow { color: #B85C00; }
.hero-c .hero-sub { color: #92400e; }
.hero-c .hero-metric { background: #fffbeb; }
.hero-c .hero-metric-val { color: #B85C00; }
.hero-c .hero-metric-val.locked { color: rgba(13,150,104,.8); }
.hero-c .hero-note { background: #fffbeb; border: 1px solid rgba(184,92,0,.25); color: #92400e; }
/* D级 红色 */
.hero-d .hero-eyebrow { color: #C42B2B; }
.hero-d .hero-sub { color: #991b1b; }
.hero-d .hero-metric { background: #fef2f2; }
.hero-d .hero-metric-val { color: #C42B2B; }
.hero-d .hero-metric-val.milestone { color: #B85C00; }
.hero-d .hero-metric-val.recovery { color: rgba(13,150,104,.8); }
.hero-d .hero-note { background: #fef2f2; border: 1px solid rgba(196,43,43,.25); color: #991b1b; }

/* ── D级恢复路线图 ── */
.rehab-sec { margin-bottom: 16px; }
.rehab-timeline { display: flex; flex-direction: column; gap: 0; }
.rehab-step { display: flex; gap: 12px; }
.rehab-left { display: flex; flex-direction: column; align-items: center; flex-shrink: 0; width: 32px; }
.rehab-dot { width: 12px; height: 12px; border-radius: 50%; border: 2px solid; flex-shrink: 0; margin-top: 4px; }
.rehab-dot.now { border-color: #f87171; background: #f87171; }
.rehab-dot.m3  { border-color: #fbbf24; background: transparent; }
.rehab-dot.m6  { border-color: rgba(74,222,128,.5); background: transparent; }
.rehab-dot.m9  { border-color: #4ade80; background: transparent; }
.rehab-vline { flex: 1; width: 1px; background: var(--border); margin: 4px 0; min-height: 28px; }
.rehab-body { padding: 0 0 20px; flex: 1; }
.rehab-month { font-size: 10px; color: var(--muted); letter-spacing: .08em; margin-bottom: 3px; }
.rehab-task { font-size: 13px; font-weight: 600; color: var(--white); margin-bottom: 3px; }
.rehab-unlock { font-size: 11px; color: #9ca3af; }
.rehab-unlock.active { color: #4ade80; }

/* ── V2.0 风控引擎区块 增强版 ── */
#v2xaiWrap {
  background: linear-gradient(140deg, #EBF5FF 0%, #F0F4FC 60%, #EDF2FC 100%);
  border-color: rgba(27,80,204,.38);
  position: relative;
  overflow: hidden;
}
#v2xaiWrap::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 0%, rgba(27,80,204,.4) 40%, rgba(27,80,204,.6) 50%, rgba(27,80,204,.4) 60%, transparent 100%);
  pointer-events: none;
}
.v2hd {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 16px; padding-bottom: 14px;
  border-bottom: 1px solid rgba(27,80,204,.15);
}
.v2hd-icon {
  width: 40px; height: 40px; flex-shrink: 0;
  background: rgba(27,80,204,.1);
  border: 1px solid rgba(27,80,204,.3);
  border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
}
.v2hd-txt { flex: 1; min-width: 0; }
.v2hd-label {
  font-family: 'SF Mono', monospace;
  font-size: 9px; letter-spacing: .16em; text-transform: uppercase;
  color: rgba(27,80,204,0.7); margin-bottom: 3px;
}
.v2hd-name { font-size: 13px; font-weight: 700; color: var(--white); }
.v2hd-score { text-align: right; flex-shrink: 0; }
.v2hd-num {
  font-family: 'SF Mono', monospace;
  font-size: 34px; font-weight: 800; line-height: 1; letter-spacing: -.02em;
}
.v2hd-denom { font-size: 10px; color: var(--muted); letter-spacing: .06em; margin-top: 3px; }
.v2hd-badge {
  display: inline-block; margin-left: 6px; vertical-align: middle;
  font-size: 10px; font-weight: 700; letter-spacing: .12em;
  padding: 2px 7px; border-radius: 3px;
}
/* hero-note SVG icon 对齐 */
.hero-note-icon {
  display: inline-flex; align-items: center; vertical-align: middle; margin-right: 6px; flex-shrink: 0;
}

/* ── 查询明细折叠 ── */
.qd-wrap { border-radius: 12px; overflow: hidden; border: 1px solid var(--border2); margin-bottom: 12px; }
.qd-toggle { background: none; border: none; color: var(--accentB); font-size: 12px; cursor: pointer; padding: 0; }
.qd-body { padding: 0 16px 12px; }
.qd-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.qd-table th { color: var(--silver); font-weight: 400; padding: 8px 4px 4px; text-align: left; border-bottom: 1px solid var(--border2); }
.qd-table td { padding: 7px 4px; border-bottom: 1px solid var(--border2); color: var(--text); }
.qd-table tr:last-child td { border-bottom: none; }
.qd-inst { max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── PDF 下载按钮 ── */
.pdf-dl-btn { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 14px; background: var(--raised); border: 1px solid var(--border2); border-radius: 12px; color: var(--accentB); font-size: 14px; font-weight: 500; cursor: pointer; margin-top: 16px; box-sizing: border-box; }
.pdf-dl-btn:disabled { opacity: 0.5; cursor: not-allowed; }
