:root {
  --bg: #0b0b0b; --panel: #161616; --line: #2a2a2a; --text: #e8e8e8; --muted: #9a9a9a;
  --up: #ff4040; --down: #20d060; --mz: #ff33ff; --z: #33c7ff; --warn: #e0b040;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--text); font: 14px/1.6 "Microsoft YaHei", "PingFang SC", sans-serif; }
.topnav { display: flex; gap: 4px; align-items: center; padding: 10px 20px; border-bottom: 1px solid var(--line); }
.topnav .brand { font-weight: 600; margin-right: 16px; }
.topnav a { color: var(--muted); text-decoration: none; padding: 6px 12px; border-radius: 6px; }
.topnav a.on { background: var(--panel); color: var(--text); }
main { padding: 16px 20px; max-width: 1400px; margin: 0 auto; }
.pickers { display: flex; gap: 12px; align-items: end; flex-wrap: wrap; margin-bottom: 14px; }
.pickers label { display: flex; flex-direction: column; font-size: 12px; color: var(--muted); }
select, button { background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font-size: 14px; min-width: 150px; }
button { cursor: pointer; min-width: 0; }
button:hover { border-color: #555; }
.muted { color: var(--muted); font-size: 12px; }
#asof { margin-left: auto; }
.message { padding: 10px 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); margin-bottom: 14px; }
.message.error { border-color: var(--up); color: var(--up); }
.status { display: flex; gap: 12px; align-items: center; margin-bottom: 8px; }
.pill { white-space: nowrap; padding: 2px 10px; border-radius: 6px; font-weight: 600; }
.pill.G { background: rgba(255, 64, 64, .15); color: var(--up); }
.pill.Z { background: rgba(32, 208, 96, .15); color: var(--down); }
.warn { color: var(--warn); border: 1px solid var(--warn); border-radius: 6px; padding: 6px 12px; margin-bottom: 10px; }
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin-bottom: 14px; }
.card { background: var(--panel); border-radius: 8px; padding: 10px 14px; }
.card .lbl { font-size: 12px; color: var(--muted); }
.card .val { font-size: 22px; font-weight: 600; }
.up { color: var(--up); } .down { color: var(--down); }
.chart-wrap { position: relative; background: #000; border: 1px solid var(--line); border-radius: 6px; }
#chart { height: 890px; }
.hdr { position: absolute; left: 70px; z-index: 2; font-size: 12px; pointer-events: none; white-space: nowrap; }
.hdr b { font-weight: 400; margin-right: 12px; }
#hdr0 { top: 4px; } #hdr1 { top: 438px; } #hdr2 { top: 594px; } #hdr3 { top: 720px; }
h2 { font-size: 16px; margin: 22px 0 8px; }
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.tbl th { color: var(--muted); font-weight: 400; text-align: right; padding: 6px 8px; border-bottom: 1px solid var(--line); }
.tbl td { text-align: right; padding: 5px 8px; border-bottom: 1px solid #1c1c1c; }
.tbl th:first-child, .tbl td:first-child { text-align: left; }
.tbl tr:hover td { background: #141414; }
.tag { padding: 1px 8px; border-radius: 4px; font-weight: 600; }
.tag.G { color: var(--mz); } .tag.Z { color: var(--z); } .tag.BEAR { color: var(--down); } .tag.BULL { color: var(--up); }
.note { color: var(--muted); font-size: 12px; margin-top: 18px; }
.empty { padding: 60px 0; text-align: center; color: var(--muted); }
.periods { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 14px; }
.periods button { min-width: 0; padding: 4px 12px; font-size: 13px; color: var(--muted); }
.periods button.on { color: var(--text); border-color: #888; background: #222; }
.periods button .dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--warn); margin-left: 5px; vertical-align: 2px; }
.tag.tie { color: var(--warn); font-weight: 400; font-size: 12px; }
.login { display: flex; justify-content: center; padding-top: 18vh; }
.login form { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 28px 32px; width: 320px; display: flex; flex-direction: column; gap: 14px; }
.login h1 { font-size: 20px; margin: 0; }
.login label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; color: var(--muted); }
.login input { background: #0f0f0f; color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 8px 10px; font-size: 15px; }
.login-error { color: var(--up); margin: 0; font-size: 13px; }
.topnav .logout { margin-left: auto; font-size: 13px; }

/* ---------- 通用 ---------- */
.muted-p { color: var(--muted); font-size: 13px; }
h1 { font-size: 22px; margin: 4px 0 10px; }
h2 .muted, h1 .muted { font-weight: 400; margin-left: 6px; }
.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chips button { min-width: 0; padding: 4px 12px; font-size: 13px; color: var(--muted); }
.chips button.on { color: var(--text); border-color: #888; background: #222; }
.cards { display: grid; gap: 10px; }
a.card { color: inherit; text-decoration: none; display: block; border: 1px solid transparent; }
a.card:hover { border-color: #444; }
.badge { display: inline-block; background: #1f1f1f; border: 1px solid var(--line); border-radius: 12px; padding: 1px 10px; font-size: 12px; color: var(--muted); margin-right: 6px; }
.btn { display: inline-block; padding: 7px 14px; border: 1px solid var(--line); border-radius: 6px; color: var(--text); text-decoration: none; background: var(--panel); margin-right: 8px; }
.btn:hover { border-color: #666; }
.code { font-family: Consolas, monospace; color: var(--muted); font-size: .8em; font-weight: 400; }
.warn-t { color: var(--warn); }
.crumb { font-size: 13px; color: var(--muted); margin-bottom: 8px; }
.crumb a { color: var(--muted); }

/* ---------- 基础知识 ---------- */
.with-side { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 28px; align-items: start; }
.side { position: sticky; top: 12px; background: var(--panel); border-radius: 8px; padding: 12px 14px; font-size: 14px; }
.side-title { color: var(--muted); font-size: 12px; margin: 6px 0; }
.side ol, .side ul { margin: 0 0 10px; padding-left: 20px; }
.side li { margin: 3px 0; }
.side a { color: var(--text); text-decoration: none; }
.side a.on { color: var(--mz); font-weight: 600; }
.doc { max-width: 820px; line-height: 1.85; font-size: 15px; }
.doc h2 { font-size: 18px; margin: 26px 0 8px; border-left: 3px solid var(--mz); padding-left: 10px; }
.doc h3 { font-size: 16px; margin: 18px 0 6px; }
.doc table { border-collapse: collapse; margin: 10px 0 16px; font-size: 14px; }
.doc th, .doc td { border: 1px solid var(--line); padding: 6px 12px; text-align: left; vertical-align: top; }
.doc th { background: #181818; font-weight: 600; }
.doc blockquote { margin: 14px 0; padding: 8px 14px; border-left: 3px solid var(--warn); background: #1a1712; color: #d8cfb8; }
.doc blockquote p { margin: 0; }
.doc code { background: #1c1c1c; padding: 1px 6px; border-radius: 4px; font-size: 13px; }
.doc a { color: var(--z); }
.pager { display: flex; justify-content: space-between; margin-top: 36px; padding-top: 14px; border-top: 1px solid var(--line); }
.pager a { color: var(--z); text-decoration: none; }

/* 计算器 */
.calc-pick { display: flex; gap: 12px; flex-wrap: wrap; align-items: end; margin: 14px 0; }
.calc-pick label, .calc-grid label { display: flex; flex-direction: column; font-size: 12px; color: var(--muted); gap: 4px; }
.calc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; margin-bottom: 18px; }
.calc-grid input, .calc-grid select { background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font-size: 14px; }
.calc-out { background: var(--panel); border-radius: 8px; padding: 6px 16px; }
.calc-row { display: grid; grid-template-columns: 150px auto; column-gap: 16px; padding: 8px 0; border-bottom: 1px solid #222; align-items: baseline; }
.calc-row:last-child { border-bottom: 0; }
.calc-row span { color: var(--muted); font-size: 13px; }
.calc-row b { font-size: 17px; }
.calc-row small { grid-column: 2; color: var(--muted); font-size: 12px; }

/* ---------- 品种介绍 ---------- */
.prod-filters { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin: 10px 0 8px; }
.prod-filters input { background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font-size: 14px; width: min(260px, 80vw); }
.prod-cards { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.prod-card { background: var(--panel); border-radius: 8px; padding: 10px 14px; }
.pc-top { display: flex; justify-content: space-between; align-items: baseline; }
.pc-sub { font-size: 12px; color: var(--muted); margin: 2px 0 6px; }
.pc-what { font-size: 13px; color: #c8c8c8; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.prod-detail header { margin-bottom: 14px; }
.prod-detail .actions { margin-top: 12px; }
.two-col { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 14px; }
.panel { background: var(--panel); border-radius: 8px; padding: 12px 18px 14px; margin-bottom: 14px; line-height: 1.8; }
.panel h2 { font-size: 16px; margin: 4px 0 8px; }
.panel h3 { font-size: 14px; color: var(--muted); margin: 12px 0 2px; font-weight: 400; }
.panel ul { margin: 4px 0; padding-left: 20px; }
.tip { color: var(--warn); }
.kv { width: 100%; border-collapse: collapse; font-size: 14px; }
.kv th { text-align: left; color: var(--muted); font-weight: 400; padding: 7px 10px 7px 0; width: 120px; vertical-align: top; border-bottom: 1px solid #222; }
.kv td { padding: 7px 0; border-bottom: 1px solid #222; }
.kv td small { display: block; color: var(--muted); font-size: 12px; }
.chip-link { display: inline-flex; flex-direction: column; padding: 5px 12px; border: 1px solid var(--line); border-radius: 6px; color: var(--text); text-decoration: none; font-size: 13px; }
.chip-link small { color: var(--muted); font-size: 11px; }
.chip-link.on { border-color: var(--mz); }

/* ---------- 宏观 ---------- */
.macro-bar { display: flex; gap: 12px; align-items: center; justify-content: flex-end; }
.thermo { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.thermo-card, .macro-card { background: var(--panel); border-radius: 8px; padding: 10px 14px; }
.macro-cards { grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); }
.mc-name { font-size: 13px; color: #cfcfcf; }
.mc-val { font-size: 24px; font-weight: 600; margin: 2px 0; }
.mc-val small { font-size: 13px; color: var(--muted); font-weight: 400; margin-left: 3px; }
.mc-sub { font-size: 12px; color: var(--muted); }
.mc-spark { color: var(--z); margin: 6px 0 2px; }
.spark { width: 100%; height: 36px; display: block; }
.macro-card details { font-size: 13px; color: #cfcfcf; line-height: 1.7; margin-top: 4px; }
.macro-card summary { cursor: pointer; color: var(--z); font-size: 12px; }

@media (max-width: 900px) {
  .with-side, .two-col { grid-template-columns: 1fr; }
  .side { position: static; }
}

/* ---------- 股票信号 ---------- */
.search-box { position: relative; }
.search-box input { background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font-size: 14px; width: min(260px, 80vw); }
.hits { position: absolute; top: 100%; left: 0; z-index: 20; list-style: none; margin: 4px 0 0; padding: 4px 0; width: min(320px, 90vw); max-height: 360px; overflow-y: auto; background: #1a1a1a; border: 1px solid #444; border-radius: 6px; }
.hits li { padding: 6px 12px; cursor: pointer; color: var(--text); font-size: 14px; }
.hits li:hover, .hits li.on { background: #2a2a2a; }
.hits li .code { margin-left: 8px; }
.watch { margin-bottom: 18px; }
.watch-hdr { display: flex; align-items: baseline; gap: 12px; }
.watch-hdr h2 { margin: 0 0 6px; }
#watch tbody tr { cursor: pointer; }
#watch tbody tr.on td { background: #1a1a1a; }
#watch .x { min-width: 0; padding: 0 8px; font-size: 12px; color: var(--muted); }
.current[hidden] { display: none; }
.current { display: flex; align-items: center; gap: 14px; margin: 6px 0 10px; }
.current h2 { margin: 0; }
.current button { min-width: 0; font-size: 13px; }

/* ---------- 一键选票 ---------- */
.pick-top { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }
.big-btn { font-size: 16px; font-weight: 600; padding: 10px 26px; background: #3a1010; border-color: var(--up); color: #fff; }
.big-btn:disabled { opacity: .5; cursor: wait; }
.pick-top .chips { display: flex; gap: 4px; }
.progress { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.progress .bar { flex: 0 1 360px; height: 8px; background: var(--panel); border-radius: 4px; overflow: hidden; }
#bar-fill { height: 100%; width: 0; background: var(--up); transition: width .4s; }
.tbl-wrap { overflow-x: auto; }
.pick th { cursor: pointer; white-space: nowrap; user-select: none; }
.pick th.sorted::after { content: " ▾"; } .pick th.sorted.asc::after { content: " ▴"; }
.pick td { white-space: nowrap; vertical-align: top; }
.pick .per { text-align: right; }
.pick .per small { display: block; color: var(--muted); font-size: 11px; }
.pick .gap { font-weight: 600; }
.pick .off { opacity: .55; }
.pick a { color: var(--text); text-decoration: none; }
.pick a:hover { text-decoration: underline; }
.errs { margin-top: 14px; color: var(--muted); font-size: 13px; }

/* ---------- 基础知识分类 ---------- */
.ktabs { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 16px; }
.ktabs a { padding: 6px 16px; border: 1px solid var(--line); border-radius: 6px; color: var(--muted); text-decoration: none; background: var(--panel); }
.ktabs a.on { color: var(--text); border-color: #888; background: #222; font-weight: 600; }
.kcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 16px; }
.kcard { background: var(--panel); border-radius: 10px; padding: 16px 20px; }
.kcard h2 { margin: 0 0 6px; font-size: 20px; }
.kcard h2 a { color: var(--text); text-decoration: none; }
.kcard ol { margin: 8px 0 0; padding-left: 22px; }
.kcard li { margin: 4px 0; }
.kcard li a { color: var(--text); text-decoration: none; }
.kcard li a:hover { color: var(--mz); }
.kcard li.tool { list-style: none; margin-left: -22px; margin-top: 8px; }

/* ---------- 名人名言 ---------- */
html { scroll-behavior: smooth; }
.master { background: var(--panel); border-radius: 10px; padding: 18px 24px; margin-bottom: 18px; scroll-margin-top: 12px; }
.master h2 { margin: 0 0 4px; font-size: 22px; }
.master h3 { margin: 18px 0 8px; font-size: 16px; color: var(--mz); }
.master p, .master li { line-height: 1.8; }
.quotes { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.quote { margin: 0; padding: 10px 14px; border-left: 3px solid var(--warn); background: #101010; border-radius: 4px; }
.quote p { margin: 0; font-size: 15px; font-weight: 600; }
.quote small { display: block; color: var(--muted); margin-top: 4px; line-height: 1.6; }
.ideas { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.idea { background: #101010; border-radius: 6px; padding: 10px 14px; }
.idea p { margin: 4px 0 0; color: #cfcfcf; font-size: 13px; }
.note a { color: var(--muted); }
.mc-note { font-size: 12px; color: var(--warn); margin-top: 2px; }

/* ---------- ETF 投资 ---------- */
.etf-hdr { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.etf-hdr button { min-width: 0; font-size: 13px; }
.etf-tbl td, .equiv-tbl td { white-space: nowrap; }
.etf-tbl tr.bench td { color: var(--muted); background: #121212; }
.etf-tbl a { color: var(--text); text-decoration: none; }
.equiv-tbl td.note-cell { white-space: normal; text-align: left; min-width: 280px; color: #cfcfcf; font-size: 12px; }
.equiv-tbl td:nth-child(3) { white-space: normal; text-align: left; }
.etf-facts th { white-space: nowrap; vertical-align: top; }
.etf-live { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px; align-content: start; }
.etf-stat { background: #101010; border-radius: 6px; padding: 8px 12px; }
.etf-stat span { display: block; font-size: 12px; color: var(--muted); }
.etf-stat b { font-size: 17px; }
.etf-stat.wide { grid-column: 1 / -1; }
.cal { border-collapse: collapse; margin-top: 4px; font-size: 13px; }
.cal th { color: var(--muted); font-weight: 400; padding: 2px 10px 2px 0; text-align: left; }
.cal td { padding: 2px 10px 2px 0; font-weight: 600; }
.idea.counter { border-left: 3px solid var(--warn); }
.idea + .idea { margin-top: 8px; }
.check-tbl td { white-space: normal; text-align: left; vertical-align: top; }
.check-tbl td:first-child { min-width: 180px; }
.verdict { white-space: nowrap; padding: 1px 8px; border-radius: 4px; font-size: 12px; font-weight: 600; }
.verdict.ok { color: var(--down); background: rgba(32, 208, 96, .12); }
.verdict.mid { color: var(--warn); background: rgba(224, 176, 64, .12); }
.verdict.bad { color: var(--up); background: rgba(255, 64, 64, .12); }
.fits { margin-top: 12px; }
svg.spark.up { color: var(--up); } svg.spark.down { color: var(--down); }

/* ---------- 老师的 K 线颜色 ---------- */
.kc-red { color: #ff3030; } .kc-white { color: #e8e8e8; } .kc-green { color: #20d060; }
.tag.kc-red, .tag.kc-white, .tag.kc-green { font-weight: 600; padding-right: 0; }
.kdot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 6px; vertical-align: 1px; background: currentColor; }
.pill.kc-white { background: rgba(232, 232, 232, .15); color: #e8e8e8; }
.pill.G.kc-red { background: rgba(255, 48, 48, .15); color: #ff3030; }
.pill.Z.kc-green { background: rgba(32, 208, 96, .15); color: #20d060; }
.color-text { margin: 4px 0 10px; font-size: 14px; }
.tag.G1 { color: #e8a060; } .tag.Z1 { color: #4f8dff; }
.nowhite { font-size: 13px; color: var(--muted); display: flex; align-items: center; gap: 6px; }
.tag.BUY { color: #e8a040; } .tag.SELL { color: #4f8dff; }
/* 文华式十字光标数据框 */
.cursor-tip { font-size: 12px; margin: 0 0 4px; }
.cursor-info { position: absolute; left: 0; top: 24px; z-index: 3; width: 92px; padding: 4px 6px; background: #000;
  border: 1px solid #888; font-size: 12px; line-height: 1.3; color: #e8e8e8; pointer-events: none; }
.cursor-info.right { left: auto; right: 24px; }
.cursor-info.locked { border-color: #fff; }
.cursor-info .t { color: #e0c040; margin-bottom: 2px; white-space: nowrap; font-size: 11px; }
.cursor-info .k { color: #9a9a9a; }
.cursor-info .v { margin-bottom: 1px; } .cursor-info .v.up { color: #ff4040; } .cursor-info .v.down { color: #20d060; }
/* 一键选票：靶心分类 */
.rule-box { background: var(--panel); border-left: 3px solid var(--mz); border-radius: 6px; padding: 10px 14px; font-size: 14px; line-height: 1.6; margin-bottom: 10px; }
.rule-box ul { margin: 4px 0; padding-left: 20px; }
.params { margin-bottom: 12px; font-size: 13px; }
.params summary { cursor: pointer; color: var(--muted); }
.param-grid { display: flex; flex-wrap: wrap; gap: 10px 22px; margin: 8px 0; align-items: center; }
.param-grid input[type=number] { width: 64px; background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 4px; padding: 3px 6px; }
.param-grid select { min-width: 0; padding: 3px 6px; font-size: 13px; }
.tag.near { color: #e8a060; font-weight: 400; font-size: 12px; }
.tag.hit { color: #ffd24a; font-size: 12px; }
.tag.touch { color: var(--mz); font-size: 12px; }
.tag.teacher { color: #fff; background: #c02bc0; font-size: 12px; white-space: nowrap; }
.pick td.touch-mz { background: rgba(255, 51, 255, 0.16); box-shadow: inset 3px 0 0 var(--mz); }
.pick td.touch-mz small { color: #d8b0d8; }
.grade { font-size: 12px; } .grade.g0 { color: #ffd24a; font-weight: 600; } .grade.g1 { color: var(--text); } .grade.g2 { color: var(--muted); }
.ck { font-size: 12px; margin-right: 6px; white-space: nowrap; } .ck.ok { color: #ffd24a; } .ck.no { color: #666; }
.fresh { background: var(--panel); border-radius: 6px; padding: 8px 14px; font-size: 13px; line-height: 1.7; margin-bottom: 10px; }
.fresh .lag { color: var(--warn); }
/* 当前这根没走完就出现的信号："闪" */
.pill.flash { border: 1px dashed currentColor; animation: gz-blink 1.2s ease-in-out infinite; }
@keyframes gz-blink { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .pill.flash { animation: none; } }
/* 模拟交易 */
.sim-chart { height: 280px; background: var(--panel); border-radius: 6px; }
.sim-mini { height: 300px; margin-top: 6px; }
.sim-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 12px; }
.sim-box { background: var(--panel); border-radius: 8px; padding: 8px 12px; }
.sim-box h3 { margin: 2px 0 6px; font-size: 14px; }
.tr-row { cursor: pointer; }
tr.detail td { text-align: left; background: #111; }
.why { margin: 4px 0; padding-left: 18px; line-height: 1.7; font-size: 13px; }
.on-row td { background: #1b1b1b; font-weight: 600; }
.chips button.on { color: var(--text); border-color: #888; background: #222; }
/* 一键选票：推荐星级 */
.stars { color: #ffd24a; letter-spacing: 1px; font-size: 15px; white-space: nowrap; }
.stars .off { color: #3a3a3a; }
.stars.s1, .stars.s2, .stars.s3 { color: #9a8a50; }
.stars-cell small { display: block; color: var(--muted); font-size: 11px; }
.rec-box { border-left-color: #ffd24a; }
.rec-box h2 { margin-top: 2px; }

/* ---------- 家庭资产 ---------- */
.fam-top { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 12px; }
.fam-tabs { margin-bottom: 0; }
.fam-tabs a.later { opacity: .6; }
.fam-tabs a small { font-size: 11px; color: var(--muted); }
.fam-status { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.fam-cards { grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.fam-cards .card .muted { line-height: 1.5; }
.fam-chart { height: 300px; }
.fam-chart.small { height: 220px; }
.fam-bar-row { margin: 8px 0 12px; }
.fam-bar-lbl { display: flex; gap: 12px; align-items: baseline; font-size: 13px; margin-bottom: 4px; flex-wrap: wrap; }
.fam-bar-lbl span:first-child { min-width: 90px; }
.fam-bar-lbl .muted { margin-left: auto; }
.fam-track { position: relative; height: 10px; background: #222; border-radius: 5px; overflow: hidden; }
.fam-track i { position: absolute; top: 0; height: 10px; }
.fam-track .band { background: rgba(255, 255, 255, .22); }
.fam-track .fill { left: 0; border-radius: 5px; opacity: .85; }
.fam-track .cap { width: 2px; background: var(--up); }
.fam-track .fill.ok { background: var(--down); } .fam-track .fill.off { background: var(--warn); } .fam-track .fill.bad { background: var(--up); }
span.ok { color: var(--down); } span.off { color: var(--warn); } span.bad { color: var(--up); }
.fam-alerts { list-style: none; margin: 0; padding: 0; }
.fam-alerts li { padding: 6px 10px 6px 12px; border-left: 3px solid var(--line); margin-bottom: 6px; background: #121212; font-size: 13px; line-height: 1.6; }
.fam-alerts li a { color: var(--text); text-decoration: none; }
.fam-alerts li.danger { border-left-color: var(--up); } .fam-alerts li.warn { border-left-color: var(--warn); } .fam-alerts li.info { border-left-color: var(--z); }
/* 总览顶部：闲置资金每天少赚多少 */
.fam-idle { border-left: 3px solid var(--up); }
.fam-idle-top { display: flex; gap: 24px; flex-wrap: wrap; align-items: flex-end; }
.fam-idle .lbl { font-size: 12px; color: var(--muted); display: block; }
.fam-idle-num { font-family: Consolas, "Roboto Mono", monospace; font-weight: 700; font-size: 46px; line-height: 1.15; color: var(--up); font-variant-numeric: tabular-nums; }
.fam-idle-num .unit { font-size: 24px; margin-right: 6px; }
.fam-idle-side { display: flex; gap: 28px; flex-wrap: wrap; margin-left: auto; }
.fam-idle-side b { display: block; font-size: 20px; font-family: Consolas, monospace; font-variant-numeric: tabular-nums; color: var(--warn); }
.fam-idle-side small { display: block; font-size: 12px; }
.fam-ticker { overflow: hidden; margin: 12px 0 8px; padding: 6px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); white-space: nowrap; }
.fam-ticker-in { display: inline-block; animation: fam-ticker 40s linear infinite; }
.fam-ticker:hover .fam-ticker-in { animation-play-state: paused; }
.fam-ticker span { margin-right: 48px; font-size: 13px; }
.fam-ticker em { font-style: normal; color: var(--up); font-weight: 700; }
.fam-idle tr.sum td { border-top: 1px solid #444; }
@keyframes fam-ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .fam-ticker-in { animation: none; white-space: normal; } }
@media (max-width: 700px) { .fam-idle-num { font-size: 34px; } .fam-idle-side { margin-left: 0; } }
.fam-bar { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.fam-bar button:last-child { margin-left: auto; }
.fam-acc-hdr { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.fam-acc-hdr h2 { margin: 0; }
.fam-acc-hdr b { font-size: 18px; }
.spacer { flex: 1; }
.badge.stale { color: var(--warn); border-color: #5a4a20; } .badge.pend { color: var(--z); border-color: #1f4a5a; }
.fam-acc td small, .tbl td small { display: block; color: var(--muted); font-size: 11px; }
.tbl tr.cash-row td { color: #bbb; border-top: 1px solid var(--line); }
.tbl td.note-cell { text-align: left; color: #bbb; max-width: 360px; white-space: normal; }
i.live, i.manual { display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-left: 5px; vertical-align: 2px; }
i.live { background: var(--down); } i.manual { background: var(--warn); }
.fam-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px 12px; align-items: end; margin: 8px 0; }
.fam-form label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); }
.fam-form label.wide { grid-column: span 2; }
.fam-form label.chk, .fam-edit label.chk { flex-direction: row; align-items: center; gap: 6px; }
.fam-form input, .fam-form select, .fam-edit input, .fam-edit select { background: #0f0f0f; color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 5px 8px; font-size: 14px; min-width: 0; width: 100%; }
.fam-edit input[type=checkbox], .fam-form input[type=checkbox] { width: auto; }
.fam-edit td { padding: 3px 4px; text-align: left; }
.fam-edit th { text-align: left; }
.fam-edit .short { width: 90px; }
.code-in { font-family: Consolas, monospace; }
button.x { min-width: 0; padding: 2px 8px; color: var(--muted); }
.link-btn { background: none; border: 0; color: var(--z); padding: 4px 0; }
.fam-actions { display: flex; gap: 10px; align-items: center; margin-top: 14px; }
.primary-btn { background: #10283a; border-color: var(--z); }
.danger-btn { color: var(--up); border-color: #5a2020; }
.fam-dlg { background: var(--panel); color: var(--text); border: 1px solid #444; border-radius: 10px; padding: 18px 22px; width: min(1100px, 96vw); }
.fam-dlg.narrow { width: min(560px, 96vw); }
.fam-dlg::backdrop { background: rgba(0, 0, 0, .6); }
.fam-dlg h2 { margin-top: 0; }
.fam-dlg h3 { font-size: 14px; margin: 14px 0 4px; }
@media (max-width: 900px) { .two-col { grid-template-columns: minmax(0, 1fr); } .fam-form label.wide { grid-column: auto; } }
.fam-lock { display: flex; justify-content: center; padding-top: 14vh; }
.fam-lock[hidden] { display: none; }
.fam-lock form { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 28px 32px; width: 320px; display: flex; flex-direction: column; gap: 12px; }
.fam-lock h1 { margin: 0; }
.fam-lock input { background: #0f0f0f; color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 10px 12px; font-size: 22px; letter-spacing: 8px; text-align: center; }
.fam-lock input[hidden] { display: none; }
.fam-form label[hidden] { display: none; }
.fam-steps { margin: 0; padding-left: 22px; }
.fam-steps li { margin-bottom: 10px; }
.fam-steps li p { margin: 2px 0 0; color: #c8c8c8; font-size: 13px; line-height: 1.7; }
.tbl tr.ended td { color: var(--muted); }
.tbl tr.sep td { border-top: 1px solid var(--line); }
.tbl td.acts { white-space: nowrap; }
.tbl td.acts button { margin-left: 4px; padding: 3px 8px; font-size: 12px; }
.fam-acc-hdr label.chk { display: flex; align-items: center; gap: 4px; }
.card .val.bad, p.bad { color: var(--up); } .card .val.ok { color: var(--down); }
.sc-form { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
.chips button.on { color: var(--text); border-color: #888; background: #222; }
.fam-acc-hdr select { background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 4px 8px; min-width: 110px; }

/* 行动清单 */
.ac-track { margin: 4px 0 12px; }
.ac-assume summary { cursor: pointer; color: var(--z); font-size: 13px; }
.ac-group h2 { margin: 18px 0 8px; }
.ac-card { background: var(--panel); border-radius: 8px; margin-bottom: 8px; border-left: 3px solid var(--line); }
.ac-card.st-doing { border-left-color: var(--warn); } .ac-card.st-done { border-left-color: var(--down); } .ac-card.st-skip { border-left-color: #666; }
.ac-card summary { cursor: pointer; padding: 10px 14px; display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; list-style: none; }
.ac-card summary::-webkit-details-marker { display: none; }
.ac-card summary::before { content: "▸"; color: var(--muted); }
.ac-card[open] summary::before { content: "▾"; }
.ac-peek { margin-left: auto; }
.ac-st { font-size: 12px; padding: 1px 8px; border-radius: 10px; border: 1px solid var(--line); color: var(--muted); white-space: nowrap; }
.ac-st.st-doing { color: var(--warn); border-color: #5a4a20; } .ac-st.st-done { color: var(--down); border-color: #1f5a30; } .ac-st.st-skip { color: #999; }
.ac-card.st-done summary b, .ac-card.st-skip summary b { color: var(--muted); }
.ac-body { padding: 0 16px 14px 30px; }
.ac-body h3 { font-size: 14px; margin: 12px 0 4px; color: var(--muted); font-weight: 400; }
.ac-body p { margin: 0; line-height: 1.8; }
.ac-impact th { width: 210px; }
.ac-quad { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; margin-top: 12px; }
.ac-quad .q { background: #111; border-radius: 6px; padding: 8px 12px; border-top: 2px solid var(--line); }
.ac-quad h4 { margin: 2px 0 4px; font-size: 13px; }
.ac-quad ul { margin: 0; padding-left: 18px; font-size: 13px; line-height: 1.75; color: #d0d0d0; }
.ac-quad .do-good { border-top-color: var(--down); } .ac-quad .do-good h4 { color: var(--down); }
.ac-quad .do-bad { border-top-color: var(--warn); } .ac-quad .do-bad h4 { color: var(--warn); }
.ac-quad .skip-bad { border-top-color: var(--up); } .ac-quad .skip-bad h4 { color: var(--up); }
.ac-quad .skip-good { border-top-color: var(--z); } .ac-quad .skip-good h4 { color: var(--z); }
.ac-ctl { display: flex; gap: 10px; align-items: end; flex-wrap: wrap; margin-top: 14px; }
.ac-ctl label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); }
.ac-ctl label.wide { flex: 1; min-width: 240px; }
.ac-ctl input, .ac-ctl select { background: #0f0f0f; color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 5px 8px; font-size: 14px; }
@media (max-width: 900px) { .ac-quad { grid-template-columns: minmax(0, 1fr); } .ac-impact th { width: 120px; } }

/* ---------- 实时监控 ---------- */
.lv-top { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.lv-title { display: flex; align-items: center; gap: 8px; font-size: 16px; }
.lv-title .muted, .lv-meta { font-size: 13px; }
.lv-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--muted); display: inline-block; }
.lv-dot.ok { background: var(--down); animation: lv-beat 2s infinite; }
.lv-dot.wait { background: var(--warn); animation: lv-beat 1s infinite; }
.lv-dot.err { background: var(--up); }
@keyframes lv-beat { 50% { opacity: .35; } }
.lv-lanes { margin-bottom: 10px; }
.lv-lanes button:disabled { opacity: .45; cursor: not-allowed; }
.lv-wrap { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 14px; align-items: start; }
@media (max-width: 1000px) { .lv-wrap { grid-template-columns: minmax(0, 1fr); } }
.lv-count { font-size: 13px; margin-bottom: 6px; }
.lv-s3 { color: var(--up); } .lv-s2 { color: var(--warn); }
.lv-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.lv-it { grid-column: 1 / -1; background: var(--panel); border: 1px solid var(--line); border-left: 4px solid #555; border-radius: 6px; will-change: transform; }
.lv-it.s2 { border-left-color: var(--warn); } .lv-it.s3 { border-left-color: var(--up); background: #1f1212; }
.lv-it a { display: grid; grid-template-columns: minmax(170px, 1.5fr) minmax(110px, .8fr) minmax(120px, 1fr) minmax(190px, 1.2fr) minmax(0, 1.8fr); gap: 10px; align-items: center; padding: 6px 10px; color: var(--text); text-decoration: none; }
.lv-it a:hover { background: #1e1e1e; }
.lv-it .h { display: flex; align-items: center; gap: 6px; white-space: nowrap; overflow: hidden; }
.lv-it .rk { color: var(--muted); min-width: 20px; font-variant-numeric: tabular-nums; }
.lv-it .sd { font-size: 12px; font-weight: 700; padding: 1px 6px; border-radius: 3px; color: #fff; }
.lv-it .sd.long { background: #b32424; } .lv-it .sd.short { background: #128a40; }
.lv-it .code { color: var(--muted); font-size: 12px; }
.lv-it .mv { font-size: 12px; } .lv-it .mv.up { color: var(--up); } .lv-it .mv.down { color: var(--down); }
.lv-it .stg { font-size: 12px; padding: 1px 7px; border-radius: 3px; margin-left: auto; background: #2a2a2a; color: var(--muted); }
.lv-it .stg.s2 { background: #3a2e10; color: var(--warn); } .lv-it .stg.s3 { background: #5a1414; color: #fff; }
.lv-it .pr { font-variant-numeric: tabular-nums; white-space: nowrap; }
.lv-it .px { font-weight: 600; margin-right: 6px; border-radius: 3px; padding: 0 2px; }
.lv-it .chg { font-size: 12px; } .lv-it .chg.up { color: var(--up); } .lv-it .chg.down { color: var(--down); }
.tick-up { animation: lv-tu .8s; } .tick-down { animation: lv-td .8s; }
@keyframes lv-tu { 0% { background: rgba(255, 64, 64, .55); } 100% { background: transparent; } }
@keyframes lv-td { 0% { background: rgba(32, 208, 96, .5); } 100% { background: transparent; } }
.lv-it .sc { display: flex; align-items: center; gap: 6px; }
.lv-it .bar { flex: 1; height: 6px; background: #262626; border-radius: 3px; overflow: hidden; }
.lv-it .bar i { display: block; height: 100%; background: #666; transition: width .6s; }
.lv-it .bar i.s2 { background: var(--warn); } .lv-it .bar i.s3 { background: var(--up); }
.lv-it .scv { font-size: 12px; color: var(--muted); min-width: 20px; text-align: right; }
.lv-it .lts { display: flex; align-items: center; gap: 3px; white-space: nowrap; }
.lv-it .lt { font-size: 11px; padding: 1px 5px; border-radius: 3px; background: #2a2a2a; color: var(--muted); border: 1px solid transparent; }
.lv-it .lt.G { background: #5a1414; color: #ffd0d0; } .lv-it .lt.Z { background: #0e4a26; color: #c8f5d8; }
.lv-it .lt.touch { border-color: var(--mz); box-shadow: 0 0 0 1px var(--mz); }
.lv-it .lt.fl { border-style: dashed; border-color: var(--warn); }
.lv-it .stars { color: #ffd24a; font-size: 11px; margin-left: 4px; }
.lv-it .nx { font-size: 13px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lv-it.s3 .nx { color: #ffb0b0; } .lv-it.s2 .nx { color: #d8c080; }
.lv-it .more { display: none; }
/* 前三名：大卡片 */
.lv-it.big { grid-column: auto; border-left-width: 1px; border-top: 4px solid #555; }
.lv-it.big.s2 { border-top-color: var(--warn); border-left-color: var(--line); }
.lv-it.big.s3 { border-top-color: var(--up); border-left-color: var(--line); }
.lv-it.big a { display: block; padding: 10px 12px; }
.lv-it.big a > div { margin-bottom: 6px; }
.lv-it.big .nm { font-size: 17px; } .lv-it.big .px { font-size: 22px; }
.lv-it.big .nx { white-space: normal; font-size: 14px; }
.lv-it.big .more { display: block; font-size: 12px; color: var(--muted); line-height: 1.7; }
.lv-spark { width: 100%; height: 64px; display: block; margin-top: 4px; background: #101010; border-radius: 4px; }
@media (max-width: 900px) { .lv-list { grid-template-columns: minmax(0, 1fr); } .lv-it a { grid-template-columns: 1fr 1fr; } }
.lv-it.rise { animation: lv-rise 1.6s; }
.lv-it.alarm { animation: lv-alarm 1s 6; }
@keyframes lv-rise { 0% { box-shadow: 0 0 0 2px var(--warn); } 100% { box-shadow: 0 0 0 0 transparent; } }
@keyframes lv-alarm { 0%, 100% { box-shadow: 0 0 0 0 transparent; } 50% { box-shadow: 0 0 0 3px var(--up); } }
@media (prefers-reduced-motion: reduce) { .lv-it.rise, .lv-it.alarm, .tick-up, .tick-down, .lv-dot { animation: none; } }
.lv-side { background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 10px 12px; position: sticky; top: 8px; max-height: 80vh; overflow: auto; }
.lv-side h3 { margin: 0 0 8px; font-size: 14px; } .lv-side h3 small { font-weight: 400; font-size: 12px; }
.lv-side .ev { display: block; font-size: 13px; padding: 5px 0 5px 8px; border-left: 3px solid var(--warn); margin-bottom: 6px; color: var(--text); text-decoration: none; line-height: 1.5; }
.lv-side .ev.s3 { border-left-color: var(--up); }
.lv-side .ev .t { color: var(--muted); margin-right: 6px; font-variant-numeric: tabular-nums; }
/* 实时监控：大方向（指数 + 板块色块）、共振标记 */
.lv-board { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 10px; margin-bottom: 10px; }
@media (max-width: 900px) { .lv-board { grid-template-columns: minmax(0, 1fr); } }
.lv-wh { background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; font-size: 13px; }
.lv-wh .t { color: var(--muted); } .lv-wh .t small { border: 1px solid var(--line); border-radius: 3px; padding: 0 4px; font-size: 11px; }
.lv-wh .v { font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; } .lv-wh .v span { font-size: 13px; font-weight: 400; }
.lv-wh .s { color: var(--muted); font-size: 12px; margin-top: 2px; }
.lv-wh .up, .lv-sec .up { color: var(--up); } .lv-wh .down, .lv-sec .down { color: var(--down); }
.lv-line { width: 100%; height: 28px; display: block; margin: 4px 0; }
.lv-wh .brd { display: flex; justify-content: space-between; height: 6px; background: #262626; border-radius: 3px; overflow: hidden; margin-top: 4px; }
.lv-wh .brd i { display: block; height: 100%; } .lv-wh .brd .g { background: var(--up); } .lv-wh .brd .z { background: var(--down); }
.lv-secs { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 6px; align-content: start; }
.lv-sec { display: grid; grid-template-columns: 1fr auto; gap: 2px 6px; text-align: left; min-width: 0; padding: 6px 8px; background: var(--panel); border: 1px solid var(--line); border-radius: 6px; color: var(--text); font-size: 13px; cursor: pointer; }
.lv-sec:hover { border-color: #666; } .lv-sec.on { border-color: var(--mz); box-shadow: 0 0 0 1px var(--mz); }
.lv-sec .c { font-variant-numeric: tabular-nums; }
.lv-sec .cells { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 3px; margin-top: 2px; }
.lv-sec .cells i { width: 12px; height: 12px; border-radius: 2px; background: #3a3a3a; box-sizing: border-box; }
.lv-sec .cells i.G { background: #c22a2a; } .lv-sec .cells i.Z { background: #17994a; }
.lv-sec .cells i.hot { outline: 2px solid var(--mz); outline-offset: -1px; }
.lv-sec .cells i.go { outline: 2px solid #fff; outline-offset: -1px; }
.lv-lanes button small { margin-left: 4px; color: var(--muted); font-variant-numeric: tabular-nums; }
.lv-lanes button small.lv-s3 { color: var(--up); } .lv-lanes button small.lv-s2 { color: var(--warn); }
.lv-it .reso { margin-left: 8px; font-size: 11px; color: var(--mz); border: 1px solid var(--mz); border-radius: 3px; padding: 0 5px; white-space: nowrap; }
.lv-count a { color: var(--muted); }

/* 实时监控：交易时段时钟 */
.lv-clock { background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; margin-bottom: 10px; font-size: 13px; }
.lc-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px; }
.lc-time { font-size: 22px; font-weight: 600; font-variant-numeric: tabular-nums; }
.lc-st { font-size: 13px; font-weight: 700; padding: 1px 8px; border-radius: 3px; color: #fff; }
.lc-st.open { background: #b32424; } .lc-st.shut { background: #444; }
.lc-cd { font-size: 14px; } .lc-cd b { font-size: 20px; font-variant-numeric: tabular-nums; color: var(--warn); margin-left: 2px; }
.lc-main { margin-top: 6px; }
.lc-strip { position: relative; height: 12px; background: #222; border-radius: 3px; margin-top: 4px; }
.lc-strip .sg { position: absolute; top: 0; height: 100%; border-radius: 2px; }
.lc-strip .sg.day { background: #a33; } .lc-strip .sg.night { background: #5a4a9a; }
.lc-strip .now { position: absolute; top: -3px; width: 2px; height: 18px; background: #fff; }
.lc-ticks { position: relative; height: 16px; font-size: 11px; color: var(--muted); }
.lc-ticks span { position: absolute; transform: translateX(-50%); white-space: nowrap; }
.lc-others { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 4px; font-size: 12px; color: var(--muted); }
.lc-g i { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #555; margin-right: 5px; }
.lc-g.open i { background: var(--up); } .lc-g.open { color: var(--text); }
.lc-note { font-size: 11px; margin-top: 4px; }

/* 模拟文华商品：各周期"红对红 / 红对绿" */
.lv-wh .prs { margin: 4px 0; }
.lv-wh .pr1 { display: grid; grid-template-columns: 52px 1fr auto; align-items: center; gap: 6px; font-size: 13px; padding: 1px 0; }
.lv-wh .pr1 .n { color: var(--muted); font-size: 12px; }
.lv-wh .pp { font-weight: 600; } .lv-wh .pp i { font-style: normal; }
.lv-wh .pp.mix { opacity: .85; }
.lv-wh .pr1 .g { font-weight: 700; }

/* 靶心二：突破的周期与画法 */
.lv-it .hb { display: inline-block; font-size: 12px; padding: 0 6px; border-radius: 3px; margin-right: 5px; white-space: nowrap; }
.lv-it .hb.flat, .lv-it .hit .k.flat { background: #123a5a; color: #9fd0ff; }
.lv-it .hb.slope, .lv-it .hit .k.slope { background: #4a3410; color: #ffcf7a; }
.lv-it .nx .nxt { color: var(--muted); }
.lv-it .hit { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-bottom: 2px; }
.lv-it .hit b { color: var(--text); min-width: 44px; }
.lv-it .hit .k { padding: 0 6px; border-radius: 3px; }

/* 实时监控：复古翻页时钟（当前时间、倒计时） */
.lc-head { align-items: center; gap: 22px; }
.lc-blk { display: flex; flex-direction: column; gap: 4px; }
.lc-cap { font-size: 12px; color: var(--muted); letter-spacing: .5px; min-height: 16px; }
.lc-mid { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 15px; }
.lc-mid .lc-sub { flex-basis: 100%; font-size: 12px; }
.lc-cdrow { display: flex; align-items: center; gap: 8px; }
.lc-days { font-size: 18px; font-weight: 700; color: var(--warn); }
.flip { display: inline-flex; align-items: center; gap: 3px; font-family: "Consolas", "DIN Alternate", "Roboto Mono", monospace; font-weight: 700; --fh: 46px; --fw: 32px; --fs: 36px; --fc: #f2ead8; }
.flip.left { --fc: #ffc24a; } .flip.left.shut { --fc: #9fd0ff; }
.flip .fsep { color: #777; font-size: 26px; margin: 0 1px; line-height: var(--fh); }
.flip .fd { position: relative; display: inline-block; width: var(--fw); height: var(--fh); perspective: 220px; border-radius: 5px;
  background: #050505; box-shadow: 0 2px 0 #000, 0 3px 6px rgba(0, 0, 0, .6); }
.flip .fd > span { position: absolute; left: 0; width: 100%; height: 50%; overflow: hidden; background: linear-gradient(#2c2c2c, #1f1f1f); color: var(--fc); }
.flip .fd > span i { display: block; font-style: normal; text-align: center; font-size: var(--fs); height: var(--fh); line-height: var(--fh); }
.flip .fd .u, .flip .fd .fu { top: 0; border-radius: 5px 5px 0 0; border-bottom: 1px solid #000; box-sizing: border-box; }
.flip .fd .l, .flip .fd .fl { bottom: 0; border-radius: 0 0 5px 5px; background: linear-gradient(#242424, #191919); }
.flip .fd .l i, .flip .fd .fl i { transform: translateY(-50%); }
.flip .fd .fu { transform-origin: 50% 100%; backface-visibility: hidden; display: none; z-index: 2; }
.flip .fd .fl { transform-origin: 50% 0; backface-visibility: hidden; display: none; z-index: 2; transform: rotateX(90deg); }
.flip .fd.go .fu { display: block; animation: flip-down .28s ease-in forwards; }
.flip .fd.go .fl { display: block; animation: flip-up .28s .27s ease-out forwards; }
@keyframes flip-down { from { transform: rotateX(0); } to { transform: rotateX(-90deg); } }
@keyframes flip-up { from { transform: rotateX(90deg); } to { transform: rotateX(0); } }
/* 轴两端的小铰链 */
.flip .fd::before, .flip .fd::after { content: ""; position: absolute; top: calc(50% - 4px); width: 3px; height: 8px; background: #000; z-index: 3; }
.flip .fd::before { left: 0; border-radius: 0 2px 2px 0; } .flip .fd::after { right: 0; border-radius: 2px 0 0 2px; }
@media (prefers-reduced-motion: reduce) { .flip .fd.go .fu, .flip .fd.go .fl { animation: none; display: none; } }
@media (max-width: 700px) { .flip { --fh: 36px; --fw: 24px; --fs: 27px; } }

/* 等 15 分钟信号的倒计时 */
.lv-it .eta { margin-left: 8px; font-size: 12px; color: #ffd98a; border: 1px solid #5a4a20; border-radius: 3px; padding: 0 6px; white-space: nowrap; }
.lv-it .eta b { font-size: 14px; font-variant-numeric: tabular-nums; color: #ffc24a; }
.lv-it .eta small { margin-left: 6px; color: var(--muted); }
.lv-it .eta.hot { border-color: var(--up); color: #ffb0b0; } .lv-it .eta.hot b { color: #ff6a6a; }
.lv-it .eta.far { color: var(--muted); border-color: var(--line); }
.lv-it.big .eta { display: block; margin: 6px 0 0; white-space: normal; padding: 3px 8px; }
.lv-it.big .eta b { font-size: 18px; }
.lv-it:not(.big) .nx { display: flex; align-items: center; gap: 8px; }
.lv-it:not(.big) .nx .eta { order: -1; margin-left: 0; flex: none; }
.lv-it:not(.big) .nx .eta small { display: none; }

/* 收盘简报条 */
.lv-brief { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 6px 12px; margin-bottom: 10px; font-size: 13px; }
.lv-brief button { min-width: 0; padding: 3px 10px; font-size: 12px; }
.lv-brief a { color: var(--z); }

/* 有夜盘的标识 */
.lv-it .ngt { font-size: 11px; font-weight: 700; padding: 0 5px; border-radius: 3px; background: #3b2f7a; color: #d6ccff; }
.lv-it.big .ngt { font-size: 12px; padding: 1px 6px; }
