/* ============================================================
 * SOL 一级市场雷达 · 展示层样式（M1-3 深色盘面风）
 * 基线：design/M1-3-preview.html（甲方拍板视觉基线 v1）
 * §8 弹性原则 1：视觉常量（色板/间距/字号/圆角）全部集中在本 :root 变量区，
 *   调色/改间距只动这里；区块样式按「组件」分段（§8 原则 2：可独立增删调序）。
 * ============================================================ */
:root{
  /* ---- 色板（预览稿定稿；颜色语义全站唯一：看多绿/观望橙/风险红/中性灰） ---- */
  --bg:#0b0e14; --card:#131722; --card2:#0f1420; --line:#232b3b; --line2:#1a2130;
  --text:#dbe2ef; --muted:#8b95a7; --dim:#5b6678;
  --green:#22c55e; --green-bg:rgba(34,197,94,.13); --green-line:rgba(34,197,94,.4);
  --orange:#f59e0b; --orange-bg:rgba(245,158,11,.13); --orange-line:rgba(245,158,11,.4);
  --red:#ef4444; --red-bg:rgba(239,68,68,.12); --red-line:rgba(239,68,68,.4);
  --blue:#4c8dff; --blue-bg:rgba(76,141,255,.12); --blue-line:rgba(76,141,255,.4);
  --gray:#9aa4b5; --gray-bg:rgba(154,164,181,.12);
  --track:#1c2434;                      /* 信心分进度条底槽 */
  /* ---- 字体与字号 ---- */
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
  --fz-base:14px; --fz-h1:19px; --fz-h2:15px; --fz-small:13px; --fz-mini:12px;
  /* ---- 间距与圆角 ---- */
  --pad-card:14px 16px; --gap:10px; --radius:12px; --radius-s:8px;
  --wrap-max:1080px; --tap:40px;        /* 触控目标最小边长（§1） */
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{max-width:100%;overflow-x:hidden}   /* 390px 防横向滚动兜底（排版本身不超宽） */
body{background:var(--bg);color:var(--text);
  font:var(--fz-base)/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  font-variant-numeric:tabular-nums}
a{color:var(--blue);text-decoration:none}
.wrap{max-width:var(--wrap-max);margin:0 auto;padding:0 14px 40px}

/* ---- 组件：顶部导航（三页+心跳统一入口） ---- */
.topbar{position:sticky;top:0;z-index:9;background:rgba(11,14,20,.92);backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line2)}
.topbar-in{max-width:var(--wrap-max);margin:0 auto;padding:10px 14px;display:flex;
  align-items:center;gap:14px;flex-wrap:wrap}
.brand{font-weight:700;font-size:15px;letter-spacing:.5px;white-space:nowrap;color:var(--text)}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabbtn{background:var(--card);border:1px solid var(--line);color:var(--muted);
  padding:8px 14px;border-radius:var(--radius-s);cursor:pointer;font-size:13px;display:inline-block}
.tabbtn.active{background:var(--blue-bg);border-color:var(--blue);color:#bcd4ff}

/* ---- 组件：每页状态栏（标题+一句话功能说明+数据延迟） ---- */
.statusbar{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--gap);
  flex-wrap:wrap;padding:16px 2px 10px;border-bottom:1px solid var(--line2);margin-bottom:14px}
.statusbar h1{font-size:var(--fz-h1)}
.statusbar .desc{color:var(--muted);font-size:var(--fz-small);margin-top:2px}
.fresh{color:var(--dim);font-size:var(--fz-mini);white-space:nowrap}

/* ---- 组件：通用卡片 / chip ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:var(--pad-card);margin-bottom:12px}
.chip{display:inline-block;padding:2px 10px;border-radius:999px;font-size:var(--fz-mini);
  border:1px solid var(--line);color:var(--muted);background:var(--card2);cursor:pointer}
.chip.on{background:var(--blue-bg);border-color:var(--blue);color:#bcd4ff}
.chip.warn-on{background:var(--orange-bg);border-color:var(--orange-line);color:var(--orange)}
.sec-ttl{font-size:var(--fz-small);color:var(--muted);letter-spacing:1px;margin:20px 0 8px}

/* ---- 组件：结论词色块 / 信心分 ---- */
.verdict{display:inline-flex;align-items:center;justify-content:center;padding:6px 18px;
  border-radius:var(--radius-s);font-weight:700;font-size:16px;letter-spacing:2px;white-space:nowrap}
.v-green{background:var(--green-bg);color:var(--green);border:1px solid var(--green-line)}
.v-orange{background:var(--orange-bg);color:var(--orange);border:1px solid var(--orange-line)}
.v-red{background:var(--red-bg);color:var(--red);border:1px solid var(--red-line)}
.v-gray{background:var(--gray-bg);color:var(--gray);border:1px solid rgba(154,164,181,.35)}
.conf{display:flex;align-items:center;gap:var(--gap);min-width:200px;flex:1}
.conf b{font-size:26px;font-family:var(--mono)}
.conf .track,.eng .track{height:8px;background:var(--track);border-radius:99px;overflow:hidden}
.conf .track{flex:1}
.conf .track i,.eng .track i{display:block;height:100%;border-radius:99px}
.conf .lbl{font-size:var(--fz-mini);color:var(--dim)}

/* ---- 组件：代币图标 / 复制按钮（触控 ≥40px） ---- */
.tico{width:34px;height:34px;border-radius:50%;background:#233047;color:#cfe0ff;
  display:inline-flex;align-items:center;justify-content:center;font-weight:700;flex:none;overflow:hidden}
.tico img{width:100%;height:100%;object-fit:cover}
.copy{background:var(--card2);border:1px solid var(--line);color:var(--muted);border-radius:var(--radius-s);
  padding:7px 12px;cursor:pointer;font-size:var(--fz-mini);font-family:var(--mono);display:inline-flex;
  align-items:center;gap:4px}
.copy:hover{border-color:var(--blue);color:#bcd4ff}
.copy.copied{border-color:var(--green);color:var(--green)}
@media(hover:none){.copy{min-height:var(--tap);min-width:var(--tap)}}

/* ---- 组件：toast（合约已复制）与复制失败降级框（§5 不静默失败） ---- */
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);
  background:#1a2333;border:1px solid var(--green-line);color:var(--green);padding:10px 22px;
  border-radius:10px;font-size:14px;opacity:0;pointer-events:none;transition:all .25s;z-index:99;
  box-shadow:0 6px 24px rgba(0,0,0,.5)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#copyfb{position:fixed;inset:0;background:rgba(5,8,14,.72);z-index:100;display:none;
  align-items:center;justify-content:center;padding:20px}
#copyfb.show{display:flex}
#copyfb .box{background:var(--card);border:1px solid var(--line);border-radius:14px;
  padding:18px;max-width:520px;width:100%}
#copyfb .box p{color:var(--muted);font-size:13px;margin-bottom:10px}
#copyfb input{width:100%;font-family:var(--mono);font-size:13px;color:var(--text);
  background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:10px;word-break:break-all}
#copyfb button{margin-top:12px;width:100%;padding:11px;border:0;border-radius:8px;
  background:var(--blue);color:#fff;font-size:14px;cursor:pointer}

/* ---- 组件：终选页（数量纪律 chips / 决策卡 / 下榜留痕 / 空榜漏斗） ---- */
.rules-line{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.dcard{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}
.dcard.alert{border-color:var(--orange-line);box-shadow:0 0 0 1px var(--orange-line),0 0 18px rgba(245,158,11,.08)}
.dhead{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tname{font-weight:700;font-size:16px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tname .sym{color:var(--muted);font-weight:400;font-size:13px;margin-left:6px}
.listed{margin-left:auto;color:var(--dim);font-size:var(--fz-mini)}
.dmain{display:flex;align-items:center;gap:18px;margin:14px 0;flex-wrap:wrap}
.badge-alert{display:inline-block;background:var(--orange-bg);border:1px solid var(--orange-line);
  color:var(--orange);border-radius:var(--radius-s);padding:4px 10px;font-size:var(--fz-mini);margin-left:10px}
.five{font-family:var(--mono);font-size:13px;background:var(--card2);border:1px solid var(--line2);
  border-radius:var(--radius-s);padding:9px 12px;display:flex;gap:16px;flex-wrap:wrap;min-width:0}
.five span{white-space:nowrap}
.five .k{color:var(--dim);font-family:inherit}
.five .inv{color:var(--red)}
.five .t12{color:var(--blue)}
.why{margin-top:12px;display:grid;gap:5px}
.why p{color:var(--muted);font-size:var(--fz-small)}
.why b{color:var(--text)}
.drisk{margin-top:12px;background:var(--red-bg);border:1px solid var(--red-line);color:#ffb4b4;
  border-radius:var(--radius-s);padding:8px 12px;font-size:var(--fz-small)}
.offboard{background:var(--card2);border:1px dashed var(--line);border-radius:10px;
  padding:10px 14px;margin-top:16px;font-size:var(--fz-small);color:var(--muted)}
.offboard .ttl,.empty-box .ttl{color:var(--dim);font-size:var(--fz-mini);letter-spacing:1px;margin-bottom:6px}
.offboard p{padding:3px 0;border-bottom:1px dashed var(--line2)}
.offboard p:last-child{border-bottom:0}
.empty-box{background:var(--card2);border:1px solid var(--line2);border-radius:var(--radius);
  padding:26px;text-align:center;color:var(--muted)}
.funnel{margin-top:12px;font-size:12.5px;color:var(--dim);font-family:var(--mono);line-height:2;word-break:break-all}

/* ---- 组件：全库页（工具条/排序筛选 chips/倒计时/行卡） ---- */
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.toolbar .sep{width:1px;height:20px;background:var(--line)}
.cd{color:var(--dim);font-size:var(--fz-mini);margin-left:auto;white-space:nowrap}
.cd b{color:var(--muted);font-family:var(--mono)}
.prow{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:12px 14px;margin-bottom:10px;display:grid;
  grid-template-columns:minmax(215px,1.15fr) minmax(300px,1.6fr) minmax(170px,.9fr);
  gap:10px 16px;align-items:center;cursor:pointer;transition:border-color .15s}
.prow:hover{border-color:var(--blue)}
.pid{display:flex;align-items:center;gap:10px;min-width:0}
.pid .meta{min-width:0}
a.tname{color:var(--text)}
.pid .ca{font-family:var(--mono);font-size:11.5px;color:var(--dim);display:flex;
  align-items:center;gap:6px;margin-top:3px;flex-wrap:wrap}
.pid .ca .copy{padding:3px 8px;font-size:11px}
.metrics{display:grid;grid-template-columns:repeat(3,auto);gap:6px 18px;justify-content:start;min-width:0}
.m .k{font-size:11px;color:var(--dim);display:block}
.m .v{font-family:var(--mono);font-size:13px;white-space:nowrap}
.up{color:var(--green)} .dn{color:var(--red)} .flat{color:var(--dim)}
.eng{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:0}
.eng .row1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.eng .verdict{padding:3px 10px;font-size:12.5px;letter-spacing:1px;border-radius:6px}
.eng .track{height:6px}
.eng .confnum{font-size:11px;color:var(--dim)}
.rtag{display:inline-block;background:var(--red-bg);border:1px solid var(--red-line);color:var(--red);
  border-radius:6px;padding:1px 7px;font-size:11px}
.rtag.gray{background:var(--gray-bg);border-color:rgba(154,164,181,.3);color:var(--gray)}
.spark{width:92px;height:28px;flex:none}
.hottag{display:inline-block;background:var(--blue-bg);border:1px solid var(--blue-line);color:#9dbdff;
  border-radius:6px;padding:1px 6px;font-size:11px}

/* ---- 组件：币详情页（页头/结论卡/标签/K线/统计/风险） ---- */
.dhead-full{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.addr{font-family:var(--mono);font-size:var(--fz-mini);color:var(--muted);word-break:break-all;margin-top:8px}
.ext{background:var(--card2);border:1px solid var(--line);color:var(--blue);border-radius:var(--radius-s);
  padding:7px 12px;font-size:var(--fz-mini);cursor:pointer;display:inline-block}
.ext:hover{border-color:var(--blue)}
@media(hover:none){.ext{min-height:var(--tap);display:inline-flex;align-items:center}}
.concl-card{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin-top:14px}
.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.tag-g{background:var(--green-bg);border:1px solid var(--green-line);color:var(--green);
  border-radius:6px;padding:2px 8px;font-size:var(--fz-mini)}
.tag-n{background:var(--gray-bg);border:1px solid rgba(154,164,181,.3);color:var(--gray);
  border-radius:6px;padding:2px 8px;font-size:var(--fz-mini)}
.tag-r{background:var(--red-bg);border:1px solid var(--red-line);color:var(--red);
  border-radius:6px;padding:2px 8px;font-size:var(--fz-mini)}
.calc-ts{color:var(--dim);font-size:var(--fz-mini);margin-top:10px}
.tfbar{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.tf{background:var(--card2);border:1px solid var(--line);color:var(--muted);border-radius:6px;
  padding:4px 12px;font-size:var(--fz-mini);cursor:pointer}
.tf.active{background:var(--blue-bg);border-color:var(--blue);color:#bcd4ff}
@media(hover:none){.tf,.chip{min-height:var(--tap);display:inline-flex;align-items:center}}
.kbox{background:var(--card2);border:1px solid var(--line2);border-radius:10px;padding:8px}
.klegend{display:flex;gap:14px;flex-wrap:wrap;font-size:var(--fz-mini);color:var(--muted);margin-top:8px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.stat .k{font-size:var(--fz-mini);color:var(--dim)}
.stat .v{font-family:var(--mono);font-size:17px;margin-top:3px;word-break:break-all}
.riskok{display:grid;gap:6px}
.riskok p{color:var(--muted);font-size:var(--fz-small)}
.riskok .ok{color:var(--green)}
.riskok .bad{color:var(--red)}

/* ---- 组件：运维/档案区（心跳页、详情页档案卡、gate 口令页） ---- */
.kv{display:flex;justify-content:space-between;gap:8px;padding:3px 0;
  border-bottom:1px dashed var(--line2);font-size:var(--fz-mini);min-width:0}
.kv:last-child{border-bottom:0}
.kv span{min-width:0}
.kv .v-r{font-family:var(--mono);color:var(--muted);text-align:right;word-break:break-all}
pre{white-space:pre-wrap;word-break:break-all;font-size:11px;color:var(--dim)}
.center{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:14px}
.gate{max-width:380px;width:100%;text-align:center}
.gate h2{font-size:17px;margin-bottom:10px}
.gate input.pw{width:100%;padding:11px;margin:10px 0;border:1px solid var(--line);border-radius:var(--radius-s);
  background:var(--card2);color:var(--text);font-size:15px}
.gate button{width:100%;padding:12px;border:0;border-radius:var(--radius-s);background:var(--blue);
  color:#fff;font-size:15px;cursor:pointer}
.gate .dim{color:var(--dim);font-size:var(--fz-mini);margin-top:12px;line-height:1.8}
.warn{color:var(--orange)}
.dim{color:var(--dim)} .muted{color:var(--muted)}
.subttl{font-size:13px;color:var(--muted);margin:0 0 8px}

/* ---- 组件：页脚免责声明（常驻） ---- */
.disclaimer{margin-top:30px;padding:14px;border-top:1px solid var(--line2);text-align:center;
  color:var(--dim);font-size:var(--fz-mini);line-height:1.8}

/* ---- 响应式：≤820px 行卡折单列；≤480px 指标组 2 列（390px 无横向滚动） ---- */
@media(max-width:820px){
  .prow{grid-template-columns:1fr}
  .metrics{grid-template-columns:repeat(3,auto)}
}
@media(max-width:480px){
  .metrics{grid-template-columns:repeat(2,auto);gap:6px 14px}
  .conf{min-width:150px}
  .five{gap:10px}
  .wrap{padding:0 10px 32px}
  .topbar-in{padding:8px 10px;gap:8px}
  .tabbtn{padding:8px 11px}
}

/* ============ M1-4 验证期页（/stats /hotlist /replay）组件：复用上方视觉常量 ============ */
.bars{display:grid;gap:6px}
.brow{display:grid;grid-template-columns:120px 1fr 96px;align-items:center;gap:10px;
  font-size:var(--fz-small)}
.brow .lbl{color:var(--muted);white-space:nowrap;font-size:var(--fz-mini);overflow:hidden;
  text-overflow:ellipsis}
.brow .track{height:10px;background:var(--track);border-radius:99px;overflow:hidden}
.brow .track i{display:block;height:100%;border-radius:99px;background:var(--blue)}
.brow .track i.ok{background:var(--green)}
.brow .track i.warn{background:var(--orange)}
.brow .track i.bad{background:var(--red)}
.brow .track i.dim{background:var(--gray)}
.brow .v{color:var(--dim);font-family:var(--mono);text-align:right;font-size:var(--fz-mini)}
.mono-tbl{font-family:var(--mono);font-size:var(--fz-mini);border-collapse:collapse;width:100%}
.mono-tbl th,.mono-tbl td{padding:3px 8px;border-bottom:1px solid var(--line2);text-align:right;
  color:var(--muted);white-space:nowrap}
.mono-tbl th{color:var(--dim);font-weight:600}
.mono-tbl th:first-child,.mono-tbl td:first-child{text-align:left;color:var(--text)}
.vs{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}
.vs .arrow{color:var(--dim)}
.match{background:var(--green-bg);border:1px solid var(--green-line);color:var(--green);
  border-radius:999px;padding:1px 10px;font-size:var(--fz-mini);white-space:nowrap}
.mismatch{background:var(--orange-bg);border:1px solid var(--orange-line);color:var(--orange);
  border-radius:999px;padding:1px 10px;font-size:var(--fz-mini);white-space:nowrap}
.formrow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
input.sel,select.sel{background:var(--card2);border:1px solid var(--line);color:var(--text);
  border-radius:var(--radius-s);padding:8px 12px;font-size:var(--fz-small);min-height:var(--tap)}
input.sel:focus,select.sel:focus{outline:none;border-color:var(--blue)}
.placeholder-box{background:var(--card2);border:1px dashed var(--line);border-radius:var(--radius);
  padding:18px;color:var(--dim);font-size:var(--fz-small);text-align:center}
