/* ═══════════════════════════════════════════
   行业主线量化监控系统 v5.5 - 全局样式
   ═══════════════════════════════════════════ */
:root{
  --bg:#080b0e;--surf1:#0d1117;--surf2:#161c24;--surf3:#1c2430;
  --border:#1e2a38;--border2:#243040;
  --gold:#d4a843;--gold2:#f0c96a;--gold-dim:rgba(212,168,67,.15);
  --red:#e05252;--red-dim:rgba(224,82,82,.13);
  --green:#3db87a;--green-dim:rgba(61,184,122,.10);
  --blue:#4a9eff;--blue-dim:rgba(74,158,255,.10);
  --purple:#a78bfa;--purple-dim:rgba(167,139,250,.10);
  --orange:#fb923c;--orange-dim:rgba(251,146,60,.10);
  --cyan:#22d3ee;--cyan-dim:rgba(34,211,238,.10);
  --text:#c8d4e0;--muted:#4a5f72;--muted2:#2e3f50;
  --r:8px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--text);font-family:'PingFang SC','Microsoft YaHei',sans-serif;min-height:100vh;background-image:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(212,168,67,.05),transparent),radial-gradient(ellipse 60% 40% at 80% 80%,rgba(74,158,255,.03),transparent);}
button{font-family:inherit;}
header{position:sticky;top:0;z-index:100;height:54px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:rgba(8,11,14,.93);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);}
.brand{display:flex;align-items:center;gap:9px;}
.brand-icon{width:28px;height:28px;border-radius:6px;background:linear-gradient(135deg,var(--gold),var(--gold2));display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:#000;}
.brand-name{font-size:14px;font-weight:700;color:var(--gold);letter-spacing:.06em;}
.brand-ver{font-size:9px;color:var(--muted);margin-top:1px;letter-spacing:.08em;}
.hdr-r{display:flex;align-items:center;gap:14px;}
.status-pill{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:20px;border:1px solid var(--border2);background:var(--surf2);font-family:monospace;font-size:11px;color:var(--muted);max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.sdot{width:7px;height:7px;border-radius:50%;background:var(--muted2);flex-shrink:0;transition:background .3s;}
.sdot.run{background:var(--gold);animation:pulse 1.1s ease-in-out infinite;}
.sdot.ok{background:var(--green);}
.sdot.err{background:var(--red);}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.25;}}
@keyframes spin{to{transform:rotate(360deg);}}
main{padding:18px 22px;max-width:1900px;margin:0 auto;}
.sector-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;margin-bottom:14px;background:var(--surf1);border:1px solid var(--border);border-radius:var(--r);flex-wrap:wrap;}
.sbar-label{font-size:9px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase;margin-right:4px;white-space:nowrap;}
.sc{padding:4px 11px;border-radius:20px;border:1px solid var(--border2);background:transparent;color:var(--muted);font-size:11px;cursor:pointer;font-family:monospace;transition:all .18s;white-space:nowrap;user-select:none;}
.sc:hover{border-color:var(--gold);color:var(--gold);}
.sc.act{background:var(--gold-dim);border-color:var(--gold);color:var(--gold);font-weight:600;}
.sc.all.act{background:var(--blue-dim);border-color:var(--blue);color:var(--blue);}
.sc-cnt{font-size:9px;opacity:.65;margin-left:2px;}
.sbar-sep{width:1px;height:16px;background:var(--border2);margin:0 3px;flex-shrink:0;}
.btn-manage{padding:4px 11px;border-radius:20px;border:1px dashed var(--border2);background:transparent;color:var(--muted);font-size:11px;cursor:pointer;font-family:monospace;transition:all .18s;}
.btn-manage:hover{border-color:var(--green);color:var(--green);}
.btn{padding:6px 13px;border-radius:6px;border:1px solid;font-size:12px;font-weight:600;cursor:pointer;transition:opacity .18s,transform .1s;white-space:nowrap;}
.btn:hover{opacity:.8;}.btn:active{transform:scale(.97);}
.btn:disabled{opacity:.28;cursor:not-allowed;transform:none;}
.btn-gold{background:var(--gold-dim);border-color:var(--gold);color:var(--gold);}
.btn-red{background:var(--red-dim);border-color:var(--red);color:var(--red);}
.btn-green{background:var(--green-dim);border-color:var(--green);color:var(--green);}
.btn-blue{background:var(--blue-dim);border-color:var(--blue);color:var(--blue);}
.btn-purple{background:var(--purple-dim);border-color:var(--purple);color:var(--purple);}
.btn-orange{background:var(--orange-dim);border-color:var(--orange);color:var(--orange);}
.btn-cyan{background:var(--cyan-dim);border-color:var(--cyan);color:var(--cyan);}
.btn-ghost{background:transparent;border-color:var(--border2);color:var(--muted);}
.btn-ghost:hover{border-color:var(--muted);color:var(--text);}
.btn-sm{padding:3px 9px;font-size:10px;}
.ni{padding:5px 7px;border-radius:5px;background:var(--surf2);border:1px solid var(--border2);color:var(--gold);font-family:monospace;font-size:12px;text-align:center;outline:none;transition:border-color .18s;width:50px;}
.ni:focus{border-color:var(--gold);}
.ov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-bottom:14px;}
.ov-card{background:var(--surf1);border:1px solid var(--border);border-radius:var(--r);padding:12px 13px;cursor:pointer;}
.ov-card:hover{border-color:var(--gold);box-shadow:0 6px 20px rgba(0,0,0,.4);}
.ov-card.hot{border-color:rgba(212,168,67,.35);box-shadow:0 0 14px rgba(212,168,67,.09);}
.ovc-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px;}
.ovc-name{font-size:13px;font-weight:700;}
.ovc-rank{font-family:monospace;font-size:10px;color:var(--muted);}
.ovc-kpis{display:grid;grid-template-columns:1fr 1fr;gap:5px;}
.ovc-kpi{display:flex;flex-direction:column;gap:2px;}
.ovc-kpi-l{font-size:9px;color:var(--muted);}
.ovc-kpi-v{font-family:monospace;font-size:12px;font-weight:600;}
.ovc-kpi-v.g{color:var(--gold);}.ovc-kpi-v.r{color:var(--red);}
.ovc-tags{display:flex;gap:3px;flex-wrap:wrap;margin-top:7px;}
.tag{display:inline-block;padding:1px 5px;border-radius:3px;font-family:monospace;font-size:9px;font-weight:600;}
.tag-r{background:var(--red-dim);border:1px solid rgba(224,82,82,.35);color:var(--red);}
.tag-g{background:var(--gold-dim);border:1px solid rgba(212,168,67,.3);color:var(--gold);}
.tag-b{background:var(--blue-dim);border:1px solid rgba(74,158,255,.2);color:var(--blue);}
.ovc-leader{margin-top:8px;padding-top:7px;border-top:1px solid var(--border);font-size:11px;color:var(--muted);}
.ovc-leader span{color:var(--gold);font-weight:600;}
.mainline-panel{background:var(--surf1);border:1px solid var(--border);overflow:hidden;}
.mlp-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 15px;border-bottom:1px solid var(--border);background:rgba(212,168,67,.04);}
.mlp-title{font-size:14px;font-weight:700;color:var(--gold);}
.mlp-sub{font-size:9.5px;color:var(--muted);font-family:monospace;}
.mlp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(255px,1fr));gap:10px;padding:12px 14px;}
.ml-card{background:var(--surf2);border:1px solid var(--border);border-radius:6px;padding:11px 13px;position:relative;overflow:hidden;}
.ml-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;}
.ml-card.strong::before{background:linear-gradient(90deg,var(--red),var(--gold));}
.ml-card.secondary::before{background:linear-gradient(90deg,var(--gold),var(--orange));}
.ml-card.weak::before{background:var(--muted2);}
.ml-score-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.ml-score{font-family:monospace;font-size:22px;font-weight:800;}
.ml-score.s-strong{color:var(--red);}.ml-score.s-sec{color:var(--gold);}.ml-score.s-weak{color:var(--muted);}
.ml-level{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;}
.ml-level.lv-strong{background:var(--red-dim);border:1px solid rgba(224,82,82,.4);color:var(--red);}
.ml-level.lv-sec{background:var(--gold-dim);border:1px solid rgba(212,168,67,.4);color:var(--gold);}
.ml-level.lv-weak{background:var(--surf3);border:1px solid var(--border2);color:var(--muted);}
.ml-level.lv-none{background:var(--surf3);border:1px solid var(--border);color:var(--muted2);}
.ml-breakdown{display:grid;grid-template-columns:repeat(6,1fr);gap:3px;margin-bottom:6px;}
.ml-dim{display:flex;flex-direction:column;align-items:center;gap:1px;padding:3px 2px;border-radius:4px;background:rgba(255,255,255,.02);}
.ml-dim-l{font-size:8px;color:var(--muted);}
.ml-dim-v{font-family:monospace;font-size:11px;font-weight:700;}
.ml-dim-v.pos{color:var(--green);}.ml-dim-v.neg{color:var(--red);}.ml-dim-v.nt{color:var(--muted);}
.ml-warn{margin-top:5px;padding:3px 6px;border-radius:4px;background:rgba(224,82,82,.08);border:1px solid rgba(224,82,82,.2);font-size:9px;color:var(--red);}
.ml-action{margin-top:6px;font-size:10px;color:var(--muted);line-height:1.7;}
.ml-empty{padding:32px;text-align:center;color:var(--muted);font-size:11px;grid-column:1/-1;}
.sig-tag{display:inline-block;padding:1px 5px;border-radius:3px;font-family:monospace;font-size:8.5px;font-weight:700;white-space:nowrap;}
.sig-follow{background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.35);color:var(--cyan);}
.sig-auction{background:rgba(224,82,82,.15);border:1px solid rgba(224,82,82,.4);color:var(--red);}
.sig-bomb{background:rgba(251,146,60,.12);border:1px solid rgba(251,146,60,.35);color:var(--orange);}
.sig-quant{background:rgba(167,139,250,.15);border:1px solid rgba(167,139,250,.4);color:var(--purple);}
.rt-bar{display:flex;align-items:center;gap:8px;padding:3px 4px 2px;margin-top:2px;border-top:1px dashed rgba(34,211,238,.18);flex-wrap:wrap;}
.rt-dot{width:5px;height:5px;border-radius:50%;background:var(--cyan);animation:pulse 1.5s ease-in-out infinite;flex-shrink:0;}
.rt-lbl{font-size:8px;color:rgba(34,211,238,.5);white-space:nowrap;}
.rt-val{font-family:monospace;font-size:11px;font-weight:700;white-space:nowrap;}
.rt-val.up{color:var(--red);}.rt-val.dn{color:var(--green);}.rt-val.flat{color:var(--muted);}
.rt-val.zt{color:var(--red);animation:pulse .8s ease-in-out infinite;}
.rt-time{font-family:monospace;font-size:8px;color:rgba(34,211,238,.4);}
.rt-settings{display:flex;align-items:center;gap:8px;padding:6px 13px;background:rgba(34,211,238,.03);flex-wrap:wrap;}
.rt-auto-ind{display:flex;align-items:center;gap:5px;padding:2px 8px;border-radius:10px;font-family:monospace;font-size:10px;}
.rt-auto-ind.on{background:rgba(34,211,238,.12);border:1px solid rgba(34,211,238,.3);color:var(--cyan);}
.rt-auto-ind.off{background:var(--surf2);border:1px solid var(--border2);color:var(--muted);}
.rt-adot{width:6px;height:6px;border-radius:50%;background:var(--muted2);flex-shrink:0;}
.rt-adot.on{background:var(--cyan);animation:pulse 1.2s ease-in-out infinite;}
.limit-input-wrap{overflow:hidden;}
.liw-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 15px;border-bottom:1px solid var(--border);background:rgba(167,139,250,.04);}
.date-inp{padding:5px 9px;border-radius:5px;background:var(--surf2);border:1px solid var(--border2);color:var(--text);font-family:monospace;font-size:12px;outline:none;transition:border-color .18s;}
.date-inp:focus{border-color:var(--purple);}
.limit-ta{width:100%;min-height:220px;background:transparent;border:none;outline:none;resize:vertical;color:var(--text);font-family:monospace;font-size:11.5px;line-height:1.85;padding:13px 15px;}
.limit-fmt{padding:7px 15px;background:rgba(167,139,250,.03);border-top:1px solid var(--border);font-size:9.5px;color:var(--muted);font-family:monospace;line-height:1.9;}
.limit-fmt b{color:var(--purple);}
.limit-save-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 15px;border-top:1px solid var(--border);}
.save-msg{font-size:11px;font-family:monospace;color:var(--green);}
.save-msg.err{color:var(--red);}
.date-sel{padding:4px 8px;border-radius:5px;background:var(--surf2);border:1px solid var(--border2);color:var(--text);font-family:monospace;font-size:11px;outline:none;cursor:pointer;}
.stat-pills{display:flex;gap:5px;flex-wrap:wrap;}
.sp{padding:2px 8px;border-radius:10px;font-size:9.5px;font-weight:600;font-family:monospace;white-space:nowrap;}
.sp-r{background:var(--red-dim);border:1px solid rgba(224,82,82,.3);color:var(--red);}
.sp-g{background:var(--gold-dim);border:1px solid rgba(212,168,67,.3);color:var(--gold);}
.sp-b{background:var(--blue-dim);border:1px solid rgba(74,158,255,.25);color:var(--blue);}
.sp-o{background:var(--orange-dim);border:1px solid rgba(251,146,60,.25);color:var(--orange);}
.tbl-wrap{overflow-x:auto;}
.tbl-wrap::-webkit-scrollbar{height:3px;}
.tbl-wrap::-webkit-scrollbar-thumb{background:var(--border2);}
.lt{width:100%;border-collapse:collapse;min-width:800px;}
.lt thead th{padding:8px 10px;text-align:left;font-size:9.5px;letter-spacing:.1em;color:var(--muted);border-bottom:1px solid var(--border2);font-weight:400;text-transform:uppercase;white-space:nowrap;}
.lt tbody tr{border-bottom:1px solid rgba(30,42,56,.5);transition:background .1s;}
.lt tbody tr:hover{background:rgba(212,168,67,.03);}
.lt tbody tr:last-child{border-bottom:none;}
.lt td{padding:7px 10px;font-size:12px;vertical-align:middle;}
.lt-code{font-family:monospace;font-size:11px;color:var(--muted);}
.lt-name{font-weight:600;}
.lt-consec{font-family:monospace;font-size:12px;font-weight:700;color:var(--red);}
.lt-seal{font-family:monospace;font-size:12px;font-weight:600;color:var(--green);}
.lt-time{font-family:monospace;font-size:11px;color:var(--muted);}
.lt-ind{font-size:9.5px;font-family:monospace;padding:2px 6px;border-radius:10px;white-space:nowrap;background:var(--blue-dim);border:1px solid rgba(74,158,255,.2);color:var(--blue);}
.badge-yizi{display:inline-block;padding:1px 5px;border-radius:3px;font-size:9px;font-weight:700;background:rgba(224,82,82,.18);border:1px solid rgba(224,82,82,.4);color:var(--red);}
.badge-norm{display:inline-block;padding:1px 5px;border-radius:3px;font-size:9px;font-weight:700;background:rgba(212,168,67,.12);border:1px solid rgba(212,168,67,.3);color:var(--gold);}
.consec-bar{display:flex;gap:2px;margin-top:3px;}
.cdot{width:6px;height:6px;border-radius:2px;background:var(--red);}
/* AI 区块 */
.ai-section{background:var(--surf1);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:14px;}
.ai-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:11px 15px;border-bottom:1px solid var(--border);background:rgba(212,168,67,.04);}
.ai-head.collapsible{cursor:pointer;user-select:none;}
.ai-head.collapsible:hover{background:rgba(212,168,67,.07);}
.ai-title{font-size:13px;font-weight:700;color:var(--gold);}
.ai-acts{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-left:auto;}
.char-cnt{font-family:monospace;font-size:10px;color:var(--muted);}
.ai-ta{width:100%;min-height:240px;max-height:500px;background:transparent;border:none;outline:none;resize:vertical;color:var(--text);font-family:monospace;font-size:11.5px;line-height:1.75;padding:13px 15px;}
.ai-ph{padding:44px 20px;text-align:center;color:var(--muted);}
.ai-ph h3{font-size:14px;color:var(--text);margin-bottom:7px;}
.copy-ok{position:absolute;top:10px;right:12px;padding:5px 13px;border-radius:4px;background:var(--green);color:#000;font-size:10px;font-weight:700;opacity:0;transform:translateY(-4px);transition:all .28s;pointer-events:none;}
.copy-ok.show{opacity:1;transform:translateY(0);}
.filter-bar{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:8px 13px;border-bottom:1px solid var(--border);background:rgba(255,255,255,.008);}
.fl{font-size:9.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-right:2px;white-space:nowrap;}
.fc{padding:2px 9px;border-radius:11px;border:1px solid var(--border2);background:transparent;color:var(--muted);font-size:10px;cursor:pointer;font-family:monospace;transition:all .18s;user-select:none;}
.fc:hover{border-color:var(--gold);color:var(--gold);}
.fc.on{background:var(--gold-dim);border-color:var(--gold);color:var(--gold);font-weight:600;}
.fc.on-r{background:var(--red-dim);border-color:var(--red);color:var(--red);font-weight:600;}
.fc.on-c{background:var(--cyan-dim);border-color:var(--cyan);color:var(--cyan);font-weight:600;}
.fc.on-p{background:var(--purple-dim);border-color:var(--purple);color:var(--purple);font-weight:600;}
.fc.on-o{background:var(--orange-dim);border-color:var(--orange);color:var(--orange);font-weight:600;}
.fsep{width:1px;height:14px;background:var(--border2);margin:0 2px;flex-shrink:0;}
.stock-act-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 13px;border-bottom:1px solid var(--border);background:rgba(251,146,60,.03);}
.sal-label{font-size:10px;color:var(--muted);}
.sel-badge{padding:2px 8px;border-radius:10px;font-size:10px;font-family:monospace;background:var(--orange-dim);border:1px solid rgba(251,146,60,.3);color:var(--orange);}
.search-inp{padding:5px 9px;border-radius:5px;background:var(--surf2);border:1px solid var(--border2);color:var(--text);font-family:monospace;font-size:11px;outline:none;width:130px;transition:border-color .18s;}
.search-inp:focus{border-color:var(--gold);}
.sort-btn{padding:3px 9px;border-radius:4px;border:1px solid var(--border2);background:transparent;color:var(--muted);font-size:10px;cursor:pointer;font-family:monospace;transition:all .18s;}
.sort-btn.act{border-color:var(--gold);color:var(--gold);}
.vlist-viewport{overflow-y:auto;position:relative;}
.vlist-viewport::-webkit-scrollbar{width:4px;}
.vlist-viewport::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px;}
.vlist-spacer{position:relative;width:100%;}
.vlist-rows{position:absolute;top:0;left:0;right:0;}
table.dtbl{width:100%;border-collapse:collapse;}
table.dtbl thead th{padding:9px 8px;text-align:left;font-size:9.5px;letter-spacing:.07em;color:var(--muted);border-bottom:1px solid var(--border2);font-weight:400;text-transform:uppercase;white-space:nowrap;cursor:pointer;user-select:none;}
table.dtbl thead th:hover{color:var(--gold);}
table.dtbl tbody tr{border-bottom:1px solid rgba(30,42,56,.45);}
table.dtbl tbody tr:hover{background:rgba(212,168,67,.03);}
table.dtbl tbody tr:last-child{border-bottom:none;}
table.dtbl td{padding:6px 7px;font-size:12px;vertical-align:middle;}
.td-code{font-family:monospace;font-size:11px;color:var(--muted);}
.td-name{font-weight:600;}
.td-sec{font-size:9.5px;font-family:monospace;padding:2px 5px;border-radius:10px;white-space:nowrap;background:var(--blue-dim);border:1px solid rgba(74,158,255,.2);color:var(--blue);}
#lv-lhb-wrap {
  overflow: visible;
}
.vol-strip{display:flex;gap:2px;align-items:stretch;}
.vd{display:flex;flex-direction:column;align-items:center;min-width:64px;max-width:76px;padding:4px 3px 3px;border-radius:5px;border:1px solid transparent;cursor:default;}
.vd:hover{border-color:var(--border2);}
.vd.zt-yizi{border-color:rgba(224,82,82,.28)!important;background:rgba(224,82,82,.06);}
.vd.zt-norm{border-color:rgba(212,168,67,.22)!important;background:rgba(212,168,67,.05);}
.vd-date{font-family:monospace;font-size:8.5px;color:var(--muted);white-space:nowrap;margin-bottom:2px;}
.vd-vol{font-family:monospace;font-size:12px;font-weight:700;color:var(--gold);white-space:nowrap;line-height:1.2;}
.vd-vol.latest{color:var(--red);}.vd-vol.none{color:var(--muted2);font-weight:400;font-size:10px;}
.vd-tags{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;min-height:14px;margin:2px 0;}
.vt{display:inline-block;padding:1px 3px;border-radius:2px;font-family:monospace;font-size:8.5px;font-weight:700;white-space:nowrap;line-height:1.4;}
.vt-x5{background:rgba(224,82,82,.2);color:var(--red);border:1px solid rgba(224,82,82,.4);}
.vt-surge{background:rgba(212,168,67,.15);color:var(--gold);border:1px solid rgba(212,168,67,.35);}
.vt-pk5{background:rgba(251,146,60,.22);color:var(--orange);border:1px solid rgba(251,146,60,.45);}
.vt-pk25{background:rgba(251,146,60,.1);color:var(--orange);border:1px solid rgba(251,146,60,.28);}
.vd-open{font-family:monospace;font-size:10px;white-space:nowrap;line-height:1.3;}
.vd-open.op-up{color:var(--red);}.vd-open.op-dn{color:var(--green);}.vd-open.op-flat{color:var(--muted);}.vd-open.op-100{color:var(--red);font-weight:800;}
.vd-close{font-family:monospace;font-size:10px;white-space:nowrap;line-height:1.3;}
.vd-close.cl-up{color:var(--red);}.vd-close.cl-dn{color:var(--green);}.vd-close.cl-zt{color:var(--red);font-weight:700;}.vd-close.cl-flat{color:var(--muted);}
.vd-seal-wrap{display:flex;flex-direction:column;align-items:center;gap:1px;margin-top:2px;padding-top:3px;border-top:1px dashed rgba(61,184,122,.28);width:100%;}
.vd-seal-yi{font-family:monospace;font-size:9px;font-weight:700;color:var(--green);}
.vt-yizi{display:inline-block;padding:1px 4px;border-radius:2px;font-size:8px;font-weight:700;background:rgba(224,82,82,.18);border:1px solid rgba(224,82,82,.4);color:var(--red);}
.vt-norm{display:inline-block;padding:1px 4px;border-radius:2px;font-size:8px;font-weight:700;background:rgba(212,168,67,.12);border:1px solid rgba(212,168,67,.3);color:var(--gold);}
.vd-price{font-family:monospace;font-size:9px;white-space:nowrap;line-height:1.35;color:var(--muted);}
.vd-price .pv{color:var(--text);font-weight:600;}
.vd-price .pv-h{color:var(--red);}.vd-price .pv-c-up{color:var(--red);}.vd-price .pv-c-dn{color:var(--green);}
.vd-dayvol{font-family:monospace;font-size:9px;color:rgba(74,158,255,.7);white-space:nowrap;}
.vd-amount{font-family:monospace;font-size:9px;color:rgba(167,139,250,.75);white-space:nowrap;}
.vd-peak{font-family:monospace;font-size:8.5px;color:rgba(251,146,60,.85);white-space:nowrap;}
.vd-sep{width:1px;background:var(--border);flex-shrink:0;margin:4px 0;align-self:stretch;}
.empty{text-align:center;padding:50px;color:var(--muted);}
.empty h3{font-size:14px;color:var(--text);margin-bottom:5px;}
.empty p{font-size:11px;line-height:2;}
.loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:46px;color:var(--muted);font-size:13px;}
.spin{width:16px;height:16px;border:2px solid var(--border2);border-top-color:var(--gold);border-radius:50%;animation:spin .75s linear infinite;}
.log-wrap{background:var(--surf1);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:14px;}
.log-head{display:flex;align-items:center;gap:7px;padding:7px 13px;border-bottom:1px solid var(--border);cursor:pointer;font-size:11px;color:var(--muted);}
.log-head:hover{color:var(--text);}
.log-body{display:none;max-height:130px;overflow-y:auto;padding:9px 13px;}
.log-body.open{display:block;}
.log-body::-webkit-scrollbar{width:3px;}
.log-body::-webkit-scrollbar-thumb{background:var(--border2);}
.ll{font-family:monospace;font-size:9.5px;line-height:1.85;color:var(--muted);}
.ll-ok{color:var(--green);}.ll-err{color:var(--red);}.ll-run{color:var(--gold);}
.ll-prog { color: var(--cyan); font-family: monospace; }
.overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.76);backdrop-filter:blur(9px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .22s;padding:16px;}
.overlay.open{opacity:1;pointer-events:all;}
.modal{background:var(--surf2);border:1px solid var(--border2);border-radius:10px;width:min(660px,96vw);max-height:88vh;display:flex;flex-direction:column;transform:translateY(14px) scale(.97);transition:transform .28s cubic-bezier(.4,0,.2,1);box-shadow:0 22px 55px rgba(0,0,0,.6);}
.overlay.open .modal{transform:none;}
.modal-head{padding:15px 18px 11px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.modal-title{font-size:14px;font-weight:700;}
.modal-close{width:26px;height:26px;border-radius:5px;background:var(--border);border:none;color:var(--muted);font-size:13px;cursor:pointer;transition:all .18s;}
.modal-close:hover{background:var(--red);color:#fff;}
.modal-body{flex:1;overflow-y:auto;padding:15px 18px;}
.modal-body::-webkit-scrollbar{width:3px;}
.modal-body::-webkit-scrollbar-thumb{background:var(--border2);}
.smi{background:var(--surf3);border:1px solid var(--border);border-radius:6px;padding:11px 13px;margin-bottom:9px;}
.smi-name{font-size:13px;font-weight:700;color:var(--gold);}
.smi-cnt{font-size:10px;color:var(--muted);font-family:monospace;}
.smi-codes{font-family:monospace;font-size:11px;color:var(--muted);line-height:1.8;word-break:break-all;margin-top:5px;}
.create-form{background:var(--surf3);border:1px solid var(--border2);border-radius:7px;padding:13px;margin-bottom:13px;}
.cf-title{font-size:12px;color:var(--gold);margin-bottom:9px;font-weight:600;}
.cf-row{display:flex;align-items:center;gap:7px;margin-bottom:7px;flex-wrap:wrap;}
.ti{flex:1;min-width:130px;padding:6px 9px;border-radius:5px;background:var(--surf2);border:1px solid var(--border2);color:var(--text);font-family:monospace;font-size:12px;outline:none;transition:border-color .18s;}
.ti:focus{border-color:var(--gold);}
.ti::placeholder{color:var(--muted2);}
.code-ta{width:100%;min-height:72px;padding:7px 9px;border-radius:5px;background:var(--surf2);border:1px solid var(--border2);color:var(--text);font-family:monospace;font-size:11px;outline:none;resize:vertical;line-height:1.7;}
.code-ta:focus{border-color:var(--gold);}
/* 折叠组件 */
.collapse-hd{display:flex;align-items:center;gap:8px;padding:7px 14px;cursor:pointer;user-select:none;border-top:1px solid var(--border);background:rgba(255,255,255,.015);transition:background .15s;}
.collapse-hd:hover{background:rgba(255,255,255,.03);}
.collapse-arrow{font-size:10px;color:var(--muted);transition:transform .2s;width:14px;text-align:center;}
.collapse-arrow.open{transform:rotate(90deg);}
.collapse-label{font-size:11px;font-weight:600;}
.collapse-meta{font-size:9.5px;color:var(--muted);font-family:monospace;margin-left:auto;}
.collapse-body{overflow:hidden;transition:max-height .3s ease;}
.collapse-body.closed{max-height:0;}
.collapse-scroll{overflow-y:auto;max-height:320px;}
.collapse-scroll::-webkit-scrollbar{width:4px;}
.collapse-scroll::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px;}
.layer-card{background:var(--surf1);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:0;}
.layer-hd{display:flex;align-items:center;justify-content:space-between;padding:10px 15px;background:rgba(255,255,255,.02);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;}
.layer-hd-l{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.layer-hd-r{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.layer-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.layer-title{font-size:14px;font-weight:700;}
.layer-act-bar{display:flex;align-items:center;gap:9px;padding:8px 14px;background:rgba(0,0,0,.15);border-bottom:1px solid var(--border);flex-wrap:wrap;}
.lab-group{display:flex;align-items:center;gap:5px;flex-wrap:wrap;}
.lab-label{font-size:9px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;}
.lab-sep{width:1px;height:18px;background:var(--border2);margin:0 4px;flex-shrink:0;}
#vd-tip{position:fixed;z-index:9999;pointer-events:none;background:var(--surf3);border:1px solid var(--border2);border-radius:8px;padding:10px 13px;width:244px;box-shadow:0 8px 28px rgba(0,0,0,.62);opacity:0;transition:opacity .15s;}
#vd-tip.show{opacity:1;}
.tip-hd{font-size:12px;font-weight:700;color:var(--gold);margin-bottom:7px;padding-bottom:6px;border-bottom:1px solid var(--border);}
.tip-sec{font-size:9px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin:6px 0 3px;}
.tip-row{display:flex;justify-content:space-between;gap:10px;margin-bottom:3px;}
.tip-lbl{font-size:10px;color:var(--muted);white-space:nowrap;}
.tip-val{font-family:monospace;font-size:11px;font-weight:600;text-align:right;}
.tip-sep{border-top:1px dashed var(--border);margin:5px 0;}
.tip-empty{font-size:9.5px;color:var(--muted2);font-family:monospace;padding:2px 0;}
.tip-r{color:var(--red);}.tip-g{color:var(--green);}.tip-gold{color:var(--gold);}.tip-o{color:var(--orange);}
.zone-label{font-size:11px;font-weight:700;color:var(--gold);letter-spacing:.12em;text-transform:uppercase;padding:7px 14px;border-radius:5px;background:rgba(212,168,67,.08);border:1px solid rgba(212,168,67,.2);margin-bottom:8px;display:block;}
.cc-label{font-size:9px;color:var(--muted);letter-spacing:.08em;}
@media(max-width:768px){main{padding:10px;}header{padding:0 12px;}}
/* 实时涨停表格 */
.zt-full-table{width:100%;border-collapse:collapse;font-size:11px;}
.zt-full-table thead th{padding:6px 8px;text-align:left;font-size:9.5px;letter-spacing:.07em;color:var(--muted);border-bottom:1px solid var(--border2);font-weight:400;white-space:nowrap;cursor:pointer;user-select:none;}
.zt-full-table thead th:hover{color:var(--gold);}
.zt-full-table tbody tr{border-bottom:1px solid rgba(30,42,56,.4);transition:background .1s;}
.zt-full-table tbody tr:hover{background:rgba(212,168,67,.03);}
.zt-full-table tbody tr:last-child{border-bottom:none;}
.zt-full-table td{padding:5px 8px;vertical-align:middle;}
.zt-tbl-wrap{overflow-x:auto;}
.zt-tbl-wrap::-webkit-scrollbar{height:3px;}
.zt-tbl-wrap::-webkit-scrollbar-thumb{background:var(--border2);}
.zt-sort-bar{display:flex;align-items:center;gap:6px;padding:6px 13px;border-bottom:1px solid var(--border);flex-wrap:wrap;background:rgba(255,255,255,.01);}
.zt-sort-label{font-size:9px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;}
/* 涨停表历史分隔列 */
.lt td.hist-sep,.lt th.hist-sep{background:rgba(255,255,255,.02);padding:0 3px;border-left:1px dashed rgba(167,139,250,.2);border-right:1px dashed rgba(167,139,250,.2);color:rgba(167,139,250,.3);font-size:9px;text-align:center;user-select:none;white-space:nowrap;}
/* 日期选择弹窗 */
.date-picker-overlay{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.8);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s;padding:16px;}
.date-picker-overlay.open{opacity:1;pointer-events:all;}
.date-picker-modal{background:var(--surf2);border:1px solid var(--border2);border-radius:10px;width:min(480px,94vw);max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 50px rgba(0,0,0,.7);}
.date-picker-head{padding:14px 18px 10px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.date-picker-title{font-size:14px;font-weight:700;color:var(--gold);}
.date-picker-body{padding:14px 18px;overflow-y:auto;flex:1;}
.date-picker-hint{font-size:10px;color:var(--muted);margin-bottom:10px;font-family:monospace;}
.date-check-list{display:flex;flex-direction:column;gap:6px;}
.date-check-item{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:6px;border:1px solid var(--border);background:var(--surf3);cursor:pointer;transition:border-color .15s;}
.date-check-item:hover{border-color:var(--gold);}
.date-check-item.selected{border-color:var(--gold);background:rgba(212,168,67,.08);}
.date-check-item input[type=checkbox]{accent-color:var(--gold);width:14px;height:14px;cursor:pointer;}
.date-check-label{font-family:monospace;font-size:12px;color:var(--text);}
.date-picker-footer{padding:12px 18px;border-top:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}
.date-sel-hint{font-size:10px;color:var(--muted);font-family:monospace;}

#lv-lhb-body {
  max-height: 600px;
  overflow-y: auto;
}
#lv-lhb-body::-webkit-scrollbar { width: 4px; }
#lv-lhb-body::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 2px; }
