:root{--bg:#0f1218;--bg2:#161b24;--bg3:#1d2431;--line:#262e3c;--fg:#d6dbe5;--dim:#7d8799;--red:#ff4d4f;--green:#2ecc71;--yellow:#f5c542;--blue:#4c9aff;--purple:#b37feb;--orange:#ff9f43;--app-fs:12px}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:var(--app-fs,12px)/1.45 "Microsoft YaHei UI","Microsoft YaHei",-apple-system,"PingFang SC","Hiragino Sans GB","Noto Sans CJK SC","Source Han Sans SC","WenQuanYi Micro Hei","Segoe UI",Arial,sans-serif;height:100%;overflow:hidden}
body{display:flex;flex-direction:column}
b{font-weight:600}
.red{color:var(--red)}.green{color:var(--green)}.flat{color:var(--fg)}.dim{color:var(--dim)}.yellow{color:var(--yellow)}.blue{color:var(--blue)}
.hidden{display:none!important}
button{background:var(--bg3);color:var(--fg);border:1px solid var(--line);border-radius:3px;padding:2px 8px;cursor:pointer;font-size:12px}
button:hover{border-color:var(--blue)}
button.active{background:var(--blue);color:#fff;border-color:var(--blue)}
input[type=text],input:not([type]){background:var(--bg3);border:1px solid var(--line);color:var(--fg);border-radius:3px;padding:3px 6px;font-size:12px;outline:none}
input:focus{border-color:var(--blue)}
::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#2f3a4c;border-radius:3px}

/* 顶栏 */
#topbar{display:flex;align-items:center;gap:14px;padding:4px 10px;background:var(--bg2);border-bottom:1px solid var(--line);height:36px}
.brand{font-weight:700;font-size:14px;color:#fff;white-space:nowrap}.brand .sub{font-weight:400;font-size:11px;color:var(--dim);margin-left:4px}
.search-wrap{position:relative}
#search{width:280px}
.drop{position:absolute;top:26px;left:0;width:340px;background:var(--bg3);border:1px solid var(--line);z-index:50;max-height:360px;overflow:auto;box-shadow:0 4px 14px #000a}
.drop div{padding:4px 8px;cursor:pointer;display:flex;gap:8px}.drop div:hover,.drop div.sel{background:#28344a}
.drop .py{color:var(--dim)}
.toggles{display:flex;gap:10px;white-space:nowrap}.toggles label{cursor:pointer;color:#c8cfda}
.status{margin-left:auto;color:var(--dim);white-space:nowrap;display:flex;align-items:center;gap:6px}
.dot{width:8px;height:8px;border-radius:50%;background:#666;display:inline-block}.dot.on{background:var(--green)}.dot.off{background:var(--orange)}

/* 指数条 */
#strip{display:flex;gap:8px;padding:4px 10px;background:var(--bg2);border-bottom:1px solid var(--line)}
.strip-row{display:flex;gap:6px;flex:1}
.idx-card{display:flex;flex-direction:column;background:var(--bg3);border:1px solid var(--line);border-radius:4px;padding:3px 6px;min-width:150px;flex:1;cursor:default}
.idx-card .n{color:var(--dim);font-size:11px;display:flex;justify-content:space-between}
.idx-card .v{font-size:14px;font-weight:600;display:flex;gap:8px;align-items:baseline}
.idx-card .v small{font-size:11px;font-weight:400}
.idx-card .spark{height:34px;width:100%}
.strip-side{display:flex;flex-direction:column;gap:3px;min-width:420px}
.strip-us,.strip-cmd{display:flex;gap:6px;flex-wrap:wrap}
.mini{background:var(--bg3);border:1px solid var(--line);border-radius:3px;padding:1px 6px;white-space:nowrap}
.mini .n{color:var(--dim);margin-right:4px}
#styles{display:flex;align-items:center;gap:8px;padding:3px 10px;border-bottom:1px solid var(--line);background:var(--bg2)}
#styles .lbl{color:var(--dim);white-space:nowrap}
#styles-row{display:flex;gap:4px;flex:1;overflow:auto}
.style-chip{border:1px solid var(--line);border-radius:3px;padding:1px 8px;white-space:nowrap;background:var(--bg3);display:flex;gap:6px;align-items:center}
.style-chip.lead{border-color:var(--yellow);box-shadow:0 0 0 1px var(--yellow) inset}
.style-chip .bar{height:6px;border-radius:2px;background:var(--red);min-width:2px}
.style-chip .bar.g{background:var(--green)}

/* 主体 */
#main{display:grid;grid-template-columns:300px 1fr 330px;gap:6px;padding:6px 10px;flex:1;min-height:0}
#left,#right,#center{min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:6px}
#left{overflow:auto}
.panel{background:var(--bg2);border:1px solid var(--line);border-radius:4px;padding:6px 8px}
.ph{font-weight:600;color:#e8ecf3;margin-bottom:4px;display:flex;align-items:center;gap:6px}
.ph small{font-weight:400;color:var(--dim)}
.score{font-size:18px;color:var(--yellow)}
.updown{margin:4px 0}.ud-bar{display:flex;height:8px;border-radius:3px;overflow:hidden;background:#333}
.ud-bar .up{background:var(--red)}.ud-bar .down{background:var(--green)}
.ud-text{margin-top:3px;color:#c8cfda}
.kv-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:3px 6px;margin-top:4px}
.kv-grid div{display:flex;flex-direction:column;align-items:center;background:var(--bg3);border-radius:3px;padding:2px}
.kv-grid span{color:var(--dim);font-size:11px}.kv-grid b{font-size:13px}
.chart{width:100%}

#tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:4px}
#tabs button{border:none;background:transparent;padding:3px 9px;border-radius:3px 3px 0 0}
#tabs button.active{background:var(--bg3);color:#fff;border-bottom:2px solid var(--blue)}
#tab-toolbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;min-height:22px;color:var(--dim)}
#tab-body{flex:1;overflow:auto;background:var(--bg2);border:1px solid var(--line);border-radius:4px}
table.grid{width:100%;border-collapse:collapse;font-size:1em}   /* 跟随界面字号 */
table.grid th{position:sticky;top:0;background:var(--bg3);color:var(--dim);font-weight:500;text-align:right;padding:4px 6px;white-space:nowrap;cursor:pointer;z-index:2;border-bottom:1px solid var(--line)}
table.grid th.l,table.grid td.l{text-align:left}
table.grid td{padding:3px 6px;border-bottom:1px solid #1c2330;text-align:right;white-space:nowrap}
table.grid tr:hover td{background:#1f2836}
table.grid tr.clickable{cursor:pointer}
.stock-link{cursor:pointer;color:#e8ecf3;font-weight:600}.stock-link:hover{color:var(--blue);text-decoration:underline}
.tag{display:inline-block;border-radius:3px;padding:0 5px;font-size:11px;background:#2a3446;color:#c8cfda;margin-right:3px;line-height:16px}
.tag.hot{background:#4a2530;color:#ff8f91}.tag.role{background:#3a2f12;color:var(--yellow)}
.tag.r-龙头{background:#5a1c1c;color:#ffb3b3}.tag.r-前排{background:#4a2530;color:#ff9a9c}.tag.r-中军{background:#1e3a5a;color:#9fd0ff}.tag.r-后排{background:#3d2f1a;color:#ffd78a}.tag.r-补涨{background:#2f3d1a;color:#c8f28a}.tag.r-炸板{background:#3a3a3a;color:#ddd}.tag.r-跟随{background:#2a3446}.tag.r-弱势{background:#1e2a22;color:#8fd0a5}
.reason{color:#e6c07b;max-width:280px;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:bottom}
.lbc{display:inline-block;min-width:18px;text-align:center;border-radius:3px;background:#5a1c1c;color:#fff;font-weight:700;padding:0 4px}
.lbc.l1{background:#3a3a3a}.lbc.l2{background:#7a2e2e}.lbc.l3{background:#a33}.lbc.l4{background:#c03}
.ttl{display:flex;gap:10px;align-items:center;padding:6px 8px;border-bottom:1px solid var(--line);color:var(--dim)}
.ttl b{color:#fff}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:6px;padding:6px}
.card{background:var(--bg3);border:1px solid var(--line);border-radius:4px;padding:6px;cursor:pointer}
.card:hover{border-color:var(--blue)}
.card .t{display:flex;justify-content:space-between;font-weight:600}
.card .s{color:var(--dim);font-size:11px;margin-top:2px}
.ladder-level{padding:6px 8px;border-bottom:1px solid var(--line)}
.ladder-level .h{font-weight:700;color:var(--yellow);margin-right:8px}
.chip{display:inline-block;background:var(--bg3);border:1px solid var(--line);border-radius:3px;padding:1px 6px;margin:2px;cursor:pointer}
.chip:hover{border-color:var(--blue)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px;height:100%}
.split>div{min-height:0;overflow:auto;border:1px solid var(--line);border-radius:4px}
.two-col{display:grid;grid-template-columns:320px 1fr;gap:6px;height:100%}
.two-col>div{min-height:0;overflow:auto}

/* 快讯 */
#right{background:var(--bg2);border:1px solid var(--line);border-radius:4px;padding:6px}
.src-filter{display:flex;gap:2px;margin-left:auto;font-weight:400;align-items:center}
.src-filter button{padding:1px 6px;font-size:11px}.src-filter label{margin-left:6px;color:var(--dim)}
#news-q{width:100%;margin-bottom:4px}
#news-list{flex:1;overflow:auto}
.news{padding:5px 4px;border-bottom:1px solid #1c2330}
.news .t{display:flex;gap:6px;color:var(--dim);font-size:11px}
.news .src{color:var(--blue)}
.news .title{font-weight:600;color:#e8ecf3;margin:2px 0}
.news.imp .title{color:var(--red)}
.news .c{color:#aeb6c4;max-height:54px;overflow:hidden;cursor:pointer}
.news .c.open{max-height:none}
.news .stocks{margin-top:2px}
.news-compact .news .c{max-height:36px}

/* 抽屉 */
#drawer{position:fixed;top:40px;right:0;bottom:0;width:980px;max-width:96vw;background:var(--bg2);border-left:1px solid var(--line);box-shadow:-6px 0 20px #000c;z-index:100;display:flex;flex-direction:column}
.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line);font-size:14px}
.drawer-head b{font-size:18px}
.drawer-actions{display:flex;gap:6px}
.drawer-body{padding:8px 12px;overflow:auto;flex:1;display:flex;flex-direction:column}
.d-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.d-sub{font-weight:600;margin:8px 0 4px;color:#e8ecf3}.d-sub small{color:var(--dim);font-weight:400}
.concepts .cpt{display:inline-flex;align-items:center;gap:4px;background:var(--bg3);border:1px solid var(--line);border-radius:3px;padding:2px 6px;margin:2px;cursor:pointer}
.concepts .cpt.active{border-color:var(--yellow)}
.concepts .cpt .sc{color:var(--dim);font-size:10px}
/* 屏蔽用的 ✕ 平时不显示，鼠标停在该概念上才淡淡出现，避免点概念时误触 */
.concepts .cpt .x{color:var(--dim);cursor:pointer;margin-left:2px;width:0;overflow:hidden;opacity:0;transition:opacity .15s,width .15s}
.concepts .cpt:hover .x{width:12px;opacity:.5}
.concepts .cpt .x:hover{opacity:1;color:var(--red)}
.concepts .cpt.fin{opacity:.6}
.d-add{display:flex;gap:8px;align-items:center;margin-top:4px}.d-add input{width:200px}
.peer-tabs button{padding:1px 8px;margin-left:4px}
.yidong div{padding:1px 0}
.small{font-size:.92em}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#222c3d;border:1px solid var(--blue);padding:6px 14px;border-radius:4px;z-index:200}
.review-head{display:flex;gap:8px;align-items:center;padding:6px 8px;flex-wrap:wrap}
.review-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:6px}
.review-grid .box{border:1px solid var(--line);border-radius:4px;padding:6px;min-height:150px}

/* ---- v2 追加 ---- */
.ud-bar .flat{background:#666}
.kpi{cursor:pointer}.kpi:hover{outline:1px solid var(--blue);border-radius:3px}
.mini-tabs{margin-left:auto;display:flex;gap:2px;font-weight:400}.mini-tabs button{padding:0 6px;font-size:11px}
.idx-card{cursor:pointer}
#hover-chart{position:fixed;z-index:120;width:360px;background:var(--bg2);border:1px solid var(--line);border-radius:4px;box-shadow:0 6px 20px #000c;padding:6px;pointer-events:none}
#hover-chart .hc-title{font-weight:600;margin-bottom:2px}#hover-chart .hc-body{height:150px}
.mini{cursor:pointer}
#modal{position:fixed;inset:0;background:#0009;z-index:150;display:flex;align-items:center;justify-content:center}
.modal-box{width:1000px;max-width:96vw;background:var(--bg2);border:1px solid var(--line);border-radius:6px;padding:10px;box-shadow:0 10px 40px #000}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:14px}
#alerts-box{position:fixed;right:12px;bottom:12px;z-index:140;display:flex;flex-direction:column;gap:6px;width:360px}
.alert{background:#1b2333;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:4px;padding:6px 8px;box-shadow:0 4px 14px #000a;cursor:pointer;animation:slidein .25s}
.alert.imp{border-left-color:var(--red)}
.alert .t{color:var(--dim);font-size:11px;display:flex;gap:6px}.alert .title{font-weight:600;color:#fff;margin-top:2px}.alert .c{color:#aeb6c4;font-size:11px;max-height:34px;overflow:hidden}
@keyframes slidein{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
/* 盯盘页 */
.watch-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(200px,auto);gap:6px;padding:6px}
.wpanel{background:var(--bg3);border:1px solid var(--line);border-radius:4px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.wpanel .wh{display:flex;align-items:center;gap:6px;padding:4px 8px;font-weight:600;color:#e8ecf3;border-bottom:1px solid var(--line);background:#1a212c}
.wpanel .wh small{color:var(--dim);font-weight:400}.wpanel .wh .more{margin-left:auto;font-weight:400;color:var(--blue);cursor:pointer}
.wpanel .wb{overflow:auto;flex:1;max-height:330px}
/* 行距随字号缩放，选小字号才真的能多显示几行 */
.wpanel table.grid td{padding:.18em .45em}.wpanel table.grid th{padding:.18em .45em}
.stream{font-size:11px}.stream div{padding:3px 6px;border-bottom:1px solid #1c2330;display:flex;gap:6px;align-items:baseline}
.stream .tm{color:var(--dim);white-space:nowrap}.stream .ty{white-space:nowrap}.stream .ty.异动{color:var(--yellow)}.stream .ty.公告{color:var(--blue)}.stream .ty.快讯{color:var(--purple)}
.stream .imp{color:var(--red)}
.bkff-row{display:flex;align-items:center;gap:6px;padding:3px 6px;border-bottom:1px solid #1c2330}
.bkff-row .nm{width:90px;font-weight:600;cursor:pointer}.bkff-row .sp{width:150px;height:30px}.bkff-row .v{width:70px;text-align:right}
.pos-form{display:flex;gap:6px;align-items:center;padding:6px 8px;flex-wrap:wrap}.pos-form input{width:110px}
.rs-tabs{display:flex;gap:2px;flex-wrap:wrap;margin-bottom:4px}
.rs-box{border:1px solid var(--line);border-radius:4px;padding:6px;max-height:420px;overflow:auto}
.rs-box h4{margin:6px 0 3px;color:var(--yellow);font-size:12px}
.rs-box p{margin:2px 0;color:#c8cfda}
.ann{padding:3px 0;border-bottom:1px solid #1c2330}.ann .t{color:var(--dim);font-size:11px;margin-right:6px}.ann.imp .title{color:var(--red)}.ann a{color:inherit;text-decoration:none}.ann a:hover{text-decoration:underline}
.pill{display:inline-block;border-radius:8px;padding:0 6px;font-size:10px;background:#2a3446;color:#c8cfda;margin-left:4px}
.pill.cat{background:#4a2530;color:#ff9a9c}
#right .ph{flex-wrap:wrap}
.src-filter{margin-left:0;flex-wrap:wrap;width:100%}
.src-filter button{padding:0 5px;font-size:11px}

/* ---- v3：可拖动列宽 / 消息中心 ---- */
#main{grid-template-columns:var(--left-w,300px) 6px 1fr 6px var(--right-w,340px)}
.gutter{cursor:col-resize;background:transparent;border-radius:3px;position:relative}
.gutter::after{content:"";position:absolute;top:45%;left:2px;width:2px;height:40px;border-radius:2px;background:#2f3a4c}
.gutter:hover,.gutter.active{background:#1f2a3a}.gutter:hover::after,.gutter.active::after{background:var(--blue)}
body.resizing{cursor:col-resize;user-select:none}
#right{padding:4px 6px;gap:4px}
.msg-head{display:flex;align-items:center;gap:8px;font-size:12px}.msg-head b{color:#e8ecf3}
.msg-head .mini-tabs{margin-left:0}
.msg-head label{margin-left:auto;color:var(--dim);cursor:pointer}
.msg-scope{display:flex;gap:2px;flex-wrap:wrap}.msg-scope button{padding:0 6px;font-size:11px}
.msg-sec{display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.msg-sec.grow{flex:1 1 0}
.msg-sec.collapsed{flex:0 0 auto}.msg-sec.collapsed .msg-list,.msg-sec.collapsed #news-q{display:none}
.msg-sec.collapsed .caret{transform:rotate(-90deg)}
#sec-hot.grow{flex:0 0 38%}#sec-news.grow{flex:1 1 0}
#right.only-hot #sec-hot.grow{flex:1 1 0}
.msg-sec-head{display:flex;align-items:center;gap:6px;padding:3px 6px;background:#1a212c;font-weight:600;color:#e8ecf3;cursor:pointer;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.msg-sec-head small{font-weight:400;color:var(--dim)}
.msg-sec-head .caret{display:inline-block;transition:transform .15s;color:var(--dim)}
.msg-sec-head .src-filter{width:auto;margin-left:auto}
.msg-list{flex:1;overflow:auto;min-height:0}
#news-q{margin:3px 4px;width:calc(100% - 8px)}
#right.compact .news .c{display:none}
.news.yd .title{color:var(--yellow)}
.news .pct{margin-left:4px}
/* 盯盘 板块联动 */
.link-row{padding:4px 6px;border-bottom:1px solid #1c2330}
.link-row .h{display:flex;gap:6px;align-items:baseline;flex-wrap:wrap}
.link-row .h b{color:var(--yellow)}
.link-row .peers{color:#aeb6c4;font-size:11px;margin-top:2px}
.via{background:#2a3446;border-radius:3px;padding:0 4px;font-size:10px;color:#c8cfda}
.via.hold{background:#4a2530;color:#ff9a9c}
select{background:var(--bg3);color:var(--fg);border:1px solid var(--line);border-radius:3px;font-size:11px;padding:1px 2px}
/* ---- v4：产业链 / 板块强度 ---- */
.ent-chips{display:flex;flex-wrap:wrap;gap:4px;padding:6px 8px}
.ent-chips .chip.on{border-color:var(--yellow);color:var(--yellow)}
.rel-badge{display:inline-block;border-radius:3px;padding:0 5px;font-size:11px;margin-right:3px;background:#2a3446}
.rel-客户{background:#4a2530;color:#ff9a9c}.rel-供应商{background:#1e3a5a;color:#9fd0ff}.rel-合作{background:#3a2f12;color:var(--yellow)}
.rel-投资,.rel-被投资{background:#2f3d1a;color:#c8f28a}.rel-相关,.rel-板块{background:#2a3446;color:#aeb6c4}
.vf{display:inline-block;border-radius:3px;padding:0 4px;font-size:10px;background:#1e3a2a;color:#8fd0a5}.vf.no{background:#3a3a3a;color:#bbb}
.sel-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.sel-chips .chip .x{margin-left:4px;color:var(--dim);cursor:pointer}.sel-chips .chip .x:hover{color:var(--red)}
.qa-item{padding:4px 6px;border-bottom:1px solid #1c2330}.qa-item .q{color:#aeb6c4}.qa-item .a{color:#e8ecf3;margin-top:2px}

/* ===== v5：板块强度勾选列表 / 异动播报 / 涨停板型 ===== */
/* 列表列宽跟着中间栏走，别把图表挤没；中间栏很窄时改成上下堆叠 */
.str-layout{display:grid;grid-template-columns:clamp(130px,26%,240px) 1fr;gap:6px;padding:6px;height:100%;min-height:0}
.str-layout.narrow{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:auto}
.str-layout.narrow .str-list{max-height:150px}
.str-list{overflow:auto;border:1px solid var(--line);border-radius:4px;background:var(--bg3);min-height:0}
.str-item{display:flex;align-items:center;gap:6px;padding:5px 8px;border-bottom:1px solid #1c2330;cursor:pointer;font-size:13px}
.str-item:hover{background:#1f2836}.str-item.on{background:#1b2740}
.str-item input{margin:0;accent-color:var(--blue)}
.str-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.str-item .nm small{font-weight:400;margin-left:2px}
.badge{display:inline-block;border:1px solid currentColor;border-radius:3px;padding:0 5px;font-size:11px;line-height:16px;white-space:nowrap}
.badge.red{color:var(--red);background:#3a1a1c}.badge.green{color:var(--green);background:#15301f}.badge.dim{color:var(--dim)}
.str-main{display:flex;flex-direction:column;min-height:0;gap:6px}
#chart-str{height:clamp(220px,40vh,400px);flex:none;min-width:0}
.str-main .d-sub{margin:2px 0 0}
#str-stats{overflow:auto;min-height:0}
.yd-set{width:100%;background:var(--bg3);border:1px solid var(--line);border-radius:4px;padding:6px 8px;display:flex;flex-direction:column;gap:6px;margin-top:4px}
.yd-set .row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--fg)}
/* 11 个异动类型排成网格，不再拉成长长一条 */
.yd-set .row.kinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:3px 10px}
.yd-set .row.kinds label{display:inline-flex;align-items:center;gap:3px;cursor:pointer;white-space:nowrap}
.yd-set .row > b{color:var(--dim);font-weight:400;min-width:58px}
.yd-set .row .lk{display:inline-flex;gap:8px;margin-left:auto}
.yd-set a{color:var(--blue);cursor:pointer;font-size:11px}
.yd-voice{display:inline-flex;align-items:center;gap:3px;margin-left:4px;font-weight:400;color:var(--fg)}
.zt-tag{display:inline-block;border-radius:3px;padding:0 5px;font-size:11px;line-height:16px;margin-right:3px;background:#2a3446;color:#c8cfda}
.zt-一字{background:#5a1c1c;color:#ffb3b3}.zt-秒板{background:#5a1c1c;color:#ffb3b3}.zt-硬板{background:#4a2530;color:#ff9a9c}.zt-T字{background:#4a3520;color:#ffc98a}
.zt-回封{background:#3a2f12;color:var(--yellow)}.zt-长腿{background:#1e3a5a;color:#9fd0ff}.zt-分歧{background:#3a2a4a;color:#d9b3ff}.zt-烂板{background:#3a3a3a;color:#ccc}
.zt-炸板中{background:#1e2a22;color:#8fd0a5}.zt-地天板{background:#4a3a10;color:#ffd700}.zt-尾盘板{background:#2a3446;color:#aeb6c4}.zt-换手板{background:#2a3446;color:#aeb6c4}

/* ===== v6：面板拖动排序 / 异动红涨绿跌 / 设置页 ===== */
.wpanel .wh .drag{cursor:grab;color:#55607a;user-select:none;line-height:1;margin-right:2px}
.wpanel .wh .drag:hover{color:var(--blue)}
.wpanel .wh .drag:active{cursor:grabbing}
.wpanel.dragging{opacity:.45;outline:1px dashed var(--blue)}
.wpanel.dropbefore{box-shadow:inset 3px 0 0 var(--blue)}
.wpanel.dropafter{box-shadow:inset -3px 0 0 var(--blue)}
.wpanel.span2{grid-column:span 2}
.wpanel.tall .wb{max-height:700px}
.yd-k{display:inline-block;border-radius:3px;padding:0 6px;font-size:11px;line-height:16px;font-weight:600;white-space:nowrap;border:1px solid transparent}
.yd-k.up{background:#43181c;color:#ff7b7c;border-color:#6d2b2e}
.yd-k.down{background:#12301f;color:#48d68a;border-color:#1d4a31}
/* 瀑布流：卡片高度参差不齐时不会留下大片空档 */
.settings-page{padding:10px;column-width:360px;column-gap:10px}
.set-card{background:var(--bg3);border:1px solid var(--line);border-radius:5px;padding:9px 11px 10px;margin:0 0 10px;break-inside:avoid;-webkit-column-break-inside:avoid}
.set-card.wide{width:100%}
.set-card h3{margin:0 0 7px;padding-left:7px;font-size:13px;color:#e8ecf3;font-weight:600;border-left:3px solid var(--blue);line-height:1.2}
.set-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:6px 0;line-height:1.9}
.set-row + .set-row{border-top:1px solid #1b222e;padding-top:6px}
.set-row label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.set-hint{color:#69738a;font-size:11px;margin-top:8px;padding-top:7px;border-top:1px dashed #232b3a;line-height:1.65}
.settings-page input[type=password],.settings-page input[type=text],.settings-page input:not([type]){background:var(--bg2);border:1px solid var(--line);color:var(--fg);border-radius:3px;padding:3px 6px;font-size:12px;outline:none}
.settings-page input:focus{border-color:var(--blue)}
.set-card .yd-set{border:none;padding:0;margin:0;background:transparent}
.pcfg{display:flex;flex-direction:column;gap:1px;max-height:300px;overflow:auto}
.pcfg-row{display:flex;align-items:center;gap:6px;padding:3px 4px;border-bottom:1px solid #1c2330}
.pcfg-row:hover{background:#1f2836}
.pcfg-row .idx{color:var(--dim);width:18px;text-align:right}
.pcfg-row .nm{flex:1;min-width:130px}
.pcfg-row button{padding:0 7px}

/* ===== v7：个股前进/后退 ===== */
.d-nav{display:inline-flex;gap:2px;margin-right:6px;vertical-align:middle}
.d-nav button{padding:0 8px;font-size:13px;line-height:20px}
.d-nav button:disabled{opacity:.35;cursor:default;border-color:var(--line)}
.d-nav button:disabled:hover{border-color:var(--line)}

/* ===== v8：消息栏最小化 / 盯盘行列与字号 ===== */
.msg-min-btn{padding:0 7px;line-height:16px;color:var(--dim)}
.msg-mini{display:none}
#main.right-min{--right-w:26px}
#main.right-min #gutter-right{visibility:hidden;pointer-events:none}   /* 用 visibility 而非 display，保住网格轨道，否则 #right 会落到 6px 的分隔条列 */
#right.min{padding:2px;align-items:center}
#right.min>*{display:none}
#right.min>.msg-mini{display:flex;align-items:center;justify-content:flex-start;gap:8px;height:100%;width:100%;cursor:pointer;color:var(--dim);
  writing-mode:vertical-rl;letter-spacing:3px;font-size:12px;padding:6px 0;user-select:none}
#right.min>.msg-mini:hover{color:var(--blue)}
#right.min>.msg-mini #mini-count{color:var(--yellow);letter-spacing:1px}
.watch-grid{grid-template-columns:repeat(var(--wg-cols,3),1fr)}
.watch-grid.fit{grid-auto-rows:var(--wg-rowh,220px)}
.watch-grid.fit .wpanel .wb{max-height:none}
.wpanel.span3{grid-column:span 3}
.wpanel.rspan2{grid-row:span 2}
.wpanel.rspan2 .wb{max-height:700px}
.wpanel{font-size:var(--wp-fs,1em)}   /* 未单独设置时跟随界面字号 */
.wpanel table.grid,.wpanel table.grid th,.wpanel table.grid td{font-size:1em}
.wpanel .wh{font-size:calc(1em + 1px)}
.wpanel .wh small,.wpanel .small,.wpanel .stream,.wpanel .tag,.wpanel .yd-k,.wpanel .link-row .peers,.wpanel .bkff-row .small{font-size:.92em}
.wpanel .lbc,.wpanel .role{font-size:.92em}

/* ===== v9：标题栏拖动排序 + 边缘拖拽调整面板大小 ===== */
.wpanel{position:relative}
.wpanel .wh{cursor:grab;user-select:none}
.wpanel .wh:active{cursor:grabbing}
.wpanel .wh button,.wpanel .wh select,.wpanel .wh label,.wpanel .wh input,.wpanel .wh .more{cursor:pointer}
.wpanel.sized .wb{max-height:none}
.rsz{position:absolute;z-index:6;opacity:0;background:var(--blue);transition:opacity .12s}
.rsz:hover{opacity:.7}                     /* 只有鼠标真的移到边缘才提示，划过面板不再整圈发亮 */
.wpanel.resizing .rsz{opacity:.85}
.rsz-r{top:0;right:0;width:5px;height:100%;cursor:col-resize}
.rsz-b{left:0;bottom:0;height:5px;width:100%;cursor:row-resize}
.rsz-c{right:0;bottom:0;width:13px;height:13px;cursor:nwse-resize;border-radius:0 0 4px 0}
.wpanel.resizing{outline:1px solid var(--blue)}
#rsz-tip{position:fixed;z-index:200;background:#1b2333;border:1px solid var(--blue);border-radius:3px;padding:2px 8px;font-size:12px;color:#fff;pointer-events:none;white-space:nowrap}
body.resizing{user-select:none}

/* 盯盘面板内不显示滚动条：底部一道渐隐提示「下面还有」，滚到底自动消失 */
.wpanel .wb{scrollbar-width:none;-ms-overflow-style:none}
.wpanel .wb::-webkit-scrollbar{width:0;height:0}
.wpanel.scrollable::after{content:"";position:absolute;left:1px;right:1px;bottom:1px;height:18px;pointer-events:none;border-radius:0 0 4px 4px;
  background:linear-gradient(to top,var(--bg3) 15%,rgba(29,36,49,0));transition:opacity .2s}
.wpanel.scrollable.at-end::after{opacity:0}

#toast .undo{color:var(--blue);cursor:pointer;margin-left:10px;text-decoration:underline}
#toast .undo:hover{color:#fff}

/* ===== v11：全球盘口条 ===== */
#strip-global{display:flex;flex-wrap:wrap;gap:2px 10px}
#strip-global .mini.gl{color:var(--fg)}
#strip-global .mini.gl .n{color:var(--dim);margin-right:3px}

/* 极小字号（6–9px）：进一步压缩行距与标签，保证还能看清 */
.wpanel[style*="--wp-fs:6px"],.wpanel[style*="--wp-fs:7px"],.wpanel[style*="--wp-fs:8px"],.wpanel[style*="--wp-fs:9px"],
.watch-grid[style*="--wp-fs:6px"] .wpanel,.watch-grid[style*="--wp-fs:7px"] .wpanel,
.watch-grid[style*="--wp-fs:8px"] .wpanel,.watch-grid[style*="--wp-fs:9px"] .wpanel{line-height:1.25}
.watch-grid[style*="--wp-fs:6px"] .wpanel .wh,.watch-grid[style*="--wp-fs:7px"] .wpanel .wh,
.watch-grid[style*="--wp-fs:8px"] .wpanel .wh,.watch-grid[style*="--wp-fs:9px"] .wpanel .wh{padding:2px 5px}

/* ===== v12：个股详情全屏 ===== */
#drawer.full{top:0;left:0;right:0;bottom:0;width:100%;max-width:100%;border-left:none;box-shadow:none;z-index:150}
#drawer.full .drawer-body{padding-bottom:10px}
#drawer.full #chart-stock{height:260px}
#d-full{font-size:13px;line-height:18px}
#drawer .drawer-head{cursor:default;user-select:none}

/* ===== v12.1：监控面板的持仓/自选标记 ===== */
.own{display:inline-block;width:15px;text-align:center;border-radius:2px;font-size:.85em;line-height:14px}
.own.hold{background:#4a2530;color:#ff9a9c}
.own.watch{background:#1e3a5a;color:#9fd0ff}

/* ===== v12.2：详情区高度可拖 + 研究小节折叠 ===== */
#d-peers,#d-research{overflow:auto;min-height:80px;border:1px solid transparent;border-radius:4px;flex:0 0 auto}
#d-peers:hover,#d-research:hover{border-color:#243044}
/* 相关快讯：吃掉抽屉里剩下的高度，内容多时随抽屉一起滚 */
#d-news{flex:1 0 auto;min-height:140px}
.drawer-body > .d-row,.drawer-body > .d-sub,.drawer-body > .d-rsz{flex:0 0 auto}
/* 三根拖动条：和左右分栏一样的手感 */
.d-rsz{height:7px;margin:2px 0 6px;border-radius:3px;cursor:row-resize;background:transparent;position:relative}
.d-rsz::after{content:"";position:absolute;left:50%;top:3px;width:60px;height:2px;margin-left:-30px;border-radius:2px;background:#2f3a4c}
.d-rsz:hover,.d-rsz.active{background:#1f2a3a}
.d-rsz:hover::after,.d-rsz.active::after{background:var(--blue)}
.rs-box h4.rs-h{cursor:pointer;user-select:none;display:flex;align-items:center;gap:5px;margin:10px 0 4px}
.rs-box h4.rs-h:hover{color:var(--blue)}
.rs-box h4.rs-h .caret{display:inline-block;transition:transform .15s;color:var(--dim);font-size:11px}
.rs-box h4.rs-h.collapsed .caret{transform:rotate(-90deg)}
.rs-body{display:block}

/* ===== v13：设置页（左分类 + 右分区） ===== */
.set-page{display:grid;grid-template-columns:132px 1fr;gap:10px;padding:10px;height:100%;min-height:0}
.set-page.narrow{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:auto}
.set-nav{display:flex;flex-direction:column;gap:2px}
.set-page.narrow .set-nav{flex-direction:row;flex-wrap:wrap}
.set-nav button{text-align:left;background:transparent;border:1px solid transparent;color:var(--fg);padding:5px 10px;border-radius:4px}
.set-nav button:hover{background:#1b2333;border-color:transparent}
.set-nav button.active{background:#1b2740;color:#fff;border-color:#2c4570}
.set-body{overflow:auto;min-height:0;max-width:760px;display:flex;flex-direction:column}
.set-line{display:flex;gap:10px;padding:9px 2px;border-bottom:1px solid #1c2330}
.set-line:last-child{border-bottom:none}
.set-line .lb{width:92px;flex:0 0 auto;color:var(--dim);padding-top:2px}
.set-line .bd{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.set-line .bd > div{width:100%}
.set-line .hint{color:#69738a;font-size:11px;line-height:1.6;margin-top:2px}
.set-line label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.set-body .pcfg{max-height:none;width:100%}
.set-body .pcfg-row .nm{min-width:110px}
.set-body input[type=password],.set-body input[type=text],.set-body input:not([type]){background:var(--bg2);border:1px solid var(--line);color:var(--fg);border-radius:3px;padding:3px 6px;font-size:12px}
.set-body .yd-set{border:none;padding:0;background:transparent}

/* 设置页里的控件统一一点 */
.settings-page select{padding:2px 4px}
.settings-page .mini-tabs{margin-left:0;gap:3px}
.settings-page .pcfg{max-height:none}
.settings-page .pcfg-row{padding:2px 2px}
.settings-page .pcfg-row .nm{min-width:0;flex:1}
.settings-page .set-row > label{white-space:nowrap}

.str-main{gap:4px}
.str-item .badge{font-size:10px;padding:0 4px}

.str-item .go{color:#55607a;cursor:pointer;padding:0 2px;font-size:12px}
.str-item .go:hover{color:var(--blue)}

/* ---------- 个股详情 K 线周期 ---------- */
.peer-tabs.kl{gap:2px;flex-wrap:nowrap}
.peer-tabs.kl button{padding:0 6px;line-height:16px;font-size:11px}
/* K 线撑满左栏：两栏等高由右栏内容决定，图表吃掉剩下的空间 */
.d-row > .d-col{display:flex;flex-direction:column;min-width:0}
#chart-stock{flex:1 1 auto;min-height:150px}
#drawer.full #chart-stock{height:auto;min-height:240px}
#d-yidong{max-height:230px;overflow:auto}
.kl-info{display:flex;flex-wrap:wrap;align-items:center;gap:0 7px;color:var(--dim);font-size:11px;line-height:17px;
  padding:1px 2px 2px;white-space:nowrap;overflow:hidden}
.kl-info b{color:#e8ecf3;font-weight:600}
.kl-info .v{color:#c8cfda}
.kl-info .sep{width:1px;height:10px;background:var(--line)}
.kl-info .mag{display:inline-flex;gap:0 7px}
#modal-kl-info{padding:0 12px 4px}

/* ---------- 盯盘常用布局弹层 ---------- */
#wg-btn{font-weight:600}
.wg-menu{position:fixed;z-index:80;background:var(--bg2);border:1px solid var(--line);border-radius:6px;
  padding:8px 10px 9px;box-shadow:0 10px 30px rgba(0,0,0,.55);min-width:274px}
.wg-menu .hd{color:#c8cfda;font-weight:600;margin-bottom:5px}
.wg-menu .hd .dim{font-weight:400}
.wg-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.wg-row{display:flex;gap:5px}
.wg-row button{flex:1}
.wg-p{display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 4px;background:var(--bg3);
  border:1px solid var(--line);border-radius:4px;cursor:pointer;color:var(--fg)}
.wg-p:hover,.wg-row button:hover{border-color:var(--blue)}
.wg-p.active,.wg-row button.active{border-color:var(--blue);background:#1b2942}
.wg-p .pv{display:grid;gap:1.5px;width:38px;height:26px}
.wg-p .pv i{background:#3d4a5e;border-radius:1px}
.wg-p.active .pv i{background:var(--blue)}
.wg-p .lb{font-size:10px;color:#aeb6c4}
.wg-p.active .lb{color:#fff}
.wg-ft{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:7px;border-top:1px solid var(--line);color:var(--dim)}

/* 标签页返回按钮 */
#tab-back-btn{color:var(--blue);border-color:#2c4b7c}
#tab-back-btn:hover{background:#1b2942}

/* 板块强度·口径说明弹窗 */
#modal-html{max-height:74vh;overflow:auto;padding:2px 6px 8px}
.algo-help table{width:100%;border-collapse:collapse;margin:4px 0 10px;font-size:12px}
.algo-help th,.algo-help td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top;line-height:1.6}
.algo-help th{background:var(--bg3);color:var(--dim);font-weight:400;white-space:nowrap}
.algo-help td.k{white-space:nowrap;color:var(--blue);font-weight:600}
.algo-help .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.algo-help h4{margin:12px 0 2px;font-size:13px;font-weight:600}
.algo-help p{margin:6px 0;line-height:1.8}
.algo-help p b{color:var(--fg)}

/* 上涨占比（括号前置，小字）与原始家数 */
.up-pct{font-size:10px;margin-right:3px}
.up-raw{color:var(--dim)}
.up-raw .red{color:var(--red)}

/* 刷新失败提示：挂在工具栏角落，内容不动 */
#tab-err{margin-left:auto;color:var(--yellow);font-size:11px;opacity:.85}

/* ---------- 多用户 v14 ---------- */
#me-chip{display:flex;align-items:center;gap:5px}
#me-chip .nm{color:#c8cfda;cursor:pointer;border:1px solid var(--line);border-radius:10px;padding:0 8px;line-height:17px;background:var(--bg3)}
#me-chip .nm:hover{border-color:var(--blue);color:#fff}
#me-chip .out{color:var(--dim);cursor:pointer}
#me-chip .out:hover{color:var(--red)}
#login{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;background:rgba(8,11,16,.94)}
#login-box{width:306px;background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:26px 26px 18px;box-shadow:0 14px 48px rgba(0,0,0,.55)}
.lg-brand{font-size:19px;font-weight:600;color:#e8ecf3;letter-spacing:1px}
.lg-sub{color:var(--dim);margin:2px 0 18px}
#login-box input{display:block;width:100%;background:var(--bg3);border:1px solid var(--line);color:var(--fg);border-radius:4px;
  padding:8px 10px;font-size:13px;outline:none;margin-bottom:10px}
#login-box input:focus{border-color:var(--blue)}
.lg-btn{width:100%;background:var(--blue);color:#fff;border:none;border-radius:4px;padding:8px 0;font-size:13px;margin-top:4px}
.lg-btn:hover{filter:brightness(1.1)}
.lg-err{color:var(--red);margin-bottom:8px}
.lg-tip{color:var(--dim);margin-top:14px;line-height:1.6;font-size:11px}
.set-card.span{column-span:all;-webkit-column-span:all}
.set-card.span .user-tb{max-width:820px}
.user-tb{width:100%;border-collapse:collapse;margin-top:4px}
.user-tb th{color:var(--dim);font-weight:400;text-align:left;padding:3px 6px;border-bottom:1px solid var(--line)}
.user-tb td{padding:3px 6px;border-bottom:1px solid #1b222e}
.user-tb tr.me-row td{background:#182030}
.user-tb .ops{white-space:nowrap;display:flex;gap:4px}
.user-tb button{padding:1px 6px}
.role-tag{border:1px solid var(--line);border-radius:3px;padding:0 5px;color:var(--dim)}
.role-tag.admin{color:var(--blue);border-color:#2c4b7c}
