/* 盘前预测站点 —— 在 site.css（企业蓝令牌、卡片、指标条、图例）之上补充本站构件 */
:root{--buy:#2a78d6;--sell:#d03b3b;--zero:#98a4b8;--hedge:#1baf7a;--zone:#8d9ab2}
/* 只作参照的区间带（持仓率 80%–120% 区间等）用中性灰 --zone：默认盈红亏绿时绿色会被读成“亏”（2026-10-21 颜色含义统一·补查） */
#data-error{position:fixed;left:72px;bottom:14px;z-index:90;background:var(--er-soft);color:var(--er-tx);border:1px solid color-mix(in srgb,var(--er) 35%,transparent);border-radius:8px;padding:6px 12px;font-size:12px}
.navsource{margin:8px 10px 0;font-size:10.5px;line-height:1.45;color:var(--wa-tx);display:none;white-space:normal}
.sidenav:hover .navsource{display:block}.navsource small{display:block;color:var(--tx3);font-size:10px}
.topline{position:relative}
.topline .seg{flex:none}
/* 不显示动画（2026-10-13）：视图切换、卡片、首屏内容与数据更新都直接显示，不做淡入、上移与数字滚动；只保留弹层、浮层、折叠的开合过渡与悬停的颜色过渡 */
/* 首次加载：数据到达前主要内容区为雾白占位块（静态，不用流光）；第一次画完后直接撤掉 */
html.ld .ch:empty,html.ld .pgrid:empty,html.ld .brief:empty,html.ld .stg:empty,html.ld .sheet:empty,html.ld .calh:empty,html.ld .bkpi:empty,html.ld .bhrs:empty,html.ld .brun:empty{background:var(--bg2);border-radius:var(--r2)}
html.ld .pgrid:empty{min-height:440px}html.ld .brief:empty,html.ld .stg:empty,html.ld .bkpi:empty{min-height:110px}html.ld .sheet:empty{min-height:320px}html.ld .calh:empty{min-height:420px}
/* 首帧占位（2026-11-03）：第一帧就是最终布局，内容到了原地替换、不跳动。下面的高度都是 1366、1440、1920 三种窗口实测的最终尺寸，
   方格用底色渐变画出列和行（--c 列 --r 行，间距 --g）。顶栏的日期、分段按钮预留最终宽度。这些规则由 stamp_pages.py 抽进页面内联样式，页面画完撤掉 html.ld 就不再起作用 */
html.ld #rng:empty{width:316px}html.ld #sess:empty{width:175px}
html.ld .dpick:empty{background:var(--bg2);border-color:transparent}
html.ld .topline #dsel:empty{display:inline-flex;width:180px;height:35px}
html.ld .topline #modesel:empty{display:inline-flex;width:454px;height:27px}html.ld.trader .topline #modesel:empty{width:326px}
html.ld .topline #vssel:empty{display:inline-flex;width:123px;height:27px}
html.ld #rpkw[hidden]{display:block!important}html.ld #mpg:empty{display:none}
html.ld:not(.ld-mkt):not(.ld-ref) #vsel button[data-v=""],html.ld.ld-mkt #vsel button[data-v="mkt"],html.ld.ld-ref #vsel button[data-v="ref"]{color:var(--fr);text-shadow:.35px 0 0 currentColor,-.35px 0 0 currentColor}
html.ld #psum:empty,html.ld #board:empty,html.ld #iboard:empty,html.ld .calks:empty,html.ld .content>#brief:empty,html.ld #vmkt #brief:empty{--g:8px;background:conic-gradient(from 90deg at var(--g) var(--g),var(--bg2) 25%,transparent 0) calc(-1*var(--g)) calc(-1*var(--g))/calc((100% + var(--g))/var(--c)) calc((100% + var(--g))/var(--r));border-radius:0;border:0;box-shadow:none}
html.ld #psum:empty{--c:5;--r:1;min-height:106px}
html.ld #board:empty{--c:8;--r:3;min-height:202px}
@media (max-width:1500px){html.ld #board:empty{--c:6;--r:4;min-height:272px}}
@media (max-width:1560px){html.ld .hd:has(#lg-pos){min-height:89px;flex-wrap:wrap;align-content:flex-start}}
html.ld.ld-mkt #vplan,html.ld.ld-ref #vplan{display:none}
html.ld.ld-mkt #vmkt[hidden],html.ld.ld-ref #vref[hidden]{display:block!important}
html.ld #vmkt #brief:empty{--c:6;--r:1;min-height:119px}
@media (max-width:1400px){html.ld #vmkt #brief:empty{--c:3;--r:2;--g:16px;min-height:255px}}
#wxo:empty{min-height:97px}#wx:empty{min-height:460px}html.ld #wx:empty{background:var(--bg2);border-radius:var(--r2)}html.ld #olwrap:empty{min-height:793px}
@media (max-width:1560px){html.ld #olwrap:empty{min-height:836px}}
html.ld #vref:empty{min-height:749px;background:var(--bg2);border-radius:var(--r2);margin-top:10px}
html.ld .content>#ks:empty{min-height:121px}html.ld.trader .content>#ks:empty{min-height:110px}
html.ld .content>#brief:empty{--c:4;--r:1;--g:16px;min-height:83px}
html.ld #iboard:empty{--c:6;--r:4;min-height:720px}html.ld.trader #iboard:empty{min-height:648px}
html.ld .content>#ks.calks:empty{--c:4;--r:1;--g:1px;min-height:120px}
html.ld #cal:empty{--c:7;--r:6;--g:4px;min-height:972px;height:auto;background:conic-gradient(from 90deg at var(--g) var(--g),var(--bg2) 25%,transparent 0) calc(-1*var(--g)) calc(-1*var(--g))/calc((100% + var(--g))/var(--c)) calc((100% + var(--g))/var(--r)) content-box content-box;border-radius:0}html.ld #day-ks:empty{min-height:172px}
@media (max-width:1560px){html.ld #cal:empty{min-height:1068px}}
html.ld.trader #cal:empty{min-height:972px}
html.ld.ld-pnl #ks,html.ld.ld-pnl .calendar-layout,html.ld.ld-pnl .calbot,html.ld.ld-pnl #vslb,html.ld.ld-pnl #vssel{display:none}
html.ld.ld-pnl #pnlv[hidden]{display:block!important}html.ld.ld-pnl #sjsel[hidden]{display:inline-flex!important;width:154px;height:27px}
html.ld #hcond:empty{min-height:79px}html.ld #sitg:empty{min-height:696px;background:var(--bg2);border-radius:var(--r2)}
@media (max-width:1560px){html.ld #sitg:empty{min-height:945px}}
html.ld.trader #sitg:empty{min-height:537px}@media (max-width:1560px){html.ld.trader #sitg:empty{min-height:832px}}
html.ld #hp-ks:empty{min-height:94px}
html.ld.ld-sib #sibs:empty{display:block;height:18px;margin-top:8px;background:linear-gradient(var(--bg2),var(--bg2)) 0 0/420px 100% no-repeat}
html.ld #rs-view{display:none}html.ld #rt-view[hidden]{display:block!important}
html.ld #rt-view .opg{min-height:713px}html.ld #rt-view .skb,html.ld #rt-view #st-sum:empty,html.ld #rt-view #rt-wm:empty{min-height:640px;margin:12px 14px;background:var(--bg2);border-radius:var(--r2)}
html.ld #rt-view .vmx:empty{min-height:118px;background:var(--bg2);border-radius:var(--r2)}
/* 悬停联动：同一小时的方块与表格行一起高亮 */
.pb.lk-on{border-color:color-mix(in srgb,var(--fr) 45%,var(--ln));box-shadow:0 0 0 1px color-mix(in srgb,var(--fr) 22%,transparent)}
.sheet .r[data-p],.dtab .r[data-p]{transition:background var(--d1) var(--ease)}.sheet .r.lk-on,.dtab .r.lk-on{background:var(--fr-soft)}
/* 顶栏状态：小圆点 + 文字，需要处理的用琥珀色 */
.topinfo .pill{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;color:var(--tx2)}
.topinfo .pill::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tx3);flex:none}
.topinfo .pill b{color:var(--tx);font-variant-numeric:tabular-nums;font-weight:650}
.topinfo .pill.warn,.topinfo .pill.warn b{color:var(--wa-tx)}.topinfo .pill.warn::before{background:var(--wa)}
.topinfo .pill.ok b{color:var(--ok-tx)}.topinfo .pill.ok::before{background:var(--ok)}

/* 24 小时订单块 */
.pgrid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;margin-top:10px}
@media (max-width:1500px){.pgrid{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (max-width:1100px){.pgrid{grid-template-columns:repeat(4,minmax(0,1fr))}}
.pb{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);padding:7px 10px;display:flex;flex-direction:column;gap:4px;min-width:0;cursor:pointer;font-size:11.5px;color:var(--tx2);position:relative;transition:transform var(--d1) var(--ease),box-shadow var(--d1) var(--ease),border-color var(--d1) var(--ease);text-align:left}
/* 方向由右上角标签与数字颜色表达，不用左侧色条；悬停的块提到最上层，阴影不被相邻块盖住 */
.pb.N{background:var(--sf2);border-style:dashed}
.pb:hover{z-index:2;box-shadow:var(--sh2);border-color:color-mix(in srgb,var(--fr) 38%,var(--ln))}   /* 悬停只变描边与阴影，不改尺寸与位置 */
.pb .r1{display:flex;align-items:baseline;gap:6px;white-space:nowrap}
.pb .r1 b{font-family:var(--mono);font-size:12.5px;color:var(--tx);font-weight:650}
.pb .r1 span{font-size:10.5px;color:var(--tx3);font-family:var(--mono)}
.pb .r1 em{margin-left:auto;font-style:normal;font-size:10px;font-weight:650;border-radius:3px;padding:0 5px;line-height:16px}
.pb.B .r1 em{background:var(--br-soft);color:var(--br)}.pb.S .r1 em{background:var(--er-soft);color:var(--er-tx)}
.pb.Z .r1 em,.pb.N .r1 em{background:var(--bg2);color:var(--tx3);font-weight:500}
.pb .r1 em.hg{background:var(--ok-soft);color:var(--ok-tx)}
.pb .act{border-radius:6px;padding:5px 8px 4px;display:flex;flex-direction:column;gap:0;min-height:44px;justify-content:center}
.pb.B .act{background:var(--br-soft)}.pb.S .act{background:var(--er-soft)}.pb.Z .act{background:var(--bg2)}.pb.N .act{background:transparent;border:1px dashed var(--ln2)}
.pb .act .v{font-size:16px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.25}
.pb.B .act .v{color:var(--br-h)}.pb.S .act .v{color:var(--er-tx)}.pb.Z .act .v,.pb.N .act .v{color:var(--tx2);font-size:13px;font-weight:600}
.pb .act .v small{font-size:10.5px;font-weight:500;margin-left:2px;opacity:.8}
.pb .act .s{font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb .act .s b{color:var(--tx);font-weight:650}
.pb .row{display:flex;justify-content:space-between;gap:6px;white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px}
.pb .row b{color:var(--tx);font-weight:600}.pb .row .na{color:var(--tx3)}
.pb .tri{display:grid;grid-template-columns:repeat(3,auto);justify-content:space-between;gap:4px;font-size:10px;color:var(--tx3);white-space:nowrap}
.pb .tri span{display:flex;flex-direction:column;line-height:1.35;min-width:0}.pb .tri span:last-child{text-align:right}.pb .tri span:nth-child(2){text-align:center}
.pb .tri b{font-size:11.5px;color:var(--tx);font-weight:600;font-variant-numeric:tabular-nums}
.pb .row.hum{color:#b45309}.pb .row.hum b{color:#b45309}
.pb .spw{height:34px;position:relative}.pb .spw svg{width:100%;height:100%;display:block}
.pb .spw .spd{position:absolute;width:5px;height:5px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1.5px #fff}
/* 旧覆盖率条（P.covBar 已改为输出持仓条 .psb，这几条只留给旧页面） */
.cov{position:relative;height:9px;border-radius:0 2px 2px 0;background:var(--bg2);overflow:hidden}.cov.off{visibility:hidden}   /* 负荷输入异常：持仓条留空位，块高不变 */
.cov .band{position:absolute;top:0;bottom:0;left:57.14%;width:28.57%;background:color-mix(in srgb,var(--zone) 16%,transparent)}
.cov .q0{position:absolute;top:0;bottom:0;left:0;background:#b9c6d8}
.cov .dl{position:absolute;top:0;bottom:0}.cov .dl.b{background:var(--buy)}.cov .dl.s{background:repeating-linear-gradient(135deg,var(--sell) 0 3px,#f3b3b3 3px 6px)}
.cov .p50{position:absolute;top:-1px;bottom:-1px;left:71.43%;width:1.5px;background:var(--tx)}
/* 限价在预测区间里的位置 */
.rng{position:relative;height:14px}   /* 上一场成交价的倒三角在色带上方、尖端贴住色带上沿（2026-10-22 H6） */
.rng .ax{position:absolute;left:0;right:0;top:7px;height:2px;background:var(--bg2);border-radius:1px}
.rng .iq{position:absolute;top:5px;height:6px;border-radius:1px;background:rgba(42,120,214,.22)}
.rng .md{position:absolute;top:3px;width:1.5px;height:10px;background:var(--br)}
.rng .rf{position:absolute;top:0;width:0;height:0;border-left:3.5px solid transparent;border-right:3.5px solid transparent;border-top:5px solid var(--c2);transform:translateX(-3.5px)}
.rng .lm{position:absolute;top:0;width:8px;height:8px;border-radius:50%;border:2px solid #fff;transform:translate(-4px,2px);box-shadow:0 0 0 1px rgba(23,35,61,.25)}
.rng .lm.b{background:var(--buy)}.rng .lm.s{background:var(--sell)}
.pleg{display:flex;flex-wrap:wrap;gap:4px 16px;align-items:center;font-size:11px;color:var(--tx3);margin-top:8px;padding:0 2px}
.pleg span{display:inline-flex;align-items:center;gap:5px}.pleg i{display:inline-block;width:12px;height:7px;border-radius:1px}
.pleg i.dot{width:8px;height:8px;border-radius:50%}.pleg i.tri{width:0;height:0;border-radius:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid var(--c2);background:none}

/* 按钮 */
.btn{border:1px solid var(--ln2);background:var(--sf);border-radius:var(--r2);padding:3px 12px;font-size:12px;color:var(--navy)}.btn:hover{border-color:var(--fr);color:var(--fr)}

/* 检查清单与时钟 */
.chk{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:5px 8px;align-items:center;padding:10px 14px;font-size:12px}
.chk i{width:14px;height:14px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:9px;color:#fff;font-weight:700}
.chk i.ok{background:var(--ok)}.chk i.warn{background:var(--wa)}.chk i.err{background:var(--er)}
.chk span{color:var(--tx)}.chk small{color:var(--tx3);font-size:11px;text-align:right;white-space:nowrap}

/* 小时展开层 */
.hovl{position:fixed;top:0;right:0;bottom:0;left:var(--nav-w);background:rgba(23,35,61,.32);z-index:60;display:none;padding:18px}
.hovl.open{display:block}
.hpanel{background:var(--bg);border:1px solid var(--ln);border-radius:12px;box-shadow:var(--sh3);max-height:100%;display:flex;flex-direction:column;overflow:hidden}
.hph{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--ln);background:var(--sf);flex:none;flex-wrap:wrap}
.hph h3{font-size:15px;font-weight:650}
.hph .nav{display:inline-flex;gap:4px}.hph .nav button,.hph .x{border:1px solid var(--ln2);background:var(--sf);border-radius:var(--r1);width:28px;height:28px;font-size:15px;color:var(--tx2);display:grid;place-items:center}
.hph .x{margin-left:auto}.hph .nav button:hover,.hph .x:hover{color:var(--tx);border-color:var(--fr)}
.hks{margin:8px 14px 0;flex:none}
.hpb{flex:0 1 auto;min-height:0;overflow:auto;padding:10px 14px 14px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-content:start}
@media (max-width:1280px){.hpb{grid-template-columns:repeat(2,minmax(0,1fr))}}
.hpb .card .ch{height:236px}
.kv2{display:grid;grid-template-columns:1fr 1fr;gap:3px 16px;padding:9px 14px 10px;font-size:12px}
.kv2 .i{display:flex;justify-content:space-between;gap:8px;white-space:nowrap;min-width:0}
.kv2 .i span{color:var(--tx2)}.kv2 .i b{font-variant-numeric:tabular-nums;font-weight:600}
.kv2 .t{grid-column:1/-1;font-size:10.5px;color:var(--tx3);letter-spacing:.12em;margin-top:5px;padding-top:6px;border-top:1px solid var(--ln)}
.kv2 .t:first-child{margin-top:0;padding-top:0;border-top:0}
.pnd{display:grid;justify-items:center;align-content:center;gap:6px;min-height:200px;margin:10px;padding:16px;text-align:center;border:1px dashed var(--ln2);border-radius:10px;background:var(--sf2)}
.pnd b{font-size:13px;color:var(--tx);font-weight:600}.pnd span{font-size:11.5px;color:var(--tx3);max-width:36em}

/* 就绪矩阵 */
.rdy{display:grid;grid-template-columns:118px repeat(24,minmax(0,1fr));gap:2px;padding:10px 14px 12px;font-size:10.5px;align-items:center}
.rdy .h{text-align:center;color:var(--tx3);font-family:var(--mono)}.rdy .n{color:var(--tx2);font-size:11.5px;white-space:nowrap}
.rdy .c{height:16px;border-radius:3px;background:var(--ok-soft)}.rdy .c.ok{background:color-mix(in srgb,var(--ok) 55%,#fff)}.rdy .c.no{background:color-mix(in srgb,var(--wa) 60%,#fff)}

/* 日历格 */
.calh{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:10px 14px 12px}
.calh .wd{font-size:10.5px;color:var(--tx3);text-align:center}
.calh .dc{border:1px solid var(--ln);border-radius:6px;padding:4px 7px 5px;min-height:58px;background:color-mix(in srgb,var(--hc,#fff) calc(var(--t,0)*100%),#fff);cursor:pointer;display:flex;flex-direction:column;gap:1px;font-size:11px;color:var(--tx2)}
.calh .dc.off{background-color:var(--sf2);border-style:dashed;cursor:default;color:var(--tx3)}
.calh .dc.cur{outline:2px solid var(--fr);outline-offset:-1px}
.calh .dc b{font-family:var(--mono);font-size:11.5px;color:var(--tx)}.calh .dc .v{font-weight:650;font-size:12.5px;color:var(--tx);font-variant-numeric:tabular-nums}

/* ============ 盘前信息：要点磁贴、要点条、滚动平衡、检修 ============ */
.brief{display:grid;grid-template-columns:repeat(var(--n,6),minmax(0,1fr));gap:8px;margin-top:8px}
@media (max-width:1400px){.brief{grid-template-columns:repeat(3,minmax(0,1fr))}}
.bt{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);box-shadow:var(--sh1);padding:8px 12px 8px;display:flex;flex-direction:column;gap:2px;min-width:0}
.bt .l{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--tx2);white-space:nowrap}
.bt .l svg{width:15px;height:15px;stroke:var(--tx3);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.bt .l .s{margin-left:auto;color:var(--tx3);font-size:10.5px;overflow:hidden;text-overflow:ellipsis}
.bt .v{font-size:19px;font-weight:650;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tx);line-height:1.3}
.bt .v small{font-size:11px;font-weight:500;color:var(--tx3);margin-left:3px;letter-spacing:0}
.bt .d{display:flex;flex-wrap:wrap;gap:3px 8px;font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums;white-space:nowrap}
.bt .d b{font-weight:600;color:var(--tx)}
.dl-up{color:var(--gain-tx)}.dl-dn{color:var(--loss-tx)}.dl-eq{color:var(--tx3)}
.hls{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.hl{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ln);background:var(--sf);border-radius:var(--r1);padding:3px 11px 3px 8px;font-size:12px;color:var(--tx);white-space:nowrap}
.hl i{width:7px;height:7px;border-radius:50%;background:var(--br);flex:none}.hl.w i{background:var(--wa)}.hl.g i{background:var(--ok)}.hl.r i{background:var(--er)}
.hl b{font-weight:650;font-variant-numeric:tabular-nums}
.sect{display:flex;align-items:center;gap:10px;margin:20px 2px 0;padding-top:10px;border-top:1px solid var(--ln2);font-size:13px;color:var(--tx);font-weight:600;letter-spacing:.04em;scroll-margin-top:52px}
.bal{padding:20px 14px 12px;display:flex;flex-direction:column;gap:22px}
.bal .row{display:grid;grid-template-columns:52px minmax(0,1fr) 92px;gap:10px;align-items:center;font-size:11.5px}
.bal .row .n{color:var(--tx);font-weight:600}
.bal .bar{position:relative;height:18px;border-radius:4px;background:var(--bg2);display:flex;overflow:visible}
.bal .bar span{height:100%;display:block}.bal .bar span:first-child{border-radius:4px 0 0 4px}
.bal .bar .ld{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--tx);border-radius:1px}
.bal .bar .ld::after{content:attr(data-t);position:absolute;top:-13px;left:50%;transform:translateX(-50%);font-size:9.5px;color:var(--tx2);white-space:nowrap}
.bal .row .m{text-align:right;font-variant-numeric:tabular-nums;color:var(--tx2)}.bal .row .m b{color:var(--tx);font-weight:650;font-size:13px}
.ballg{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:10.5px;color:var(--tx3);padding:0 14px 10px}.ballg i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.mnt{padding:8px 14px 12px;display:flex;flex-direction:column;gap:5px;font-size:11.5px}
.mnt .it{display:grid;grid-template-columns:minmax(0,1fr) 64px 118px;gap:8px;align-items:center}
.mnt .it .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--tx)}
.mnt .it .tp{font-size:10.5px;color:var(--tx2);text-align:right;white-space:nowrap}
.mnt .it .mtl{position:relative;height:8px;border-radius:2px;background:var(--bg2)}
.mnt .it .mtl i{position:absolute;top:0;bottom:0;border-radius:2px;background:#c5d0e0}.mnt .it .mtl i.rep{background:var(--wa)}
.mnt .it .mtl u{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--br);text-decoration:none}

/* ============ 依据：标尺与条 ============ */
.vis{padding:10px 14px 12px;display:flex;flex-direction:column;gap:12px}
.vis .hd1{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vis .hd1 b{font-size:13.5px;font-weight:650}
.vis .t{font-size:10.5px;color:var(--tx3);letter-spacing:.12em;margin-bottom:3px;display:flex;gap:8px;align-items:baseline}.vis .t span{letter-spacing:0;color:var(--tx2)}
.ruler{position:relative;height:64px;margin:0 6px}
.ruler .ax{position:absolute;left:0;right:0;top:31px;height:2px;background:var(--ln2);border-radius:1px}
.ruler .bd{position:absolute;top:25px;height:14px;border-radius:3px}
.ruler .mk{position:absolute;top:22px;width:2px;height:20px;border-radius:1px;transform:translateX(-1px)}
.ruler .mk.dot{top:26px;width:12px;height:12px;border-radius:50%;border:2px solid #fff;transform:translateX(-6px);box-shadow:0 0 0 1px rgba(23,35,61,.3)}
.ruler .lb{position:absolute;font-size:10.5px;line-height:1.15;white-space:nowrap;transform:translateX(-50%);text-align:center;color:var(--tx2);font-variant-numeric:tabular-nums}
.ruler .lb b{display:block;color:var(--tx);font-weight:650;font-size:11.5px}
.ruler .lb.up{top:-2px}.ruler .lb.dn{top:43px}
.ruler .arw{position:absolute;top:29px;height:6px;border-radius:1px}
.g3c{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.gbar{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:var(--tx2);min-width:0}
.gbar .gtr{height:8px;border-radius:2px;background:var(--bg2);position:relative;overflow:hidden}.gbar .gtr i{position:absolute;left:0;top:0;bottom:0;border-radius:2px}
.gbar b{font-size:12px;color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}
.dvg{display:grid;grid-template-columns:96px minmax(0,1fr) 64px;gap:8px;align-items:center;font-size:11px;color:var(--tx2)}
.dvg .dtr{position:relative;height:10px;background:var(--bg2);border-radius:2px}.dvg .dtr u{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--tx3)}
.dvg .dtr i{position:absolute;top:0;bottom:0;border-radius:2px}.dvg b{text-align:right;color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}

.pb.sel{outline:2px solid var(--fr);outline-offset:-1px;box-shadow:var(--sh2)}

/* 已知问题列表 */
.iss{display:flex;flex-direction:column;padding:6px 14px 12px}
.iss details{border-bottom:1px solid color-mix(in srgb,var(--ln) 60%,transparent);padding:6px 0;font-size:12px}
.iss summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none}.iss summary::-webkit-details-marker{display:none}
.iss summary code{font-family:var(--code);font-size:11px;color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iss details p{margin:5px 0 2px 44px;color:var(--tx2);line-height:1.6}
/* 来源时钟轴（弹窗） */
.clkx{padding:12px 16px 14px;display:flex;flex-direction:column;gap:9px}
.clkx .r{display:grid;grid-template-columns:150px minmax(0,1fr) 92px;gap:10px;align-items:center;font-size:11.5px}
.clkx .r .n{color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clkx .r .ax{position:relative;height:14px}
.clkx .r .ax::before{content:"";position:absolute;left:0;right:0;top:6px;height:2px;background:var(--bg2);border-radius:1px}
.clkx .r .ax i{position:absolute;top:2px;width:10px;height:10px;border-radius:50%;transform:translateX(-5px);background:var(--ok);border:2px solid #fff;box-shadow:0 0 0 1px rgba(23,35,61,.25)}
.clkx .r .ax i.late{background:var(--er)}.clkx .r .ax u{position:absolute;right:0;top:-2px;bottom:-2px;width:2px;background:var(--tx)}
.clkx .r .t{font-family:var(--mono);font-size:11px;color:var(--tx2);text-align:right;white-space:nowrap}
.clkx .sc{display:grid;grid-template-columns:150px minmax(0,1fr) 92px;gap:10px;font-size:10px;color:var(--tx3)}
.clkx .sc div{position:relative;height:12px}.clkx .sc span{position:absolute;transform:translateX(-50%);white-space:nowrap}

/* 左栏：靠近即展开（与 :hover 同一套规则） */
.sidenav.open{width:232px;box-shadow:var(--sh3);overflow:hidden}
/* 左栏在最上层（2026-10-22 第二轮）：原先 z-index 40 低于吸顶筛选栏（50），展开后顶栏压住品牌名与导航文字。现在盖在吸顶栏、顶栏浮层（55–56）与小时详情遮罩（60）之上，
   与交易策略系统一样展开面板完整可见；下拉菜单（70）、提示（75）与弹窗（80）仍在它上面 */
.sidenav{z-index:62}
.sidenav.open a .lb{opacity:1;transition-delay:.1s}.sidenav.open .navst .it .l{display:block}.sidenav.open .navst .t{visibility:visible}
.sidenav.open .navst .it{justify-content:flex-start}.sidenav.open .navtg{display:block}.sidenav.open .navsource{display:block}
/* Horizontal navigation must not expand under the pointer on small screens. */
@media (max-width:820px){
  .sidenav,.sidenav:hover,.sidenav.open{width:100%;box-sizing:border-box;overflow-x:auto;overflow-y:hidden;box-shadow:none;transition:none}
  .sidenav a{flex:none}
  .sidenav a .lb,.sidenav:hover a .lb,.sidenav.open a .lb{display:inline;opacity:1}
  .sidenav .brand,.sidenav .navst,.sidenav .navtg,.sidenav:hover .navtg,.sidenav.open .navtg{display:none}
}
/* 通用弹窗 */
.pfm{position:fixed;inset:0;background:rgba(23,35,61,.34);z-index:80;display:none;align-items:center;justify-content:center;padding:24px}
.pfm.open{display:flex}
/* 浮层进出：遮罩 0.2 秒淡入，面板淡入并上移 8px；关闭时反向播完再隐藏（core.js 的 ovOpen / ovClose） */
@keyframes ovIn{from{opacity:0}to{opacity:1}}@keyframes ovOut{from{opacity:1}to{opacity:0}}
@keyframes pnIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pnOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(8px)}}
.hovl.open,.pfm.open{animation:ovIn .2s var(--ease) both}.hovl.open .hpanel,.pfm.open .pfm-box{animation:pnIn var(--d2) var(--ease) both}
.hovl.closing,.pfm.closing{animation:ovOut .2s var(--ease-io) both}.hovl.closing .hpanel,.pfm.closing .pfm-box{animation:pnOut .2s var(--ease-io) both}
.pfm-box{background:var(--sf);border:1px solid var(--ln);border-radius:12px;box-shadow:var(--sh3);width:min(760px,100%);max-height:100%;display:flex;flex-direction:column;overflow:hidden}
.pfm-box.wide{width:min(1080px,100%)}
.pfm-hd{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--ln);flex:none}.pfm-hd h3{font-size:14.5px;font-weight:650}
.pfm-hd button{margin-left:auto;border:1px solid var(--ln2);background:var(--sf);border-radius:var(--r1);width:28px;height:28px;font-size:16px;color:var(--tx2)}
.pfm-bd{overflow:auto;padding:12px 16px 16px}

/* ============ 交易员 / 管理员区分、今日策略条、申报表、紧凑检查 ============ */
html.trader .adm{display:none!important}
.stg{display:grid;grid-template-columns:auto minmax(0,1fr);gap:0;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);box-shadow:var(--sh1);overflow:hidden}
.stg .nums{display:flex;flex-wrap:wrap;gap:0;align-items:stretch;border-right:1px solid var(--ln)}
.stg.full .nums{display:flex}
.stg.full .nums>.n{flex:1 1 0;min-width:0}
.stg.full .nums>.t0{flex:none}
.stg.full .n{padding-left:14px;padding-right:14px;overflow:hidden}
.stg.full .n .d{overflow:hidden;text-overflow:ellipsis}
.stg .n{padding:9px 18px 8px;display:flex;flex-direction:column;gap:0;border-right:1px solid color-mix(in srgb,var(--ln) 70%,transparent);min-width:0}
.stg .n:last-child{border-right:0}
.stg .n .l{font-size:11px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stg .n .v{font-size:22px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;line-height:1.25}
.stg .n .v small{font-size:11px;font-weight:500;color:var(--tx3);margin-left:3px}
.stg .n.b .v{color:var(--br-h)}.stg .n.s .v{color:var(--er-tx)}
.stg .n .d{font-size:11px;color:var(--tx2);white-space:nowrap;font-variant-numeric:tabular-nums}.stg .n .d b{color:var(--tx);font-weight:650}
.stg .why2{padding:8px 14px;display:flex;flex-wrap:wrap;gap:5px 6px;align-content:center}
.stg .why2 .t0{font-size:10.5px;color:var(--tx3);letter-spacing:.14em;width:100%;margin-bottom:1px}
.hl{padding:2px 10px 2px 8px;font-size:11.5px}
.bt .wxr{display:flex;flex-wrap:wrap;gap:3px 10px;font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums;white-space:nowrap}.bt .wxr b{color:var(--tx);font-weight:600}
.bt .v.flip,.bt .wxr.flip{animation:wxin .35s var(--ease)}
.dvb{position:relative;height:10px;background:var(--bg2);border-radius:2px}.dvb u{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--tx3)}
.dvb i{position:absolute;top:0;bottom:0;border-radius:2px}
.mb{height:7px;border-radius:0 1px 1px 0;background:var(--bg2);position:relative;overflow:hidden}.mb i{position:absolute;left:0;top:0;bottom:0;border-radius:0 1px 1px 0}
.ckg{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:6px 10px;padding:12px 14px}
.ckd{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ckd i{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:none}.ckd.warn i{background:var(--wa)}.ckd.err i{background:var(--er)}.ckd.warn{color:var(--wa-tx)}.ckd.err{color:var(--er-tx)}
/* 单日分析：紧凑状态行、分组明细表 */
.stat{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;padding:7px 14px;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);font-size:11.5px;color:var(--tx2)}
.stat .g{display:flex;align-items:center;gap:7px;cursor:pointer}.stat .g b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}
.stat .dots{display:inline-flex;gap:2px}.stat .dots i{width:7px;height:7px;border-radius:50%;background:var(--ok)}.stat .dots i.no{background:var(--wa)}.stat .dots i.late{background:var(--er)}
.stat .cells{display:inline-grid;grid-template-columns:repeat(24,6px);gap:1px}.stat .cells i{height:10px;border-radius:1.5px;background:color-mix(in srgb,var(--ok) 55%,#fff)}.stat .cells i.no{background:color-mix(in srgb,var(--wa) 65%,#fff)}
.dtab{display:grid;font-size:11.5px;font-variant-numeric:tabular-nums}
.dtab .r{display:grid;gap:0 10px;align-items:center;padding:3px 14px;border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent);min-height:28px;cursor:pointer}
.dtab .r:hover{background:var(--hov)}.dtab .r.sel{background:var(--fr-soft)}
.dtab .r.gh{cursor:default;min-height:24px;font-size:10.5px;letter-spacing:.12em;color:var(--tx3);background:var(--sf2);border-bottom:0;padding-top:6px}
.dtab .r.hd{cursor:default;background:var(--sf2);color:var(--tx2);font-size:11px;border-bottom:1px solid var(--ln)}.dtab .r.gh:hover,.dtab .r.hd:hover{background:var(--sf2)}
.dtab .c{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dtab .c.n{text-align:right}.dtab .c b{font-weight:650;color:var(--tx)}
.dtab .c.bar{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:6px;align-items:center}.dtab .c.bar b{text-align:right}
.dtab .c.g2{border-left:1px solid var(--ln);padding-left:10px}
.dtab .hum{color:#b45309}.dtab .hum b{color:#b45309}
/* 算法与数据 */
.mcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
@media (max-width:1300px){.mcards{grid-template-columns:repeat(2,minmax(0,1fr))}}
.mc{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);box-shadow:var(--sh1);padding:10px 14px 8px;display:flex;flex-direction:column;gap:3px;min-width:0}
.mc .t{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tx2)}.mc .t .chip{margin-left:auto}
.mc .v{font-size:24px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1.2}.mc .v small{font-size:11.5px;font-weight:500;color:var(--tx3);margin-left:4px}
.mc .d{font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mc .d b{color:var(--tx);font-weight:650}
.mc .sp2{height:38px;margin-top:2px}.mc .sp2 .spw{height:100%;position:relative}.mc .sp2 svg{width:100%;height:100%;display:block}
.mc .sp2 .spd{position:absolute;width:5px;height:5px;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1.5px #fff}
.tline{display:flex;gap:0;padding:16px 16px 12px;overflow:auto}
.tline .e{position:relative;flex:1 0 118px;padding:18px 10px 0 0;min-width:0}
.tline .e::before{content:"";position:absolute;left:0;right:0;top:5px;height:2px;background:var(--ln2)}
.tline .e::after{content:"";position:absolute;left:0;top:0;width:12px;height:12px;border-radius:50%;background:var(--sf);border:2px solid var(--ln2)}
.tline .e.frozen::after{background:var(--br);border-color:var(--br)}.tline .e:last-child::before{right:auto;width:12px}
.tline .e .dt{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}.tline .e b{display:block;font-size:12px;font-weight:650;color:var(--tx);line-height:1.4}
.tline .e code{font-family:var(--code);font-size:10px;color:var(--tx3);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tline .e.frozen b{color:var(--br-h)}
.frz{display:flex;flex-wrap:wrap;gap:5px;padding:0 16px 14px}.frz span{font-size:11px;border:1px solid var(--ln);border-radius:5px;padding:2px 8px;color:var(--tx2);background:var(--sf2);white-space:nowrap}.frz span b{color:var(--tx);font-weight:650;margin-left:5px;font-variant-numeric:tabular-nums}
.srcs{display:grid;font-size:11.5px}
.srcs .r{display:grid;grid-template-columns:minmax(0,1.4fr) 132px 84px minmax(0,1fr);gap:0 12px;align-items:center;padding:5px 14px;border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent)}
.srcs .r.hd{background:var(--sf2);color:var(--tx2);font-size:11px}.srcs .r .nm{display:flex;align-items:center;gap:7px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.srcs .r .nm i{width:8px;height:8px;border-radius:50%;background:var(--ok);flex:none}.srcs .r .nm i.stale{background:var(--wa)}.srcs .r .nm i.off{background:var(--ln2)}
.srcs .r .fl{color:var(--tx3);font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.srcs .mono{font-family:var(--mono);font-size:11px}
.apis{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:8px;padding:12px 14px}
.api{border:1px solid var(--ln);border-radius:8px;padding:8px 12px;display:flex;flex-direction:column;gap:2px;text-align:left;background:var(--sf);font-size:11.5px;color:var(--tx2)}
.api:hover{border-color:var(--fr)}.api code{font-family:var(--code);font-size:11.5px;color:var(--tx);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.api .m{font-family:var(--mono);font-size:10px;color:var(--ok-tx);background:var(--ok-soft);border-radius:3px;padding:0 5px;margin-right:6px}
.ftab{width:100%;border-collapse:collapse;font-size:12px}.ftab th{position:sticky;top:-12px;background:var(--sf2);text-align:left;font-weight:500;color:var(--tx2);font-size:11px;padding:6px 10px;border-bottom:1px solid var(--ln)}
.ftab td{padding:4px 10px;border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent);vertical-align:top}.ftab td:first-child{font-family:var(--mono);font-size:11.5px;color:var(--tx)}
.ftab td:nth-child(2){font-family:var(--mono);font-size:11px;color:var(--tx2);white-space:nowrap}.ftab td:nth-child(3){color:var(--tx2);font-variant-numeric:tabular-nums;max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ftab .ind{color:var(--tx3)}
.runs .r{grid-template-columns:150px 56px minmax(0,1.2fr) minmax(0,1fr) 72px 72px 72px 64px}

/* 单日分析：指标条整行、明细表列宽由页面给出（--cols），整表放进页面宽度 */
.stg.full{grid-template-columns:minmax(0,1fr)}.stg.full .nums{border-right:0;flex-wrap:wrap}.stg.full .n{flex:1 1 0;min-width:172px;padding-left:14px;padding-right:12px}.stg.full .n .d{white-space:normal;line-height:1.35}
.stg .n.hum .l,.stg .n.hum .v{color:#b45309}
.stat{margin-top:8px}.stat>span b{color:var(--tx);font-weight:650}
.dtab .r{grid-template-columns:var(--cols)}
.dtab .hh{font-family:var(--mono);font-weight:650;color:var(--tx);margin-right:6px}.dtab .hrg{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
.dtab .dir{font-weight:650}.dtab .dir.b{color:var(--br-h)}.dtab .dir.s{color:var(--er-tx)}
.dtab .r.z{color:var(--tx3)}.dtab .r.z .c b{color:var(--tx2)}
.dtab .r.ft{cursor:default;background:var(--sf2);font-weight:650;border-bottom:0}.dtab .r.ft:hover{background:var(--sf2)}
.dtab .c.bar{grid-template-columns:minmax(0,1fr) 52px}.dtab .na{color:var(--tx3)}.dtab .c.bar .wide{grid-column:1 / -1;text-align:right}

/* 日历：月份翻页、日历格、图例 */
.mpg{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ln2);border-radius:4px;background:var(--sf);padding:2px 4px;font-size:12.5px}
.mpg b{font-weight:650;padding:0 6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.mpg button{border:0;background:none;width:24px;height:24px;border-radius:50%;font-size:15px;color:var(--tx2);display:grid;place-items:center}.mpg button:hover:not(:disabled){background:var(--hov);color:var(--fr)}.mpg button:disabled{opacity:.3;cursor:default}
.calh .dc{min-height:86px;text-align:left;font-family:inherit;position:relative;padding:5px 8px 9px}
.calh .dc .dt{display:flex;justify-content:space-between;align-items:baseline;gap:6px}.calh .dc .dt span{font-size:10px;color:var(--tx3);font-family:var(--mono)}
.calh .dc .v{font-size:14.5px;line-height:1.3}.calh .dc .v.na{color:var(--tx3);font-weight:500;font-size:12px}
.calh .dc .sub{font-size:10.5px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.calh .dc .stl{position:absolute;left:8px;right:8px;bottom:4px;height:2px;border-radius:1px;background:var(--bg2)}.calh .dc .stl i{display:block;height:100%;border-radius:1px;background:var(--tx3)}
.calh .dc.off{min-height:86px}.calh .dc.off b{color:var(--tx3);font-weight:500}
.calh button.dc:hover{border-color:var(--fr)}
.calleg{display:flex;gap:10px;font-size:11px;color:var(--tx2);align-items:center}.calleg span{display:inline-flex;align-items:center;gap:4px}.calleg .sw{width:10px;height:10px;border-radius:3px}.calleg .ln{width:14px;height:2px;border-radius:1px;background:var(--tx3)}
a.btn{text-decoration:none;display:inline-block}

/* 算法与数据：单次运行漏斗、芯片组、冻结参数标题、数据源与运行记录行、接口字段分组 */
.runchips{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.funnel{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:0;padding:12px 14px 14px}
@media (max-width:1300px){.funnel{grid-template-columns:repeat(5,minmax(0,1fr));row-gap:12px}}
.fs{position:relative;display:flex;flex-direction:column;gap:1px;padding:2px 14px 0 12px;border-left:1px solid var(--ln);min-width:0}
.fs:first-child{border-left:0;padding-left:2px}
.fs .no{font-family:var(--mono);font-size:10px;color:var(--tx3)}.fs .nm{font-size:12px;font-weight:650;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fs b{font-size:20px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;line-height:1.25}.fs b small{font-size:11px;font-weight:500;color:var(--tx3);margin-left:1px}
.fs .cl{font-size:10.5px;color:var(--tx3);white-space:nowrap}.fs .fb{height:4px;border-radius:0 2px 2px 0;background:var(--bg2);margin-top:5px;overflow:hidden}.fs .fb i{display:block;height:100%;border-radius:0 2px 2px 0;background:var(--br);transform-origin:left}
.fs.zero b{color:var(--tx3)}
.frzh{font-size:10.5px;color:var(--tx3);letter-spacing:.12em;padding:0 16px 6px}
.srcs .r.dim{color:var(--tx3)}.srcs .r .nm em{font-style:normal;font-size:10px;color:var(--tx3);border:1px solid var(--ln);border-radius:4px;padding:0 4px;margin-left:4px}
.srcs .r .fl b{color:var(--tx2);font-weight:600;font-variant-numeric:tabular-nums}
.srcs.runs{min-width:1300px}.srcs.runs .r{grid-template-columns:168px 52px minmax(260px,1.5fr) 44px minmax(110px,.8fr) minmax(120px,.9fr) 52px 72px 64px 72px 52px;cursor:pointer}   /* 平均绝对误差、区间覆盖率、逐时段误差率写全称（2026-10-27 U2） */
.srcs .r.blank{visibility:hidden}
.pgn{display:flex;justify-content:flex-end;align-items:center;gap:4px;padding:6px 10px;font-size:12px;color:var(--tx2);font-variant-numeric:tabular-nums}.pgn b{font-weight:600;min-width:44px;text-align:center}
.srcs.runs .r:hover{background:var(--hov)}.srcs.runs .r.hd{cursor:default}.srcs.runs .r.hd:hover{background:var(--sf2)}
.srcs.runs .r b{color:var(--tx);font-weight:650}.srcs .ub{display:grid;grid-template-columns:minmax(0,1fr) 50px;gap:6px;align-items:center}.srcs .ub b{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.srcs .wa{color:var(--wa-tx)}.srcs .er{color:var(--er-tx)}
.fgrp{border:1px solid var(--ln);border-radius:8px;margin-top:8px;overflow:hidden}.fgrp summary{display:flex;align-items:center;gap:10px;padding:6px 12px;background:var(--sf2);cursor:pointer;list-style:none;font-size:12px;color:var(--tx2)}
.fgrp summary::-webkit-details-marker{display:none}.fgrp summary code{font-family:var(--code);font-size:12px;color:var(--tx);font-weight:650}.fgrp .ftab th{position:static}.fgrp .ftab{table-layout:fixed}.fgrp .ftab th:first-child{width:44%}.fgrp .ftab th:nth-child(2){width:16%}.fgrp .ftab td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plist{margin:0;padding-left:18px;font-size:12.5px;line-height:1.8;color:var(--tx)}
.iss summary .tx{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tx)}.iss details[open] summary .tx{white-space:normal}
.iss details p code{font-family:var(--code);font-size:11px;color:var(--tx2)}

.term:empty{display:none}

/* 日历：对比对象 */
.seglb{font-size:11.5px;color:var(--tx3);margin-right:-4px;white-space:nowrap}
.stg .n.vsn .l,.stg .n.vsn .v{color:var(--vc,var(--tx))}

/* 算法侧评估卡、对比参照磁贴、时间线上的“已发布” */
.mcards.teval{grid-template-columns:repeat(3,minmax(0,1fr));padding:12px 14px 14px}.mcards.teval .mc{box-shadow:none;background:var(--sf2)}
.tef{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11px;color:var(--tx2);margin-top:2px}.tef b{color:var(--tx);font-weight:650;margin-left:5px;font-variant-numeric:tabular-nums}
.mc .d code{font-family:var(--code);font-size:10px;color:var(--tx3)}
.stg .n.ref{background:var(--sf2)}.stg .n.ref .v{color:var(--tx2)}
.tline .e.pub::after{border-color:var(--br)}

/* 交易台：依据一行、24 小时块（限价与目标持仓为主）、申报表（逐列数值，重点列加粗） */
.why1{display:flex;flex-wrap:wrap;gap:5px 6px;align-items:center;padding:7px 12px;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2)}
.why1 .t0{font-size:10.5px;color:var(--tx3);letter-spacing:.14em;margin-right:4px}
.pb.v2{gap:5px;padding:8px 10px 8px 12px}
.pb.v2 .hl1{font-size:13px;font-weight:650;color:var(--tx);line-height:1.2;white-space:nowrap}.pb.v2 .hl1 b{font-size:19px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;margin-left:2px}.pb.v2 .hl1 small{font-size:10.5px;color:var(--tx3);font-weight:500;margin-left:3px}
.pb.v2.B .hl1,.pb.v2.B .hl1 b{color:var(--br-h)}.pb.v2.S .hl1,.pb.v2.S .hl1 b{color:var(--er-tx)}.pb.v2 .hl1.na{color:var(--tx3);font-weight:500;font-size:12.5px;padding:3px 0}
.pb.v2 .bkv{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:100%}.pb.v2 .hl1,.pb.v2 .ft3,.pb.v2 .cov,.pb.v2 .rng{width:100%}
.pb.v2 .bkx{display:flex;flex-direction:column;gap:0;border-radius:6px;padding:4px 7px 4px;background:var(--bg2);min-width:0}
.pb.v2.B .bkx{background:var(--br-soft)}.pb.v2.S .bkx{background:var(--er-soft)}
.pb.v2 .bkx span{font-size:10px;color:var(--tx2);letter-spacing:.04em}.pb.v2 .bkx b{font-size:15px;font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums;line-height:1.25;white-space:nowrap}
.pb.v2 .bkx small{font-size:10px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.pb.v2 .ft3{display:flex;justify-content:space-between;gap:6px;font-size:10.5px;color:var(--tx2);white-space:nowrap;font-variant-numeric:tabular-nums}.pb.v2 .ft3 b{color:var(--tx);font-weight:650}
.pb.v2 .ft3 .pg{display:inline-block;width:26px;height:4px;border-radius:2px;background:var(--bg2);margin-left:5px;vertical-align:2px;overflow:hidden}.pb.v2 .ft3 .pg u{display:block;height:100%;background:var(--tx3);border-radius:2px}
/* 颜色含义统一（2026-10-21 用户定）：盈亏、有利与不利、价格涨跌一律跟左侧“盈亏颜色”开关——正、有利、上涨与盈利同色（--gain-tx），负、不利、下跌与亏损同色（--loss-tx）；数据状态、买卖方向与天气不在此列 */
.pos{color:var(--gain-tx)!important}.neg{color:var(--loss-tx)!important}

/* ============ 单日分析（02）：结果四个大号数字、当场、24 小时块、归因、逐小时明细 ============ */
.stg .n .kbar{height:6px;border-radius:0 1px 1px 0;background:var(--bg2);margin:6px 0 4px;overflow:hidden}
.stg .n .kbar i{display:block;height:100%;border-radius:0 1px 1px 0;background:var(--br)}
.stg .n .ebar{height:28px;margin:4px 0 0}.stg .n .ebar svg{display:block;width:100%;height:100%}
.stg .n.hero .dsp{height:34px;margin-top:6px;position:relative}.stg .n.hero .dsp svg{display:block;width:100%;height:100%}
.stg .n.hero .dsp .hsl{position:absolute;right:0;top:-15px;font-size:10px;color:var(--tx3);white-space:nowrap}
.stg .n .d b.pos,.stg .n .d b.neg{font-size:12px}
#brief.static .bt .d em{font-style:normal;font-weight:650}
/* 小时块（2026-10-13）：标题行、盘中小图（72px，纵轴取本小时价格范围）、成交与首笔 / 结算净值 / 实际交易三行；悬停只变描边与阴影 */
.pb.ib{gap:3px;padding:7px 9px 7px 10px}
.ib-c{position:relative;flex:none;width:100%;height:72px;margin:1px 0 2px;border-radius:4px;background:var(--sf2);overflow:hidden}
.ib-c svg{display:block;width:100%;height:100%}
.ib-c.none{display:grid;place-items:center;font-size:11px;color:var(--tx3);border:1px dashed var(--ln2);background:transparent}
.ib-t{position:absolute;z-index:2;width:2px;height:8px;border-radius:1px;transform:translate(-50%,-50%)}   /* 回放成交：迷你图放不下三角，改 2px 短竖线（2026-10-22 H6） */
.ib-t.b{background:var(--br)}.ib-t.s{background:var(--er)}
.ib-k{position:absolute;z-index:1;width:5px;height:5px;border-radius:50%;background:#b45309;transform:translate(-50%,-50%)}
.ib-lv{position:absolute;right:3px;font-size:9.5px;font-weight:650;line-height:10px;color:#d03b3b;white-space:nowrap;font-variant-numeric:tabular-nums}
.ib-lv.hi{top:3px}.ib-lv.lo{bottom:3px}
.ib-l1,.ib-l3{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1px 6px;font-size:10.5px;line-height:15px;color:var(--tx2);font-variant-numeric:tabular-nums}
.ib-l1>span,.ib-l3>span{white-space:nowrap}
/* 单日分析 24 个小时块：一行 6 个（2026-10-18 用户要求），窄屏按 24 的约数退到 4、3、2 个，不出现除不尽的行 */
#iboard.pgrid{grid-template-columns:repeat(6,minmax(0,1fr))}
@media (max-width:1180px){#iboard.pgrid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:820px){#iboard.pgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:600px){#iboard.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ib-l1 b,.ib-l3 b{font-weight:650;color:var(--tx)}
.ib-l1 small,.ib-l3 small{font-size:9.5px;color:var(--tx3);margin-left:2px}
.ib-l3,.ib-l3 b{color:#b45309}
.ib-nv{display:flex;align-items:baseline;gap:6px;white-space:nowrap;font-variant-numeric:tabular-nums;line-height:22px}
.ib-nv>span{font-size:10.5px;color:var(--tx3)}
.ib-nv b{font-size:17px;font-weight:700;letter-spacing:-.01em}.ib-nv b small{font-size:10.5px;font-weight:500;color:var(--tx3);margin-left:2px}
.ib-nv b.na{font-size:12px;font-weight:500;color:var(--tx3)}
.ib-tip{position:fixed;z-index:75;pointer-events:none;display:none;min-width:190px;max-width:320px;background:color-mix(in srgb,var(--sf) 96%,transparent);border:1px solid var(--ln);border-radius:4px;padding:8px 12px;box-shadow:0 8px 24px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.08);font-size:12px;line-height:1.6;color:var(--tx)}
.ib-tip .tt{font-size:10.5px;color:var(--tx3);margin-bottom:3px}
.ib-tip .tr{display:flex;align-items:center;gap:7px;white-space:nowrap}.ib-tip .tr i{width:8px;height:8px;border-radius:2px;flex:none}
.ib-tip .tr b{margin-left:auto;padding-left:14px;font-weight:650;font-variant-numeric:tabular-nums}
#ileg i.ln{width:14px;height:0;border-radius:0;border-top:2px solid var(--c);background:none}
#ileg i.tu,#ileg i.td{width:0;height:0;border-radius:0;border-left:4px solid transparent;border-right:4px solid transparent;background:none}
#ileg i.tu{border-bottom:6px solid var(--c)}#ileg i.td{border-top:6px solid var(--c)}
/* 逐小时明细：整表放进页面宽度，不横向滚动；全市场小标尺（灰带最低–最高、深色短竖线均价、三角回放成交均价、红色竖线限价） */
.dtab .c .er{margin-left:6px;font-size:10.5px;color:var(--tx3);font-weight:500}
.dtab .mkb{position:relative;height:14px;min-width:0}
.dtab .mkb .mkr{position:absolute;top:4px;height:6px;border-radius:1px;background:rgba(23,35,61,.16)}   /* 灰带原用 .bd，被卡片正文 .card .bd 的内边距撑成 24px 高、盖满整格（2026-10-23 P2 改名） */
.dtab .mkb .mv{position:absolute;top:0;width:2px;height:7px;margin-left:-1px;background:var(--tx)}   /* 全市场均价在上半格、回放成交均价在下半格，错开不相压（2026-10-23 P2） */
.dtab .mkb .lm{position:absolute;top:0;width:2px;height:14px;margin-left:-1px;background:#d03b3b}
.dtab .mkb .tr{position:absolute;top:7px;width:2px;height:7px;margin-left:-1px;border-radius:1px;z-index:1}   /* 回放成交均价：标尺太窄放不下三角，改短竖线（2026-10-22 H6），放在下半格 */
.dtab .mkb .mka-r,.dtab .mkb .mka-l{position:absolute;top:3px;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent}   /* 限价超出标尺：对应一端的红色短箭头 */
.dtab .mkb .mka-r{right:0;border-left:6px solid #d03b3b}.dtab .mkb .mka-l{left:0;border-right:6px solid #d03b3b}
#ileg i.la,#tab-leg i.la{width:0;height:0;border-radius:0;background:none;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:6px solid #d03b3b}
.dtab .mkb .tr.b{background:var(--br)}.dtab .mkb .tr.s{background:var(--er)}
#tab-leg{margin:0;padding:8px 14px 6px;border-bottom:1px solid var(--ln)}
#tab-leg i.ln{width:2px;height:10px;border-radius:0;background:var(--c)}
#tab-leg i.tu{width:0;height:0;border-radius:0;border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:7px solid var(--c);background:none}
#tab-leg i.vt,#ileg i.vt{width:2px;height:8px;border-radius:1px;background:var(--c)}#tab-leg i.vt+i.vt{margin-left:-2px}
.dtab .c.mk{display:grid;grid-template-columns:minmax(0,1fr) 46px;gap:6px;align-items:center}.dtab .c.mk b{text-align:right}
.dtab .c.hum small{color:var(--tx3)}
.dtab .hrg{margin-left:4px}
.ich{position:relative;width:100%;height:70px;margin:1px 0 2px;border-radius:5px;background:var(--sf2);overflow:hidden}.ich svg{display:block;width:100%;height:100%}
.ich.none{display:grid;place-items:center;font-size:11px;color:var(--tx3);border:1px dashed var(--ln2);background:transparent}
.ich .ilb{position:absolute;right:3px;font-size:9.5px;font-weight:650;line-height:1;padding:1px 3px;border-radius:3px;background:rgba(255,255,255,.86);white-space:nowrap;font-variant-numeric:tabular-nums}
.ich .ilb.b{color:var(--br-h)}.ich .ilb.s{color:var(--er-tx)}.ich .ilb.up{transform:translateY(-108%)}.ich .ilb.dn{transform:translateY(12%)}
.ich .ihi,.ich .ilo{position:absolute;left:3px;font-size:9px;color:var(--tx3);font-family:var(--mono);line-height:1}.ich .ihi{top:2px}.ich .ilo{bottom:16px}
.ich .itk{position:absolute;width:5px;height:5px;border-radius:50%;background:#b45309;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #fff}

/* 算法与数据：模型与版本泳道（按月）。上排虚线条 = 训练窗口，下排实心条 = 服务区间，斜纹 = 回退运行 */
.tlg{display:flex;flex-wrap:wrap;gap:4px 14px;padding:10px 16px 0;font-size:11px;color:var(--tx2)}.tlg span{display:inline-flex;align-items:center;gap:6px}.tlg i{display:inline-block;width:14px;height:8px;border-radius:2px}
.tl{padding:6px 16px 10px}
.tl .axis,.tl .lane{display:grid;grid-template-columns:230px minmax(0,1fr);gap:0 14px}
.tl .months{position:relative;height:22px;border-bottom:1px solid var(--ln)}
.tl .months span{position:absolute;bottom:4px;font-size:10px;color:var(--tx3);font-family:var(--mono);white-space:nowrap;padding-left:3px;border-left:1px solid var(--ln2)}
.tl .lane{padding:10px 0;border-bottom:1px solid color-mix(in srgb,var(--ln) 70%,transparent)}.tl .lane:last-child{border-bottom:0;padding-bottom:2px}
.tl .who{grid-row:1 / span 2;min-width:0}
.tl .who>b{display:block;font-size:13px;font-weight:650;line-height:1.35}
.tl .who .tag{font-size:10px;font-weight:600;border-radius:4px;padding:1px 6px;background:var(--ok-soft);color:var(--ok-tx);margin-left:6px;vertical-align:1px;white-space:nowrap}
.tl .who .tag.frozen{background:color-mix(in srgb,#4a3aa7 12%,transparent);color:#4a3aa7}.tl .who .tag.pub{background:var(--br-soft);color:var(--br-h)}
.tl .who .big{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.3;margin-top:2px}.tl .who .big small{font-size:11px;font-weight:500;color:var(--tx3);margin-left:4px}
.tl .who .sub{font-size:11px;color:var(--tx3);line-height:1.5}.tl .who .sub b{color:var(--tx2);font-weight:650}
.tl .track{position:relative;height:46px;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--mw) - 1px),var(--ln) calc(var(--mw) - 1px),var(--ln) var(--mw))}
.tl .seg{position:absolute;display:flex;align-items:center;padding:0 6px;font-size:10.5px;white-space:nowrap;overflow:hidden;border-radius:4px;box-sizing:border-box;min-width:4px}
.tl .seg.train{top:3px;height:13px;background:color-mix(in srgb,var(--sc) 14%,var(--sf));border:1px dashed color-mix(in srgb,var(--sc) 55%,transparent);color:var(--tx2);font-size:9.5px}
.tl .seg.serve{top:22px;height:20px;background:var(--sc);color:#fff;font-weight:600}
.tl .seg.shadow{top:22px;height:20px;color:var(--tx);background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--sc) 28%,var(--sf)) 0 6px,color-mix(in srgb,var(--sc) 12%,var(--sf)) 6px 12px);border:1px solid color-mix(in srgb,var(--sc) 45%,transparent)}
.tl .pre{position:absolute;left:0;top:3px;height:13px;display:flex;align-items:center;font-size:9.5px;color:var(--tx2);padding:0 6px;border:1px dashed var(--ln2);border-left:0;border-radius:0 4px 4px 0;background:var(--sf2);white-space:nowrap}
.tl .lock{position:absolute;top:0;bottom:0;width:0;border-left:2px solid #4a3aa7;z-index:3}.tl .lock.pub{border-left-color:var(--br)}
.tl .lock span{position:absolute;top:-1px;left:4px;font-size:10px;color:#4a3aa7;font-weight:600;white-space:nowrap;background:var(--sf);padding:0 3px;border-radius:3px}.tl .lock.pub span{color:var(--br-h)}.tl .lock.end span{left:auto;right:4px}
.tl .asof{position:absolute;top:0;bottom:0;width:0;border-left:1px dashed var(--tx3);z-index:2}
.tl .params{grid-column:2;display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}
.tl .pg{display:flex;flex-wrap:wrap;align-items:center;gap:4px 5px;font-size:11px}.tl .pg .gn{color:var(--tx2);font-weight:600;margin-right:2px}
.tl .pg .pkv{background:color-mix(in srgb,#4a3aa7 6%,var(--sf));border:1px solid color-mix(in srgb,#4a3aa7 22%,var(--ln));border-radius:5px;padding:1px 7px;color:var(--tx2);white-space:nowrap}.tl .pg .pkv b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums;margin-left:4px}

/* 依据窗口：四个结论框（限价、单位优势、目标持仓、预计成交） */
.bas3{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.bas3 .bx{border:1px solid var(--ln);border-radius:8px;padding:7px 10px 6px;display:flex;flex-direction:column;gap:1px;min-width:0;background:var(--sf2)}
.bas3 .bx>span{font-size:10.5px;color:var(--tx2);letter-spacing:.06em}.bas3 .bx b{font-size:19px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.25;white-space:nowrap}.bas3 .bx b small{font-size:11px;font-weight:500;color:var(--tx3)}
.bas3 .bx>small{font-size:10.5px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.bas3 .bx.b{background:var(--br-soft);border-color:transparent}.bas3 .bx.b b{color:var(--br-h)}.bas3 .bx.s{background:var(--er-soft);border-color:transparent}.bas3 .bx.s b{color:var(--er-tx)}

/* 小时窗口 · 五档盘口：卖五 → 卖一 / 价差 / 买一 → 买五，限价插在对应位置 */
.obk{padding:6px 10px 2px;display:flex;flex-direction:column;gap:1px;font-variant-numeric:tabular-nums}
.obr{display:grid;grid-template-columns:28px 50px minmax(0,1fr) 54px 36px;gap:8px;align-items:center;height:20px;padding:0 4px;border-radius:4px;font-size:11.5px;color:var(--tx2)}
.obr .lv{font-size:10.5px;color:var(--tx3)}.obr b{font-weight:650;text-align:right}
.obr.a b{color:var(--er-tx)}.obr.b b{color:var(--br-h)}
.obr .bar{height:8px;border-radius:0 2px 2px 0;background:var(--bg2);overflow:hidden}.obr .bar i{display:block;height:100%;border-radius:0 2px 2px 0}
.obr.a .bar i{background:rgba(227,73,72,.5)}.obr.b .bar i{background:rgba(42,120,214,.5)}
.obr .qv{text-align:right;color:var(--tx)}.obr .od{text-align:right;font-size:10px;color:var(--tx3)}
.obr.in.a{background:var(--br-soft)}.obr.in.b{background:var(--er-soft)}
.obm{display:flex;gap:16px;justify-content:center;align-items:center;height:20px;margin:2px 0;font-size:10.5px;color:var(--tx3);border-top:1px solid var(--ln);border-bottom:1px solid var(--ln)}.obm b{color:var(--tx);font-weight:650}
.obl{display:grid;grid-template-columns:28px auto minmax(0,1fr) auto;gap:8px;align-items:center;height:20px;padding:0 4px;font-size:11.5px;font-weight:700}
.obl u{height:0;border-top:1.5px dashed currentColor;opacity:.55;text-decoration:none}
.obl.B{color:var(--br-h)}.obl.S{color:var(--er-tx)}.obl .lv{font-size:10.5px;font-weight:650}.obl .qv{font-size:10.5px;font-weight:600}
/* ============ 小时窗口（02）：四块事实、盘中主图与 14 个时段、右侧要点 / 盘口 / 时段明细 ============ */
.hpanel.dwp{overflow:hidden}
.dwp .hph .dw-lim{font-size:12.5px;color:var(--tx2);white-space:nowrap}.dwp .hph .dw-lim b{color:#d03b3b;font-weight:700;font-variant-numeric:tabular-nums}
.dw-top{flex:none;padding:10px 14px 0}
.dw-fs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dw-f{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);padding:8px 12px 7px;display:flex;flex-direction:column;gap:1px;min-width:0}
.dw-l{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-size:11.5px;color:var(--tx2);min-width:0}
.dw-rt{margin-left:auto;font-size:11px;color:var(--tx2);white-space:nowrap;min-width:0}.dw-rt b{font-weight:650}.dw-rt small{color:var(--tx3);margin-left:2px}
.dw-v{font-size:22px;font-weight:700;letter-spacing:-.01em;line-height:1.25;white-space:nowrap;font-variant-numeric:tabular-nums}
.dw-v small{font-size:11px;font-weight:500;color:var(--tx3);margin-left:4px;letter-spacing:0}
.dw-n{font-size:11px;color:var(--tx2);white-space:normal;min-height:17px;font-variant-numeric:tabular-nums}
.dw-n i.lb{display:inline-block;width:9px;height:9px;border-radius:2px;margin:0 4px 0 0;vertical-align:-1px}.dw-n i.lb.rc{margin-left:10px}
.dw-n i.lb.sp{background:#2a78d6}.dw-n i.lb.rc{background:#eda100}
.dw-p{height:8px;border-radius:0 2px 2px 0;background:var(--bg2);margin:7px 0 7px;overflow:hidden}.dw-p i{display:block;height:100%;border-radius:0 2px 2px 0}
/* 标尺：标记相对轴线放，数值在悬停里 */
.dw-r{position:relative;height:22px;margin:0 5px}
.dw-r.na{visibility:hidden}
.dw-r .ax{position:absolute;left:0;right:0;top:10px;height:2px;background:var(--bg2);border-radius:1px}
.dw-r .bd{position:absolute;top:6px;height:10px;border-radius:3px}
.dw-r .bd.mkt,.dw-lg .lb.mkt{background:rgba(23,35,61,.15)}
.dw-r .mk{position:absolute;box-sizing:border-box}
.dw-r .mk.lim{top:1px;width:2px;height:20px;margin-left:-1px;background:#d03b3b;border-radius:1px;z-index:3}
.dw-r .mk.dot{top:6.5px;width:9px;height:9px;margin-left:-4.5px;border-radius:50%;background:var(--c,#2a78d6);z-index:4}
/* 回放成交均价（td，买蓝卖红）与上一场同时段成交价（to，橙）：一律倒三角、画在色带上方，尖端贴住色带上沿（色带 6–16px，三角高 6px；2026-10-22 H6，原买入为色带下方的正三角） */
.dw-r .mk.td,.dw-r .mk.to{top:0;width:0;height:0;margin-left:-4.5px;border-left:4.5px solid transparent;border-right:4.5px solid transparent;z-index:2}
.dw-r .mk.td{border-top:6px solid var(--c);z-index:3}.dw-r .mk.to{border-top:6px solid #eb6834}
/* 离得太远的限价贴在标尺两端，旁边一个朝外的小箭头 */
.dw-r .mk.lim.pr,.dw-r .mk.lim.pl{margin-left:0}.dw-r .mk.lim.pr{margin-left:-2px}
.dw-r .mk.lim.pr::after,.dw-r .mk.lim.pl::after{content:"";position:absolute;top:6px;border-top:4px solid transparent;border-bottom:4px solid transparent}
.dw-r .mk.lim.pr::after{left:3px;border-left:5px solid #d03b3b}.dw-r .mk.lim.pl::after{right:3px;border-right:5px solid #d03b3b}
/* 仓位（2026-10-13，与交易台持仓条同一表达 P.posBar）：条为交易前持仓与买入增加 / 卖出减少，条下方独立的细线为 持仓率 80%–120% 区间 */
.dw-ps{margin:5px 0 3px}
.dw-lg .k{display:inline-block;flex:none}
.dw-lg .k.z0{width:14px;height:8px;border-radius:0 2px 2px 0;background:#b9c6d8}
.dw-lg .k.zu{width:14px;height:8px;border-radius:0 2px 2px 0;background:var(--buy)}
.dw-lg .k.zd{width:14px;height:8px;border-radius:0 2px 2px 0;background:repeating-linear-gradient(135deg,rgba(208,59,59,.42) 0 2px,transparent 2px 5px);box-shadow:inset 0 0 0 1px var(--sell)}
.dw-lg .k.zc{position:relative;width:16px;height:8px;border-radius:0;background:linear-gradient(var(--zone),var(--zone)) center/100% 2px no-repeat}
.dw-lg .k.zc::before,.dw-lg .k.zc::after{content:"";position:absolute;top:1px;width:1.5px;height:6px;background:var(--zone)}
.dw-lg .k.zc::before{left:0}.dw-lg .k.zc::after{right:0}
/* 本小时要点里的持仓：每 15 分钟一根累计持仓（灰 = 交易前，蓝 = 买入增加，红色斜纹 = 卖出减少） */
.dw-mb i.ps{display:flex;flex-direction:column;background:none}
.dw-mb i.ps u{display:block;flex:none;width:100%;text-decoration:none}
.dw-mb i.ps u.z0{background:#b9c6d8}.dw-mb i.ps u.zu{background:var(--buy)}
.dw-mb i.ps u.zd{background:repeating-linear-gradient(135deg,rgba(208,59,59,.42) 0 2px,transparent 2px 5px);box-shadow:inset 0 0 0 1px var(--sell)}
/* 结算净值的两段：价差收益、回收影响，正向右、负向左 */
.dw-sb{position:relative;height:10px;margin:6px 0 6px;background:var(--bg2);border-radius:2px}
.dw-sb u{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--tx3);text-decoration:none}
.dw-sb i{position:absolute;top:0;bottom:0}.dw-sb i.sp,.dw-lg .lb.sp{background:#2a78d6}.dw-sb i.rc,.dw-lg .lb.rc{background:#eda100}
/* 事实标尺的图例：一行，按价格、仓位、净值分组 */
.dw-lg{display:flex;flex-wrap:wrap;align-items:center;gap:3px 11px;padding:6px 2px 0;font-size:10.5px;color:var(--tx2)}
.dw-lg b{font-weight:600;color:var(--tx3);margin-left:8px}.dw-lg b:first-child{margin-left:0}
.dw-lg span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.dw-lg .lb{display:inline-block;width:14px;height:8px;border-radius:2px}
.dw-lg .lt{position:relative;display:inline-block;width:12px;height:12px;flex:none}
.dw-lg .lt::after{content:"";position:absolute;box-sizing:border-box}
.dw-lg .lt.tu::after{left:1.5px;top:2.5px;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-bottom:7px solid #2a78d6}
.dw-lg .lt.td::after{left:1.5px;top:2.5px;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:7px solid var(--c,#d03b3b)}
.dw-lg .lt.to::after{left:1.5px;top:2.5px;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:7px solid #eb6834}
.dw-lg .lt.lim::after{left:5px;top:0;width:2px;height:12px;background:#d03b3b}
.dw-lg .lt.dot::after{left:1.5px;top:1.5px;width:9px;height:9px;border-radius:50%;background:var(--c,#2a78d6)}
/* 主图与右侧面板 */
.dw-main{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 404px;gap:10px;padding:10px 14px 14px;align-items:stretch}
.dw-main .card{min-height:0}
.dw-view{display:none}
.dw-cv{height:clamp(250px,calc(100vh - 500px),430px);min-height:0}
.dw-none{display:grid;place-items:center;min-height:120px;height:100%;color:var(--tx3);font-size:12px;border:1px dashed var(--ln2);border-radius:var(--r2);background:var(--sf2)}
.dw-q{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));margin:2px 0 0 50px;width:calc(100% - 62px)}
.dw-qc{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding:4px 3px 5px;border:0;border-left:1px solid var(--ln);border-radius:0;background:none;font:inherit;cursor:pointer;min-width:0;transition:background var(--d1) var(--ease)}
.dw-qc:last-child{border-right:1px solid var(--ln)}
.dw-qc b{font-size:10px;font-weight:600;color:var(--tx2);text-align:center;font-variant-numeric:tabular-nums;white-space:nowrap}
.dw-qc .vb{position:relative;height:8px;background:var(--bg2);border-radius:0 2px 2px 0}
.dw-qc .vb i{position:absolute;left:0;top:0;bottom:0;border-radius:0 2px 2px 0}.dw-qc .vb i.m{background:#c9d2dc}.dw-qc .vb i.f{top:2px;bottom:2px}
.dw-qc .lp{align-self:center}
.dw-qc:hover,.dw-qc.lk-on{background:var(--sf2)}.dw-qc.on{background:var(--fr-soft);box-shadow:inset 0 2px 0 var(--fr)}.dw-qc.on b{color:var(--fr)}
.dwp .lp{display:inline-block;width:9px;height:9px;border-radius:50%;box-sizing:border-box;flex:none}
.dwp .lp.hit.B{background:#2a78d6}.dwp .lp.hit.S{background:#d03b3b}
.dwp .lp.in.B{border:2px solid #2a78d6}.dwp .lp.in.S{border:2px solid #d03b3b}
.dwp .lp.qd{background:#9aa8bd}.dwp .lp.out{border:1.5px solid #b7c2d2}.dwp .lp.na{visibility:hidden}
.dw-ql{display:flex;flex-wrap:wrap;align-items:center;gap:3px 12px;padding:5px 0 0 50px;font-size:10.5px;color:var(--tx2)}
.dw-ql span{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.dw-ql b{font-weight:600;color:var(--tx3);margin-left:6px}
.dw-ql i.m,.dw-ql i.f{display:inline-block;width:14px;height:7px;border-radius:0 1px 1px 0}.dw-ql i.m{background:#c9d2dc}
.dw-side{display:flex;flex-direction:column}
.dw-side .hd{flex:none}.dw-side .hd .seg{flex:none}
.dw-back{border:1px solid var(--ln2);background:var(--sf);border-radius:var(--r1);width:22px;height:22px;line-height:1;font-size:14px;color:var(--tx2);display:grid;place-items:center;padding:0}
.dw-back:hover{color:var(--fr);border-color:var(--fr)}
.dw-sbd{flex:1 1 auto;min-height:0;padding:8px 12px 10px;display:flex;flex-direction:column;gap:8px}
.dw-ks{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:8px}
.dw-k{border:1px solid var(--ln);border-radius:var(--r2);padding:7px 10px 6px;display:flex;flex-direction:column;gap:1px;background:var(--sf2);min-width:0}
.dw-k .l{font-size:11px;color:var(--tx2);white-space:nowrap}
.dw-k>b{font-size:19px;font-weight:700;line-height:1.25;white-space:nowrap;font-variant-numeric:tabular-nums}.dw-k>b small{font-size:10.5px;font-weight:500;color:var(--tx3);margin-left:3px}
.dw-k .n{font-size:10.5px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.dw-k.b>b{color:var(--br-h)}.dw-k.s>b{color:var(--er-tx)}.dw-k.hum .l,.dw-k.hum>b{color:#b45309}
.dw-mb{flex:1 1 auto;display:grid;grid-template-columns:repeat(14,minmax(0,1fr));align-items:end;gap:1px;min-height:26px;max-height:64px;margin:4px 0 3px;border-bottom:1px solid var(--ln)}
.dw-mb i{display:block;border-radius:1px 1px 0 0}
.dw-mp{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;margin:4px 0}
.dw-bk{display:flex;flex-direction:column;gap:2px}
.dw-bt{font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums}.dw-bt b{font-weight:650}.dw-bt b.hit{color:var(--br-h)}.dw-bt b.out{color:var(--tx3)}
.dwp .obk{padding:2px 0 0}
.dwp .obr{height:19px}
.dwp .obl{color:#d03b3b}
.dw-sts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.dw-st{border:1px solid var(--ln);border-radius:var(--r2);padding:5px 8px;display:flex;flex-direction:column;gap:0;background:var(--sf2);min-width:0}
.dw-st span{font-size:10.5px;color:var(--tx2);white-space:nowrap}.dw-st b{font-size:15px;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums}.dw-st b small{font-size:10px;font-weight:500;color:var(--tx3)}
.dw-st small{font-size:10px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dw-st.b b{color:var(--br-h)}.dw-st.s b{color:var(--er-tx)}.dw-st.hum span,.dw-st.hum b{color:#b45309}
.dw-dc{grid-column:1/-1;font-size:10.5px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.dw-dc b{color:var(--tx);font-weight:650}
.dw-tb{display:grid;font-size:11px;font-variant-numeric:tabular-nums;padding-right:4px}
.dw-tb .r{display:grid;grid-template-columns:var(--cols);gap:0 6px;align-items:center;height:21px;border-bottom:1px solid color-mix(in srgb,var(--ln) 70%,transparent);color:var(--tx2)}
.dw-tb .r>span{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;justify-content:flex-end;gap:4px}.dw-tb .r>span:first-child{justify-content:flex-start;color:var(--tx)}
.dw-tb .r.hd{height:22px;color:var(--tx3);font-size:10.5px;border-bottom:1px solid var(--ln)}
.dw-tb .r.on{background:var(--fr-soft)}
.dw-tb .a{color:var(--er-tx)}.dw-tb .b{color:var(--br-h)}.dw-tb .fb{color:var(--br-h);font-weight:650}.dw-tb .fs{color:var(--er-tx);font-weight:650}.dw-tb .hum{color:#b45309}
/* 图例里的空心圆（预测）与正三角（买入成交） */
.lg .k.ring{width:9px;height:9px;border-radius:50%;background:var(--sf);border:2px solid var(--c);box-shadow:none;box-sizing:border-box}
.lg .k.triu{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:8px solid var(--c);border-radius:0;background:none;box-shadow:none}
.dw-ks .dw-k:last-child:nth-child(odd){grid-column:1/-1}

/* 客户用电明细 */
.cutb{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.cutb th,.cutb td{padding:3.5px 8px;border-bottom:1px solid var(--ln);white-space:nowrap;font-size:11.5px;text-align:left}
.cutb th{position:sticky;top:0;z-index:1;background:var(--sf);color:var(--tx3);font-weight:500;font-size:10.5px;letter-spacing:.04em}
.cutb td.n,.cutb th.n{text-align:right}
.cutb tbody tr:hover{background:var(--sf2)}
.cutb .cbar{display:inline-block;height:7px;border-radius:0 1px 1px 0;background:rgba(42,120,214,.28);margin-right:6px;vertical-align:middle}
.cutb .sp24{width:104px;padding:0 8px}
.cutb .sp24 .spw{position:relative;height:20px;width:96px}
.cutb .sp24 .spark{display:block;width:100%;height:100%}
.stg.full .nums>.t0{display:flex;align-items:center;font-size:10px;color:var(--tx3);letter-spacing:.18em;writing-mode:vertical-rl;padding:2px 0;border-right:1px solid var(--ln);margin-right:2px}
.sect .sectn{font-size:10.5px;color:var(--tx3);font-weight:400;letter-spacing:.06em;margin-left:6px}
/* 指标条里的重点格：获利放第一位，字号与底色加重，带累计小趋势线 */
.stg .n.hero{background:var(--fr-soft);border-radius:var(--r2);min-width:210px}
.stg .n.hero .l{font-size:11.5px;color:var(--tx2);font-weight:600}
.stg .n.hero .v{font-size:31px;line-height:1.1;letter-spacing:-.02em}
.stg .n.hero .v small{font-size:13px}
.stg .n.hero .d{font-size:11px}
.stg .n.hero .hsp{margin-top:4px;height:30px;position:relative}
.stg .n.hero .hsp .spw{position:absolute;inset:0}
.stg .n.hero .hsp .spark{width:100%;height:100%;display:block}
.stg.full .nums>.n.hero{flex:1.8 1 0;min-width:0}
.stg.full .nums+.nums{border-left:1px solid var(--ln)}
.calh .dc .dt{flex-wrap:wrap;row-gap:1px}.calh .dc .dt b{white-space:nowrap}.calh .dc .dt em{font-style:normal;font-size:10px;font-weight:650;border-radius:3px;padding:0 5px;line-height:15px;margin-left:auto;white-space:nowrap}.calh .dc .dt em+span{display:none}
.calh .dc .dt em.holtag{background:linear-gradient(90deg,#ff8a4c,#e8532a);color:#fff}.calh .dc .dt em.adjtag{background:var(--wa-soft);color:var(--wa-tx)}
.calh .dc.out{background-color:var(--sf2);border-color:var(--ln)}.calh .dc.out b,.calh .dc.out .v,.calh .dc.out .sub,.calh .dc.out .sub span,.calh .dc.out .dt span{color:var(--tx3)!important}.calh .dc.out .dt em{background:var(--ln);color:var(--tx3)}.calh .dc.out .stl i{background:var(--ln2)}
.calh .dc.holhide{overflow:hidden}
.holmask{position:absolute;inset:0;background:rgba(112,122,140,.62);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:inherit;color:#fff;z-index:2}
.holmask b{font-size:12.5px;font-weight:650;letter-spacing:.08em;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.holmask span{font-size:10.5px;color:var(--tx);background:rgba(255,255,255,.88);padding:0 7px;border-radius:4px;line-height:1.5}

/* Redis/API missing-data state: remain visible above the page content. */
#data-error{display:flex;align-items:center;gap:16px;position:sticky;top:8px;z-index:100;margin:12px 0;padding:14px 18px;border:1px solid #d7a253;border-radius:10px;background:#fff5df;color:#714200;font-size:14px;line-height:1.6}
#data-error button{flex:none;padding:5px 12px;border:1px solid #d7a253;border-radius:6px;background:#fff;cursor:pointer;color:inherit}

/* ============ 行情链：6 块磁贴按判断顺序连成一条；每块：名称 / 判断 / 关键数 / 补充 ============ */
.brief.chain{gap:16px}
.brief.chain .bt{position:relative;cursor:pointer;transition:border-color var(--d1) var(--ease),box-shadow var(--d1) var(--ease)}
.brief.chain .bt:hover,.brief.chain .bt:focus-visible{border-color:color-mix(in srgb,var(--fr) 40%,var(--ln));box-shadow:var(--sh2);outline:none}
.brief.chain .bt:not(:last-child)::after{content:"";position:absolute;right:-12px;top:50%;width:7px;height:7px;border-top:1.5px solid var(--ln2);border-right:1.5px solid var(--ln2);transform:translateY(-50%) rotate(45deg)}
@media (max-width:1400px){.brief.chain .bt:nth-child(3n)::after{display:none}}
.bt .j{font-size:12px;font-weight:650;color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:18px}
.bt .j.hi{color:var(--er-tx)}.bt .j.lo{color:var(--ok-tx)}.bt .j.wa{color:var(--wa-tx)}
.brief.chain .bt .d{display:block;overflow:hidden;text-overflow:ellipsis;color:var(--tx3);min-height:16px}
.brief.chain.static .bt{cursor:default}.brief.chain.static .bt:hover{border-color:var(--ln);box-shadow:var(--sh1)}
.brief.chain .bt .a{margin-top:5px;padding-top:5px;border-top:1px dashed var(--ln);font-size:11.5px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brief.chain .bt .a b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}.brief.chain .bt .a em{font-style:normal;font-weight:650}.brief.chain .bt .a em.up{color:var(--gain-tx)}.brief.chain .bt .a em.dn{color:var(--loss-tx)}
.bt.bad{border-color:color-mix(in srgb,var(--er) 45%,var(--ln));background:linear-gradient(180deg,var(--er-soft),var(--sf) 72%)}
.bt.warn{border-color:color-mix(in srgb,var(--wa) 45%,var(--ln));background:linear-gradient(180deg,var(--wa-soft),var(--sf) 72%)}
.tstrip{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));gap:1.5px;height:13px;margin:6px 0 6px}
.tstrip i{border-radius:2px;background:#dfe5ee}.tstrip i.lo{background:#8fd6b7}.tstrip i.hi{background:#f2a7a3}

/* ============ 视图切换与负荷异常 ============ */
#vsel{margin-left:2px}
.anom{display:flex;gap:10px;align-items:baseline;margin-top:10px;padding:8px 12px;border:1px solid color-mix(in srgb,var(--er) 40%,var(--ln));background:var(--er-soft);color:var(--er-tx);border-radius:var(--r2);font-size:12.5px}
.anom[hidden],.outlook[hidden]{display:none}
.anom b{font-weight:700}
.pgrid.dim .hl2 .q,.sheet.dim .svb b{opacity:.32;text-decoration:line-through}.sheet.dim .svb i{opacity:.3}

/* ============ 当日行情：左列价格（价格与价段 → 本场各交付日），右列供需与持仓（供需 → 负荷与持仓），上下按小时对齐 ============ */
.olg{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:10px;margin-top:10px}
.olg .hd .mt{font-size:11px;color:var(--tx2);white-space:nowrap}.olg .hd .mt b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}
.olg .hd .mt b.lo{color:var(--ok-tx)}.olg .hd .mt b.hi{color:var(--er-tx)}.olg .hd .mt b.wa{color:var(--wa-tx)}
.srcsw{display:inline-flex;border:1px solid var(--ln);border-radius:var(--r1);padding:2px;gap:2px;background:var(--sf2)}
.srcsw button{border:0;background:none;border-radius:3px;padding:1px 9px;font-size:11px;color:var(--tx2)}.srcsw button.on{background:var(--sf);color:var(--fr);font-weight:600;box-shadow:0 0 0 1px var(--ln)}
/* 本场各交付日：一行一个交付日，格内是价差，颜色深浅表示大小；表头底线标低价段 / 高价段 */
#ol-d3{display:flex;flex-direction:column}
.d3{padding:8px 12px 10px;flex:1;display:flex;flex-direction:column;gap:4px}
.blk{display:grid;grid-template-columns:148px 30px repeat(24,minmax(0,1fr));grid-auto-rows:minmax(20px,1fr);gap:2px 2px;padding:4px;border-radius:7px;cursor:pointer;flex:1 1 auto}
.blk:hover{background:var(--hov)}.blk.cur{background:var(--fr-soft)}
.blk.hd3{flex:0 0 auto;cursor:default;padding-top:0;padding-bottom:0;grid-auto-rows:auto}.blk.hd3:hover{background:none}
.blk.hd3 b{font-size:10.5px;font-weight:500;color:var(--tx3);text-align:center;border-bottom:3px solid transparent;padding-bottom:2px}
.blk.hd3 b.lo{border-bottom-color:#8fd6b7}.blk.hd3 b.hi{border-bottom-color:#f2a7a3}
.lb3{grid-row:span 4;display:flex;flex-direction:column;justify-content:center;gap:1px;padding-right:8px;min-width:0;line-height:1.35;font-size:11px;color:var(--tx2);white-space:nowrap}
.lb3>b{font-size:12.5px;font-weight:650;color:var(--tx)}.lb3>b small{font-size:10.5px;font-weight:500;color:var(--tx3);margin-left:5px}
.lb3>small{font-size:10.5px;color:var(--tx3);overflow:hidden;text-overflow:ellipsis}
.lb3 span{overflow:hidden;text-overflow:ellipsis}.lb3 span b{font-weight:650;color:var(--tx);font-variant-numeric:tabular-nums}.lb3 b.qb{color:#1c5cab}.lb3 b.qs{color:var(--er-tx)}
.lb3 em{font-style:normal;font-weight:600;font-size:10.5px;margin-left:3px}.lb3 em.up{color:var(--gain-tx)}.lb3 em.dn{color:var(--loss-tx)}.lb3 em.bad{color:var(--er-tx);margin:2px 0 0}
.blk>.k{font-size:10.5px;color:var(--tx3);align-self:center;white-space:nowrap}
.blk>i{border-radius:3px;display:grid;place-items:center;font-style:normal;font-size:10.5px;font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--tx);min-width:0;overflow:hidden}
.blk>i.e{background:var(--sf2);color:var(--tx2)}.blk>i.z{color:var(--tx4,#c3cad6)}.blk>i.dim{opacity:.45}
.blk>i.lp.b{color:var(--blue-tx,#1c5cab)}.blk>i.lp.s{color:var(--er-tx)}
.blk>i.na{background:repeating-linear-gradient(135deg,#eef1f6 0 4px,#f7f9fc 4px 8px)}
.d3f{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:11px;color:var(--tx3)}
.d3f span{display:inline-flex;align-items:center;gap:5px}.d3f i{display:inline-block;width:12px;height:9px;border-radius:2px}
.d3f i.lo{height:3px;border-radius:1px;background:#8fd6b7}.d3f i.hi{height:3px;border-radius:1px;background:#f2a7a3}
/* 小时窗口：标尺下的一行结论 */
.vis .cl1{display:flex;flex-wrap:wrap;gap:0 14px;font-size:11.5px;color:var(--tx2);margin:6px 6px 0;line-height:1.6}.vis .cl1 span{white-space:nowrap}
.vis .cl1 b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}.vis .cl1 b.bad{color:var(--er-tx)}

/* ============ 策略参考：对齐 TCL 的总览 / 报价关系分析 / 持仓决策依据 / 滚撮决策依据 ============ */
.rtop{position:relative;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;padding:8px 12px;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);box-shadow:var(--sh1)}
.rtop .sp{flex:1}
.rtop .rinfo{font-size:11.5px;color:var(--tx2);white-space:nowrap}.rtop .rinfo b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}
.lgw{padding:4px 14px 0;display:flex;align-items:center;gap:6px 12px;flex-wrap:wrap;min-height:28px}.lgw .lg{flex-wrap:wrap}
.card .hd .mk{display:flex;gap:14px;font-size:11px;color:var(--tx2);white-space:nowrap}.card .hd .mk b{font-size:13px;color:var(--tx);font-variant-numeric:tabular-nums}
.card .hd .mk b.up{color:var(--gain-tx)}.card .hd .mk b.dn{color:var(--loss-tx)}
.rday{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);box-shadow:var(--sh1);font-size:12px;color:var(--tx2);font-variant-numeric:tabular-nums}
.rday .wxi svg{width:24px;height:24px;display:block}.rday b{font-size:13px;color:var(--tx);font-weight:650}.rday small{margin-left:auto;color:var(--tx3);font-size:11px}
.wxcards{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;align-items:stretch}
.wxcards .wxh{grid-column:1/-1;font-size:11px;color:var(--tx3);letter-spacing:.08em}
.wxc{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);box-shadow:var(--sh1);padding:8px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.wxc.dec{border-color:color-mix(in srgb,var(--fr) 40%,var(--ln));background:var(--fr-soft)}
.wxc.hol .d{color:#e8532a}
.wxc .d{font-size:11.5px;color:var(--tx2);font-variant-numeric:tabular-nums}
.wxc .t{display:flex;align-items:center;gap:6px}.wxc .t svg{width:26px;height:26px}.wxc .t b{font-size:24px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}.wxc .t small{font-size:11px;color:var(--tx3)}
.wxc .m,.wxc .l{font-size:11px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.wxc .l{color:var(--tx3)}
/* 日期与关注区间选择：两个月并排（与交易台决策日下拉同一套外观） */
.rpk{position:relative;display:flex;align-items:center;gap:6px}
.rpk .rl{font-size:11.5px;color:var(--tx3);margin-right:2px}.rpk .rto{color:var(--tx3);font-size:12px}
.rpk .rn{font-size:11.5px;color:var(--tx2);font-variant-numeric:tabular-nums;margin-left:2px}
.rpk .dpick{height:30px;padding:0 10px 0 12px;font-size:12.5px}
.drng .rsel{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:11px;color:var(--tx3)}.drng .rsel b{color:var(--tx);font-weight:600;font-variant-numeric:tabular-nums}
.drng .rm{user-select:none;-webkit-user-select:none}
.drng{position:absolute;top:calc(100% + 6px);z-index:55;width:560px;padding:10px 12px 10px;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r3);box-shadow:var(--sh3);animation:popIn .2s var(--ease) both}
@keyframes popIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes popOut{from{opacity:1;transform:none}to{opacity:0;transform:translateY(6px)}}
.drng.closing{animation:popOut .15s var(--ease-io) both}
.drng[hidden]{display:none}
.drng button{font:inherit;cursor:pointer}
.drng .rh{display:grid;grid-template-columns:26px 1fr 1fr 26px;align-items:center;gap:0 18px;margin-bottom:6px}
.drng .rh b{text-align:center;font-size:12.5px;font-weight:650;color:var(--tx)}
.drng .wk{width:26px;height:26px;border:0;border-radius:6px;background:transparent;color:var(--tx2);font-size:16px;line-height:1}
.drng .wk:hover{background:var(--hov)}.drng .wk:disabled{opacity:.3;cursor:default;background:transparent}
.drng .rm{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;align-items:start}
.drng .mo{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px 0}
.drng .wd{font-size:10.5px;color:var(--tx3);text-align:center;line-height:22px}
.drng .dc{position:relative;height:32px;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--tx);border-radius:0}
.drng .dc b{font-family:var(--mono);font-size:12px;font-weight:500;line-height:1}
.drng .dc .dot{width:4px;height:4px;border-radius:50%;background:var(--fr)}
.drng .dc .dot.a{background:transparent;box-shadow:inset 0 0 0 1.2px var(--fr)}
.drng .dc .dot.f{background:var(--ln2)}
.drng .dc.hol b{color:#e8532a;font-weight:650}
.drng .dc .dots{display:flex;gap:2px;height:4px}
.drng .dc .dots i{width:4px;height:4px;border-radius:50%;background:var(--fr)}
.drng .dc .dots i.k1{background:transparent;box-shadow:inset 0 0 0 1.2px var(--fr)}
.drng .dc .dots i.k2{background:var(--ln2)}
.drng .dc.s .dots i,.drng .dc.e .dots i{background:#fff;box-shadow:none}
.drng .dc.mark b{text-decoration:underline;text-underline-offset:3px}
.drng .rf .lgd i{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--fr);margin-left:6px}
.drng .rf .lgd i.k1{background:transparent;box-shadow:inset 0 0 0 1.2px var(--fr)}.drng .rf .lgd i.k2{background:var(--ln2)}
.drng .dc.dec b{text-decoration:underline;text-underline-offset:3px}
.drng .dc:not(:disabled):hover b{color:var(--fr)}
.drng .dc:disabled{cursor:default}.drng .dc:disabled b{color:var(--ln2)}
.drng .dc.blank{visibility:hidden}
.drng .dc.in{background:var(--fr-soft)}
.drng .dc.s,.drng .dc.e{background:var(--fr)}.drng .dc.s{border-radius:4px 0 0 4px}.drng .dc.e{border-radius:0 4px 4px 0}.drng .dc.s.e{border-radius:4px}
.drng .dc.s b,.drng .dc.e b,.drng .dc.s:not(:disabled):hover b,.drng .dc.e:not(:disabled):hover b{color:#fff;font-weight:650}.drng .dc.s .dot,.drng .dc.e .dot{background:#fff;box-shadow:none}
.drng .rf{display:flex;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--ln);font-size:11px;color:var(--tx2);flex-wrap:wrap}
.drng .rf .sp{flex:1}
.drng .rf .lgd{display:inline-flex;align-items:center;gap:4px;color:var(--tx3)}
.drng .rf .lgd .dot{width:5px;height:5px;border-radius:50%;background:var(--fr);margin-left:6px}
.drng .rf .lgd .dot.a{background:transparent;box-shadow:inset 0 0 0 1.2px var(--fr)}.drng .rf .lgd .dot.f{background:var(--ln2)}
.drng .rf .sel{color:var(--tx);font-variant-numeric:tabular-nums}

/* 交易计划：精简小时块（方向、电量、限价、价格标尺）与计划小结 */
.pb.v2 .hl2{display:flex;align-items:baseline;justify-content:space-between;gap:6px;width:100%;white-space:nowrap;font-variant-numeric:tabular-nums}
.pb.v2 .hl2 .q{font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--tx)}.pb.v2.B .hl2 .q{color:var(--br-h)}.pb.v2.S .hl2 .q{color:var(--er-tx)}
.pb.v2 .hl2 small{font-size:10.5px;font-weight:500;color:var(--tx3);margin:0 3px}.pb.v2 .hl2 .lp{font-size:14px;font-weight:650;color:var(--tx)}
.pb.v2 .hl2.na{color:var(--tx3);font-weight:500;font-size:12.5px;padding:2px 0}.pb.v2 .hl2.na .lp{font-weight:600;color:var(--tx2);font-size:13px}
.pleg i.md{width:2px;height:10px;border-radius:1px;background:var(--br)}
#psum{margin-top:10px}.bt .v s{color:var(--tx3);text-decoration-thickness:1.5px}
.dsel.one{background:none;padding:3px 0}.dsel.one span{padding:4px 2px;font-size:12px;color:var(--tx2);white-space:nowrap}
.dsel button .dtag{font-style:normal;font-size:10px;font-weight:500;border-radius:4px;padding:0 4px;margin-left:5px;line-height:15px;display:inline-block;vertical-align:1px}
.dsel button .dtag.hol{background:linear-gradient(90deg,#ff8a4c,#e8532a);color:#fff}.dsel button .dtag.adj{background:var(--wa-soft);color:var(--wa-tx)}.dsel button .dtag.wk{background:var(--bg2);color:var(--tx3)}
.blk>i{min-height:14px}.blk>i.z{background:var(--sf2)}.d3f .hint{margin-left:auto;color:var(--tx4,#9aa6b8)}
/* 天气卡：地图上只放名称与气温；市的明细在悬停时盖在全省平均面板上；地图高度收紧 */
.wx .map{min-height:380px}.wx .fxc{top:10px;min-height:0;z-index:4}.wx .fx .dpr.ext{margin-top:6px;padding-top:6px;border-top:1px dashed var(--ln)}
/* 滚动平衡：三行在卡片里均匀铺开，与右侧检修列表等高时不留大块空白 */
#c-bal{display:flex;flex-direction:column}#c-bal .bal{flex:1;display:flex;flex-direction:column;justify-content:space-evenly}
/* 单日分析：还没有结果时的一行状态；当场只剩状态块时占三格 */
.kslim{display:flex;align-items:center;gap:8px 22px;flex-wrap:wrap;padding:9px 14px;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);font-size:12px;color:var(--tx2)}.kslim b{color:var(--tx3);font-weight:600;margin-left:4px}
.brief .bt.wide3{grid-column:span 3}
/* 当场小时块：限价标签只写“≥ 价格”，靠右放在刻度之外；底部两行字号收紧，不顶到边 */
.ich .ilb{right:2px;font-size:9px;box-shadow:0 0 0 1px rgba(23,35,61,.06)}.pb.ib .row{gap:4px}
/* 曲线多的图：图例一行，其余在“选择曲线”下拉里 */
.lg{position:relative}.lg-more{border:1px solid var(--ln2);background:var(--sf);border-radius:var(--r1);padding:2px 10px;font-size:11px;color:var(--tx2);cursor:pointer;white-space:nowrap}.lg-more:hover{color:var(--fr);border-color:var(--fr)}
/* 保留旧浮层类名以兼容既有页面；当前图例完整展示全部项目。 */
.lg-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:var(--sf);border:1px solid var(--ln);border-radius:var(--r3);box-shadow:var(--sh3);padding:8px 10px 9px;display:flex;flex-direction:column;gap:6px;width:max-content;max-width:min(560px,80vw);animation:popIn .2s var(--ease) both}
.lg-g+.lg-g{border-top:1px solid var(--ln);padding-top:6px}
.lg-gt{font-size:10.5px;color:var(--tx3);letter-spacing:.08em;margin:0 0 3px 2px}
.lg-gi{display:flex;flex-wrap:wrap;gap:2px 4px}
.lg-ck{display:inline-flex;align-items:center;gap:6px;padding:2px 8px 2px 4px;border-radius:var(--r1);font-size:11.5px;color:var(--tx2);cursor:pointer;white-space:nowrap;user-select:none;transition:background var(--d1) var(--ease),color var(--d1) var(--ease)}
.lg-ck:hover{background:var(--hov);color:var(--tx)}.lg-ck.fixed{cursor:default;color:var(--tx3)}
.lg-ck input{margin:0;width:13px;height:13px;accent-color:var(--fr);cursor:inherit}
/* 接口字段：先列第一层，点击展开下一层 */
table.shape tr.sub{display:none}table.shape tr.sub.show{display:table-row}table.shape tr.kid td:first-child{cursor:pointer}
table.shape .tog{display:inline-block;width:12px;color:var(--tx3);transition:transform var(--d1) var(--ease)}table.shape tr.open .tog{transform:rotate(90deg)}
/* 申报表行高收紧，24 行一屏看完 */
.pb.v2 .hl2 .q{font-size:18px}
/* 带 hidden 属性的元素一律不显示（有的容器自带 display:flex/grid，会盖过 hidden） */
[hidden]{display:none!important}
/* 本场各交付日：行高不随卡片拉伸，单个交付日时也是正常高度 */
.blk{flex:0 0 auto;grid-auto-rows:20px}.blk.hd3{grid-auto-rows:auto}
/* 盘中：小时块下的一行此刻盘口；计划小结的“盘中”块 */
.pb .lv{display:flex;justify-content:space-between;gap:6px;width:100%;font-size:10.5px;color:var(--tx2);white-space:nowrap;border-top:1px dashed var(--ln);padding-top:4px;font-variant-numeric:tabular-nums}
.pb .lv b{color:var(--tx);font-weight:650}.pb .lv .ok,.pb .lv .ok b{color:var(--gain-tx)}
.brief .bt.livet{border-color:color-mix(in srgb,var(--fr) 40%,var(--ln));background:var(--fr-soft)}
/* ============ 日历（02）：只排时段内的周，行高按格内内容（calendar.js 量出最高一格后设 --rh），滚轮交给整页；右栏吸顶、两张图按窗口高度放得下；
   结算净值格放净值、较实际交易、计划买卖、成交率与已清分条 ============ */
.calh{grid-template-rows:24px;grid-auto-rows:var(--rh,104px);align-content:start;padding-top:0}
.calh.fit{grid-auto-rows:auto}
.calendar-layout{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:stretch}
.calh .wd{background:var(--sf);line-height:24px}
/* 右侧单日和左侧日历上下对齐：两张图平分卡片余下的高度；.long 为时段超过 7 周，右侧按一屏高度跟随滚动 */
#dayc>.hd{position:sticky;top:44px;z-index:6;background:var(--sf);border-radius:var(--r2) var(--r2) 0 0}
#dayc .dayb{flex:1 1 auto;display:flex;flex-direction:column}
#dayc .ch{flex:1 1 0;min-height:180px}
#dayc.long{position:sticky;top:44px;z-index:5;align-self:start}
#dayc.long .ch{flex:none;height:clamp(150px,calc((100vh - 292px) / 2),340px)!important}
@media (max-width:1100px){#dayc.long{position:static}#dayc .ch{flex:none;height:230px!important}}
.calh .dc{height:auto;min-height:0;overflow:hidden;gap:2px;padding:6px 8px 11px}
.calh .dc .v{font-size:15px;line-height:1.3;white-space:nowrap}
.calh .dc .sub{font-size:10.5px;line-height:1.45;white-space:normal;overflow:visible;text-overflow:clip}
.calh .dc .sub.vs{display:flex;flex-wrap:nowrap;gap:0 3px;align-items:baseline}.calh .dc .sub.vs>span{flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap}
.calh .dc .sub.vs b{font:inherit;font-variant-numeric:tabular-nums;white-space:nowrap;color:inherit}
.calh .dc .pl,.calh .dc .fr{display:grid;grid-template-columns:minmax(0,1fr);gap:3px;margin-top:2px;font-size:10px;line-height:14px;color:var(--tx2)}
.calh .dc .met{display:flex;justify-content:space-between;align-items:baseline;gap:8px;min-width:0}
.calh .dc .met>span{flex:none;color:var(--tx3);white-space:nowrap}
.calh .dc .met b{flex:none;white-space:nowrap}
/* 实际交易看法：价差收益、回收影响以同色小方块作标签（与日历图注、S.Hum.split 同色）；窄屏时格子左右内边距收窄，元取整的金额不截断（G5，2026-10-21） */
.calh .dc .met>i.mk{flex:none;width:7px;height:7px;border-radius:1px;align-self:center}.calh .dc .met>i.mk.sp{background:#2a78d6}.calh .dc .met>i.mk.rc{background:#eda100}
@media (max-width:1500px){.calh .dc{padding-left:5px;padding-right:5px}.calh .dc .met{gap:4px}}
@media (max-width:1340px){.calh.wk8 .dc .v{font-size:13px}.calh.wk8 .dc .met{font-size:9.5px;gap:2px}.calh.wk8 .dc .met b{font-size:10.5px}}
.calh .dc .pl .tr,.calh .dc .fr .tr{position:relative;display:flex;height:5px;background:var(--bg2);border-radius:0 1px 1px 0;overflow:hidden}
.calh .dc .pl .tr i,.calh .dc .fr .tr i{display:block;height:100%;flex:none}
.calh .dc .pl .tr i.b{background:#2a78d6}.calh .dc .pl .tr i.s{background:#d03b3b}.calh .dc .fr .tr i{background:#8db3e6;border-radius:0 1px 1px 0}
.calh .dc .pl b,.calh .dc .fr b{font-weight:600;color:var(--tx);text-align:right;font-variant-numeric:tabular-nums}
.calh .dc .fr.na b,.calh .dc .met b.na{color:var(--tx3);font-weight:500}
.calh .dc .met b small{font-size:9px;font-weight:400;color:var(--tx3);margin-left:2px}
.calh .dc .pl.use{margin-top:3px;padding-top:3px;border-top:1px solid color-mix(in srgb,var(--tx) 12%,transparent)}
.calh .dc.off .dt{display:flex;justify-content:space-between;align-items:baseline}
.calh .dc.off small{font-size:10.5px}
.calleg .pb2{display:inline-flex;width:18px;height:5px;border-radius:0 1px 1px 0;overflow:hidden}.calleg .pb2 i{flex:1}.calleg .pb2 .b{background:#2a78d6}.calleg .pb2 .s{background:#d03b3b}
.calleg .fb2{display:inline-block;width:16px;height:5px;background:#8db3e6;border-radius:0 1px 1px 0}
#dayc .kstrip.flat{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 16px;padding:12px 14px;border-bottom:1px solid var(--ln)}
#dayc .kstrip.flat .k{flex-direction:column;align-items:flex-start;gap:3px}
#dayc .kstrip.flat .vl{font-size:16px;font-weight:650;line-height:1.35}
#dayc .kstrip.flat .lb{font-size:10.5px}
#dayc .dayb{padding-top:8px}
/* 日历右侧当日卡片：两张图上下排列、等高，每张图上方一行“名称 + 图例”（高度由 calendar.js 按左侧日历卡片分配） */
#dayc .dayb{padding-bottom:8px}#dayc .dayb .lgw{padding:2px 8px 0 14px;min-height:26px}
#dayc .lgt{font-size:12px;font-weight:600;color:var(--tx);white-space:nowrap}#dayc .lgt small{font-size:10.5px;font-weight:400;color:var(--tx3);margin-left:5px}
#dayc .dayb .lgw .lg{margin-left:auto}
@media (max-width:1100px){.topline{flex-wrap:wrap}.calendar-layout{grid-template-columns:minmax(0,1fr)}.hpanel.dwp{height:100%;overflow:hidden}.dw-main{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);padding-top:6px}.dw-view{display:flex;justify-self:start}.dw-main.pane-path>.dw-side,.dw-main.pane-details>.dw-ch{display:none}.dw-ch>.bd{display:flex;flex:1;flex-direction:column;min-height:0}.dw-cv{height:auto;flex:1;min-height:140px}.dw-q,.dw-ql{flex:none}.dw-fs{grid-template-columns:repeat(2,minmax(0,1fr))}.dw-qc{padding-left:1px;padding-right:1px}.dw-tb{font-size:10px}.dw-tb .r{height:18px}.dw-tb .r.hd{height:20px}}
@media (max-width:650px){.calh{padding-left:6px;padding-right:6px}.calh .dc{padding:4px 3px 9px}.calh .dc .dt>span,.calh .dc .holtag,.calh .dc .adjtag,.calh .dc .sub,.calh .dc .met,.calh .dc .pl.use{display:none}.calh .dc .v{font-size:12px;white-space:normal;overflow-wrap:anywhere}.calh .dc .pl,.calh .dc .fr{margin-top:4px}.calh .dc .pl .tr,.calh .dc .fr .tr{height:4px}.calh .dc.off small{font-size:9px;white-space:normal}.dw-fs{grid-template-columns:repeat(2,minmax(0,1fr))}.dw-q{grid-template-columns:repeat(7,minmax(0,1fr));margin-left:8px;width:calc(100% - 16px);row-gap:4px}.dw-ql{padding-left:8px}#ks .nums>.n{flex:1 1 45%}.stg.full .n .d{white-space:normal}}
/* 柱条圆角：基准一侧（零轴、起点）不圆，远端圆角不超过柱长的 40% */
.bal .bar{border-radius:0 4px 4px 0}.bal .bar span:first-child{border-radius:0}.bal .bar span:last-of-type{border-radius:0 min(4px,40%) min(4px,40%) 0}
.gbar .gtr{border-radius:0 2px 2px 0}.gbar .gtr i{border-radius:0 2px 2px 0}
.obr .bar{border-radius:0 2px 2px 0}.obr .bar i{border-radius:0 min(2px,40%) min(2px,40%) 0}
.dvb i.p{border-radius:0 2px 2px 0}.dvb i.n{border-radius:2px 0 0 2px}
.cov{border-radius:0 2px 2px 0}.calh .dc .stl,.calh .dc .stl i{border-radius:0 1px 1px 0}
/* 标尺：轴线位置 --y 由 layoutLabels 按用到的层数定，标记都相对轴线放；数字不重叠，外层数字有引线 */
.ruler{--y:32px}.ruler .ax{top:calc(var(--y) - 1px)}.ruler .bd{top:calc(var(--y) - 7px)}.ruler .mk{top:calc(var(--y) - 10px)}.ruler .mk.dot{top:calc(var(--y) - 6px)}.ruler .arw{top:calc(var(--y) - 3px)}
.ruler .lb{transform:none;text-align:left;font-size:10px;line-height:1.1}.ruler .lb span{display:block;white-space:nowrap}.ruler .lb b{font-size:11.5px}
.ruler .stem,.pr2 .stem{position:absolute;width:1px;background:var(--tx3);opacity:.45}
details.diag>summary{list-style:none;cursor:pointer;border-bottom:0}details.diag>summary::-webkit-details-marker{display:none}
details.diag[open]>summary{border-bottom:1px solid var(--ln)}details.diag:not([open]) .lg{display:none}
details.diag .dterm{font-size:12px;color:var(--tx2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}details.diag .dterm b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}
details.predet>summary{list-style:none;cursor:pointer}details.predet>summary::-webkit-details-marker{display:none}
details.predet>summary:hover{color:var(--tx)}
/* 折叠标记（G2，2026-10-21 统一构件）：一级（分节、卡片）为 18×18、圆角 4px、底色 var(--bg2) 小方框里的细线“＋”，展开时竖线在 160ms 内收成 0 变“－”；整行可点，悬停底色 var(--hov) */
details.diag>summary::after,details.predet>summary::after,details.subp>summary::after{content:"";flex:none;width:18px;height:18px;margin-left:10px;border-radius:4px;--fc:var(--tx2);--fv:12px;
  background:linear-gradient(var(--fc),var(--fc)) center/12px 1.4px no-repeat,linear-gradient(var(--fc),var(--fc)) center/1.4px var(--fv) no-repeat,var(--bg2);transition:background-size 160ms cubic-bezier(.2,.8,.2,1);transform:none}
details.predet>summary::after{margin-left:auto}
details.diag[open]>summary::after,details.predet[open]>summary::after,details.subp[open]>summary::after{--fv:0px;transform:none}
details.diag>summary:hover::after,details.predet>summary:hover::after,details.subp>summary:hover::after{--fc:var(--fr)}
details.predet>summary:hover,details.subp>summary:hover,details.diag>summary:hover{background-color:var(--hov)}
details.predet>summary.sect{padding:10px 6px 6px;margin-left:-4px;margin-right:-4px;border-radius:4px}
/* 二级（小类）：12.5px var(--tx2)，10px 图标不加方框，缩进 16px 并画竖向引导线；三级（条目）12px 再缩进 16px、不带图标。最多三级 */
details.fold2{margin-left:16px;border-left:1px solid var(--ln);padding-left:10px}
details.fold2>summary{list-style:none;display:flex;align-items:center;gap:6px;min-height:26px;font-size:12.5px;color:var(--tx2);cursor:pointer;border-radius:4px}
details.fold2>summary::-webkit-details-marker{display:none}
details.fold2>summary::after{content:"";flex:none;width:10px;height:10px;margin-left:auto;--fc:var(--tx3);--fv:10px;background:linear-gradient(var(--fc),var(--fc)) center/10px 1.2px no-repeat,linear-gradient(var(--fc),var(--fc)) center/1.2px var(--fv) no-repeat;transition:background-size 160ms cubic-bezier(.2,.8,.2,1)}
details.fold2[open]>summary::after{--fv:0px}
details.fold2>summary:hover{background:var(--hov)}details.fold2>summary:hover::after{--fc:var(--fr)}
.fold3{margin-left:16px;font-size:12px;color:var(--tx2)}
@media (prefers-reduced-motion: reduce){details>summary::after{transition:none!important}}
.brief.n4{grid-template-columns:repeat(4,minmax(0,1fr))!important}

/* ============ 2026-10-12 交易计划、小时详情、行情分析、策略参考（01 号任务；统一标记：结算价 P50 蓝色实心圆点无白边、P25–P75 浅蓝带、限价红色竖线 / 水平线段、上一场同时段成交价橙色三角、中长期均价灰色短竖线） ============ */
/* 计划小结：四个大号数字 */
.pk4{display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:8px;margin-top:10px}
html.ld .pk4:empty{min-height:84px;background:var(--bg2);border-radius:var(--r2)}
.pk4 .anom{grid-column:1/-1;margin:0}
.pk4 .anom span{color:var(--er-tx);font-weight:500}
.pk{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);padding:9px 14px 8px;display:flex;flex-direction:column;gap:3px;min-width:0}
.pk .l{font-size:11.5px;color:var(--tx2);white-space:nowrap}
.pk .v{font-size:26px;font-weight:650;line-height:1.15;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tx)}
.pk .v b{font-weight:650}
.pk .v small{font-size:12px;font-weight:500;color:var(--tx3);margin-left:4px;letter-spacing:0}
.pk .v small.ar{font-size:16px;margin:0 6px}
.pk .v .na{color:var(--tx3);font-weight:500}
.pk .s{margin-top:auto;font-size:11px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:16px}
.pk.buy .v b{color:var(--br-h)}.pk.sell .v b{color:var(--er-tx)}.pk.zero .v b{color:var(--tx3)}
.pk.dim .v b{opacity:.35;text-decoration:line-through;text-decoration-thickness:1.5px}
.pk.share .v b{color:var(--tx)}
.pk .psb.big{margin-top:3px}
.pk.live{border-color:color-mix(in srgb,var(--fr) 40%,var(--ln));background:var(--fr-soft)}
/* 24 小时块：H01 · 时段 · 方向 / 电量与限价 / 价格标尺 / 持仓率条与价差 */
.pb.v3{gap:5px;padding:8px 10px 8px 11px}
.pb.v3 .r2{display:flex;align-items:baseline;justify-content:space-between;gap:6px;width:100%;white-space:nowrap;font-variant-numeric:tabular-nums;min-height:23px}
.pb.v3 .r2 .q{font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--tx)}
.pb.v3.B .r2 .q{color:var(--br-h)}.pb.v3.S .r2 .q{color:var(--er-tx)}
.pb.v3 .r2 .q small{font-size:10.5px;font-weight:500;color:var(--tx3);margin-left:2px}
.pb.v3 .r2 .lp{font-size:17px;font-weight:700;color:var(--tx)}
.pb.v3 .r2 .lp small{font-size:12px;font-weight:600;color:var(--tx3);margin-right:2px}
.pb.v3 .r2.na{color:var(--tx3);font-size:12.5px;font-weight:500}
.pgrid.dim .pb.v3 .r2 .q{opacity:.32;text-decoration:line-through}
/* 价格标尺（无数字）：浅蓝带 P25–P75、蓝色实心圆点 P50、橙色倒三角上一场、红色竖线限价（比色带上下各高 3px） */
.pxr{position:relative;width:100%;height:20px;flex:none}
.pxr .ax{position:absolute;left:0;right:0;top:9px;height:2px;border-radius:1px;background:var(--bg2)}
.pxr .zq{position:absolute;top:6px;height:8px;border-radius:2px;background:rgba(42,120,214,.24)}
.pxr .zp{position:absolute;top:0;width:0;height:0;margin-left:-4.5px;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:6px solid var(--c2);z-index:1}
.pxr .zm{position:absolute;top:4px;width:2px;height:12px;margin-left:-1px;border-radius:1px;background:var(--br-h);z-index:2}
.pxr .zl{position:absolute;top:3px;width:2px;height:14px;margin-left:-1px;border-radius:1px;background:var(--er);z-index:3}
.pxr.na{visibility:hidden}
/* 持仓（相对负荷 P50，0–140%）：一行“持仓 交易前 → 交易后”（交易后在持仓率区间内为绿色、持仓率区间外为琥珀色）与价差；下面是持仓条——
   中性色实心段为交易前，买入增加为蓝色，卖出减少为红色描边斜纹；条正下方是独立的 持仓率 80%–120% 区间线（2px，两端短竖线），不作条的底色 */
.prow{display:flex;flex-direction:column;gap:3px;width:100%}
.prow .ptx{display:flex;align-items:baseline;justify-content:space-between;gap:6px;white-space:nowrap;font-size:10.5px;line-height:15px;color:var(--tx3);font-variant-numeric:tabular-nums}
.prow .ptx b{font-size:12px;font-weight:650;color:var(--tx)}
.prow .ptx em{font-style:normal;margin:0 3px;color:var(--tx3)}
.prow .ed{flex:none;font-size:10.5px;color:var(--tx3);font-variant-numeric:tabular-nums}
.psb{position:relative;display:flex;flex-direction:column;gap:2px;width:100%;min-width:0;flex:none}
.psb .pbr{position:relative;height:8px;background:var(--bg2);border-radius:0 2px 2px 0}
.psb .pbr i{position:absolute;top:0;bottom:0}
.psb .pbr i.z0{left:0;background:#b9c6d8}
.psb .pbr i.zu{background:var(--buy)}
.psb .pbr i.zd{background:repeating-linear-gradient(135deg,rgba(208,59,59,.42) 0 2px,transparent 2px 5px);box-shadow:inset 0 0 0 1px var(--sell)}
.psb .pbr i.zx{right:-1px;top:-2px;bottom:-2px;width:2px;background:var(--tx2)}
.psb .pcr{position:relative;height:6px}
.psb .pcr i{position:absolute;left:57.14%;width:28.57%;top:2px;height:2px;background:var(--zone)}
.psb .pcr i::before,.psb .pcr i::after{content:"";position:absolute;top:-2px;width:1.5px;height:6px;background:var(--zone)}
.psb .pcr i::before{left:0}.psb .pcr i::after{right:0}
.psb.off,.psb.na{visibility:hidden}
.psb.big .pbr{height:12px}.psb.big .pcr{height:8px}.psb.big .pcr i{top:3px}.psb.big .pcr i::before,.psb.big .pcr i::after{top:-3px;height:8px}
/* 方块下方的图例行 */
.pleg .k{display:inline-block;flex:none;border-radius:0}
.pleg .k.zq{width:14px;height:8px;border-radius:2px;background:rgba(42,120,214,.24)}
.pleg .k.zm{width:2px;height:12px;border-radius:1px;background:var(--br-h)}
.pleg .k.zg{width:2px;height:8px;border-radius:1px;background:var(--tx3)}.pleg .k.sm{width:2px;height:12px;border-radius:1px;background:#0e7a55}.pleg .k.sm.net{background:#5d6b82}.pleg .k.sb{width:14px;height:8px;border-radius:2px;background:rgba(27,175,122,.2)}
.pleg .k.zl{width:2px;height:12px;border-radius:1px;background:var(--er)}
.pleg .k.zp{width:0;height:0;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:6px solid var(--c2);background:none}
/* 持仓条与持仓率区间线的图例色块（小时块下方一行与小时详情“仓位依据”共用） */
.pleg .k.z0,.hlg .k.z0{width:14px;height:8px;border-radius:0 2px 2px 0;background:#b9c6d8}
.pleg .k.zu,.hlg .k.zu{width:14px;height:8px;border-radius:0 2px 2px 0;background:var(--buy)}
.pleg .k.zd,.hlg .k.zd{width:14px;height:8px;border-radius:0 2px 2px 0;background:repeating-linear-gradient(135deg,rgba(208,59,59,.42) 0 2px,transparent 2px 5px);box-shadow:inset 0 0 0 1px var(--sell)}
.pleg .k.zc,.hlg .k.zc{position:relative;width:16px;height:8px;border-radius:0;background:linear-gradient(var(--zone),var(--zone)) center/100% 2px no-repeat}
.pleg .k.zc::before,.pleg .k.zc::after,.hlg .k.zc::before,.hlg .k.zc::after{content:"";position:absolute;top:1px;width:1.5px;height:6px;background:var(--zone)}
.pleg .k.zc::before,.hlg .k.zc::before{left:0}.pleg .k.zc::after,.hlg .k.zc::after{right:0}
.pleg .sep{width:1px;height:12px;background:var(--ln2);margin:0 2px}
.pleg .tx{color:var(--tx3)}.pleg .tx b{font-weight:700}
/* 申报表（统一构件 B5，2026-10-21）：两栏各 12 小时，1366×768 一屏放下；容器窄于 1080px 时改为一栏。列：时段、持仓率、电量（零线两侧的条）、
   竞价空间（.sp 时才有）、价格标尺、限价、价差。标尺与条由 parts.js 的 sheetScale / sheetAxis / pxRow / volBar / spRow 生成 */
.sheetw{container-type:inline-size}
.sheet.sh2{display:block;font-size:12px;font-variant-numeric:tabular-nums}
.sh2 .sh-g{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px}
.sh2 .sh-c+.sh-c{position:relative}.sh2 .sh-c+.sh-c::before{content:"";position:absolute;left:-10px;top:0;bottom:0;width:1px;background:var(--ln)}
@container (max-width:1080px){.sh2 .sh-g{grid-template-columns:minmax(0,1fr)}.sh2 .sh-c+.sh-c .r.hd,.sh2 .sh-c+.sh-c::before{display:none}}
.sh2 .r{display:grid;grid-template-columns:30px 76px minmax(150px,1fr) 70px 70px;column-gap:10px;align-items:center;min-height:26px;padding:0 8px;border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent);cursor:pointer}
.sh2.sp .r{grid-template-columns:30px 76px minmax(150px,1fr) 56px 70px 70px}   /* 时段、持仓率、电量、竞价空间（只写数，2026-10-27 U4）、预测中位数、限价；无竞价空间时少一列 */
.sh2 .sspv,.sh2 .spq{text-align:right;white-space:nowrap;color:var(--tx)}.sh2 .sspv.net{color:var(--tx2)}.sh2 .r.z .spq{color:var(--tx2)}
.sh2 .r:hover{background:var(--hov)}
.sh2 .r.hd{cursor:default;min-height:34px;background:var(--sf2);color:var(--tx2);font-size:11px;border-bottom:1px solid var(--ln)}.sh2 .r.hd:hover{background:var(--sf2)}
.sh2 .r.hd .n{text-align:right}.sh2 .hd .vh{display:flex;justify-content:space-between}
.sh2 .hd .pxh{display:flex;flex-direction:column;justify-content:center;gap:1px;line-height:13px}
.sxa{position:relative;display:block;height:12px}.sxa i{position:absolute;top:0;transform:translateX(-50%);font-style:normal;font-size:10px;line-height:12px;color:var(--tx3);white-space:nowrap}
.sh2 .h{font-family:var(--mono);font-weight:650;color:var(--tx)}
.sh2 .scv{white-space:nowrap;color:var(--tx)}.sh2 .scv i{font-style:normal;color:var(--tx3);margin:0 3px}.sh2 .scv b{font-weight:650}
.sh2 .scv.na{color:var(--tx3)}
.sh2 .r.z .scv b{font-weight:500}
.svb{position:relative;display:grid;grid-template-columns:44px minmax(0,1fr) minmax(0,1fr) 44px;align-items:center;height:20px}
.svb::before{content:"";position:absolute;left:50%;top:2px;bottom:2px;width:1px;margin-left:-.5px;background:var(--tx3);z-index:1}   /* 零线（N5）：比网格线深，叠在条之上 */
.svb .t{position:relative;height:10px}.svb .t i{position:absolute;top:0;bottom:0}
.svb.b .t i{left:0;border-radius:0 2px 2px 0;background:var(--buy)}.svb.s .t i{right:0;border-radius:2px 0 0 2px;background:var(--sell)}
.svb b{font-weight:700;font-size:12.5px;white-space:nowrap}.svb.b b{text-align:right;color:var(--br-h)}.svb.s b{text-align:left;color:var(--er-tx)}
.svb.z::before{display:none}.svb.z em{grid-column:1/-1;text-align:center;font-style:normal;font-size:11px;color:var(--tx3)}.svb.z.w em{color:var(--wa-tx);font-weight:600}
.ssp{display:grid;grid-template-columns:minmax(0,1fr) 26px;column-gap:4px;align-items:center}
.ssp .t{position:relative;height:16px}.ssp .t i{position:absolute}
.ssp .ax{left:0;right:0;top:7.5px;height:1px;background:var(--ln)}
.ssp .iqr{top:4px;height:8px;border-radius:2px;background:rgba(27,175,122,.2)}
.ssp .mk{top:2px;height:12px;width:2px;margin-left:-1px;border-radius:1px;background:#0e7a55}.ssp.net .mk{background:#5d6b82}
.ssp b{text-align:right;font-weight:650;color:var(--tx)}.ssp.na{visibility:hidden}
.sxr{position:relative;display:block;height:20px}.sxr i{position:absolute}.sxr.na{visibility:hidden}
.sxr .gl{top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--ln) 80%,transparent)}
.sxr .zq{top:6px;height:8px;border-radius:2px;background:rgba(42,120,214,.22)}
.sxr .zm{top:4px;height:12px;width:2px;margin-left:-1px;border-radius:1px;background:var(--br-h);z-index:1}
.sxr .zp{top:1px;width:0;height:0;margin-left:-4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--c2);z-index:2}   /* 尖端贴住色带上沿（6px） */
.sxr .zg{top:15px;height:5px;width:2px;margin-left:-1px;border-radius:1px;background:var(--tx3)}
.sxr .zl{top:0;height:20px;width:2px;margin-left:-1px;border-radius:1px;background:var(--er);z-index:3}
.slm,.sed{text-align:right;white-space:nowrap;font-weight:700}
.slm small{font-weight:500;color:var(--tx3);margin-right:2px;font-size:10.5px}.slm.b{color:var(--br-h)}.slm.s{color:var(--er-tx)}
.sh2 .r.ft{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 28px;cursor:default;background:var(--sf2);border-bottom:0;padding:6px 8px;min-height:30px;font-size:12px;line-height:18px;color:var(--tx2)}
.sh2 .r.ft:hover{background:var(--sf2)}
.sh2 .ft .h{font-family:inherit;font-weight:500;color:var(--tx2)}.sh2 .ft .h b{color:var(--tx);font-weight:650;margin-right:6px}
.sh2 .ft .n b{color:var(--tx);font-weight:650}.sh2 .ft .n small{margin-left:4px;font-size:10.5px;color:var(--wa-tx)}
.sh2 .ft .sfs>i{font-style:normal;color:var(--tx3);margin:0 4px}
.sh2 .ft .sbt{color:var(--br-h);font-weight:700}.sh2 .ft .sst{color:var(--er-tx);font-weight:700}
/* 48 个时段（浙江）：两栏各 24 行，行高收到 22px，1366×768 仍一屏 */
.sh2.p48 .r[data-p]{min-height:22px}.sh2.p48 .sxr{height:16px}.sh2.p48 .sxr .zq{top:4px}.sh2.p48 .sxr .zm{top:2px}.sh2.p48 .sxr .zg{top:12px;height:4px}.sh2.p48 .sxr .zl{height:16px}.sh2.p48 .svb{height:18px}
/* 小时详情：标题行 → 四个大号数字 → 价格依据、仓位依据两张标尺 → 两张图（或算法诊断），1366×768 一屏不滚动 */
.hpanel.hp3{height:min(100%,900px)}
.hpx{flex:1;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:10px;padding:10px 14px 14px}
.hk4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.hk{background:var(--sf);border:1px solid var(--ln);border-radius:var(--r2);padding:8px 14px 9px;display:flex;flex-direction:column;gap:2px;min-width:0}
.hk>span{font-size:11.5px;color:var(--tx2);white-space:nowrap}
.hk>b{font-size:26px;font-weight:650;line-height:1.2;letter-spacing:-.01em;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--tx)}
.hk>b small{font-size:12px;font-weight:500;color:var(--tx3);margin-left:4px;letter-spacing:0}
.hk>b em{font-style:normal;font-size:17px;font-weight:600;color:var(--tx3);margin-right:3px}.hk>b em.ar{margin:0 7px}
.hk.b>b{color:var(--br-h)}.hk.s>b{color:var(--er-tx)}.hk.pos>b{color:var(--gain-tx)}.hk.neg>b{color:var(--loss-tx)}
.hk.dim>b{opacity:.35;text-decoration:line-through}
.hg2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;min-height:0}
.hbt>.card{min-height:0}.hbt .bd.fl{flex:1;min-height:0;display:flex;flex-direction:column}.hbt .bd.fl>.ch{flex:1;min-height:0;height:auto}
.hrc .bd{padding:8px 14px 8px;flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:8px}
/* 交易台小时详情：每张卡片的图注在本卡片底部，上方一条虚线（B4，与单日分析小时窗口的 .dw-cl 同一写法） */
.hpanel .hcl{flex:none;border-top:1px dashed color-mix(in srgb,var(--ln) 85%,transparent);margin-top:4px}.hpanel .lgw.hcl{padding:5px 8px 0;min-height:0}.hpanel .hlg.hcl{padding-top:6px}
.hlg{display:flex;flex-wrap:wrap;gap:3px 16px;font-size:11.5px;color:var(--tx2)}
.hlg span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.hlg b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums;margin-left:2px}
.hlg .k{display:inline-block;flex:none}
.hrl{position:relative;height:64px;margin:0 10px}
.hrl .ln{position:absolute;left:0;right:0;height:1px;background:color-mix(in srgb,var(--ln) 70%,transparent)}.hrl .ln.a{top:12px}.hrl .ln.b{top:32px}
/* 仓位依据（.hrl.pos）：第一行持仓条（从 0 起，末端深色短竖线为目标持仓），第二行独立的持仓率区间线，第三行负荷条（P10–P90 色带与 P50 深色短竖线） */
.hrl.pos .pbt{position:absolute;left:0;right:0;top:3px;height:10px;background:var(--bg2);border-radius:0 2px 2px 0}
.hrl.pos .z0,.hrl.pos .zu,.hrl.pos .zd{position:absolute;top:3px;height:10px;z-index:1}
.hrl.pos .z0{left:0;background:#b9c6d8}.hrl.pos .zu{background:var(--buy)}
.hrl.pos .zd{background:repeating-linear-gradient(135deg,rgba(208,59,59,.42) 0 2px,transparent 2px 5px);box-shadow:inset 0 0 0 1px var(--sell)}
.hrl.pos .vt{top:0;height:16px}
.hrl.pos .cr{position:absolute;top:21px;height:2px;background:var(--zone)}
.hrl.pos .cr::before,.hrl.pos .cr::after{content:"";position:absolute;top:-3px;width:1.5px;height:8px;background:var(--zone)}
.hrl.pos .cr::before{left:0}.hrl.pos .cr::after{right:0}
.hrl.pos .ldt{position:absolute;left:0;right:0;top:30px;height:10px;background:var(--bg2);border-radius:0 2px 2px 0}
.hrl.pos .q5.c{top:30px;height:10px;border-radius:2px}
.hrl.pos .dm.c{top:28px;height:14px}
.hrl .q9,.hrl .q5,.hrl .g10{position:absolute;border-radius:3px}
.hrl .q9.a,.hrl .q5.a{top:5px;height:14px}.hrl .q9{background:rgba(42,120,214,.11)}.hrl .q5{background:rgba(42,120,214,.26)}
.hrl .g10.b{top:26px;height:12px;background:rgba(141,154,178,.32)}
.hrl .dm{position:absolute;top:3px;width:2px;height:18px;margin-left:-1px;border-radius:1px;background:var(--br-h);z-index:3}.hrl .dm.dl{background:#123f78}
.hrl .tg{position:absolute;top:19px;width:0;height:0;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--c2);z-index:3}   /* 尖端贴住下轨上沿（26px），不压色带（2026-10-22 H6） */
.hrl .pc{position:absolute;top:38px;width:2px;height:12px;margin-left:-1px;border-radius:1px;background:var(--tx3);z-index:2}
.hrl .lx{position:absolute;top:0;width:2px;height:47px;margin-left:-1px;border-radius:1px;background:var(--er);z-index:4}
.hrl .vb,.hrl .vt{position:absolute;top:1px;width:2px;height:45px;margin-left:-1px;border-radius:1px;z-index:4}.hrl .vb{background:var(--tx3)}.hrl .vt{background:var(--tx)}
.hrl .arw{position:absolute;top:30px;height:4px;z-index:3}.hrl .arw.r{background:var(--buy)}.hrl .arw.l{background:var(--sell)}
.hrl .arw::after{content:"";position:absolute;top:-4px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent}
.hrl .arw.r::after{right:-2px;border-left:8px solid var(--buy)}.hrl .arw.l::after{left:-2px;border-right:8px solid var(--sell)}
.hrl .axl{position:absolute;left:0;right:0;top:46px;height:18px;border-top:1px solid var(--ln2)}
.hrl .axl span{position:absolute;top:3px;font-size:10px;line-height:12px;color:var(--tx3);font-variant-numeric:tabular-nums;white-space:nowrap;transform:translateX(-50%)}
.hlg .k.lx,.hlg .k.vb,.hlg .k.vt{width:2px;height:12px;border-radius:1px}.hlg .k.lx{background:var(--er)}.hlg .k.vb{background:var(--tx3)}.hlg .k.vt{background:var(--tx)}
.hlg .k.dm{width:2px;height:12px;border-radius:1px;background:var(--br-h)}.hlg .k.dm.dl{background:#123f78}
.hlg .k.q5,.hlg .k.q9,.hlg .k.g10,.hlg .k.zn{width:14px;height:8px;border-radius:3px}.hlg .k.q5{background:rgba(42,120,214,.26)}.hlg .k.q9{background:rgba(42,120,214,.11)}.hlg .k.g10{background:rgba(141,154,178,.32)}.hlg .k.zn{background:color-mix(in srgb,var(--zone) 16%,transparent);border-radius:0}
.hlg .k.tg{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:7px solid var(--c2)}
.hlg .k.pc{width:2px;height:9px;background:var(--tx3);border-radius:1px}
.hlg .k.arw{position:relative;width:12px;height:3px;margin-right:4px}.hlg .k.arw.r{background:var(--buy)}.hlg .k.arw.l{background:var(--sell);margin:0 0 0 4px}
.hlg .k.arw::after{content:"";position:absolute;top:-3.5px;border-top:5px solid transparent;border-bottom:5px solid transparent}.hlg .k.arw.r::after{right:-6px;border-left:6px solid var(--buy)}.hlg .k.arw.l::after{left:-6px;border-right:6px solid var(--sell)}
.pnd.hrz{min-height:84px;margin:0}
.pnd.fill{min-height:0;height:100%;margin:0}
/* 算法诊断（管理员）：期望收益、风险占用、不确定度三个数，下面两张图为各参与率预计成交、负荷情景下的目标持仓率 */
.dgv{padding:10px 14px 12px;flex:1;display:flex;flex-direction:column;gap:9px}
.dk3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.dk{border:1px solid var(--ln);border-radius:var(--r2);padding:7px 12px 8px;background:var(--sf2);display:flex;flex-direction:column;gap:1px;min-width:0}
.dk>span{font-size:11px;color:var(--tx2);white-space:nowrap}.dk>b{font-size:22px;font-weight:650;line-height:1.2;font-variant-numeric:tabular-nums;white-space:nowrap}
.dk>b small{font-size:11px;color:var(--tx3);font-weight:500;margin-left:3px}.dk>em{font-style:normal;font-size:10.5px;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 行情链磁贴：一句结论、一个大号数字、一条迷你图 */
.brief.chain .bt{gap:3px}
.bt .mi{height:30px;margin-top:2px;position:relative}
.bt .mi .spw{position:absolute;inset:0}.bt .mi .spark{display:block;width:100%;height:100%}
.bt .mi .tstrip{margin:1px 0 3px;height:11px}
.tstrip i.mid{background:#dfe5ee}
.bt .tlg{display:flex;gap:10px;padding:0;font-size:10px;color:var(--tx3);line-height:12px}.bt .tlg span{display:inline-flex;align-items:center;gap:4px}
.bt .tlg i{display:inline-block;width:9px;height:7px;border-radius:1px;background:#dfe5ee}.bt .tlg i.lo{background:#8fd6b7}.bt .tlg i.hi{background:#f2a7a3}
/* 天气磁贴下面一行：按权重排序、每 5 秒轮换的地市天气（图标、地市、气温、最低–最高；雨、湿、风），换地市时短暂淡入（保留的组件） */
.bt .mi .wxr{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;gap:0;font-size:11px;line-height:15px;color:var(--tx2);white-space:nowrap;font-variant-numeric:tabular-nums}
.bt .mi .wxr .w1,.bt .mi .wxr .w2{display:flex;align-items:center;gap:8px;min-width:0}
.bt .mi .wxr .w1 svg{width:14px;height:14px;margin-right:-3px;stroke:var(--tx2);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.bt .mi .wxr b{font-weight:650;color:var(--tx)}
.bt .mi .wxr.fade{animation:wxfade .16s var(--ease) both}
.brief.chain .bt .tkd{position:absolute;top:5px;right:6px}.brief.chain .bt .mi .tkp{position:absolute;inset:0}
@keyframes wxfade{from{opacity:0}to{opacity:1}}
/* 盘前资料：每项一个可展开的子面板，标题行写报告时间；展开后完整显示，不在框内滚动 */
details.subp>summary{list-style:none;cursor:pointer;border-bottom:0}details.subp>summary::-webkit-details-marker{display:none}
details.subp[open]>summary{border-bottom:1px solid var(--ln)}
/* details.subp 的折叠标记见“折叠标记（G2）”一节 */

details.subp>summary:hover h3{color:var(--fr)}
details.subp #wx{min-height:380px}
.ballg .ldk{width:2px;height:10px;border-radius:1px;background:var(--tx);vertical-align:-1px}
.mntlg{display:flex;flex-wrap:wrap;gap:3px 14px;font-size:10.5px;color:var(--tx3);margin-top:6px;padding-top:6px;border-top:1px dashed var(--ln)}
.mntlg span{display:inline-flex;align-items:center;gap:5px}.mntlg i{display:inline-block;width:14px;height:7px;border-radius:1px;background:#c5d0e0}.mntlg i.rep{background:var(--wa)}.mntlg i.dd{width:2px;height:10px;border-radius:1px;background:var(--br)}
.cubar{display:flex;align-items:center;gap:8px;padding:8px 14px 4px;font-size:12px}.cubar b{font-weight:650;color:var(--navy)}
#sp-cu .cutb{margin:0 0 8px}
/* 顶栏右上角“数据就绪”（2026-10-22 第二轮 H5）：按钮与浮层同交易策略系统“数据披露”——外框圆角 8px、1px var(--ln2) 边框、阴影 0 8px 24px rgba(14,40,65,.12)；
   标题行为“标题 + 范围或截止”（13px 600 + 12px tx3）；行为“名称 + 时间条 + 右侧状态与到哪一天”（.dsrc，与系统管理“算法输入”共用）；底部为图例与右下角“系统管理 →” */
.dscw{position:relative;flex:none}
.dscb{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border:1px solid var(--ln2);border-radius:var(--r1);background:var(--sf);color:var(--navy);font:inherit;font-size:12px;cursor:pointer;white-space:nowrap;transition:border-color var(--d1) var(--ease),color var(--d1) var(--ease)}
.dscb:hover,.dscb.on{border-color:var(--fr);color:var(--fr)}
.dscb i{width:7px;height:7px;border-radius:50%;background:var(--tx3);flex:none}.dscb i.ok{background:var(--ok)}.dscb i.err{background:var(--er)}
.dscp{position:absolute;right:0;top:calc(100% + 6px);z-index:56;width:min(640px,calc(100vw - 96px));padding:10px 14px;background:var(--sf);border:1px solid var(--ln2);border-radius:8px;box-shadow:0 8px 24px rgba(14,40,65,.12);text-align:left;white-space:normal;animation:popIn .2s var(--ease) both}
.dscp[hidden]{display:none}
.dscp .dph{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}
.dscp .dph b{font-size:13px;font-weight:600;color:var(--navy)}
.dscp .dph span{font-size:12px;color:var(--tx3);font-variant-numeric:tabular-nums}   /* 天气卡里另有 .wx .dph，这里只管浮层 */
.dft{display:flex;align-items:center;gap:10px;margin-top:8px;padding-top:8px;border-top:1px solid var(--ln);font-size:11px;color:var(--tx3)}
.dft a{margin-left:auto;font-size:12px;white-space:nowrap}.dft a:hover{text-decoration:underline}
.dft a::after{content:" →"}
/* 时间条行（与交易策略系统 disclose.js 同一套类名与数值）：名称（下方口径小字）| 近 60 天细带（按口径每种一条，缺失斜纹、未到期浅灰、月初细线、参照日竖线）| 右端状态 */
.dsrc{display:grid;grid-template-columns:minmax(118px,172px) minmax(0,1fr) minmax(72px,max-content);column-gap:14px;row-gap:9px;align-items:center}
.dsrc .nm{font-size:12px;font-weight:600;color:var(--navy);line-height:1.35;min-width:0}
.dsrc .nm small{display:block;font-size:10.5px;font-weight:400;color:var(--tx3);line-height:1.5;margin-top:1px;overflow-wrap:anywhere}
.dsrc .nm small em{font-style:normal;color:var(--wa-tx)}
.dsrc .ax{position:relative;height:14px;font-size:10px;color:var(--tx3);font-family:var(--mono)}
.dsrc .ax span{position:absolute;top:0;white-space:nowrap;padding-left:3px;border-left:1px solid var(--ln2);line-height:12px}
.dsrc .ax span.now{border-left:0;padding-left:0;transform:translateX(-50%);color:var(--tx);font-family:var(--sans);font-weight:600}
.dsrc .tl{position:relative;display:flex;flex-direction:column;justify-content:center;gap:3px;min-height:20px;padding:2px 0}
.dsrc .tl .mo{position:absolute;top:0;bottom:0;width:0;border-left:1px solid var(--ln)}
.dsrc .tl .bn{position:relative;height:5px;border-radius:1px;background:color-mix(in srgb,var(--bg2) 70%,transparent)}
.dsrc .tl .bn i{position:absolute;top:0;bottom:0;border-radius:1px}
.dsrc .tl .bn i.y{background:var(--c)}
.dsrc .tl .bn i.m{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--er) 70%,transparent) 0 1.4px,var(--er-soft) 1.4px 3.6px)}
.dsrc .tl .now{position:absolute;top:-2px;bottom:-2px;width:0;border-left:1.5px solid var(--tx);transform:translateX(-.75px)}
/* 状态色（六套系统同一阈值，10-22 与交易策略系统互核后定）：按时、提前为中性色（默认），滞后 1—7 天提醒色，8 天及以上错误色 */
.dsrc .lag{font-size:12px;font-weight:600;color:var(--tx2);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.dsrc .lag.warn{color:var(--wa-tx)}.dsrc .lag.err{color:var(--er-tx)}
.dsrc .lag small{display:block;font-size:10.5px;font-weight:400;color:var(--tx3);line-height:1.4}
.dsrc .grp{grid-column:1/-1;font-size:10.5px;color:var(--tx3);letter-spacing:.14em;padding:4px 0 3px;border-bottom:1px solid color-mix(in srgb,var(--ln) 60%,transparent)}
.dsrc .grp~.grp{margin-top:6px}
.dlg{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;font-size:11px;color:var(--tx2)}
.dlg i{display:inline-block;width:14px;height:5px;border-radius:1px;margin-left:8px}.dlg i:first-child{margin-left:0}
.dlg i.b{background:var(--c)}
.dlg i.m{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--er) 70%,transparent) 0 1.4px,var(--er-soft) 1.4px 3.6px)}
.dlg i.u{background:color-mix(in srgb,var(--bg2) 70%,transparent)}
.dlg i.t{width:0;height:11px;border-left:1.5px solid var(--tx);border-radius:0}
/* 报价关系：图例为日期，点图例或点群高亮某一天（可多选） */
.lg-it.hl{background:var(--fr-soft);color:var(--fr);font-weight:600}.lg-it.dim{opacity:.45}
.qsum{font-size:11.5px;color:var(--tx2);white-space:nowrap}.qsum b{color:var(--tx);font-weight:650;font-variant-numeric:tabular-nums}
.blk>i.lk-on{outline:1.5px solid var(--fr);outline-offset:-1px}
.dgv>.ch{flex:1;min-height:0;height:auto}
.topinfo[hidden]~.dscw{margin-left:auto}
.pk .x{margin-top:auto;padding-bottom:3px}.pk .x .psb.big{margin-top:0}

/* ============ 实际交易核算（管理平台，human.js）：单日分析“实际交易”一节、小时窗口“实际成交”、日历“实际交易”看法与周合计列 ============ */
.hsplit{position:relative;height:8px;margin:7px 0 5px;background:var(--bg2);border-radius:2px}
.hsplit u{position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--tx3);text-decoration:none}
.hsplit i{position:absolute;top:0;bottom:0}.hsplit i.sp{background:#2a78d6}.hsplit i.rc{background:#eda100}
.stg .n .d i.lb,.dw-hn i.lb,#dayc .kstrip i.lb{display:inline-block;width:8px;height:8px;border-radius:2px;margin:0 4px 0 0;vertical-align:0}
.stg .n .d i.lb.rc,.dw-hn i.lb.rc{margin-left:8px}
.stg .n .d i.lb.sp,.dw-hn i.lb.sp,#dayc .kstrip i.lb.sp{background:#2a78d6}.stg .n .d i.lb.rc,.dw-hn i.lb.rc,#dayc .kstrip i.lb.rc{background:#eda100}
.stg .n .hposb{margin:9px 0 6px}
.humks .n .ebar{margin-bottom:2px}
.dw-tt .r>span small{font-size:9.5px;color:var(--tx3);margin-left:2px}
.dw-tt .r.ft{font-weight:650;color:var(--tx);background:var(--sf2);border-bottom:0}
.dw-hn{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums;padding:2px 2px 0}
.dw-hn b{font-weight:650;color:var(--tx)}
.calh.wk8{grid-template-columns:repeat(7,minmax(0,1fr)) minmax(0,1.25fr)}
.calh .wd.wkh{color:var(--navy);font-weight:600}
.calh .dc.wksum{background:var(--sf2);cursor:default}
.calh .dc.wksum:hover{box-shadow:none;border-color:var(--ln)}
.calh .dc.wksum .dt b{font-weight:500;color:var(--tx2)}
.calh .dc .hsplit{height:5px;margin:4px 0 2px}.calh .dc .hsplit u{top:-2px;bottom:-2px}
.stg .n.hero .hsplit{background:rgba(23,35,61,.08)}
/* 小时窗口右侧（2026-10-18）：标题行不换行，页签位置固定，没有内容的页签置灰；1% / 5% / 10% 切换在“回放成交”块的标签行里；五档盘口页顶部为时段翻页 */
.dw-side .hd{flex-wrap:nowrap;min-width:0}.dw-side .hd h3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dw-tab button[disabled]{color:var(--tx3);opacity:.45;cursor:default;pointer-events:none}
.dw-k .l{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:20px}
.dw-k .l .dw-cap{flex:none;margin:-2px -4px -2px 0}.dw-k .l .dw-cap button{font-size:10.5px;padding:1px 6px;line-height:16px}
.dw-bkn{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--tx2);font-variant-numeric:tabular-nums;white-space:nowrap;min-height:24px}
.dw-bkn button{width:22px;height:22px;border:1px solid var(--ln);border-radius:var(--r1,4px);background:var(--sf);color:var(--tx2);cursor:pointer;line-height:1;font-size:14px;padding:0}
.dw-bkn button:hover{border-color:color-mix(in srgb,var(--fr) 45%,var(--ln));color:var(--fr)}.dw-bkn button[disabled]{opacity:.35;cursor:default;pointer-events:none}
.dw-bkn>b{color:var(--tx);font-weight:650;font-size:12px;min-width:86px;text-align:center}
.dw-bkn>span{margin-left:auto;overflow:hidden;text-overflow:ellipsis}.dw-bkn>span b{font-weight:650}.dw-bkn>span b.hit{color:var(--br-h)}.dw-bkn>span b.out{color:var(--tx3)}
/* 日历顶部数字区在各看法下同高（取最高的结算净值看法），切换看法时下方日历与图不上下跳；时段按钮固定宽度（天数位数变化不推动右侧按钮） */
.stg.calks{min-height:120px}
.calks .nums{min-height:118px}
#rng.dpick{min-width:316px;justify-content:space-between}
.calbot .lgw{min-height:30px;align-content:flex-start;padding-top:6px}
/* 万元单位字样略大、略深（2026-10-18：同一区域统一单位，以万元为单位时字体稍大） */
small.wy,.wy{font-size:1.15em;color:var(--tx2);font-weight:600;letter-spacing:0}
.stg .n .v small.wy{font-size:13px}.stg .n.hero .v small.wy{font-size:15px}
.term .wy{font-size:12.5px;color:var(--tx2)}
.bp .kp .v small.wy{font-size:15px;font-weight:600;color:var(--tx2)}
/* 日历“实际交易”看法：分情形盈亏（六组情形，一行三块，窄屏两块、一块） */
.sitg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px;padding:10px 14px 14px}
@media (max-width:1500px){.sitg{grid-template-columns:repeat(2,minmax(0,1fr))}}   /* 金额改为元、取整后列变宽（G5，2026-10-21）：1500px 以下每行两组 */
@media (max-width:1000px){.sitg{grid-template-columns:minmax(0,1fr)}}
.sitb{border:1px solid var(--ln);border-radius:var(--r2);padding:8px 10px 4px;background:var(--sf);min-width:0}
.sitt{font-size:12px;font-weight:600;color:var(--navy);margin-bottom:3px}
.sitr{display:grid;grid-template-columns:minmax(88px,1.2fr) 34px 52px minmax(0,.8fr) minmax(60px,1.1fr) minmax(0,.8fr) minmax(0,.9fr);gap:0 8px;align-items:center;height:23px;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--tx2);border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent)}
.sitr:last-child{border-bottom:0}
.sitr.sith{height:18px;font-size:10.5px;color:var(--tx3);border-bottom:1px solid var(--ln)}
.sitr>span{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.sitr>span.lb{text-align:left;color:var(--tx)}
.sitr b{font-weight:650;color:var(--tx)}
.sitr.z,.sitr.z .lb{color:var(--tx3)}
/* 单日分析“价格复盘”：竞价空间与电价（宽）、竞价空间差值与价差（窄）两图并排、图例各占一行同高；竞价空间数字突出 */
.rvg{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
.rvg.one{grid-template-columns:minmax(0,1fr)}
@media (max-width:1100px){.rvg{grid-template-columns:minmax(0,1fr)}}
.rvg .lgw{min-height:30px;align-content:flex-start;padding-top:6px}
.stg .n.rvs .v{color:var(--tx)}
.stg .n .rvsp{position:relative;height:26px;margin:4px 0 2px}.stg .n .rvsp .spw{position:absolute;inset:0}.stg .n .rvsp .spark{display:block;width:100%;height:100%}
/* 月份切换（系统管理）：月份文字固定宽度，切换 9 月 / 10 月时两侧箭头不移动 */
.mpg b{display:inline-block;min-width:104px;text-align:center}
/* ---------- 竞价空间分时段参考（2026-10-19）：单日分析小时块“净值”一行右侧、交易台小时块标题行右侧（数值 + 当日相对高低小条）、小时窗口标题栏、交易台计划小结一块 ---------- */
.ib-nv .ib-sp{margin-left:auto;font-size:10.5px;color:var(--tx3);white-space:nowrap}
.ib-nv .ib-sp b{font-size:11.5px;font-weight:650;color:var(--tx);letter-spacing:0}
.ib-nv .ib-sp small{font-size:10px;color:var(--tx3);margin-left:2px}
.hph .hspc{font-size:12.5px;color:var(--tx2);white-space:nowrap}.hph .hspc b{color:var(--tx);font-weight:700;font-variant-numeric:tabular-nums}
.pb .r1 .spc{display:inline-flex;align-items:baseline;gap:3px;color:var(--tx3);white-space:nowrap}
.pb .r1 .spc b{font-size:11px;font-weight:650;color:var(--tx2)}/* 竞价空间单位小字（10-21 用户定）：行内小号数字处一律 10px、字重 400、tx3、与数值隔 2px（.spc 的 flex 间距 3px，这里回收 1px） */
.pb .r1 .spc small{font-size:10px;font-weight:400;color:var(--tx3);margin-left:-1px}
.pk.spk .v small{font-size:11.5px}
.pk.spk .spb{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));align-items:end;gap:1px;height:20px;border-bottom:1px solid var(--ln)}
.pk.spk .spb i{position:relative;display:block;background:rgba(27,175,122,.55);border-radius:1px 1px 0 0}
.pk.spk .spb{height:30px;padding-top:11px;box-sizing:border-box}.pk.spk .spb em{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:1px;font-style:normal;font-size:10px;line-height:10px;font-weight:650;color:var(--tx2);white-space:nowrap}
/* ---------- 日历 · 实际交易（2026-10-19）：分小时盈亏（条件行 → 四个大号数字 → 分时段盈利与亏损 | 时段 × 交付日）与分情形盈亏（十二组、详情展开、分档可改） ---------- */
.hpnl{padding:0 0 12px}
.hcond{display:flex;flex-direction:column;gap:6px;padding:10px 14px;border-bottom:1px solid var(--ln)}
.hcond .hcr{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}
.hcond .hco{min-height:26px}
.hcond .cl{font-size:11.5px;color:var(--tx3);white-space:nowrap;margin-left:8px}.hcond .hcr>.cl:first-child{margin-left:0}
.hcond .thr{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 8px;border:1px solid var(--ln);border-radius:var(--r1);background:var(--sf)}
.hcond .thr input{width:64px;border:0;outline:0;background:transparent;font:inherit;font-size:12px;font-variant-numeric:tabular-nums;color:var(--tx);text-align:right}
.hcond .thr small{font-size:11px;color:var(--tx3)}
.hcond .hcn{font-size:11.5px;color:var(--tx3)}
.hcond .hchip{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 3px 0 9px;border-radius:var(--r1);background:var(--fr-soft);color:var(--navy);font-size:11.5px;white-space:nowrap}
.hcond .hchip button{border:0;background:none;color:var(--tx2);font-size:14px;line-height:18px;width:18px;height:18px;border-radius:3px;cursor:pointer;padding:0}.hcond .hchip button:hover{background:rgba(23,35,61,.08)}
.hcond #hc-clear{margin-left:auto}.hcond #hc-clear:disabled,.sitdh .btn:disabled{opacity:.45;cursor:default;border-color:var(--ln2);color:var(--navy)}
.hcondc{position:sticky;top:44px;z-index:20}
.hpg{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:14px;padding:10px 14px 0}
@media (max-width:1100px){.hpg{grid-template-columns:minmax(0,1fr)}}
.hpc{min-width:0}
.hpc .hd2{display:flex;align-items:center;gap:8px;min-height:24px;font-size:12.5px;color:var(--tx)}
.hpc .hd2 b{font-weight:650}.hpc .hd2 .term{font-size:11px;color:var(--tx3)}
.hpc .lgw{min-height:26px;align-content:center}
.hmap{min-height:300px}
.hmg{display:grid;grid-template-columns:30px repeat(var(--n),minmax(0,1fr));gap:1px;font-variant-numeric:tabular-nums}
.hmg .dx{font-size:9.5px;color:var(--tx3);text-align:center;line-height:14px;white-space:nowrap;overflow:visible}
.hmg .dx.hol{color:#e8532a}.hmg .dx.cur{color:var(--navy);font-weight:700}
.hmg .hy{font-size:9.5px;color:var(--tx3);line-height:11px;padding-right:4px;text-align:right}
.hmg i{display:block;height:11px;border-radius:1.5px;background:#f6f8fb;cursor:pointer}
.hmg i.x{background:#dfe4ec}.hmg i.e{background:#cdd6e3}
.hmg i.u{background:repeating-linear-gradient(135deg,#dfe4ec 0 2px,#f6f8fb 2px 4px)}
.hmg i.cur{box-shadow:inset 0 0 0 1px rgba(23,35,61,.55)}
.hmg i:hover{outline:1.5px solid var(--tx2);outline-offset:0}
.calleg .sw.hm-e{background:#cdd6e3}.calleg .sw.hm-x{background:#dfe4ec}.calleg .sw.hm-z{background:#f6f8fb;box-shadow:inset 0 0 0 1px #e3e8f0}
.calleg .sw.hm-u{background:repeating-linear-gradient(135deg,#dfe4ec 0 2px,#f6f8fb 2px 4px)}
.sitt{display:flex;align-items:center;gap:8px;min-height:22px}
.sitt small{font-size:10.5px;color:var(--tx3);font-weight:400}
.sitt .sitx{margin-left:auto;border:1px solid var(--ln2);background:var(--sf);border-radius:var(--r1);padding:0 8px;height:20px;font-size:11px;color:var(--navy);cursor:pointer;font-weight:400}
.sitt .sitx:hover{border-color:var(--fr);color:var(--fr)}
.sitb.on{border-color:var(--fr);box-shadow:0 0 0 1px var(--fr)}
.sitr[data-k]{cursor:pointer}.sitr[data-k]:hover{background:var(--bg2)}
.sitr.on,.sitr.on:hover{background:var(--fr-soft)}.sitr.on .lb{color:var(--navy);font-weight:650}
.sitd{grid-column:1/-1;border:1px solid var(--fr);border-radius:var(--r2);background:var(--sf);padding:8px 12px 10px}
.sitdh{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:28px;padding-bottom:6px;border-bottom:1px solid var(--ln)}
.sitdh>b{font-size:12.5px;font-weight:650;color:var(--navy)}.sitdh .term{font-size:11px;color:var(--tx3)}.sitdh .sp{flex:1}
.sitde{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--tx2)}
.sitde input{width:170px;height:24px;border:1px solid var(--ln2);border-radius:var(--r1);padding:0 8px;font:inherit;font-size:12px;font-variant-numeric:tabular-nums;color:var(--tx);background:var(--sf)}
.sitde input.bad{border-color:var(--er)}.sitde small{font-size:11px;color:var(--tx3)}
.sitdg{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px;padding-top:8px}
@media (max-width:1100px){.sitdg{grid-template-columns:minmax(0,1fr)}}
.sdr{display:grid;grid-template-columns:minmax(78px,1.1fr) 58px minmax(0,.9fr) minmax(0,.9fr) minmax(0,.9fr) minmax(0,.9fr) minmax(0,1.2fr) minmax(0,1.3fr);gap:0 8px;align-items:center;height:26px;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--tx2);border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent);cursor:pointer}
.sdr>span{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.sdr>span.lb{text-align:left;color:var(--tx)}
.sdr small{font-size:10px;color:var(--tx3);margin-left:2px}
.sdr b{font-weight:650}
.sdr.sdh{height:20px;font-size:10.5px;color:var(--tx3);cursor:default;border-bottom:1px solid var(--ln)}
.sdr.on,.sdr.on:hover{background:var(--fr-soft)}.sdr.z{color:var(--tx3)}.sdr:not(.sdh):not(.on):hover{background:var(--bg2)}
.sdr .szb{display:flex;height:9px;border-radius:2px;background:var(--bg2);overflow:hidden}
.sdr .szb i{display:block;height:100%}
.sdr .hdb{display:grid;grid-template-columns:repeat(24,minmax(0,1fr));align-items:end;gap:1px;height:16px;border-bottom:1px solid var(--ln)}
.sdr .hdb i{display:block;border-radius:1px 1px 0 0}
.sdl{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:10.5px;color:var(--tx3);padding-top:6px}.sdl span{display:inline-flex;align-items:center;gap:4px}.sdl .sw{display:inline-block;width:10px;height:8px;border-radius:2px}
.sitdr{min-width:0}
.sdt2{font-size:12px;color:var(--tx2);margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdt2 b{font-weight:650}
.scx{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}
.scr{display:grid;grid-template-columns:92px minmax(0,1fr) 132px;gap:8px;align-items:center;font-size:11.5px;color:var(--tx2)}
.scr .lb{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scr .scb{display:flex;height:10px;border-radius:2px;background:var(--bg2);overflow:hidden}
.scr .scb i{display:block;height:100%;box-shadow:inset -1px 0 0 #fff}
.scr .tx{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:right}.scr .tx b{color:var(--tx);font-weight:650}
.stl2{display:grid;grid-template-columns:minmax(86px,1.25fr) minmax(0,.9fr) minmax(0,.8fr) minmax(0,.8fr) minmax(0,.75fr) minmax(0,1.15fr) minmax(0,.7fr) minmax(0,.75fr);gap:0 8px;align-items:center;height:22px;font-size:11.5px;font-variant-numeric:tabular-nums;color:var(--tx2);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent)}
.stl2>*{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.stl2>:first-child{text-align:left;color:var(--tx)}
.stl2 b{font-weight:650}
a.stl2:hover{background:var(--bg2)}
.stl2.sth{height:20px;font-size:10.5px;color:var(--tx3);border-bottom:1px solid var(--ln)}.stl2.sth>:first-child{color:var(--tx3)}
.hcond .cl small{font-size:10.5px;color:var(--tx3)}
/* 分段按钮选中时用描边加粗代替字重：选中项变宽会把同组后面的按钮推动 1px，改为不改变宽度（2026-10-19） */
.seg button.on,.dsel button.on{font-weight:inherit;text-shadow:.35px 0 0 currentColor,-.35px 0 0 currentColor}
/* 选中态的加深只作用于主文字（日期与 D+n）：节假日、调休、周末等备注标签选中前后字重、颜色、阴影都不变（2026-10-22 第二轮 H7） */
.seg button .dtag,.dsel button .dtag,.seg button.on .dtag,.dsel button.on .dtag{text-shadow:none;font-weight:500}
.pk.spk .v{overflow:hidden;text-overflow:ellipsis}
.pb .r1>b+span{min-width:0;overflow:hidden;text-overflow:ellipsis}   /* 窄屏时时段文字让位给竞价空间与方向 */
.pb.v3 .r1{gap:6px}
.sect .hpsj{margin-left:6px;letter-spacing:0;font-weight:400}.sect .hpsj[hidden]{display:none}
/* ---------- 本小时竞价空间（2026-10-19 第四轮）：小标尺只有三种元素——浅底（近 30 日同一小时 P25–P75）、竖线（本小时推算）、空心圆（实时推算），
   竖线与圆都以横轴为中心上下对称；单日分析小时窗口为第一块，交易台小时详情为第五个大号数字 ---------- */
.spr{position:relative;width:100%;height:20px;flex:none}
.spr.na{visibility:hidden}
.spr .ax{position:absolute;left:0;right:0;top:9px;height:2px;border-radius:1px;background:var(--bg2)}
.spr .bd{position:absolute;top:5px;height:10px;border-radius:2px;background:rgba(27,175,122,.22)}
.spr .mk{position:absolute;top:3px;width:2px;height:14px;margin-left:-1px;border-radius:1px;background:#0e7a55;z-index:2}
.spr .ro{position:absolute;top:5px;width:10px;height:10px;margin-left:-5px;border-radius:50%;border:2px solid #0e7a55;background:rgba(255,255,255,.55);box-sizing:border-box;z-index:3}
.dw-fs.f5{grid-template-columns:repeat(5,minmax(0,1fr))}
.dw-f.spf .dw-v{color:var(--tx)}.dw-f.spf .dw-v .sprt small{font-size:10px;font-weight:400;margin-left:2px}.dw-f.spf .dw-v .sprt{font-style:normal;font-size:12px;font-weight:500;color:var(--tx2);margin-left:10px;letter-spacing:0}.dw-f.spf .dw-v .sprt b{font-weight:650;color:var(--tx)}
.dw-f.spf .spw{margin:5px 0 4px}
.dw-f.spf .dw-n{line-height:1.45}
.dw-lg .k.spb{width:14px;height:8px;border-radius:2px;background:rgba(27,175,122,.3)}
.dw-lg .k.spm{width:2px;height:12px;border-radius:1px;background:#0e7a55}
.dw-lg .k.spo{width:9px;height:9px;border-radius:50%;border:2px solid #0e7a55;box-sizing:border-box}
.hk4.h5{grid-template-columns:repeat(5,minmax(0,1fr))}
.hk.spk2>b{color:var(--tx)}
.hk.spk2 .spw{margin:4px 0 2px}
.hk.spk2 .hkn{font-style:normal;font-size:11px;color:var(--tx2);line-height:1.45;font-variant-numeric:tabular-nums}
@media (max-width:1100px){.dw-fs.f5{grid-template-columns:repeat(2,minmax(0,1fr))}.hk4.h5{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* 价格标尺的遮挡与对称（2026-10-19 第四轮）：小时块里限价竖线以横轴为中心上下各伸出 5px（5–15px），上一场同时段成交价的三角收在竖线上端之上（0–5px），两者不再叠压；
   小时详情里三角加白色描边并放在竖线之上，两者靠近时都看得见 */
.pxr .zl{top:5px;height:10px}
.pxr .zp{border-top-width:5px}
.hrl .tg{z-index:5;filter:drop-shadow(0 0 1.5px #fff) drop-shadow(0 0 1px #fff)}
.topinfo[hidden]~.rdyw{margin-left:auto}.rdyw+.topbtns{margin-left:-4px}
/* 按钮文字按状态写：宽度按长的“数据有问题”定，状态读到前不写字（宽度已占好，不跳） */
#rdy-b{min-width:100px;justify-content:center}#rdy-b:not(.known) .dsct{visibility:hidden}
/* 顶栏放不下时：窗口不到 1440，交易台的品牌字让位（按窗口定，不随场次变，视图切换不跳）；交付日三个起按钮收窄，四个起再窄，还放不下就折行（折行时滑块只按单行画，改由选中按钮自己显示） */
@media (max-width:1439px){.topline:has(#vsel) .brandchip{display:none}}
.topline .dsel:has(button:nth-of-type(3)) button{padding-left:7px;padding-right:7px}
.topline .dsel:has(button:nth-of-type(4)) button{padding-left:5px;padding-right:5px}
.topline .dsel:has(button:nth-of-type(4)){flex:0 1000 auto;flex-wrap:wrap;min-width:0}
.topline .dsel:has(button:nth-of-type(4)) .seg-th{display:none}
.topline .dsel:has(button:nth-of-type(4)) button.on{background:var(--sf);box-shadow:0 1px 2px rgba(14,40,65,.08),0 0 0 1px var(--ln)}
/* 小时块价格标尺两端的价格（取整到个位，2026-10-19 第五轮）：写在标尺下方左右两端，标记都在上面 16px 以内，数字不压标记 */
.pxr{height:27px}
.pxr .pe{position:absolute;top:16px;font-size:9.5px;line-height:11px;color:var(--tx3);font-variant-numeric:tabular-nums;pointer-events:none}
.pxr .pe.l{left:0}.pxr .pe.r{right:0}
/* 行情分析的天气（2026-10-19 第五轮由盘前资料与策略参考移来）：判断链下面直接展开；上为决策日发布的多日展望（本场交付日加框、所选交付日加深），下为交付日地市天气 */
.wxmain .wxo{display:grid;grid-template-columns:repeat(var(--n,6),minmax(0,1fr));gap:8px;padding:10px 14px 4px}
.wxmain .wxo[hidden]{display:none}
.wxc.dlv{border-color:color-mix(in srgb,var(--br) 45%,var(--ln))}
.wxc.on{background:color-mix(in srgb,var(--br) 9%,var(--sf));border-color:var(--br);box-shadow:0 0 0 1px color-mix(in srgb,var(--br) 30%,transparent)}
@media (max-width:900px){.wxmain .wxo{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* 盈亏分析的条件行单独一张卡片放在最上面（2026-10-19 第五轮：分情形盈亏在上、零价与低价折叠） */
.hcondc .hcond{border-bottom:0}

/* G3 颜色深浅矩阵的色标（2026-10-21 统一构件）：竖向宽 8px、最高 160px、圆角 1px，上端最大值、下端最小值、发散色中点 0，单位在上方；横向小色标用于多指标条带图的图例行 */
.cbar{display:flex;flex-direction:column;align-items:flex-start;gap:4px;flex:none;font-size:10px;line-height:10px;color:var(--tx3);font-variant-numeric:tabular-nums}
.cbar .u{color:var(--tx2)}
.cbar .cb{position:relative;width:46px}
.cbar .cb i{position:absolute;left:0;top:0;width:8px;height:100%;border-radius:1px}
.cbar .cb span{position:absolute;left:12px;white-space:nowrap}
.cbar .cb .t{top:0}.cbar .cb .m{top:50%;transform:translateY(-50%)}.cbar .cb .b{bottom:0}
.cbar .nd{display:inline-flex;align-items:center;gap:4px;margin-top:2px}
.cbar .nd i{width:8px;height:8px;border-radius:1px;background:repeating-linear-gradient(135deg,#dfe4ec 0 2px,#f7f9fb 2px 4px)}
.cbh{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-variant-numeric:tabular-nums}
.cbh i{display:inline-block;height:8px;border-radius:1px}
.cbh .l{color:var(--tx2);margin-right:2px}.cbh .v{color:var(--tx3);font-size:10px}.cbh small{color:var(--tx3);font-size:10px;margin-left:2px}
.hmw{display:flex;gap:10px;align-items:flex-start}.hmw .hmg{flex:1;min-width:0}
/* 单日分析小时块的小图（G8、B3；2026-10-23 第四轮 P2）：最高、最低价固定在左上、左下的空行里（图形只画在中间，数字不压图形）；
   限价写在标题行，超出本小时价格范围时在右上或右下画红色短箭头（.ib-la） */
.ib-ex{position:absolute;left:5px;font-size:9.5px;line-height:10px;font-weight:600;color:var(--tx2);white-space:nowrap;font-variant-numeric:tabular-nums;pointer-events:none}
.ib-ex.hi{top:3px}.ib-ex.lo{bottom:3px}
.ib-la{position:absolute;right:6px;width:7px;height:9px;pointer-events:none}
.ib-la::before{content:"";position:absolute;left:2.5px;width:2px;height:5px;background:#d03b3b}
.ib-la::after{content:"";position:absolute;left:0;width:0;height:0;border-left:3.5px solid transparent;border-right:3.5px solid transparent}
.ib-la.hi{top:4px}.ib-la.hi::before{top:4px}.ib-la.hi::after{top:0;border-bottom:4.5px solid #d03b3b}
.ib-la.lo{bottom:4px}.ib-la.lo::before{top:0}.ib-la.lo::after{bottom:0;border-top:4.5px solid #d03b3b}
.pb.ib .r1 .ib-lm{color:var(--tx3);font-size:11px;white-space:nowrap}.pb.ib .r1 .ib-lm b{color:#d03b3b;font-weight:650;font-variant-numeric:tabular-nums}
/* 小时窗口：每张卡片自己的图注在卡片底下（B4，2026-10-21） */
.dw-f .dw-cl{margin-top:auto;padding:6px 0 0;border-top:1px dashed color-mix(in srgb,var(--ln) 80%,transparent);gap:3px 10px}
.dw-ch .lgw.dw-cl{padding:2px 4px 0}
/* ============ 2026-10-22 下午第三轮（N5、N6） ============ */
/* 零线：正负小条的中线 1px var(--tx3)，叠在条之上（条从中线起画，原先会盖住中线） */
.dvb u,.hsplit u,.dw-sb u{z-index:1}
/* 正负小条的中线直接标 0（.mz0，.z0 是持仓条“交易前”段和图例色块，不要动它） */
.mz0{position:absolute;left:50%;top:-11px;transform:translateX(-50%);font-style:normal;font-size:10px;line-height:10px;font-weight:500;color:var(--tx3);pointer-events:none}
.sh2 .hd .vh{position:relative}.sh2 .hd .vh .mz0{top:50%;transform:translate(-50%,-50%)}
.sitr.sith .c0{text-align:center}
.bhr .p .mz0{left:2px;top:50%;margin-top:-11px;transform:none}
.dw-sb:has(.mz0){margin-top:14px}
/* ============ 2026-10-22 晚 N7：节假日在日历里一律用斜纹颜色框（数值照辅助交易策略平台恢复的写法，六套同一斜纹） ============
   节假日不计入统计（“含节假日”关闭）时加斜纹，开关打开时不加、只留节名标签。格子原来的底色与边框不变（按数值着色，边框 1px var(--ln)），
   上面叠一层斜纹，格内数值、节日与调休标签照常显示；时段外的格子只改底色 background-color（不用 background 简写），既是节假日又在时段外的为灰底加同一斜纹。
   --holx：135°，#E8532A 透明度 7%，色条 4px、间隔 5px；--holx-k：图例样例（16×11）按小尺寸加密加深为 18%、色条 2px、间隔 3px。
   日历 .calh .dc.holx、系统管理“发布情况” .pubc .pd.holx 与运行记录 .srcs.rtr .r.holx 共用 */
:root{--holx:repeating-linear-gradient(135deg,rgba(232,83,42,.07) 0 4px,transparent 4px 9px);--holx-k:repeating-linear-gradient(135deg,rgba(232,83,42,.18) 0 2px,transparent 2px 5px)}
.calh .dc.holx{background-image:var(--holx)}
.calleg .hx{display:inline-block;flex:none;width:16px;height:11px;border:1px solid var(--ln);border-radius:3px;box-sizing:border-box;background:var(--holx-k)}   /* 图例“节假日不计入统计”；样例与文字变长后，日历图例的间距收为 10px / 4px，1366 宽默认看法仍为一行 */
/* ============ 2026-10-23 第四轮（P1–P3，三套交易决策平台共用） ============
   P3 申报表与按小时展示的地方不放统计数值：小时块只有标题行（时段、竞价空间、方向）与电量、限价一行；申报表列见 .sh2 .r；
   小时详情只有四个大号数字、仓位依据与管理员的算法诊断，弹层按内容高度 */
.hpanel.hp4{height:auto}
.hp4 .hpx{grid-template-rows:none}
.hp4 #hp-diag .bd.fl>.ch,.hp4 #hp-diag #hc-fill{flex:none;height:170px}   /* 弹层按内容高度后，算法诊断两张图给定高 */
/* ============ 2026-10-26 第五轮（T1–T8，三套交易决策平台共用） ============ */
/* T5 单日分析小时块小图：限价超出本小时价格范围时，除短箭头外在小图上沿（高于）或下沿（低于）贴框画一条占满宽度的横线，颜色同限价线 */
.ib-le{position:absolute;left:0;right:0;height:2px;background:#d03b3b;pointer-events:none;z-index:1}.ib-le.hi{top:0}.ib-le.lo{bottom:0}
/* T7 价格复盘“竞价空间差值（实时 − 日前）”卡片：净偏差与绝对误差两个数并排，各带一行小字名称 */
.stg .n .v .v2{display:flex;gap:18px;align-items:flex-end}.stg .n .v .v2>span{display:flex;flex-direction:column}
.stg .n .v .v2 em{font-style:normal;font-size:10.5px;font-weight:500;line-height:1.3;color:var(--tx3);letter-spacing:0}
/* T3 检修与备用：文字列表一屏两栏，每条一行（对象 | 状态 | 起止与天数），按与交付日的关系分组；交付日在期内的对象名加粗、其余字色减弱 */
#sp-mnt .mnt{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;padding:4px 14px 12px;font-size:12px}
#sp-mnt .mnt .mg{grid-column:1/-1;padding:10px 0 4px;font-size:11px;font-weight:600;color:var(--tx2);border-bottom:1px solid var(--ln)}
#sp-mnt .mnt .it{display:grid;grid-template-columns:minmax(0,1fr) 64px 200px;gap:0 10px;align-items:center;min-height:27px;border-bottom:1px solid color-mix(in srgb,var(--ln) 55%,transparent)}
#sp-mnt .mnt .it .nm{display:flex;align-items:baseline;gap:6px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tx2)}
#sp-mnt .mnt .it .nm b{font-weight:500;overflow:hidden;text-overflow:ellipsis}#sp-mnt .mnt .it .nm span{flex:none}#sp-mnt .mnt .it .nm small{flex:none;font-size:10.5px;color:var(--tx3)}
#sp-mnt .mnt .it.on .nm{color:var(--tx)}#sp-mnt .mnt .it.on .nm b{font-weight:650}
#sp-mnt .mnt .it .tp{font-size:11px;color:var(--tx2);text-align:left;white-space:nowrap}#sp-mnt .mnt .it .tp.rep{color:var(--wa-tx)}
#sp-mnt .mnt .it .dr{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--tx)}#sp-mnt .mnt .it .dr small{font-size:10.5px;color:var(--tx3);margin-left:2px}
#sp-mnt .mnt .it:not(.on) .dr{color:var(--tx2)}
@media (max-width:1100px){#sp-mnt .mnt{grid-template-columns:minmax(0,1fr)}}
/* T2 行情分析天气：日期卡片里有分地市预报的可点（.pick），选中沿用原有的 .on；地图右侧的地市信息块贴右、占满地图高度、横向收窄并放大字号，地图图层让出这一栏后居中 */
.wxmain .wxo button.wxc{font:inherit;text-align:left;color:inherit;cursor:pointer}
.wxmain .wxo .wxc.pick:not(.on):hover{border-color:var(--br);box-shadow:var(--sh2)}
.wxmain .wx .map .ch{right:236px;width:auto}   /* 通用 .ch 带 width:100%，绝对定位时会盖掉 right，所以这里放开宽度 */
.wxmain .wx .fx.wtk{top:10px;bottom:10px;right:10px;width:214px;min-width:0;max-width:none;display:flex;flex-direction:column;padding:12px 14px;font-size:12px}
.wxmain .wx .wtk .tkh{font-size:11px;margin:0 0 12px}
.wxmain .wx .wtk .tkb{flex:1;min-height:0}
.wxmain .wx .wtk .dph{gap:8px;margin-bottom:14px}.wxmain .wx .wtk .dph svg{width:22px;height:22px}.wxmain .wx .wtk .dph b{font-size:16px}.wxmain .wx .wtk .dph span{font-size:12px}
.wxmain .wx .wtk .dpr{gap:18px 10px;font-size:13px}.wxmain .wx .wtk .dpr b{font-size:15px}
.wxmain .wx .wtk .tkf{margin-top:auto;padding-top:10px;font-size:12px}.wxmain .wx .wtk .tkf b{font-size:14px}
/* 2026-10-27 第五轮补充（U3）盈亏分析两张表：亏损 | 左右两根棒 | 盈利 ┆ 净值（对比时 实际交易较高 | 两根棒 | 方案较高 ┆ 差额）。
   两根棒的中线表示 0、左亏右盈，各自紧挨对应的数字；净值前一条细竖线并隔开一段距离，净值只写数、不带条形。取代第五轮 T8 的“数字在前、条形在后” */
.plb{position:relative;display:block;height:8px;min-width:0;background:var(--bg2);border-radius:2px}
.plb u{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--tx3);z-index:1}
.plb i{position:absolute;top:0;bottom:0;opacity:.75}.plb i.n{border-radius:1px 0 0 1px}.plb i.p{border-radius:0 1px 1px 0}
.sitr .nt{align-self:stretch;display:flex;align-items:center;justify-content:flex-end;min-width:0;margin-left:6px;padding-left:10px;border-left:1px solid color-mix(in srgb,var(--ln) 90%,transparent);white-space:nowrap}
.sitr>.plb{overflow:visible}   /* 中线上下各伸出 2px，不被单元格的 overflow 裁掉 */
.sitr>span.wn{text-align:left}   /* 盈利（对比时“方案较高”）贴着右棒，左对齐；亏损右对齐贴着左棒 */
.sitr.pr{grid-template-columns:minmax(76px,1.05fr) 34px 70px minmax(0,.85fr) minmax(52px,1fr) minmax(0,.8fr) minmax(0,.9fr)}
/* 平台日期（2026-11-03）：顶栏最右端，全站同一位置同一样式 */
.pdate{flex:none;margin-left:12px;min-width:66px;text-align:right;font-size:12px;line-height:18px;color:var(--tx2);white-space:nowrap;font-variant-numeric:tabular-nums}
.topline .pill[type=button]{cursor:pointer;font:inherit;border:0;padding:0;background:none}.topline .pill[type=button]:hover{text-decoration:underline}
/* 同一交付日的其他场：一行 */
#sibs:empty{display:none}.sibs{margin-top:8px;padding:0 2px;font-size:12px;line-height:18px;color:var(--tx2)}.sibs b{color:var(--tx);font-weight:600}
/* 数据就绪：未发布原因、本场算法输入 */
.dsrc .tx{font-size:11.5px;color:var(--tx2);align-self:center}

/* 操作走查（2026-11-03）：顶栏的复制导出、含节假日、段落跳转；多场一行、小柱、状态点可点；数据就绪限高；明细可排序 */
.topbtns{display:inline-flex;gap:6px;flex:none}.topbtns .btn{height:30px;padding:0 12px;border-radius:var(--r1);white-space:nowrap}
html:not(.trader) .content>#ks.stg:not(.calks)>.nums{min-height:119px}
html.ld #jump{visibility:hidden}html.ld.ld-mkt .topbtns,html.ld.ld-ref .topbtns{display:none}
.holhost{display:inline-flex;align-items:center;flex:none;min-width:88px}.holhost .holsw{margin-left:0;padding-left:0}
.jump{display:inline-flex;align-items:center;gap:0;flex:none}.jump button{border:0;background:none;padding:4px 7px;border-radius:4px;font:inherit;font-size:12px;color:var(--tx2);white-space:nowrap;cursor:pointer}.jump button:hover{color:var(--fr);background:var(--hov)}
.sect,#tabc,.olg .card{scroll-margin-top:52px}
.dsel.one{background:none;padding:3px 0}.dsel.one span{padding:4px 2px;font-size:12px;color:var(--tx2);white-space:nowrap}
.sibs button{border:0;background:none;padding:0;font:inherit;color:var(--fr);cursor:pointer}.sibs button:hover{text-decoration:underline}
#ks-spark rect[data-d]{cursor:pointer}
.navst{cursor:pointer}html.trader .navst{cursor:default}
.dds{align-self:stretch}.dds .ds{display:inline-flex;flex-direction:column;justify-content:center;width:16px}.dds i{display:flex;align-items:center;justify-content:center;width:16px;height:12px;border-radius:2px;color:var(--tx3)}.dds i svg{width:10px;height:7px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.dds i:hover{color:var(--fr);background:var(--hov)}.dds i.off{opacity:.35;cursor:default;background:none}
.dpick.open .dds path{transform:none}
.hph .hpgo{margin-left:auto}.hph .hpgo+.x{margin-left:8px}
.rdyp{max-height:calc(100vh - 64px);overflow-y:auto;overscroll-behavior:contain}
.dtab .r.hd .c{cursor:pointer}.dtab .r.hd .c:hover{color:var(--fr)}.dtab .r.hd .c em{font-style:normal;margin-left:3px;color:var(--fr)}
.rt-pubp,.pubc .pd.p{cursor:pointer}.pubc .pd.p:hover{outline:1px solid var(--br);outline-offset:-1px}
.stls{max-height:320px;overflow-y:auto}
details.wxmain>summary{display:block}details.wxmain>summary .hd{border-bottom:0}details.wxmain>summary::after{position:absolute;right:14px;top:12px}details.wxmain{position:relative}details.wxmain .wxo{padding-bottom:12px}
/* 2026-11-09 用户定全部站点免登录，左栏不再放退出登录 */
.sidenav .navout{display:none!important}
/* 日历·逐月：点一行看那个月 */
#motb{overflow-x:auto}#motb tbody tr{cursor:pointer}#motb th small{font-weight:400;color:var(--tx3);margin-left:3px}
