/* Gh0stLine 界面样式。分区:令牌 · 顶栏 · 图表区 · 侧栏与底栏 · 对话框 · 表单 · 选择器 · 菜单与气泡 · 研究 · 登录 */

/* ───────────── 令牌 ───────────── */
:root {
  --bg: #0a0a0e; --surface: #101016; --raised: #15151d; --raised-2: #1b1b25;
  --line: #24242e; --line-2: #2e2e3a; --line-3: #62627a; --grid: #1d1d27;   /* line-3:悬停边框、复选框边框等较强的线 */
  --text: #f2f2f6; --dim: #9898a6; --faint: #828292;   /* 次要/最弱文字;faint 在 raised-2(弹出菜单)上对比度 ≥4.5:1 */
  --ours: #a66cff; --ours-weak: rgba(255, 255, 255, .075); --ours-line: #4a3380;   /* 选中态用中性的浅灰底 + 紫色前景,不用紫色发光块 */
  --ref: #ffffff; --up: #2ebd85; --down: #ff3355; --hover: #1a1a24;
  --menu-hover: #2a2a38;   /* 弹出菜单(raised-2 底)里的悬停/键盘高亮:--hover 比菜单底色还暗,看不出来 */
  --r-s: 6px; --r-m: 8px; --r-l: 12px;
  /* 层级(从低到高):图表内浮层 < 浮动面板 < 对话框 < 弹出菜单 < 提示条 < 悬停提示 < 登录 */
  --z-panel: 30; --z-modal: 40; --z-pop: 50; --z-toast: 60; --z-tip: 70; --z-login: 90;
  --bar-h: 42px; --foot-h: 30px; --side-w: 300px;
  --shadow: 0 18px 50px rgba(0, 0, 0, .55), 0 2px 8px rgba(0, 0, 0, .4);
  font-family: "IBM Plex Sans", "Segoe UI", "Microsoft YaHei", system-ui, sans-serif;
}
* { box-sizing: border-box; }
html, body { height: 100%; margin: 0; overflow: hidden; background: var(--bg); color: var(--text); font-size: 13px; font-weight: 400; font-variant-numeric: tabular-nums; -webkit-font-smoothing: antialiased; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; }
button:disabled { cursor: default; }
a { color: var(--dim); text-decoration: underline; text-decoration-color: var(--line-3); text-underline-offset: 2px; } a:hover { color: var(--text); text-decoration-color: currentColor; }   /* 不用浏览器默认的深蓝链接色(黑底上几乎看不见) */
button:focus-visible, input:focus-visible, select:focus-visible { outline: 1.5px solid var(--ours); outline-offset: 1px; }
html.pointer-nav button:focus-visible, html.pointer-nav select:focus-visible { outline: none; }   /* 见 features/kbdfocus.js */
[hidden] { display: none !important; }
::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-thumb { background: #2a2a36; border-radius: 6px; border: 2px solid transparent; background-clip: padding-box; } ::-webkit-scrollbar-thumb:hover { background: #3a3a4a; background-clip: padding-box; border: 2px solid transparent; } ::-webkit-scrollbar-track { background: transparent; }
.pos { color: var(--up); } .neg { color: var(--down); } .grow { flex: 1; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* ───────────── 顶栏 ───────────── */
#bar { height: var(--bar-h); display: flex; align-items: center; gap: 2px; padding: 0 10px; border-bottom: 1px solid var(--line); background: var(--surface); overflow: hidden; }
#bar > * { flex: none; } #bar > .grow { flex: 1 1 0; min-width: 8px; }   /* 顶栏元素一律不压缩(压缩会让周期按钮折行叠在一起),放不下时由 topbar.js 逐级收纳 */
#tfs { display: flex; align-items: center; gap: 1px; }
.brand { display: flex; align-items: center; gap: 8px; padding: 0 8px 0 4px; font-weight: 300; font-size: 14px; letter-spacing: .02em; white-space: nowrap; }
.brand .mark { width: 24px; height: 24px; object-fit: contain; }
.brand small { color: var(--dim); font-weight: 300; font-size: 11px; margin-left: 2px; align-self: flex-end; padding-bottom: 3px; }
.sep { width: 1px; height: 18px; background: var(--line); margin: 0 6px; flex: none; }
.tb { height: 30px; padding: 0 10px; border-radius: var(--r-s); display: inline-flex; align-items: center; gap: 7px; color: var(--text); white-space: nowrap; transition: background .12s, color .12s; }
.tb:hover { background: var(--hover); }
.tb.strong b { font-weight: 500; } .tb.strong span { color: var(--dim); font-weight: 300; font-size: 12px; }
.tb.icon { width: 32px; padding: 0; justify-content: center; color: var(--dim); } .tb.icon:hover { color: var(--text); }
.tb.on, .tb[aria-expanded="true"] { color: var(--ours); }
.tb img { display: block; }
.tf { min-width: 36px; justify-content: center; padding: 0 8px; color: var(--dim); }
.tf.on { color: var(--ours); background: var(--ours-weak); }
.lay { max-width: 190px; color: var(--text); } #lay-name { overflow: hidden; text-overflow: ellipsis; }
#clock { color: var(--dim); font-weight: 300; font-size: 12px; margin: 0 6px 0 4px; text-align: right; white-space: nowrap; }
#live { width: 7px; height: 7px; border-radius: 50%; background: var(--line-3); margin-right: 6px; flex: none; }
#live.on { background: var(--up); box-shadow: 0 0 6px var(--up); }
/* 顶栏收纳(topbar.js 按优先级逐项加类):fit-hide 藏起;fit-icon 按钮只留图标;fit-narrow 布局名收窄;fit-more 收进「更多」菜单 */
#bar .fit-hide, #bar .fit-more { display: none !important; }
#bar .tb.fit-icon { width: 32px; padding: 0; justify-content: center; } #bar .tb.fit-icon > span { display: none; }
#bar .lay.fit-narrow { max-width: 128px; }
#bar-more { color: var(--dim); } #bar-more:hover, #bar-more[aria-expanded="true"] { color: var(--text); }
.bar-more-menu .ddo .ddi { color: var(--dim); } .bar-more-menu .ddo .ddi svg, .bar-more-menu .ddo .ddi img { display: block; width: 16px; height: 16px; }

/* ───────────── 图表区 ───────────── */
#body { position: relative; display: flex; height: calc(100% - var(--bar-h) - var(--foot-h)); }
#tools { --icon-bg: var(--surface); width: 40px; flex: none; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 8px 0; border-right: 1px solid var(--line); background: var(--surface); overflow-y: auto; scrollbar-width: none; }
#tools button { width: 30px; height: 30px; flex: none; display: grid; place-items: center; border-radius: 4px; color: #a3a3b2; font-size: 15px; line-height: 1; transition: background-color .12s, color .12s; }
#tools button svg { display: block; }
#tools button:hover { background: var(--hover); color: var(--text); --icon-bg: var(--hover); }
#tools button.on { background: rgba(255, 255, 255, .08); color: #b896ff; --icon-bg: #1d1d25; }
#tools i { width: 20px; height: 1px; flex: none; background: var(--line-2); margin: 5px 0; }
#chart-wrap { position: relative; flex: 1; min-width: 0; background-color: var(--bg); }
#chart-wrap.wms { background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='170'><text x='20' y='110' font-family='IBM Plex Sans,Arial' font-size='15' fill='%23ffffff' fill-opacity='0.045' transform='rotate(-24 20 110)'>@ruleaker</text></svg>"); }
#chart { position: absolute; inset: 0; z-index: 1; }
#legend { position: absolute; inset: 0; pointer-events: none; z-index: 3; }
#wm { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: hidden; z-index: 0; pointer-events: none; opacity: var(--wmo, .04); }
#wmi { position: absolute; left: 50%; top: 50%; display: flex; flex-direction: column; align-items: center; gap: 10px; transform-origin: center; }
#wm img { width: 100%; height: auto; display: block; }
#wm span { font-family: "Outfit", "IBM Plex Sans", sans-serif; font-size: 5.2vw; letter-spacing: .04em; font-weight: 600; line-height: 1; color: #fff; }

.plabel { position: absolute; left: 8px; display: flex; gap: 8px; align-items: baseline; padding: 1px 6px; font-size: 12px; white-space: nowrap; background: color-mix(in srgb, var(--bg) 86%, transparent); border-radius: 4px; pointer-events: auto; }   /* 底色够实:K 线、0% 线从下面穿过时字仍清楚 */
.plabel .t { color: var(--text); font-weight: 500; }
.plabel .p { color: var(--dim); font-weight: 300; }
.plabel .v { font-weight: 400; }
.plabel .r { color: #fff; font-weight: 300; }
.plabel.ovl .t { font-weight: 400; } .plabel.ovl .v { color: var(--ours); }
.plabel .pc { display: none; align-items: center; gap: 1px; margin-left: 6px; padding: 0 3px; border: 1px solid var(--ours-line); border-radius: var(--r-s); background: var(--raised); align-self: center; box-shadow: 0 4px 14px rgba(0,0,0,.4); }
.plabel:hover .pc, .plabel:focus-within .pc { display: inline-flex; }   /* 键盘 Tab 到工具条时也显示 */
.plabel .pc button { width: 22px; height: 22px; display: grid; place-items: center; color: var(--dim); border-radius: 4px; }
.plabel .pc button:hover { color: var(--text); background: var(--hover); }
.plabel .pc button.off { color: var(--down); } .plabel .pc button.on { color: #fff; background: var(--ours-weak); }
.plabel.small .p, .plabel.small .r { display: none; }
#legend .plabel { max-width: var(--lg-max, none); } #legend .plabel > :is(.t, .p, .v, .r) { min-width: 0; overflow: hidden; text-overflow: ellipsis; } #legend .plabel > :is(.pc, .cmp-acts, .cmp-dot, .err-tag) { flex: none; }   /* 窄图(多图格子)里图例行到价格轴为止;工具条不缩 */
#legend .plabel > .t { flex-shrink: 5; } #legend .plabel > .p { flex-shrink: 40; } #legend .plabel > .r { flex-shrink: 10; } #legend .plabel > .v { flex-shrink: 0; } #legend .plabel[data-id="price"] > .t { flex-shrink: 0; } #legend .plabel[data-id="price"] > .v { flex-shrink: 1; } #legend.narrow .plabel > :is(.p, .r) { display: none; }   /* 放不下时先收参数、官方值(很窄时不显示),再收名称,读数最后;价格行的标的名不收 */
.axb { position: absolute; display: flex; gap: 3px; z-index: 5; opacity: 0; pointer-events: none; transition: opacity .12s; } .axb:focus-within { opacity: 1; pointer-events: auto; }
.axb.show { opacity: 1; } .axb.show button { pointer-events: auto; }   /* 只有按钮本身接鼠标,按钮之间的空隙照样能拖价格轴 */
.axb button { width: 20px; height: 20px; border-radius: 4px; font-size: 11px; line-height: 18px; color: var(--dim); background: color-mix(in srgb, var(--surface) 88%, transparent); border: 1px solid var(--line); }
.axb button:hover { color: var(--text); border-color: var(--line-3); }
.axb button.on { color: #fff; background: #3a2a63; border-color: var(--ours); }
.axb button.dis { opacity: .35; cursor: not-allowed; }

/* ───────────── 侧栏与底栏 ───────────── */
#side { width: var(--side-w); border-left: 1px solid var(--line); background: var(--surface); display: flex; flex-direction: column; min-height: 0; }
body.nolist #side { display: none; }
.side-head { display: flex; justify-content: space-between; height: 30px; align-items: center; padding: 0 12px; color: var(--dim); font-size: 12px; font-weight: 300; border-bottom: 1px solid var(--line); flex: none; }
.cols { display: flex; } .cols i { font-style: normal; width: 58px; text-align: right; } .cols i.p { width: 76px; }
#list { flex: 1; overflow-y: auto; min-height: 120px; }
.row { display: flex; align-items: center; height: 28px; padding: 0 12px; cursor: pointer; border-left: 2px solid transparent; }
.row:hover { background: var(--hover); } .row.on { background: var(--ours-weak); border-left-color: var(--ours); }
.row .n { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row .n small { color: var(--faint); font-weight: 300; margin-left: 6px; font-size: 11px; } .row.on .n small { color: var(--dim); }
.row .v, .row .c { width: 58px; text-align: right; } .row .p { width: 76px; text-align: right; color: var(--text); } .row .c { font-weight: 300; font-size: 12px; } .row .v { font-weight: 500; }
.row.sec { height: 22px; color: var(--faint); font-size: 11px; cursor: default; background: transparent; } .row.sec:hover { background: transparent; }
#detail { flex: none; border-top: 1px solid var(--line); padding: 10px 12px 12px; }
#detail h4 { margin: 0 0 8px; font-weight: 400; font-size: 12px; color: var(--dim); display: flex; justify-content: space-between; } #detail h4 span { font-weight: 300; }
#depth { width: 100%; height: 120px; display: block; }
.bands { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 12px; }
.bands td, .bands th { padding: 3px 0; text-align: right; font-weight: 300; border-bottom: 1px solid var(--line); } .bands th { color: var(--dim); }
.bands td:first-child, .bands th:first-child { text-align: left; } .bands tr:last-child td { border-bottom: 0; font-weight: 500; padding-top: 5px; }
#foot { height: var(--foot-h); display: flex; align-items: center; gap: 14px; padding: 0 12px; border-top: 1px solid var(--line); background: var(--surface); color: var(--dim); font-size: 11px; font-weight: 300; white-space: nowrap; overflow: hidden; }
#ranges { display: flex; gap: 2px; flex: none; }
#ranges button { height: 24px; padding: 0 8px; border-radius: 4px; color: var(--dim); font-size: 11px; } #ranges button:hover { background: var(--hover); color: var(--text); } #ranges button.on { color: var(--ours); background: var(--ours-weak); }
#status { margin-right: auto; overflow: hidden; text-overflow: ellipsis; } #note { overflow: hidden; text-overflow: ellipsis; min-width: 60px; }   /* 窄屏时状态与说明一起缩,各自省略号(全文在悬停提示里) */
#fresh.stale { color: #ffb84d; } #fresh::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--up); margin-right: 6px; } #fresh.stale::before { background: #ffb84d; }
#by { color: var(--faint); margin-left: 8px; }
body.mask #detail, body.mask #note { filter: blur(6px); user-select: none; }   /* 公式拆解与说明行含指标名;列表表头的指标名由 symbols.js 换成代号 */
body.fs #bar { }
@media (max-width: 860px) { .brand span, .brand small, #clock { display: none; } #side { position: absolute; right: 0; top: var(--bar-h); bottom: var(--foot-h); z-index: 10; box-shadow: -10px 0 30px rgba(0,0,0,.5); } #note { display: none; } }

/* ───────────── 对话框 ───────────── */
.modal { position: fixed; inset: 0; z-index: var(--z-modal); display: flex; align-items: flex-start; justify-content: center; padding-top: 9vh; background: rgba(4, 4, 8, 0); transition: background .14s; }
.modal.in { background: rgba(4, 4, 8, .66); } .modal.out { background: rgba(4, 4, 8, 0); }
.modal.login { background: rgba(5, 5, 8, .94); align-items: center; padding-top: 0; z-index: var(--z-login); }
.panel { width: min(460px, calc(100vw - 24px)); max-height: 82vh; display: flex; flex-direction: column; background: var(--raised); border: 1px solid var(--line-2); border-radius: var(--r-l); box-shadow: var(--shadow); opacity: 0; transform: translateY(-8px) scale(.985); transition: opacity .14s, transform .14s; overflow: hidden; }
.modal.in .panel { opacity: 1; transform: none; } .modal.out .panel { opacity: 0; transform: translateY(-6px) scale(.99); }
.panel.sm { width: min(380px, calc(100vw - 24px)); } .panel.md { width: min(480px, calc(100vw - 24px)); } .panel.lg { width: min(640px, calc(100vw - 24px)); } .panel.xl { width: min(1040px, calc(100vw - 24px)); }
.mh { display: flex; align-items: center; gap: 12px; padding: 14px 16px 12px 20px; min-height: 54px; }
.mh .mt { font-size: 16px; font-weight: 500; letter-spacing: .01em; }
.x { color: var(--dim); width: 28px; height: 28px; border-radius: var(--r-s); display: grid; place-items: center; } .x:hover { background: var(--hover); color: var(--text); }
.mb { overflow-y: auto; min-height: 0; flex: 1; }
.mf { display: flex; align-items: center; gap: 10px; padding: 12px 20px 14px; border-top: 1px solid var(--line); }
.mf-l, .mf-r { display: flex; gap: 8px; align-items: center; } .mf-r { margin-left: auto; }
.btn { height: 34px; padding: 0 18px; border-radius: var(--r-s); font-weight: 500; border: 1px solid transparent; transition: background .12s, border-color .12s, color .12s; white-space: nowrap; }
.btn.primary { background: var(--ours); color: #0a0a0e; } .btn.primary:hover { background: #b98aff; }
.btn.ghost { border-color: var(--line-2); color: var(--text); background: transparent; } .btn.ghost:hover { border-color: var(--line-3); background: var(--hover); }
.btn.danger { background: var(--down); color: #fff; } .btn.danger:hover { background: #ff5572; }
.btn.ghost.danger-t { color: var(--down); } .btn.ghost.danger-t:hover { border-color: color-mix(in srgb, var(--down) 55%, transparent); background: color-mix(in srgb, var(--down) 8%, transparent); }   /* 低频的危险操作(退出登录):描边按钮红字,不用整块红底 */
.wide-btn { width: 100%; }
.btn.has-caret { display: inline-flex; align-items: center; gap: 7px; } .btn-caret { display: grid; color: var(--dim); }
.pad { padding: 8px 20px 12px; } .txt-p { color: var(--dim); line-height: 1.6; margin: 0; }
.txt, .num, .login .lg input { background: #0d0d12; border: 1px solid var(--line-2); color: var(--text); border-radius: var(--r-s); height: 34px; padding: 0 11px; font: inherit; width: 100%; }
.txt:focus, .num:focus, .login .lg input:focus { border-color: var(--ours); outline: none; }
.err { color: var(--down); font-size: 12px; min-height: 16px; padding-top: 4px; }
.empty { padding: 28px 14px; color: var(--dim); font-weight: 300; text-align: center; }
.login .lg { padding: 28px 24px; gap: 14px; display: flex; flex-direction: column; align-items: stretch; opacity: 1; transform: none; } .lg-logo { width: 100%; max-width: 300px; align-self: center; }
.login .lg .err { text-align: center; }   /* 登录框样式只限登录层:.lg 同时是对话框尺寸类,不加限定会让所有大号对话框(选择器等)多出内边距、丢掉弹出动画、搜索框里多一道框 */
#toast { position: fixed; left: 50%; bottom: 48px; transform: translate(-50%, 12px); z-index: var(--z-toast); padding: 8px 16px; background: #24242e; border: 1px solid var(--line-2); border-radius: var(--r-s); box-shadow: 0 8px 24px rgba(0, 0, 0, .5); opacity: 0; pointer-events: none; transition: opacity .2s, transform .2s; }   /* 中性深灰,不用紫色大块 */
#toast.on { opacity: 1; transform: translate(-50%, 0); }
#boot-msg { position: absolute; inset: 0; z-index: 4; display: grid; place-items: center; color: var(--dim); font-size: 13px; font-weight: 300; pointer-events: none; }   /* 连不上服务器 / 首屏没取到数据 */

/* ───────────── 表单(设置框、视图面板、设置页共用) ───────────── */
.f-tabs { display: flex; gap: 22px; padding: 0 20px; border-bottom: 1px solid var(--line); }
.f-tabs button { padding: 10px 0 11px; color: var(--dim); font-weight: 500; font-size: 14px; border-bottom: 2px solid transparent; margin-bottom: -1px; transition: color .12s; }
.f-tabs button:hover { color: var(--text); } .f-tabs button.on { color: var(--text); border-bottom-color: var(--ours); }
.f-tabs.inline { border: 0; padding: 0; margin-left: 8px; gap: 4px; } .f-tabs.inline button { padding: 5px 12px; border: 0; margin: 0; border-radius: var(--r-s); font-size: 13px; } .f-tabs.inline button.on { background: var(--ours-weak); color: var(--ours); }
.set-body { padding-bottom: 6px; } .f-pane { padding: 6px 20px 10px; }
.f-sec { margin: 14px 0 4px; color: var(--faint); font-size: 12px; letter-spacing: .04em; }
.f-hint { color: var(--faint); font-size: 12px; line-height: 1.55; padding: 6px 0; font-weight: 300; }
.f-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 42px; padding: 3px 0; }
.f-l { display: flex; align-items: center; gap: 4px; color: var(--text); min-width: 0; } .f-l > span { white-space: nowrap; } .f-l .chk span { text-wrap: balance; line-height: 1.35; }   /* 长条件名折行时两行均分,不剩孤字 */
.f-r { display: flex; align-items: center; gap: 8px; flex: none; }
.f-r .label-t, .f-r > span { color: var(--dim); font-size: 12px; }
.f-row.is-off { opacity: .45; } .f-err { padding: 0 20px 4px; text-align: left; }
.chk { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; }
.chk input { appearance: none; width: 16px; height: 16px; border: 1.5px solid var(--line-3); border-radius: 4px; background: transparent; display: grid; place-items: center; cursor: pointer; transition: background .1s, border-color .1s; flex: none; margin: 0; }
.chk input:checked { background: var(--ours); border-color: var(--ours); }
.chk input:checked::after { content: ""; width: 8px; height: 4px; border-left: 1.8px solid #0a0a0e; border-bottom: 1.8px solid #0a0a0e; transform: rotate(-45deg) translate(1px, -1px); }
.chk input:disabled { opacity: .4; cursor: default; }
.num { width: 120px; text-align: left; }
/* 数字框:数字靠左,右侧内嵌上下微调按钮 */
.numbox { position: relative; display: inline-flex; width: 120px; } .numbox .num { width: 100%; padding-right: 32px; }
.nb-steps { position: absolute; top: 1px; right: 1px; bottom: 1px; width: 24px; display: flex; flex-direction: column; border-left: 1px solid var(--line-2); }
.nb-steps button { position: relative; flex: 1; display: grid; place-items: center; color: var(--faint); background: transparent; } .nb-steps button + button { border-top: 1px solid var(--line); }
.nb-up { border-radius: 0 calc(var(--r-s) - 1px) 0 0; } .nb-dn { border-radius: 0 0 calc(var(--r-s) - 1px) 0; }
.nb-steps button::after { content: ""; position: absolute; left: -3px; right: -2px; } .nb-up::after { top: -6px; bottom: 0; } .nb-dn::after { top: 0; bottom: -6px; }   /* 点击区域约 29×22,视觉仍是细窄的一列 */
.nb-steps button:hover { color: var(--text); background: var(--hover); } .nb-steps button:active { color: var(--ours); background: var(--ours-weak); }
.numbox:focus-within .nb-steps { border-left-color: var(--ours-line); } .numbox.is-off .nb-steps { opacity: .4; pointer-events: none; }
.dd { height: 34px; padding: 0 10px; border: 1px solid var(--line-2); border-radius: var(--r-s); background: #0d0d12; display: inline-flex; align-items: center; gap: 8px; min-width: 70px; }
.dd:hover:not(:disabled) { border-color: var(--line-3); } .dd:disabled { opacity: .45; }
.ddi { display: inline-grid; place-items: center; min-width: 18px; flex: none; color: var(--dim); } .dd .ddi svg { max-width: 18px; height: auto; }   /* 线宽/线型的线条图示比 18px 宽:下拉列表里撑开图标格、不压到文字上;收起的下拉框里缩到 18px */ .dd .ddl { flex: 1; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .ddc { color: var(--dim); display: grid; place-items: center; }
.swatch { width: 34px; height: 34px; border-radius: var(--r-s); border: 1px solid var(--line-2); background: #0d0d12; padding: 5px; } .swatch::after { content: ""; display: block; width: 100%; height: 100%; border-radius: 3px; background: var(--c, #a66cff); }
.swatch:hover:not(:disabled) { border-color: var(--line-3); }
.pop { position: fixed; z-index: var(--z-pop); background: var(--raised-2); border: 1px solid var(--line-2); border-radius: var(--r-m); box-shadow: var(--shadow); padding: 4px; max-height: 60vh; overflow-y: auto; animation: popin .1s ease-out; }
@keyframes popin { from { opacity: 0; transform: translateY(-3px); } }
.ddo { width: 100%; display: flex; align-items: center; gap: 10px; height: 34px; padding: 0 12px 0 8px; border-radius: var(--r-s); text-align: left; white-space: nowrap; } .ddo:hover { background: var(--hover); } .ddo.on { background: var(--ours-weak); color: #fff; }
.pop .ddo:hover, .pop .ddo:focus-visible { background: var(--menu-hover); } .pop .ddo:focus-visible { outline: none; }   /* 菜单项的键盘高亮 = 悬停底色(同图表右键菜单),不画框 */
.pop .sw:focus-visible, .pop .seg button:focus-visible, .pop .mc-ic:focus-visible { outline-offset: -2px; }   /* 弹出层会裁掉外扩的焦点框 */
.ddo.wide { padding: 0 12px; } .ddo kbd, .menu kbd { margin-left: auto; color: var(--faint); font: inherit; font-size: 11px; padding-left: 24px; }
.menu { padding: 4px 0; } .msep { display: block; height: 1px; background: var(--line); margin: 5px 4px; }
.palbox { padding: 8px; } .pal { display: grid; grid-template-columns: repeat(8, 22px); gap: 4px; }
.pc-c { width: 22px; height: 22px; border-radius: 4px; background: var(--c); border: 1px solid rgba(255,255,255,.08); } .pc-c:hover { transform: scale(1.12); }
.pal-custom { display: flex; align-items: center; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); color: var(--dim); cursor: pointer; position: relative; }
.pal-native { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; }
.seg { display: inline-flex; border: 1px solid var(--line-2); border-radius: var(--r-s); overflow: hidden; background: #0d0d12; }
.seg button { height: 30px; padding: 0 14px; color: var(--dim); font-size: 12px; } .seg button + button { border-left: 1px solid var(--line-2); } .seg button:hover { color: var(--text); } .seg button.on { background: var(--ours-weak); color: var(--ours); }
.rng { display: inline-flex; align-items: center; gap: 10px; } .rng input[type=range] { width: 130px; accent-color: var(--ours); } .rng output { width: 34px; text-align: right; color: var(--dim); font-size: 12px; }
.sw { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 9px 4px; border-radius: var(--r-s); text-align: left; }
.sw:hover { background: var(--hover); } .sw.sub { padding-left: 22px; }
.f-pane > .sw { width: calc(100% + 8px); margin: 0 -4px; }   /* 文字与上下普通行的标签左对齐,悬停底色向两侧多出 4px */
.sw-t { display: flex; flex-direction: column; gap: 2px; } .sw-t b { font-weight: 400; } .sw-t small { color: var(--dim); font-weight: 300; font-size: 11px; }
.knob { position: relative; flex: none; width: 34px; height: 18px; border-radius: 9px; background: #2a2a36; transition: background .18s; }
.knob::after { content: ""; position: absolute; left: 2px; top: 2px; width: 14px; height: 14px; border-radius: 50%; background: #c8c8d4; transition: transform .18s cubic-bezier(.3,1.4,.5,1), background .18s; }
.sw.on .knob { background: var(--ours); } .sw.on .knob::after { transform: translateX(16px); background: #fff; }
.sw.mixed .knob { background: #5a4a86; } .sw.mixed .knob::after { transform: translateX(8px); background: #e6dcff; }
.view-pop { padding: 6px 10px 10px; width: 330px; } .vc .f-sec { margin-top: 10px; } .vc .f-row { min-height: 40px; }
.view-pop .f-pane { padding: 4px 6px 6px; } .view-pop .rng input[type=range] { width: 108px; }   /* 弹出层自身已有内边距;滑块收窄,英文「Watermark opacity」不被压住 */

/* 设置页:左侧导航 */
.prefs { display: grid; grid-template-columns: 170px 1fr; min-height: 300px; }
.prefs .f-tabs.vert { flex-direction: column; gap: 2px; padding: 8px; border: 0; border-right: 1px solid var(--line); }
.prefs .f-tabs.vert button { text-align: left; padding: 9px 12px; border: 0; border-radius: var(--r-s); margin: 0; font-size: 13px; } .prefs .f-tabs.vert button.on { background: var(--ours-weak); color: var(--ours); }
.prefs .f-pane { padding: 14px 20px; } .keys { display: grid; gap: 2px; } .krow { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--line); } .krow kbd { color: var(--dim); font: inherit; background: #0d0d12; border: 1px solid var(--line-2); border-radius: 4px; padding: 1px 8px; }
.acct { display: grid; gap: 14px; justify-items: start; }

/* ───────────── 选择器(指标 / Gh0stLine 指标 / 标的 / 布局) ───────────── */
.pk-search { display: flex; align-items: center; gap: 10px; margin: 2px 20px 10px; padding: 0 12px; height: 40px; border: 1px solid var(--line-2); border-radius: var(--r-m); background: #0d0d12; color: var(--dim); }
.pk-search:focus-within { border-color: var(--ours); } .pk-in { flex: 1; background: none; border: 0; color: var(--text); font: inherit; font-size: 14px; outline: 0; } .pk-in:focus-visible { outline: none; }
.pk-tabs { display: flex; gap: 4px; padding: 0 20px 8px; } .pk-tabs button { padding: 4px 12px; border-radius: 14px; color: var(--dim); border: 1px solid transparent; } .pk-tabs button:hover { color: var(--text); } .pk-tabs button.on { color: var(--ours); background: var(--ours-weak); border-color: var(--ours-line); }
.pk-list { padding: 0 8px 10px; max-height: 56vh; overflow-y: auto; }
.pk-h { padding: 8px 12px 6px; color: var(--faint); font-size: 12px; font-weight: 500; }
.pk-i { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 6px 12px; border-radius: var(--r-s); cursor: pointer; }
.pk-i.cur { background: var(--hover); }
.pk-n { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .pk-n b { font-weight: 500; } .pk-n small { color: var(--dim); font-weight: 300; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 420px; }
.badge { padding: 2px 9px; border-radius: 10px; font-size: 11px; font-weight: 500; background: var(--raised-2); color: var(--dim); border: 1px solid var(--line-2); white-space: nowrap; }
.badge.hot { background: #e5484d; color: #fff; border-color: transparent; } .badge.cnt { color: var(--ours); border-color: var(--ours-line); background: var(--ours-weak); }
.badge.st-exact, .badge.st-near { color: var(--up); border-color: #1f6b4f; background: transparent; } .badge.st-approx { color: #d9c2ff; border-color: var(--ours-line); background: transparent; }
.badge.bn { color: #f0b90b; border-color: #5c4a0a; background: transparent; } .badge.cb { color: #4d8cff; border-color: #1f3d7a; background: transparent; }
.star, .pk-act .del { color: var(--faint); width: 26px; height: 26px; display: grid; place-items: center; border-radius: 4px; } .star:hover, .pk-act .del:hover { color: var(--text); background: var(--hover); } .star.on { color: #f5a623; } .star.on svg { fill: #f5a623; } .pk-act .del:hover { color: var(--down); }
.pk-act { display: inline-flex; gap: 2px; } .pk-act .del { opacity: 0; } .pk-i:hover .pk-act .del { opacity: 1; }

/* ───────────── 研究与对账(清单表 + 右侧明细;TradingView 式:细线、右对齐等宽数字、小色点状态) ───────────── */
.panel.full { width: min(1640px, calc(100vw - 32px)); height: calc(100vh - 40px); max-height: none; }
.modal.rs-modal { padding-top: 20px; }
.rs-m .mb { display: flex; flex-direction: column; overflow: hidden; }
.rs { flex: 1; min-height: 0; display: flex; flex-direction: column; container-type: inline-size; outline: none; }
.rs > .empty { margin: auto; }
.st-exact { --c: #2ebd85; } .st-near { --c: #7fd1ae; } .st-approx { --c: #b99cff; } .st-partial { --c: #f2b45c; } .st-blocked { --c: #ff3355; } .st-pending { --c: #62627a; }
.rs-sumbox { padding: 0 20px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--surface); }
.rs-sum { display: flex; align-items: center; gap: 18px; min-height: 46px; flex-wrap: wrap; row-gap: 4px; padding: 4px 0; }
.rs-kpi { display: flex; align-items: baseline; gap: 6px; white-space: nowrap; } .rs-kpi b { font-size: 17px; font-weight: 500; } .rs-kpi span { color: var(--dim); font-size: 12px; font-weight: 300; }
.rs-scs { display: flex; gap: 2px; flex-wrap: wrap; }
.rs-sc { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 9px; border-radius: 13px; color: var(--dim); font-size: 12px; border: 1px solid transparent; white-space: nowrap; }
.rs-sc b { color: var(--text); font-weight: 500; } .rs-sc:hover { background: var(--hover); color: var(--text); } .rs-sc.on { border-color: var(--line-3); color: var(--text); background: var(--raised-2); }
.rs-sc i, .rs-st i { width: 7px; height: 7px; border-radius: 50%; background: var(--c); flex: none; }
.rs-age { color: var(--faint); font-size: 11.5px; font-weight: 300; white-space: nowrap; } .rs-ref { height: 28px; padding: 0 12px; font-size: 12px; font-weight: 400; }
.rs-tools { padding: 9px 20px; border-bottom: 1px solid var(--line); }
.rs-bar { display: flex; align-items: center; gap: 12px; }
.rs-groups { display: flex; gap: 2px; flex-wrap: wrap; } .rs-groups button { height: 28px; padding: 0 11px; border-radius: var(--r-s); color: var(--dim); font-size: 12.5px; white-space: nowrap; }
.rs-groups button:hover { color: var(--text); background: var(--hover); } .rs-groups button.on { color: var(--ours); background: var(--ours-weak); }
.rs-search { display: flex; align-items: center; gap: 8px; height: 30px; width: 250px; flex: none; padding: 0 10px; border: 1px solid var(--line-2); border-radius: var(--r-s); background: #0d0d12; color: var(--faint); }
.rs-search:focus-within { border-color: var(--ours); } .rs-search svg { flex: none; }
.rs-q { flex: 1; min-width: 0; background: none; border: 0; outline: 0; color: var(--text); font: inherit; font-size: 12.5px; } .rs-q:focus-visible { outline: none; }
.rs-win button { height: 28px; padding: 0 12px; }
.rs-main { flex: 1; min-height: 0; display: flex; position: relative; }
.rs-tbl { flex: 1; min-width: 0; overflow: auto; }
.rs-t { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 12px; }
.rs-t th { position: sticky; top: 0; z-index: 1; background: var(--raised); color: var(--dim); font-weight: 400; text-align: left; padding: 8px 8px 7px; border-bottom: 1px solid var(--line-2); white-space: nowrap; user-select: none; }
.rs-t th[data-sort] { cursor: pointer; } .rs-t th[data-sort]:hover, .rs-t th.on { color: var(--text); } .rs-sa { font-size: 8px; margin-left: 4px; color: var(--ours); vertical-align: 1px; }
.rs-t th:first-child, .rs-t td:first-child { padding-left: 20px; } .rs-t th:last-child, .rs-t td:last-child { padding-right: 20px; }
.rs-t td { padding: 5px 8px; height: 40px; border-bottom: 1px solid var(--line); white-space: nowrap; font-weight: 300; vertical-align: middle; }
.rs-t .rt { text-align: right; font-variant-numeric: tabular-nums; }
.rs-r { cursor: pointer; } .rs-r:hover td { background: var(--hover); } .rs-r.sel td { background: var(--ours-weak); } .rs-r.sel td:first-child { box-shadow: inset 2px 0 0 var(--ours); }
.rs-r.child td { height: 34px; } .rs-r.child .rs-nt b { font-weight: 300; color: #d6d6de; }
.rs-nm { display: flex; align-items: center; gap: 4px; min-width: 0; } .rs-r.d1 .rs-nm { padding-left: 20px; }
.rs-car, .rs-car-sp { width: 18px; height: 18px; flex: none; display: grid; place-items: center; color: var(--faint); border-radius: 4px; } .rs-car:hover { background: var(--raised-2); color: var(--text); }
.rs-car svg { width: 12px; height: 12px; transform: rotate(-90deg); transition: transform .12s; } .rs-car.on svg { transform: none; }
.rs-nt { display: flex; flex-direction: column; gap: 1px; min-width: 0; max-width: 340px; } .rs-nt b { font-weight: 400; overflow: hidden; text-overflow: ellipsis; }
.rs-nt small { color: var(--faint); font-size: 10.5px; overflow: hidden; text-overflow: ellipsis; } .rs-arrow { color: var(--line-3); padding: 0 2px; }
.rs-ph { font-style: normal; color: var(--faint); font-size: 10.5px; }
.c-method { max-width: 300px; } .c-method span { display: block; overflow: hidden; text-overflow: ellipsis; color: var(--dim); font-size: 11.5px; }
.rs-st { display: inline-flex; align-items: center; gap: 6px; color: var(--dim); font-size: 12px; white-space: nowrap; }
.c-freq { color: var(--faint); font-size: 11px; }
.rs-na { color: var(--line-3); } .rs-t td.warn { color: #f2b45c; } .rs-t td.bad { color: var(--down); }
.rs-lt { display: inline-flex; flex-direction: column; align-items: flex-end; gap: 1px; line-height: 1.25; } .rs-lt b { font-weight: 300; } .rs-lt b.o { color: var(--text); } .rs-lt b.u { color: #c9a8ff; font-size: 11px; }
@container (max-width: 1499px) { .rs .c-method { display: none; } }
@container (max-width: 1180px) { .rs .c-max, .rs .c-freq { display: none; } }
@container (max-width: 1320px) { .rs-kpi:nth-child(3) { display: none; } }
@container (max-width: 1320px) { .rs-fast .rs-kpi:nth-child(3) { display: flex; } }   /* 快速通道页签的汇总条四项都要显示 */
/* 右侧明细:宽屏并排,窄屏浮在表上 */
.rs-drawer { width: 500px; flex: none; border-left: 1px solid var(--line-2); background: var(--surface); overflow-y: auto; }
.rs.has-d .rs-tbl .c-method { display: none; }
@container (max-width: 1720px) { .rs.has-d .rs-tbl .c-max, .rs.has-d .rs-tbl .c-freq { display: none; } }   /* 明细并排时让出两列,表格不出横向滚动 */
@container (max-width: 1420px) { .rs-drawer { position: absolute; right: 0; top: 0; bottom: 0; z-index: 2; box-shadow: -16px 0 36px rgba(0, 0, 0, .5); } }
.rs-dh { position: sticky; top: 0; z-index: 1; display: flex; align-items: center; gap: 12px; padding: 12px 12px 10px 18px; background: var(--surface); border-bottom: 1px solid var(--line); }
.rs-dh > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; } .rs-dh b { font-size: 14px; font-weight: 500; } .rs-dh small { color: var(--dim); font-size: 11.5px; font-weight: 300; }
.rs-db { padding: 4px 18px 22px; }
.rs-ids { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; padding: 10px 0 2px; font-size: 11.5px; } .rs-ids span { color: var(--faint); } .rs-ids em { font-style: normal; color: var(--faint); width: 100%; }
.rs-ids code, .rs-ev { font-family: ui-monospace, "Cascadia Mono", Consolas, monospace; font-size: 11px; color: #cfcfe0; background: #0d0d12; border: 1px solid var(--line); border-radius: 4px; padding: 1px 6px; }
.rs-ev { display: block; margin: 4px 0; white-space: normal; word-break: break-all; line-height: 1.5; }
.rs-sec { padding: 12px 0 2px; } .rs-sec h4 { margin: 0 0 8px; font-size: 11.5px; font-weight: 500; color: var(--dim); letter-spacing: .02em; } .rs-sec h4 small { font-weight: 300; color: var(--faint); margin-left: 6px; }
.rs-sec p { margin: 0; font-size: 12.5px; line-height: 1.6; font-weight: 300; color: #d6d6de; }
.rs-kv { display: grid; grid-template-columns: 74px 1fr; gap: 10px; padding: 4px 0; font-size: 12.5px; } .rs-kv > span { color: var(--faint); } .rs-kv > div { line-height: 1.55; font-weight: 300; }
.rs-lv { display: grid; grid-template-columns: 74px auto 1fr; align-items: baseline; gap: 4px 10px; padding: 3px 0; font-size: 12.5px; } .rs-lv > span { color: var(--faint); }
.rs-lv b { font-weight: 500; font-variant-numeric: tabular-nums; } .rs-lv em { font-style: normal; color: var(--dim); font-size: 11.5px; } .rs-lv small { grid-column: 2 / -1; color: var(--faint); font-size: 11px; } .rs-lv small:empty { display: none; }
.rs-lv.cm b { color: #c9a8ff; }
.rs-st-t { width: 100%; border-collapse: collapse; font-size: 11px; font-variant-numeric: tabular-nums; }
.rs-stw { overflow-x: auto; } .rs-st-t th, .rs-st-t td { padding: 5px 5px; border-bottom: 1px solid var(--line); text-align: right; font-weight: 300; white-space: nowrap; } .rs-st-t thead th { color: var(--faint); font-weight: 400; }
.rs-st-t tbody th { text-align: left; color: var(--dim); font-weight: 400; } .rs-st-t td:first-child { text-align: left; }
.rs-st-t td.bad { color: var(--down); }   /* 快速通道:超阈值条数 */
.rs-chart { position: relative; } .rs-cr { height: 18px; font-size: 11px; color: var(--faint); font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; } .rs-cr b { color: var(--text); font-weight: 500; } .rs-cr b.u { color: #c9a8ff; }
.rs-svg { width: 100%; height: 164px; display: block; background: #0c0c11; border: 1px solid var(--line); border-radius: var(--r-s); }
.rs-svg .lo { fill: none; stroke: #d8d8e2; stroke-width: 1.2; vector-effect: non-scaling-stroke; } .rs-svg .lu { fill: none; stroke: var(--ours); stroke-width: 1.2; vector-effect: non-scaling-stroke; opacity: .95; }
.rs-svg .thr { stroke: #ffffff; stroke-opacity: .22; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; } .rs-svg .zero { stroke: var(--line-2); vector-effect: non-scaling-stroke; }
.rs-svg .ep { fill: #8a8aa0; } .rs-svg .en { fill: #8a8aa0; opacity: .6; } .rs-svg .cur { stroke: #fff; stroke-opacity: .35; vector-effect: non-scaling-stroke; }
.rs-leg { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 6px; font-size: 11px; color: var(--faint); } .rs-leg span { display: inline-flex; align-items: center; gap: 5px; }
.rs-leg i { width: 10px; height: 2px; background: #d8d8e2; } .rs-leg i.u { background: var(--ours); } .rs-leg i.e { height: 8px; width: 4px; background: #8a8aa0; }
.rs-nochart { padding: 18px 0; color: var(--faint); font-size: 12px; font-weight: 300; }
.rs-intel summary { cursor: pointer; color: var(--dim); font-size: 11.5px; font-weight: 500; padding: 4px 0 8px; } .rs-intel[open] summary { color: var(--text); }
.rs-intelbox { overflow-y: auto; padding: 4px 20px 20px; flex: 1; min-height: 0; }
.rs-note { color: var(--dim); font-size: 12px; font-weight: 300; padding: 6px 0 10px; }
body.mask .rs .mask-txt { display: none; }   /* 脱敏:指标名换成代号(research.js),口径、算法、证据等文字不显示,数字照常 */
.bd { display: inline-block; padding: 1px 9px; border-radius: 10px; font-size: 11px; border: 1px solid var(--line-2); color: var(--dim); }
.s-exact, .s-near { color: var(--up); border-color: #1f6b4f; } .s-approx, .s-partial, .s-shadow { color: #d9c2ff; border-color: var(--ours-line); } .s-blocked { color: var(--down); border-color: #7a1f33; } .s-pending { color: var(--dim); }
.rs-g { margin: 16px 0 6px; color: #d9c2ff; font-size: 12px; letter-spacing: .02em; }
.card { border: 1px solid var(--line); border-radius: var(--r-s); margin-bottom: 6px; background: var(--surface); }
.card summary { display: flex; align-items: center; gap: 10px; padding: 10px 12px; cursor: pointer; list-style: none; } .card summary::-webkit-details-marker { display: none; }
.card summary b { font-weight: 500; flex: 1; } .card .th { color: var(--faint); font-size: 11px; font-weight: 300; } .card[open] summary { border-bottom: 1px solid var(--line); }
.card dl { margin: 0; padding: 10px 14px 12px; display: grid; grid-template-columns: 96px 1fr; gap: 6px 14px; font-size: 12.5px; } .card dt { color: var(--dim); } .card dd { margin: 0; line-height: 1.55; font-weight: 300; }

/* 取色器里的透明度滑块;色块带棋盘底,半透明时看得出 */
.pal-alpha { display: flex; align-items: center; gap: 10px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); color: var(--dim); }
.pal-alpha input[type=range] { flex: 1; accent-color: var(--ours); } .pal-alpha output { width: 36px; text-align: right; font-size: 12px; }
.swatch { background-image: conic-gradient(#2a2a35 25%, #1a1a22 0 50%, #2a2a35 0 75%, #1a1a22 0); background-size: 10px 10px; }
/* 取色面板的「常用 / 最近使用」两行在完整色板之上;当前颜色带紫色描边 */
.pal-h { color: var(--faint); font-size: 11px; margin: 0 0 5px; } .pal + .pal-h { margin-top: 9px; }
.pal-grid { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); }
.pc-c.on { box-shadow: 0 0 0 2px var(--raised-2), 0 0 0 3.5px var(--ours); }

/* 数字输入框:去掉浏览器自带的上下小箭头(太小、容易误点);仍可用键盘 ↑↓ 微调 */
input[type=number] { -moz-appearance: textfield; appearance: textfield; }
input[type=number]::-webkit-outer-spin-button, input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; display: none; }

/* 指标工具条的「更多」菜单 */
.pop.more-menu .ddo { display: flex; align-items: center; gap: 8px; width: 100%; } .pop.more-menu .ddi { width: 16px; display: grid; place-items: center; color: var(--dim); } .pop.more-menu .sep { height: 1px; background: var(--line); margin: 4px 0; }
.pop.more-menu .ddo.danger, .pop.more-menu .ddo.danger .ddi { color: var(--down); }
.pop.more-menu .sep { width: auto; } .err-tag { color: var(--down); font-size: 11px; margin-left: 6px; align-self: center; }

/* 顶栏保存按钮:未保存显示紫点,自动保存中显示灰点 */
#lay-save { position: relative; } #lay-save .dot { position: absolute; top: 6px; right: 6px; width: 6px; height: 6px; border-radius: 50%; background: transparent; }
#lay-save.dirty .dot { background: var(--ours); } #lay-save.busy .dot { background: var(--dim); }
#vc-btn { position: relative; } #vc-btn.dev::after { content: ""; position: absolute; top: 5px; right: 4px; width: 5px; height: 5px; border-radius: 50%; background: var(--ours); }   /* 「视图」偏离默认设置(ui/view.js viewActive) */

/* 图表双缓冲:每张图放在自己的容器里;重建时旧图盖在上面,新图画好后再拆 */
#chart > .lw-host { position: absolute; inset: 0; } #chart > .lw-host.retiring { z-index: 2; pointer-events: none; }

/* 价格行 OHLC 读数 */
.plabel[data-id="price"] .v i { font-style: normal; color: var(--dim); margin: 0 3px 0 8px; } .plabel[data-id="price"] .v i:first-child { margin-left: 4px; }
.plabel[data-id="price"] .v em { font-style: normal; } .plabel[data-id="price"] .v em:last-child { margin-left: 10px; }
