/* Tarsign · 消费行业研判 —— 共享样式（cs-* 命名空间，避免与 skin.css / app.css / hs-* / gold 冲突）
   主题：珊瑚橙红 + 深青（与「黄金」金褐、「房地产」靛青刻意区分，取消费的烟火气与温度感）
   ★换肤只需改下面 :root 变量，不必逐条改样式 */
:root{
  --cs-primary:#e8590c;          /* 主色：珊瑚橙红 */
  --cs-primary-d:#bf4300;
  --cs-primary-soft:#fff3ec;
  --cs-primary-line:#f2915f;
  --cs-teal:#0b7285;             /* 辅色：深青（负相关 / 供给层） */
  --cs-teal-soft:#e7f4f7;
  --cs-gold:#b8860b;             /* 点缀：金（珠宝 / 新消费） */
  --cs-violet:#862e9c;           /* 点缀：紫（可选消费） */
  --cs-ink:#241a14;
  --cs-ink2:#4c3c31;
  --cs-mut:#9a8a7e;
  --cs-mut2:#bcaea3;
  --cs-line:#f0e6de;
  --cs-line2:#f8f2ed;
  --cs-panel:#ffffff;
  --cs-ok:#0ca678;               /* 跌（绿）—— 全站铁律：红涨绿跌 */
  --cs-no:#e03131;               /* 涨（红） */
  --cs-mid:#f59f00;
}

.cs-page{max-width:var(--gl-content,1720px);margin:0 auto;padding:18px 18px 44px;}
.cs-page *{box-sizing:border-box;}

/* ---- 页头 ---- */
.cs-hd{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:12px;}
.cs-hd h1{font-size:21px;margin:0;font-weight:700;letter-spacing:.4px;color:var(--cs-ink);}
.cs-hd h1 .au{color:var(--cs-primary);}
.cs-hd .sub{color:var(--cs-mut);font-size:12.5px;line-height:1.7;}
.cs-hd .sub b{color:var(--cs-primary);}

/* ---- 卡片 ---- */
.cs-card{background:var(--cs-panel);border:1px solid var(--cs-line);border-radius:22px;padding:16px 18px;margin-top:14px;
  box-shadow:0 1px 3px rgba(48,32,24,.05);}
.cs-card.tight{padding:13px 15px;}
.cs-sec{font-size:15.5px;font-weight:700;margin-bottom:6px;display:flex;align-items:center;gap:8px;color:var(--cs-ink);flex-wrap:wrap;}
.cs-sec .bg{font-size:11px;font-weight:600;color:#fff;background:var(--cs-primary);border-radius:10px;padding:2px 7px;}
.cs-sec .bg.accent{background:var(--cs-gold);}
.cs-sec .bg.g{background:var(--cs-ok);}
.cs-sec .bg.a{background:var(--cs-mid);}
.cs-sec .bg.r{background:var(--cs-no);}
.cs-sec .bg.t{background:var(--cs-teal);}
.cs-sec .bg.v{background:var(--cs-violet);}
.cs-sec .cnt{margin-left:auto;font-size:12px;font-weight:600;color:var(--cs-mut);}
.cs-desc{color:#7a6a5e;font-size:12.5px;line-height:1.85;margin-bottom:12px;}
.cs-desc b{color:#241a14;}
.cs-desc code{background:#f7f0ea;border-radius:4px;padding:1px 5px;font-size:12px;font-family:ui-monospace,Menlo,Consolas,monospace;}

/* ---- 实时条 / KPI ---- */
.cs-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(134px,1fr));gap:10px;}
.cs-strip .st{background:#fff;border:1px solid var(--gl-line-l);border-radius:14px;padding:11px 13px;box-shadow:var(--gl-shadow-sm);}
.cs-strip .st .k{color:var(--cs-mut);font-size:11.5px;margin-bottom:4px;display:flex;align-items:center;gap:5px;}
.cs-strip .st .v{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.15;color:var(--cs-ink);}
.cs-strip .st .v small{font-size:12px;font-weight:600;color:var(--cs-mut);margin-left:2px;}
.cs-strip .st .s{font-size:11.5px;margin-top:3px;font-variant-numeric:tabular-nums;color:var(--cs-mut);}
.up{color:var(--cs-no) !important;}.dn{color:var(--cs-ok) !important;}.flat{color:var(--cs-mut) !important;}

.cs-grid{display:grid;gap:11px;}
.cs-grid.c2{grid-template-columns:repeat(auto-fit,minmax(258px,1fr));}
.cs-grid.c3{grid-template-columns:repeat(auto-fit,minmax(206px,1fr));}
.cs-grid.c4{grid-template-columns:repeat(auto-fit,minmax(166px,1fr));}
.cs-kpi{background:#fdfbf9;border:1px solid var(--cs-line2);border-radius:14px;padding:12px 13px;}
.cs-kpi .k{font-size:11.5px;color:var(--cs-mut);margin-bottom:5px;}
.cs-kpi .v{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--cs-ink);line-height:1.2;}
.cs-kpi .v small{font-size:11.5px;color:var(--cs-mut);font-weight:600;margin-left:2px;}
.cs-kpi .s{font-size:11px;color:var(--cs-mut2);margin-top:3px;}

/* ============================================================
   ★ 核心新组件：因子 × 行业 联动矩阵（热力图）
   双极配色：正相关用珊瑚橙红、负相关用深青，色深表示 |r| 强度
   ============================================================ */
.cs-mxwrap{overflow-x:auto;padding-bottom:4px;}
.cs-matrix{display:grid;gap:3px;min-width:1080px;align-items:stretch;}
.cs-matrix .hd{font-size:11px;font-weight:700;color:var(--cs-mut);display:flex;align-items:center;
  justify-content:center;text-align:center;line-height:1.25;padding:2px;min-height:34px;word-break:break-all;}
.cs-matrix .hd.row{justify-content:flex-start;text-align:left;color:var(--cs-ink2);font-weight:600;
  padding-left:2px;font-size:11.5px;}
.cs-matrix .hd.corner{justify-content:flex-start;color:var(--cs-mut);font-size:11px;}
.cs-matrix .layerbar{display:flex;align-items:center;font-size:11px;font-weight:700;border-radius:5px;
  padding:2px 6px;color:#fff;justify-content:center;}
.cs-matrix .cell{border-radius:5px;display:flex;align-items:center;justify-content:center;
  font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;cursor:pointer;min-height:30px;
  transition:transform .1s,box-shadow .1s;position:relative;}
.cs-matrix .cell:hover{transform:scale(1.09);box-shadow:0 2px 9px rgba(48,32,24,.22);z-index:2;}
.cs-matrix .cell.void{background:#f6f1ec;color:var(--cs-mut2);cursor:default;}
.cs-matrix .cell.void:hover{transform:none;box-shadow:none;}
.cs-mxlegend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11.5px;color:var(--cs-mut);margin-top:10px;}
.cs-mxlegend .bar{display:flex;height:12px;border-radius:3px;overflow:hidden;}
.cs-mxlegend .bar i{width:17px;}
.cs-mxlegend .lb{font-size:11px;}

/* ---- 分层聚合力条（cs-tb 内的迷你条形，消费模块共用） ---- */
.lxm td.bar{text-align:left;}
.lxm .bwrap{position:relative;height:16px;background:#f8f2ed;border-radius:4px;min-width:74px;}
.lxm .bwrap i{position:absolute;left:0;top:0;height:16px;border-radius:4px;opacity:.8;}
.lxm .bwrap span{position:absolute;right:5px;top:0;line-height:16px;font-size:10.5px;font-weight:700;color:#3a2a20;}

/* ============================================================
   ★ 因子分层选择器（能 / 敢 / 愿 / 供 四层）
   ============================================================ */
.cs-layers{display:flex;flex-direction:column;gap:9px;}
.cs-layer{border:1px solid var(--cs-line);border-radius:10px;padding:9px 11px;background:#fffdfc;}
.cs-layer .lt{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;color:var(--cs-ink);margin-bottom:7px;flex-wrap:wrap;}
.cs-layer .lt .dot{width:9px;height:9px;border-radius:3px;flex:0 0 auto;}
.cs-layer .lt .cnt{font-size:11px;color:var(--cs-mut);font-weight:600;}
.cs-layer .lt .all{margin-left:auto;font-size:11px;color:var(--cs-primary);cursor:pointer;font-weight:600;
  border:1px solid var(--cs-line);border-radius:5px;padding:1px 6px;background:#fff;}
.cs-layer .lt .all:hover{border-color:var(--cs-primary-line);}
.cs-fchips{display:flex;flex-wrap:wrap;gap:6px;}
.cs-fchip{font-size:11.5px;border:1px solid var(--cs-line);border-radius:14px;padding:3px 10px;cursor:pointer;
  color:var(--cs-ink2);background:#fff;transition:all .12s;user-select:none;}
.cs-fchip:hover{border-color:var(--cs-primary-line);}
.cs-fchip.on{background:var(--cs-primary);border-color:var(--cs-primary);color:#fff;font-weight:600;}
.cs-fchip .lag{opacity:.72;font-size:10.5px;margin-left:3px;}

/* ============================================================
   ★ 行业切换器
   ============================================================ */
.cs-indsel{display:flex;flex-wrap:wrap;gap:6px;}
.cs-indbtn{font-size:12px;border:1px solid var(--cs-line);border-radius:19px;padding:4px 12px;cursor:pointer;
  color:var(--cs-ink2);background:#fff;transition:all .12s;user-select:none;display:inline-flex;align-items:center;gap:5px;}
.cs-indbtn:hover{border-color:var(--cs-primary-line);}
.cs-indbtn.on{background:var(--cs-primary);border-color:var(--cs-primary);color:#fff;font-weight:600;}
.cs-indbtn .lv{font-size:9.5px;border-radius:3px;padding:0 3px;background:#f2ebe5;color:var(--cs-mut);font-weight:700;}
.cs-indbtn.on .lv{background:rgba(255,255,255,.24);color:#fff;}
.cs-indbtn .chg{font-size:11px;font-variant-numeric:tabular-nums;}

/* ============================================================
   ★ 敏感度条（行业对某因子的相关性排行）
   ============================================================ */
.cs-sens{display:flex;flex-direction:column;gap:6px;}
.cs-sensrow{display:grid;grid-template-columns:96px 1fr 108px;gap:9px;align-items:center;font-size:12px;}
.cs-sensrow .nm{color:var(--cs-ink2);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cs-sensrow .track{position:relative;height:15px;background:#f8f2ed;border-radius:4px;}
.cs-sensrow .track i{position:absolute;top:0;height:15px;border-radius:4px;}
.cs-sensrow .track .mid{position:absolute;left:50%;top:-2px;width:1px;height:19px;background:#e0d3c8;}
.cs-sensrow .val{font-variant-numeric:tabular-nums;font-weight:700;text-align:right;color:var(--cs-ink);}
.cs-sensrow .val .lag{font-size:10.5px;color:var(--cs-mut);font-weight:600;margin-left:5px;}

/* ---- 变量卡 ---- */
.cs-vars{display:grid;grid-template-columns:repeat(auto-fill,minmax(228px,1fr));gap:10px;}
.cs-var{border:1px solid var(--cs-line);border-radius:10px;padding:11px 12px;background:var(--cs-panel);cursor:pointer;
  transition:border-color .12s,box-shadow .12s,transform .12s;}
.cs-var:hover{border-color:#eecbb5;box-shadow:0 3px 10px rgba(232,89,12,.1);transform:translateY(-1px);}
.cs-var .n{font-size:13px;font-weight:700;color:var(--cs-ink);display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.cs-var .n .cat{font-size:10px;font-weight:600;color:#fff;border-radius:4px;padding:1px 5px;background:var(--cs-mut);}
.cs-var .n .cat.c-能{background:#e8590c;}
.cs-var .n .cat.c-敢{background:#0b7285;}
.cs-var .n .cat.c-愿{background:#862e9c;}
.cs-var .n .cat.c-供{background:#b8860b;}
.cs-var .n .cat.c-行业{background:#4c3c31;}
.cs-var .n .cat.c-参照{background:#9a8a7e;}
.cs-var .row{display:flex;align-items:flex-end;justify-content:space-between;margin-top:7px;gap:8px;}
.cs-var .val{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--cs-ink);line-height:1;}
.cs-var .val small{font-size:10.5px;color:var(--cs-mut2);font-weight:600;margin-left:2px;}
.cs-var .chg{font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;}
.cs-var .foot{margin-top:7px;font-size:11px;color:var(--cs-mut);display:flex;justify-content:space-between;gap:6px;}

/* ---- 表格 ---- */
.cs-tbwrap{overflow-x:auto;}
.cs-tb{width:100%;border-collapse:collapse;font-size:12.5px;}
.cs-tb th{background:#fdf8f5;color:var(--cs-mut);font-weight:700;font-size:11.5px;text-align:right;
  padding:8px 10px;border-bottom:1px solid var(--cs-line);white-space:nowrap;}
.cs-tb th:first-child,.cs-tb td:first-child{text-align:left;}
.cs-tb th.srt{cursor:pointer;user-select:none;}
.cs-tb th.srt:hover{color:var(--cs-primary);}
.cs-tb th .ar{font-size:9px;opacity:.55;margin-left:2px;}
.cs-tb td{padding:8px 10px;border-bottom:1px solid var(--cs-line2);text-align:right;
  font-variant-numeric:tabular-nums;color:var(--cs-ink2);}
.cs-tb tr:hover td{background:#fffaf7;}
.cs-tb td .nm{font-weight:700;color:var(--cs-ink);}

/* ---- 杂项 ---- */
.cs-chip{display:inline-block;font-size:11px;border:1px solid var(--cs-line);border-radius:11px;padding:1.5px 8px;
  color:var(--cs-ink2);background:#fffdfc;margin:0 5px 5px 0;}
.cs-chip.on{background:var(--cs-primary-soft);border-color:var(--cs-primary-line);color:var(--cs-primary-d);font-weight:600;}
.cs-note{font-size:11.5px;color:var(--cs-mut);line-height:1.85;margin-top:10px;padding:9px 11px;
  background:#fdfaf8;border-left:3px solid var(--cs-primary-line);border-radius:0 7px 7px 0;}
.cs-note b{color:var(--cs-ink2);}
.cs-empty{padding:26px;text-align:center;color:var(--cs-mut);font-size:12.5px;}
.cs-flex{display:flex;gap:12px;flex-wrap:wrap;align-items:center;}
.cs-flex.grow>*{flex:1 1 260px;min-width:0;}
.cs-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
.cs-tab{font-size:12.5px;border:1px solid var(--cs-line);border-radius:8px;padding:5px 13px;cursor:pointer;
  color:var(--cs-ink2);background:#fff;transition:all .12s;}
.cs-tab:hover{border-color:var(--cs-primary-line);}
.cs-tab.on{background:var(--cs-primary);border-color:var(--cs-primary);color:#fff;font-weight:600;}

.cs-fw{border:1px solid var(--cs-line);border-radius:10px;padding:12px 14px;background:#fffdfc;margin-bottom:10px;}
.cs-fw .ttl{font-size:13.5px;font-weight:700;color:var(--cs-ink);display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.cs-fw .ttl .tag{font-size:10.5px;font-weight:600;color:var(--cs-primary-d);background:var(--cs-primary-soft);
  border-radius:4px;padding:1px 6px;}
.cs-fw .src{font-size:11px;color:var(--cs-mut2);margin-top:3px;}
.cs-fw .lg{font-size:12.5px;color:var(--cs-ink2);line-height:1.9;margin-top:8px;}
.cs-fw ol{font-size:12.5px;color:var(--cs-ink2);line-height:1.9;margin:8px 0 0;padding-left:20px;}
.cs-fw ol li{margin-bottom:3px;}
.cs-fw .fm{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;background:#f7f0ea;border-radius:6px;
  padding:7px 10px;margin-top:8px;color:#5c4636;overflow-x:auto;}
.cs-fw .vs{margin-top:9px;display:flex;flex-wrap:wrap;gap:5px;}

.cs-thr{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;}
.cs-thrcard{border:1px solid var(--cs-line);border-radius:10px;padding:10px 12px;background:#fffdfc;}
.cs-thrcard .m{font-size:12.5px;font-weight:700;color:var(--cs-ink);}
.cs-thrcard .v{font-size:13px;font-weight:700;color:var(--cs-primary-d);margin:4px 0 3px;font-variant-numeric:tabular-nums;}
.cs-thrcard .d{font-size:11.5px;color:var(--cs-ink2);line-height:1.7;}
.cs-thrcard .src{font-size:10.5px;color:var(--cs-mut2);margin-top:5px;}
.cs-thrcard .now{margin-top:7px;font-size:11.5px;background:var(--cs-teal-soft);border-radius:6px;padding:5px 8px;color:#0a5a68;}
.cs-thrcard .now.miss{background:#f8f4f0;color:var(--cs-mut);}

.cs-ll{width:100%;border-collapse:collapse;font-size:12.5px;}
.cs-ll th{background:#fdf8f5;color:var(--cs-mut);font-size:11.5px;font-weight:700;padding:8px 10px;
  border-bottom:1px solid var(--cs-line);text-align:left;white-space:nowrap;}
.cs-ll td{padding:8px 10px;border-bottom:1px solid var(--cs-line2);color:var(--cs-ink2);vertical-align:top;}
.cs-ll td.c{text-align:center;}
.cs-ll .ar{color:var(--cs-primary);font-weight:700;}

.cs-srcline{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--cs-line2);font-size:12.5px;}
.cs-srcline .org{flex:0 0 118px;font-weight:700;color:var(--cs-primary-d);}
.cs-srcline .bd{flex:1;min-width:0;color:var(--cs-ink2);line-height:1.75;}
.cs-srcline .bd b{color:var(--cs-ink);}

@media (max-width:760px){
  .cs-page{padding:12px 12px 34px;}
  .cs-hd h1{font-size:18px;}
  .cs-card{padding:13px 13px;}
  .cs-sensrow{grid-template-columns:78px 1fr 84px;font-size:11.5px;}
  .cs-var .val{font-size:17px;}
}
