/* QuantTrader · OBSIDIAN 设计层（第三版）
   目标：极简、克制、高级——像私人银行的交易终端。你是这里的主角，界面只负责把信息和决定递到你手上。
   参考：Linear / Vercel（黑白与发丝线）、Apple Stocks（大号细体数字）、Bloomberg（信息密度）、私人银行 App（留白与克制）。
   规则：黑白灰为主；只有盈亏用红绿（红涨绿跌）；AI 相关用一点冷蓝；不做背景动画，不堆发光。 */
:root, [data-theme="dark"] {
  --bg: #09090b; --bg2: #0c0c0f; --card: rgba(18, 18, 21, .94); --card2: #17171b; --inner: #101013; --line: rgba(255, 255, 255, .08); --line2: rgba(255, 255, 255, .05);
  --text: #f4f4f5; --text2: #cacad1; --sub: #8d8d97; --weak: #5c5c66; --grid: rgba(255, 255, 255, .045);
  --brand: #f4f4f5; --brand2: #ffffff; --brand-weak: rgba(255, 255, 255, .06); --brand-line: rgba(255, 255, 255, .22);
  --up: #f5475b; --down: #22c37e; --up-weak: rgba(245, 71, 91, .12); --down-weak: rgba(34, 195, 126, .12);
  --warn: #d9a54f; --warn-weak: rgba(217, 165, 79, .12); --purple: #a99bff; --purple-weak: rgba(169, 155, 255, .12);
  --cyan: #9db8ff; --bench: #5f5f6a; --row-on: rgba(255, 255, 255, .035); --tip: rgba(12, 12, 15, .96); --mask: rgba(0, 0, 0, .7);
  --shadow: 0 24px 60px rgba(0, 0, 0, .6); --glow: 0 0 0 1px rgba(255, 255, 255, .22), 0 8px 30px rgba(0, 0, 0, .4);
  --skel: #121215; --skel2: #1a1a1f; --scroll: #26262c;
  --up-glow: none; --down-glow: none; --ink: #09090b;
}
[data-theme="light"] {
  --bg: #f6f6f7; --bg2: #fff; --card: rgba(255, 255, 255, .96); --card2: #f4f4f5; --inner: #fafafa; --line: #e4e4e7; --line2: #efeff1;
  --text: #09090b; --text2: #27272a; --sub: #6b6b75; --weak: #a1a1aa; --grid: #ececef;
  --brand: #09090b; --brand2: #000; --brand-weak: rgba(0, 0, 0, .05); --brand-line: rgba(0, 0, 0, .2);
  --up: #e11d48; --down: #059669; --up-weak: #fde8ec; --down-weak: #e3f5ee;
  --cyan: #3b5bdb; --bench: #a1a1aa; --row-on: #f4f4f5; --tip: rgba(9, 9, 11, .92); --ink: #fff;
  --up-glow: none; --down-glow: none;
}
:root {
  --disp: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --num: "Inter", "SF Pro Display", -apple-system, "Segoe UI", sans-serif;
  --serif: var(--disp);
  --side: 232px; --radius: 12px;
}

/* ---------- 背景 ---------- */
[data-theme="dark"] body { background: var(--bg); }
[data-theme="light"] body { background: var(--bg); }
#gl { display: none !important; }
[data-theme="light"] #gl { opacity: .14; filter: invert(1) hue-rotate(180deg); }
#fx { position: fixed; inset: 0; width: 100vw; height: 100vh; pointer-events: none; z-index: 80; }
body::after { content: none; }
[data-theme="light"] body::after { content: none; }
.side, .main { position: relative; z-index: 2; }
.side { position: fixed; }

/* ---------- 侧栏 ---------- */
.side { background: rgba(4, 4, 6, .88); backdrop-filter: blur(14px); border-right: 1px solid var(--line); }
[data-theme="light"] .side { background: rgba(250, 250, 251, .92); }
.logo { flex-direction: row; align-items: center; gap: 11px; padding: 20px 18px 18px; border-bottom: 1px solid var(--line2); }
.logo svg { flex: none;  }
.logo .wm { display: flex; flex-direction: column; line-height: 1.05; }
.logo .wm b { font: 650 19px/1 var(--disp); letter-spacing: 1.5px; color: var(--text); background: none; -webkit-text-fill-color: currentColor; }
.logo .wm b em { font-style: normal; color: var(--brand); }
.logo .wm b::after { content: none; }
.logo .wm small { font: 600 9.5px/1.4 var(--mono); color: var(--brand); letter-spacing: 2.4px; margin-top: 5px; opacity: .85; }
.nav { padding: 12px 10px; display: flex; flex-direction: column; }
.nav a { padding: 11px 12px; gap: 12px; border-radius: 4px; font-size: 14.5px; font-weight: 600; letter-spacing: .5px; color: var(--sub); }
.nav a:hover { background: rgba(255, 255, 255, .03); color: var(--text); }
.nav a.on { color: var(--text); font-weight: 700; }
.nav a .ico { width: 20px; height: 20px; display: grid; place-items: center; opacity: .8; }
.nav a .ico svg { width: 18px; height: 18px; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.nav a.on .ico { opacity: 1; color: var(--brand);  }
.nav a .en { margin-left: auto; font: 700 9px var(--mono); letter-spacing: 1px; color: var(--weak); padding: 2px 5px; border: 1px solid var(--line); border-radius: 3px; }
.nav a.on .en { color: var(--ink); background: var(--brand); border-color: var(--brand); }
.nav a .kbd { display: none; }
.nav a .badge { position: absolute; left: 27px; top: 8px; width: 8px; height: 8px; border-radius: 50%; background: var(--up); box-shadow: 0 0 0 3px rgba(245, 71, 91, 0.120), 0 0 12px var(--up); animation: pulse 1.4s infinite; }
@keyframes pulse { 50% { box-shadow: 0 0 0 7px rgba(245, 71, 91, 0.000), 0 0 12px var(--up); } }
.nav .ink { background: linear-gradient(90deg, rgba(255, 255, 255, 0.080), rgba(255, 255, 255, 0.010)); box-shadow: none; border-radius: 4px; }
.nav .ink::before { left: -10px; width: 3px; background: var(--brand); box-shadow: none; border-radius: 0; top: 6px; bottom: 6px; }
.nav .sp { flex: 1; }
.side-foot { padding: 14px 16px 18px; border-top: 1px solid var(--line2); font: 11px/1.7 var(--mono); color: var(--weak); }
.side-foot .quote-of-day { font: 600 12px/1.7 var(--disp); color: var(--text2); margin-bottom: 10px; letter-spacing: .3px; border-left: 2px solid var(--brand); padding-left: 10px; }

/* ---------- 顶栏：时钟 + 行情跑马灯 ---------- */
.top { flex-direction: column; align-items: stretch; gap: 0; padding: 0; height: auto; background: rgba(3, 3, 4, .82); backdrop-filter: blur(14px) saturate(1.4); border-bottom: 1px solid var(--line); }
[data-theme="light"] .top { background: rgba(238, 239, 242, .88); }
.top .bar { display: flex; align-items: center; gap: 14px; padding: 10px 28px; min-height: 58px; }
.top h1 { font: 650 24px/1.1 var(--disp); letter-spacing: 1px; margin: 0; }
.top h1 small { font: 700 10px var(--mono); letter-spacing: 2.5px; color: var(--brand); margin-left: 12px; vertical-align: 3px; }
.top .grow { flex: 1; }
.tclk { display: flex; gap: 8px; }
.tclk .clock { display: flex; align-items: center; gap: 9px; padding: 5px 12px 5px 10px; border: 1px solid var(--line); border-radius: 4px; background: rgba(0, 0, 0, .35); font: 11.5px var(--mono); white-space: nowrap; }
[data-theme="light"] .tclk .clock { background: #fff; }
.tclk .clock .nm { color: var(--ink); background: var(--brand); font-weight: 800; padding: 1px 5px; border-radius: 2px; letter-spacing: .5px; font-size: 10px; }
.tclk .clock .tm { color: var(--text); font-weight: 700; font-size: 14px; letter-spacing: .5px; }
.tclk .clock .st { color: var(--sub); display: flex; align-items: center; gap: 6px; }
.tclk .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--weak); }
.tclk .dot.on { background: var(--down); box-shadow: 0 0 10px var(--down); animation: pulseG 1.4s infinite; }
@keyframes pulseG { 50% { box-shadow: 0 0 0 6px rgba(34, 195, 126, 0.000), 0 0 10px var(--down); } }
.tclk .dot.pre { background: var(--warn); box-shadow: 0 0 8px var(--warn); }
.cmdk-btn { border-radius: 4px !important; }
.icon-btn { border-radius: 4px !important; }
.tape { position: relative; overflow: hidden; height: 32px; border-top: 1px solid var(--line2); background: #000; mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent); }
[data-theme="light"] .tape { background: #0b0b0f; }
.tape .track { display: flex; gap: 0; position: absolute; white-space: nowrap; top: 0; height: 32px; align-items: center; animation: tape 160s linear infinite; font: 600 12px var(--mono); padding-left: 100%; }
.tape:hover .track { animation-play-state: paused; }
.tape .it { display: inline-flex; gap: 8px; align-items: baseline; color: #9a9aa6; cursor: pointer; padding: 0 18px; border-right: 1px solid #1a1a20; }
.tape .it b { color: var(--brand); font-weight: 700; }
.tape .it .up::before { content: "▲ "; font-size: 9px; } .tape .it .down::before { content: "▼ "; font-size: 9px; }
.tape .it .up { color: #f5475b; text-shadow: none; } .tape .it .down { color: #22c37e; text-shadow: none; }
@keyframes tape { to { transform: translateX(-100%); } }
.page { max-width: 1560px; padding: 24px 28px 60px; }

/* ---------- 通用 ---------- */
.card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius); position: relative; transition: border-color .15s, box-shadow .15s, transform .15s var(--ease); }
.card::before { content: ""; position: absolute; left: -1px; top: -1px; width: 10px; height: 10px; border-left: 2px solid var(--brand); border-top: 2px solid var(--brand); border-top-left-radius: var(--radius); opacity: .0; transition: opacity .15s; pointer-events: none; }
.card:hover { border-color: #2c2c36; }
[data-theme="light"] .card:hover { border-color: #c8c9d0; }
.card:hover::before { opacity: 1; }
.card.spot::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient(380px circle at var(--mx, -999px) var(--my, -999px), rgba(255, 255, 255, 0.030), transparent 45%); }
.eyebrow { font: 700 10px var(--mono); letter-spacing: 2px; color: var(--brand); display: inline-flex; align-items: center; gap: 8px; }
.eyebrow::before { content: ""; width: 6px; height: 6px; background: var(--brand); box-shadow: 0 0 8px var(--brand); }
.serif { font-family: var(--disp); }
.h-sec { display: flex; align-items: center; gap: 12px; margin: 36px 0 14px; }
.h-sec h2 { font: 650 22px/1.1 var(--disp); margin: 0; letter-spacing: 1px; }
.h-sec .eyebrow::before { content: none; }
.h-sec .eyebrow { background: var(--brand); color: var(--ink); padding: 3px 7px; border-radius: 2px; letter-spacing: 1.5px; }
.h-sec .grow { flex: 1; }
.h-sec .line { flex: 1; height: 1px; background: linear-gradient(90deg, var(--line), transparent); align-self: center; }
.btn { border-radius: 4px; transition: background .12s, border-color .12s, color .12s, transform .1s, box-shadow .12s; position: relative; overflow: hidden; font-weight: 600; letter-spacing: .3px; }
.btn:hover { border-color: var(--brand-line); color: var(--text); }
.btn:active { transform: scale(.97); }
.btn.primary { background: var(--brand); color: var(--ink); border-color: var(--brand); font-weight: 800; box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.000), 0 6px 24px rgba(255, 255, 255, 0.125); }
.btn.primary:hover { background: var(--brand2); color: var(--ink); box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.090), 0 8px 30px rgba(255, 255, 255, 0.175); }
.btn.danger { background: var(--up); border-color: var(--up); color: #fff; }
.btn.ghost { background: transparent; }
.btn .rip { position: absolute; border-radius: 50%; transform: scale(0); background: currentColor; opacity: .25; animation: rip .6s var(--ease) forwards; pointer-events: none; }
@keyframes rip { to { transform: scale(4); opacity: 0; } }
.seg { border-radius: 4px; }
.seg button { border-radius: 3px; font-weight: 600; }
.seg button.on { background: var(--brand); color: var(--ink); box-shadow: none; font-weight: 800; }
.pill { border-radius: 3px; font-weight: 600; }
.pill.gold { background: var(--brand-weak); color: var(--brand); border-color: var(--brand-line); }
.kpi .v { font-size: 24px; font-weight: 800; }
.up-bg { background: var(--up-weak); color: var(--up); } .down-bg { background: var(--down-weak); color: var(--down); }
.v.up, .num.up, b.up { text-shadow: none; } .v.down, .num.down, b.down { text-shadow: none; }
.fade-in { animation: fadeUp .45s var(--ease) both; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.stagger > * { animation: fadeUp .45s var(--ease) both; }
.stagger > *:nth-child(2) { animation-delay: .05s; } .stagger > *:nth-child(3) { animation-delay: .1s; } .stagger > *:nth-child(4) { animation-delay: .15s; } .stagger > *:nth-child(5) { animation-delay: .2s; } .stagger > *:nth-child(6) { animation-delay: .25s; }
.flash-up { animation: flU .9s ease-out; } .flash-down { animation: flD .9s ease-out; }
@keyframes flU { 0% { background: rgba(245, 71, 91, 0.270); } 100% { background: transparent; } }
@keyframes flD { 0% { background: rgba(34, 195, 126, 0.240); } 100% { background: transparent; } }
.live { display: inline-flex; align-items: center; gap: 6px; font: 650 10px var(--mono); letter-spacing: 1.5px; color: #fff; background: var(--up); padding: 2px 7px; border-radius: 2px; box-shadow: 0 0 14px rgba(245, 71, 91, 0.360); }
.live::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #fff; animation: blink 1s steps(1) infinite; }
.live.off { background: #2a2a33; box-shadow: none; color: var(--sub); }
.live.off::before { background: var(--sub); animation: none; }

/* ---------- 总览：指挥台 ---------- */
.cmd { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
.cmd-l { padding: 26px 28px 24px; overflow: hidden; background: linear-gradient(135deg, rgba(255, 255, 255, 0.045), rgba(10, 10, 13, .92) 42%), var(--card); border-color: rgba(255, 255, 255, 0.140); }
[data-theme="light"] .cmd-l { background: linear-gradient(135deg, #fff3dc, #fff 45%); }
.cmd-l::after { content: ""; position: absolute; right: -60px; top: -60px; width: 260px; height: 260px; background: radial-gradient(circle, rgba(255, 255, 255, 0.090), transparent 65%); pointer-events: none; }
.cmd .hi { font: 650 40px/1.08 var(--disp); letter-spacing: .5px; margin: 14px 0 8px; }
.cmd .hi em { font-style: normal; color: var(--brand); text-shadow: none; }
.cmd .mood { font-size: 14.5px; line-height: 1.75; color: var(--text2); max-width: 720px; min-height: 26px; }
.cmd .mood .cur { display: inline-block; width: 8px; height: 16px; background: var(--brand); margin-left: 3px; vertical-align: -2px; animation: blink 1s steps(1) infinite; }
@keyframes blink { 50% { opacity: 0; } }
.pnl-big { display: flex; gap: 34px; margin: 22px 0 20px; flex-wrap: wrap; }
.pnl-big .l { font: 700 10.5px var(--mono); letter-spacing: 2px; color: var(--sub); }
.pnl-big .v { font: 650 46px/1.05 var(--mono); letter-spacing: -1.5px; margin-top: 6px; white-space: nowrap; }
.pnl-big .s { font: 700 13px var(--mono); margin-top: 4px; color: var(--sub); }
.pnl-big .s .chip { display: inline-block; padding: 2px 8px; border-radius: 3px; margin-right: 8px; }
.pnl-big .s .chip.up { background: var(--up); color: #fff; text-shadow: none; } .pnl-big .s .chip.down { background: var(--down); color: var(--ink); text-shadow: none; }
.cta-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.btn-go { position: relative; overflow: hidden; display: inline-flex; align-items: center; gap: 10px; height: 50px; padding: 0 26px; border-radius: 4px; border: 0; cursor: pointer;
  background: linear-gradient(180deg, #ffffff, #e4e4e7); color: var(--ink); font: 650 17px var(--disp); letter-spacing: 2px;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.300), 0 10px 36px rgba(255, 255, 255, 0.190), inset 0 1px 0 rgba(255, 255, 255, .45); transition: transform .12s, box-shadow .15s; }
.btn-go:hover { color: var(--ink); transform: translateY(-1px); box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.100), 0 14px 44px rgba(255, 255, 255, 0.250), inset 0 1px 0 rgba(255, 255, 255, .45); }
.btn-go small { font: 700 9.5px var(--mono); letter-spacing: 1.5px; opacity: .65; }
.btn-go::after { content: ""; position: absolute; top: 0; left: -60%; width: 40%; height: 100%; background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent); transform: skewX(-20deg); animation: shine 3.2s ease-in-out infinite; }
@keyframes shine { 0%, 60% { left: -60%; } 100% { left: 130%; } }
.btn-line { display: inline-flex; align-items: center; gap: 8px; height: 50px; padding: 0 20px; border-radius: 4px; border: 1px solid var(--line); background: rgba(0, 0, 0, .3); color: var(--text); font: 700 14px var(--disp); letter-spacing: 1px; cursor: pointer; transition: border-color .12s, background .12s; }
[data-theme="light"] .btn-line { background: #fff; }
.btn-line:hover { border-color: var(--brand); color: var(--brand); }
.cmd-r { display: grid; grid-template-rows: auto 1fr; gap: 16px; }
.pulse { padding: 18px 20px; }
.pulse .bar2 { display: flex; height: 12px; border-radius: 2px; overflow: hidden; margin: 12px 0 8px; background: var(--line); }
.pulse .bar2 i { display: block; height: 100%; transition: width .8s var(--ease); }
.pulse .bar2 i.u { background: linear-gradient(90deg, #f5475b, #f7707f); box-shadow: 0 0 14px rgba(245, 71, 91, 0.360); }
.pulse .bar2 i.d { background: linear-gradient(90deg, #1aa86b, #22c37e); box-shadow: 0 0 14px rgba(34, 195, 126, 0.300); }
.pulse .lbl { display: flex; justify-content: space-between; font: 700 12px var(--mono); }
.movers { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; }
.mover { display: flex; justify-content: space-between; align-items: baseline; padding: 8px 10px; border: 1px solid var(--line2); border-radius: 4px; background: var(--inner); cursor: pointer; font-size: 12.5px; transition: border-color .12s; }
.mover:hover { border-color: var(--brand-line); }
.mover b { font: 650 13px var(--mono); }
.acct-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.tile { padding: 16px 18px; cursor: pointer; }
.tile:hover { border-color: var(--brand-line); }
.tile .l { font: 700 10px var(--mono); letter-spacing: 2px; color: var(--sub); display: flex; justify-content: space-between; }
.tile .v { font: 650 26px/1.2 var(--mono); margin-top: 8px; letter-spacing: -.5px; }
.tile .s { font: 600 12px var(--mono); color: var(--sub); margin-top: 2px; }
.nudge { display: flex; align-items: center; gap: 14px; margin-top: 16px; padding: 14px 18px; border-radius: 6px; border: 1px solid var(--brand-line); background: linear-gradient(90deg, rgba(255, 255, 255, 0.070), rgba(255, 255, 255, 0.010)); }
.nudge .t { flex: 1; font-size: 13.5px; }
.nudge .t b { font: 650 16px var(--disp); letter-spacing: .5px; }
.hero { display: none; }

/* ---------- 总览：市场区块 ---------- */
.mblock { margin-top: 34px; }
.mblock .mh { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.mblock .mh .tag { font: 650 12px var(--mono); letter-spacing: 2px; padding: 5px 10px; border-radius: 2px; color: var(--ink); background: var(--brand); box-shadow: 0 0 18px rgba(255, 255, 255, 0.175); }
.mblock .mh h2 { font: 650 28px var(--disp); margin: 0; letter-spacing: 1px; }
.mblock .mh .st { font: 600 12px var(--mono); color: var(--sub); }
.idx-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 12px; }
.idx { padding: 14px 16px; display: grid; grid-template-columns: 1fr auto; gap: 2px 12px; align-items: center; cursor: pointer; overflow: hidden; }
.idx::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--c, transparent); box-shadow: 0 0 14px var(--c, transparent); }
.idx.u { --c: var(--up); } .idx.d { --c: var(--down); }
.idx .n { font-size: 12.5px; color: var(--sub); font-weight: 600; }
.idx .p { font: 650 24px var(--mono); letter-spacing: -.5px; }
.idx .c { font: 650 14px var(--mono); text-align: right; }
.idx .sp { grid-row: 1 / 3; grid-column: 2; }
.mgrid { display: grid; grid-template-columns: 1.65fr 1fr; gap: 12px; }
.real-card { padding: 18px 20px; }
.real-card .kp { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin: 12px 0 10px; background: var(--line2); border: 1px solid var(--line2); border-radius: 4px; overflow: hidden; }
.real-card .kp > div { background: var(--card); padding: 10px 12px; }
.real-card .kp .l { font: 700 10.5px var(--mono); color: var(--sub); letter-spacing: 1px; }
.real-card .kp .v { font: 650 21px/1.35 var(--mono); letter-spacing: -.5px; }
.real-card .kp .s { font: 11px var(--mono); color: var(--weak); }
.hold-mini { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 13px; }
.hold-mini td { padding: 8px 6px; border-top: 1px solid var(--line2); }
.hold-mini tr { cursor: pointer; transition: background .1s; }
.hold-mini tr:hover { background: var(--row-on); }
.hold-mini .w { width: 70px; }
.hold-mini td.r { text-align: right; }
.wbar { height: 3px; border-radius: 0; background: var(--line); overflow: hidden; margin-top: 4px; }
.wbar i { display: block; height: 100%; background: var(--brand); box-shadow: 0 0 8px var(--brand); }
.ai-card { padding: 18px 20px; display: flex; flex-direction: column; background: linear-gradient(160deg, rgba(0, 212, 255, .06), var(--card) 40%); }
.ai-card .eyebrow { color: var(--cyan); } .ai-card .eyebrow::before { background: var(--cyan); box-shadow: 0 0 8px var(--cyan); }
.stance { font: 650 44px/1.1 var(--disp); letter-spacing: 2px; margin: 10px 0 4px; text-shadow: none; }
.stance.s-hold { color: var(--brand); } .stance.s-add { color: var(--up); } .stance.s-cut { color: var(--warn); } .stance.s-off { color: var(--down); }
.ai-card .hl { font-size: 14.5px; line-height: 1.7; font-weight: 600; color: var(--text); margin-bottom: 10px; }
.ai-card .regime { display: flex; gap: 8px; align-items: center; font-size: 12px; color: var(--sub); margin-bottom: 10px; flex-wrap: wrap; }
.meter { display: inline-flex; gap: 3px; } .meter i { width: 16px; height: 6px; border-radius: 1px; background: var(--line); } .meter i.on { background: var(--brand); box-shadow: 0 0 8px var(--brand); }
.acts { list-style: none; padding: 0; margin: 0 0 12px; display: flex; flex-direction: column; gap: 6px; }
.acts li { font-size: 12.5px; line-height: 1.6; padding: 8px 10px; border-radius: 3px; background: var(--inner); border-left: 2px solid var(--cyan); color: var(--text2); }
.acts li b { color: var(--text); }
.vchip { display: inline-block; font: 650 11px var(--mono); padding: 2px 8px; border-radius: 2px; letter-spacing: .5px; white-space: nowrap; }
.v-止损 { background: var(--up); color: #fff; box-shadow: 0 0 12px rgba(245, 71, 91, 0.300); }
.v-减仓 { background: var(--warn-weak); color: var(--warn); box-shadow: inset 0 0 0 1px rgba(255, 138, 0, .4); } .v-止盈 { background: var(--brand-weak); color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand-line); }
.v-加仓 { background: rgba(0, 212, 255, .12); color: var(--cyan); box-shadow: inset 0 0 0 1px rgba(0, 212, 255, .4); } .v-持有 { background: rgba(255, 255, 255, .05); color: var(--text2); } .v-观察 { background: transparent; color: var(--weak); box-shadow: inset 0 0 0 1px var(--line); }

/* ---------- 模拟仓 ---------- */
.sims { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 12px; }
.sim { padding: 16px 18px; cursor: pointer; }
.sim:hover { transform: translateY(-2px); border-color: var(--brand-line); box-shadow: 0 12px 30px rgba(0, 0, 0, .5); }
.sim .nm { font: 700 15px var(--disp); letter-spacing: .3px; display: flex; align-items: center; gap: 8px; }
.sim .st { font-size: 11.5px; color: var(--sub); margin: 3px 0 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sim .eq { font: 650 26px var(--mono); letter-spacing: -.5px; }
.sim .row2 { display: flex; justify-content: space-between; font: 600 12px var(--mono); color: var(--sub); margin-top: 4px; }
.sim.new { display: grid; place-items: center; min-height: 150px; border-style: dashed; color: var(--sub); text-align: center; }
.sim.new .plus { font: 300 38px var(--mono); color: var(--brand); line-height: 1; text-shadow: none; }
.switch { position: relative; width: 40px; height: 22px; border-radius: 999px; background: #1c1c23; border: 1px solid var(--line); cursor: pointer; transition: background .15s; flex: none; display: inline-block; vertical-align: middle; }
[data-theme="light"] .switch { background: #d8d9df; }
.switch i { position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--sub); transition: transform .2s var(--spring), background .15s; }
.switch.on { background: rgba(255, 255, 255, 0.150); border-color: var(--brand); }
.switch.on i { transform: translateX(18px); background: var(--brand); box-shadow: 0 0 12px var(--brand); }
.switch.dis { opacity: .4; cursor: not-allowed; }
.autolab { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--sub); }

/* ---------- 新闻 / 事件 ---------- */
.news-it { padding: 11px 0; border-top: 1px solid var(--line2); display: grid; grid-template-columns: 54px 1fr; gap: 10px; }
.news-it:first-of-type { border-top: 0; }
.news-it .tm { font: 700 11px/1.6 var(--mono); color: var(--brand); }
.news-it a { color: var(--text); font-size: 13.5px; line-height: 1.55; font-weight: 500; }
.news-it a:hover { color: var(--brand); }
.news-it .s { font-size: 12px; color: var(--sub); margin-top: 3px; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- 自选 ---------- */
.wsearch { position: relative; max-width: 680px; margin-bottom: 22px; }
.wsearch input { width: 100%; height: 50px; border-radius: 4px; padding: 0 22px 0 48px; font-size: 15px; background: var(--card); border: 1px solid var(--line); font-weight: 500; }
.wsearch input:focus { border-color: var(--brand); box-shadow: var(--glow); }
.wsearch .ic { position: absolute; left: 18px; top: 15px; color: var(--brand); }
.wsearch .sug { position: absolute; left: 0; right: 0; top: 56px; z-index: 30; background: var(--card2); border: 1px solid var(--line); border-radius: 6px; box-shadow: var(--shadow); overflow: hidden; }
.wsearch .sug .it { display: flex; align-items: center; gap: 12px; padding: 10px 16px; cursor: pointer; }
.wsearch .sug .it:hover, .wsearch .sug .it.on { background: var(--row-on); }
.wsearch .sug .it .grow { flex: 1; }
.wcols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.wcol { padding: 6px 0 4px; }
.wcol .hd { display: flex; align-items: center; gap: 10px; padding: 12px 18px 10px; }
.wcol .hd h3 { font: 650 19px var(--disp); margin: 0; letter-spacing: 1px; }
.wrow { display: grid; grid-template-columns: minmax(0, 1.5fr) 1fr 96px 26px; gap: 10px; align-items: center; padding: 11px 18px; border-top: 1px solid var(--line2); cursor: pointer; transition: background .1s; }
.wrow:hover { background: var(--row-on); }
.wrow .nm b { font-size: 14px; } .wrow .nm .c { font: 11px var(--mono); color: var(--weak); margin-left: 6px; }
.wrow .rg { font: 10.5px var(--mono); color: var(--weak); }
.wrow .rg .bar { position: relative; height: 3px; background: var(--line); margin-top: 5px; }
.wrow .rg .bar i { position: absolute; top: -3px; width: 2px; height: 9px; background: var(--brand); box-shadow: 0 0 6px var(--brand); }
.wrow .px { font: 650 15px var(--mono); text-align: right; }
.wrow .chg { font: 650 13px var(--mono); text-align: center; padding: 6px 0; border-radius: 3px; }
.wrow .chg.up-bg { background: var(--up); color: #fff; box-shadow: 0 0 14px rgba(245, 71, 91, 0.210); } .wrow .chg.down-bg { background: var(--down); color: var(--ink); box-shadow: 0 0 14px rgba(34, 195, 126, 0.180); }
.wrow .x { opacity: 0; color: var(--weak); background: none; border: 0; cursor: pointer; font-size: 15px; }
.wrow:hover .x { opacity: 1; }
.wrow .x:hover { color: var(--up); }

/* ---------- 策略库 ---------- */
.lib { display: grid; grid-template-columns: 370px 1fr; gap: 16px; align-items: start; }
.lib-list { position: sticky; top: 112px; max-height: calc(100vh - 132px); overflow: auto; padding: 6px; }
.lib-it { padding: 11px 12px; border-radius: 4px; cursor: pointer; display: grid; grid-template-columns: 1fr 84px; gap: 2px 10px; border: 1px solid transparent; border-left: 2px solid transparent; transition: background .1s, border-color .1s; }
.lib-it:hover { background: var(--row-on); }
.lib-it.on { background: var(--brand-weak); border-color: var(--brand-line); border-left-color: var(--brand); }
.lib-it .n { font-size: 13.5px; font-weight: 700; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lib-it .m { font: 600 11.5px var(--mono); color: var(--sub); display: flex; gap: 10px; flex-wrap: wrap; }
.lib-it .sp { grid-row: 1 / 3; grid-column: 2; align-self: center; }
.lib-grp { font: 650 10px var(--mono); letter-spacing: 2px; color: var(--brand); padding: 12px 12px 4px; }
.lib-detail .ttl { font: 650 28px/1.25 var(--disp); letter-spacing: .5px; margin: 6px 0 8px; }
.kgrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--line2); border: 1px solid var(--line2); border-radius: 4px; overflow: hidden; margin: 14px 0; }
.kgrid > div { background: var(--card); padding: 12px 14px; }
.kgrid .l { font: 700 10.5px var(--mono); color: var(--sub); letter-spacing: 1px; } .kgrid .v { font: 650 20px/1.4 var(--mono); letter-spacing: -.3px; } .kgrid .s { font: 10.5px var(--mono); color: var(--weak); }
.heat { display: grid; grid-template-columns: 44px repeat(12, 1fr) 58px; gap: 2px; font: 600 10.5px var(--mono); }
.heat .h { color: var(--weak); text-align: center; padding: 2px 0; }
.heat .c { text-align: center; padding: 5px 0; border-radius: 1px; color: var(--text2); }
.ybars { display: flex; align-items: flex-end; gap: 8px; height: 150px; padding: 18px 4px 0; position: relative; }
.ybars .b { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; position: relative; }
.ybars .b i { width: 70%; border-radius: 1px; transform-origin: bottom; animation: grow .7s var(--ease) both; }
.ybars .b.neg i { transform-origin: top; }
.ybars .b span { font: 10px var(--mono); color: var(--weak); margin-top: 4px; }
.ybars .b em { font: 650 10px var(--mono); font-style: normal; position: absolute; }
@keyframes grow { from { transform: scaleY(0); } }

/* ---------- 账户（实盘 / 模拟仓） ---------- */
.desk-tabs { display: flex; align-items: center; gap: 14px; margin-bottom: 20px; flex-wrap: wrap; }
.bigtabs { display: inline-flex; gap: 0; padding: 3px; border: 1px solid var(--line); border-radius: 4px; background: var(--card); }
.bigtabs button { border: 0; background: none; color: var(--sub); padding: 9px 26px; border-radius: 2px; cursor: pointer; font: 650 15px var(--disp); letter-spacing: 2px; transition: color .12s, background .12s; }
.bigtabs button:hover { color: var(--text); }
.bigtabs button.on { background: var(--brand); color: var(--ink); box-shadow: 0 0 20px rgba(255, 255, 255, 0.175); }
.review-bar { display: flex; align-items: center; gap: 16px; padding: 16px 20px; margin-bottom: 16px; }
.review-bar.due { border-color: var(--brand); background: linear-gradient(90deg, rgba(255, 255, 255, 0.080), var(--card) 60%); box-shadow: var(--glow); }
.review-bar .ring { width: 54px; height: 54px; flex: none; }
.review-bar .t { flex: 1; }
.review-bar .t b { font: 650 17px var(--disp); letter-spacing: .5px; }
.review-bar .t div { font-size: 12.5px; color: var(--sub); margin-top: 2px; }
.flame { font: 650 13px var(--mono); color: var(--warn); text-shadow: none; }
.chat { display: flex; flex-direction: column; height: 100%; min-height: 420px; }
.chat .msgs { flex: 1; overflow: auto; padding: 4px 2px 10px; display: flex; flex-direction: column; gap: 12px; max-height: 560px; }
.bub { max-width: 88%; padding: 10px 14px; border-radius: 6px; font-size: 13.5px; line-height: 1.75; white-space: pre-wrap; word-break: break-word; animation: fadeUp .3s var(--ease) both; }
.bub.ai { align-self: flex-start; background: var(--inner); border: 1px solid var(--line); border-left: 2px solid var(--cyan); }
.bub.me { align-self: flex-end; background: var(--brand-weak); border: 1px solid var(--brand-line); color: var(--text); }
.bub .who { font: 650 10px var(--mono); letter-spacing: 1.5px; color: var(--cyan); display: block; margin-bottom: 3px; }
.bub.me .who { color: var(--brand); }
.typing i { display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--cyan); margin: 0 2px; animation: typing 1s infinite; }
.typing i:nth-child(2) { animation-delay: .15s; } .typing i:nth-child(3) { animation-delay: .3s; }
@keyframes typing { 50% { opacity: .2; transform: translateY(-3px); } }
.chat .inp { display: flex; gap: 8px; padding-top: 10px; border-top: 1px solid var(--line2); }
.chat .inp textarea { flex: 1; resize: none; min-height: 42px; max-height: 140px; border-radius: 4px; padding: 10px 14px; font: inherit; background: var(--inner); border: 1px solid var(--line); color: var(--text); }
.chat .inp textarea:focus { outline: none; border-color: var(--brand); }
.chips { display: flex; gap: 6px; flex-wrap: wrap; }
.qchip { font-size: 12px; padding: 5px 11px; border-radius: 3px; border: 1px solid var(--line); background: transparent; color: var(--sub); cursor: pointer; transition: all .12s; font-weight: 600; }
.qchip:hover { color: var(--brand); border-color: var(--brand); background: var(--brand-weak); }
.flow { position: relative; padding-left: 26px; }
.flow::before { content: ""; position: absolute; left: 9px; top: 6px; bottom: 6px; width: 1px; background: linear-gradient(var(--brand), var(--line)); }
.flow .step { position: relative; padding: 2px 0 16px; }
.flow .step::before { content: attr(data-n); position: absolute; left: -26px; top: 0; width: 19px; height: 19px; border-radius: 2px; display: grid; place-items: center; font: 650 10px var(--mono); color: var(--ink); background: var(--brand); box-shadow: 0 0 12px rgba(255, 255, 255, 0.275); }
.flow .step b { font: 650 14px var(--disp); letter-spacing: .5px; }
.flow .step .d { font-size: 12.5px; color: var(--text2); line-height: 1.75; margin-top: 3px; }
.rv-list { display: flex; flex-direction: column; gap: 8px; }
.rv { display: grid; grid-template-columns: 48px 1fr auto; gap: 12px; align-items: center; padding: 12px 14px; border-radius: 4px; border: 1px solid var(--line2); background: var(--inner); cursor: pointer; transition: border-color .12s, transform .12s; }
.rv:hover { border-color: var(--brand-line); transform: translateX(2px); }
.rv .sc { font: 650 22px var(--mono); text-align: center; color: var(--brand); text-shadow: none; }
.rv .sc small { display: block; font: 9px var(--mono); color: var(--weak); letter-spacing: 1px; text-shadow: none; }
.rv .t { font: 700 13.5px var(--disp); } .rv .o { font-size: 12px; color: var(--sub); margin-top: 2px; }
.sum-card { padding: 22px 24px; border-color: var(--brand-line); background: linear-gradient(160deg, rgba(255, 255, 255, 0.060), var(--card) 45%); }
.sum-card h3 { font: 650 24px var(--disp) !important; letter-spacing: .5px; margin: 4px 0 6px; }
.sum-card .cols { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 14px; }
.sum-card .cols h4 { font: 650 11px var(--mono); letter-spacing: 1.5px; color: var(--brand); margin: 0 0 6px; }
.sum-card .cols ul { margin: 0; padding-left: 16px; font-size: 13px; line-height: 1.8; color: var(--text2); }
.ticket { padding: 18px 20px; }
.ticket .sides { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 3px; border-radius: 4px; background: var(--inner); border: 1px solid var(--line); margin-bottom: 12px; }
.ticket .sides button { border: 0; padding: 11px; border-radius: 2px; cursor: pointer; font: 650 16px var(--disp); letter-spacing: 4px; background: none; color: var(--sub); transition: all .12s; }
.ticket .sides button.on.b { background: var(--up); color: #fff; box-shadow: 0 0 26px rgba(245, 71, 91, 0.300); }
.ticket .sides button.on.s { background: var(--down); color: var(--ink); box-shadow: 0 0 26px rgba(34, 195, 126, 0.270); }
.ticket label.f { margin-bottom: 10px; }
.ticket .qline { display: flex; justify-content: space-between; font: 600 12px var(--mono); color: var(--sub); padding: 6px 0; border-top: 1px dashed var(--line); }
.ticket .go { width: 100%; height: 50px; margin-top: 10px; font: 650 17px var(--disp); letter-spacing: 4px; border-radius: 4px; }
.log { display: flex; flex-direction: column; }
.log .it { display: grid; grid-template-columns: 92px 70px 1fr auto; gap: 12px; align-items: baseline; padding: 10px 4px; border-top: 1px solid var(--line2); font-size: 13px; }
.log .it .d { font: 11px var(--mono); color: var(--weak); }
.log .it .a { font: 650 11px var(--mono); letter-spacing: 1px; }
.log .it .r { font: 600 12px var(--mono); text-align: right; white-space: nowrap; }
.log .it .why { font-size: 12px; color: var(--sub); }
.tlog td { white-space: nowrap; }
.desk-low { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(0, 1fr); gap: 16px; align-items: start; }

/* ---------- 日历页下半部分 ---------- */
.cal-below { display: grid; grid-template-columns: 1.3fr 1fr; gap: 16px; margin-top: 16px; align-items: start; }
.cal-below .day-panel { position: static; max-height: none; }

/* ---------- 设置 ---------- */
.set-status { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 18px; }
.set-st { padding: 14px 16px; display: flex; gap: 12px; align-items: center; }
.set-st .led { width: 10px; height: 10px; border-radius: 50%; background: var(--weak); flex: none; }
.set-st .led.ok { background: var(--down); box-shadow: 0 0 12px var(--down); }
.set-st .led.warn { background: var(--warn); box-shadow: 0 0 12px var(--warn); }
.set-st .led.bad { background: var(--up); box-shadow: 0 0 12px var(--up); animation: pulse 1.4s infinite; }
.set-st b { font: 650 15px var(--disp); letter-spacing: .5px; display: block; }
.set-st .s { font: 600 11.5px var(--mono); color: var(--sub); }
.set-tabs { margin-bottom: 18px; }
.set-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); gap: 16px; align-items: start; }
.set-card { padding: 18px 20px; }
.set-card h3 { display: flex; align-items: center; gap: 10px; margin: 0 0 4px !important; font: 650 17px var(--disp) !important; letter-spacing: .5px; }
.set-card h3 .brand-ic { width: 28px; height: 28px; border-radius: 4px; display: grid; place-items: center; font: 650 13px var(--mono); color: var(--ink); flex: none; }
.set-card .desc { font-size: 12px; color: var(--sub); margin-bottom: 14px; line-height: 1.6; }
.fld { display: grid; grid-template-columns: 128px 1fr auto; gap: 10px; align-items: center; padding: 7px 0; border-top: 1px solid var(--line2); }
.fld:first-of-type { border-top: 0; }
.fld .k { font-size: 12.5px; color: var(--text2); font-weight: 600; }
.fld .k small { display: block; font: 10px var(--mono); color: var(--weak); font-weight: 400; margin-top: 1px; }
.fld input[type=text], .fld input[type=password], .fld input[type=time], .fld input[type=number], .fld select { width: 100%; height: 34px; border-radius: 3px; background: var(--inner); border: 1px solid var(--line); color: var(--text); padding: 0 10px; font: 12.5px var(--mono); }
.fld input:focus, .fld select:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.060); }
.fld .src { font: 700 9.5px var(--mono); letter-spacing: 1px; padding: 2px 6px; border-radius: 2px; white-space: nowrap; }
.src.admin { background: var(--brand-weak); color: var(--brand); } .src.env { background: rgba(0, 212, 255, .1); color: var(--cyan); } .src.none { background: rgba(255, 255, 255, .04); color: var(--weak); }
.set-actions { display: flex; gap: 8px; align-items: center; margin-top: 14px; flex-wrap: wrap; }
.set-actions .grow { flex: 1; }
.test-out { margin-top: 10px; font: 12px/1.6 var(--mono); padding: 8px 10px; border-radius: 3px; background: var(--inner); border-left: 2px solid var(--line); display: none; }
.test-out.ok { display: block; border-left-color: var(--down); color: var(--down); } .test-out.bad { display: block; border-left-color: var(--up); color: var(--up); }
.oauth-steps { counter-reset: s; margin: 12px 0 0; padding: 12px 14px; border: 1px dashed var(--line); border-radius: 4px; }
.oauth-steps .st2 { display: flex; gap: 10px; align-items: center; padding: 6px 0; font-size: 12.5px; }
.oauth-steps .st2::before { counter-increment: s; content: counter(s); width: 20px; height: 20px; border-radius: 2px; background: var(--brand); color: var(--ink); font: 650 11px var(--mono); display: grid; place-items: center; flex: none; }
.expbar { height: 6px; background: var(--line); border-radius: 1px; overflow: hidden; margin-top: 6px; }
.expbar i { display: block; height: 100%; background: var(--down); box-shadow: 0 0 10px var(--down); }
.expbar i.warn { background: var(--warn); box-shadow: 0 0 10px var(--warn); } .expbar i.bad { background: var(--up); box-shadow: 0 0 10px var(--up); }
.ncat-grp { margin-top: 18px; }
.ncat-grp h4 { font: 650 11px var(--mono); letter-spacing: 2px; color: var(--brand); margin: 0 0 8px; }
.ncat { display: grid; grid-template-columns: 44px minmax(0, 1fr) 150px 64px 70px; gap: 12px; align-items: center; padding: 10px 12px; border: 1px solid var(--line2); border-radius: 4px; margin-bottom: 6px; background: var(--inner); transition: border-color .12s, opacity .12s; }
.ncat.off { opacity: .55; }
.ncat:hover { border-color: var(--line); }
.ncat .nm { font-weight: 700; font-size: 13.5px; } .ncat .ds { font-size: 11.5px; color: var(--sub); margin-top: 1px; }
.ncat .th { display: flex; align-items: center; gap: 6px; font: 11px var(--mono); color: var(--sub); }
.ncat .th input { width: 64px; height: 28px; border-radius: 3px; background: var(--card); border: 1px solid var(--line); color: var(--text); padding: 0 8px; font: 700 12px var(--mono); }
.lvl { font: 650 9.5px var(--mono); letter-spacing: 1px; padding: 2px 6px; border-radius: 2px; text-align: center; }
.lvl.info { background: rgba(0, 212, 255, .1); color: var(--cyan); } .lvl.warn { background: var(--warn-weak); color: var(--warn); } .lvl.critical { background: var(--up); color: #fff; }
.nlog { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.nlog td, .nlog th { padding: 8px 10px; border-top: 1px solid var(--line2); text-align: left; vertical-align: top; }
.nlog th { font: 700 10.5px var(--mono); color: var(--sub); letter-spacing: 1px; border-top: 0; }
.nst { font: 650 10px var(--mono); padding: 2px 6px; border-radius: 2px; }
.nst.sent { background: var(--down-weak); color: var(--down); } .nst.skipped { background: rgba(255, 255, 255, .05); color: var(--weak); } .nst.error { background: var(--up-weak); color: var(--up); } .nst.dry_run { background: var(--warn-weak); color: var(--warn); }
.card-preview { border: 1px solid var(--line); border-radius: 6px; overflow: hidden; background: #fff; color: #1f2329; max-width: 360px; font-size: 13px; box-shadow: 0 10px 30px rgba(0, 0, 0, .4); }
.card-preview .hd { padding: 10px 14px; color: #fff; font-weight: 700; }
.card-preview .hd.red { background: #f54a45; } .card-preview .hd.orange { background: #ff8800; } .card-preview .hd.blue { background: #3370ff; }
.card-preview .bd { padding: 12px 14px; line-height: 1.7; } .card-preview .ft { padding: 0 14px 10px; font-size: 11px; color: #8f959e; }

/* ---------- 庆祝 / 提示 ---------- */
.flash-msg { position: fixed; left: 50%; top: 18%; transform: translate(-50%, 0); z-index: 90; padding: 18px 30px; border-radius: 6px; background: #0b0b0e; border: 1px solid var(--brand); box-shadow: var(--shadow), 0 0 40px rgba(255, 255, 255, 0.150); font: 650 20px var(--disp); letter-spacing: 1px; text-align: center; animation: fadeUp .35s var(--ease) both; pointer-events: none; }
.flash-msg small { display: block; font: 12px var(--mono); color: var(--sub); margin-top: 4px; letter-spacing: 0; text-transform: none; }

@media (max-width: 1180px) {
  .mgrid, .cmd, .lib, .cal-below, .desk-low { grid-template-columns: 1fr; }
  .lib-list { position: static; max-height: 360px; }
  .tclk .clock .st span:last-child { display: none; }
  .ncat { grid-template-columns: 44px 1fr 64px; } .ncat .th, .ncat .lvl { display: none; }
}
@media (max-width: 760px) {
  .wcols, .idx-row, .real-card .kp, .kgrid, .sum-card .cols, .acct-tiles, .set-status { grid-template-columns: 1fr 1fr; }
  .top .bar { padding: 10px 14px; flex-wrap: wrap; }
  .page { padding: 18px 14px 90px; }
  .tclk { width: 100%; order: 3; }
  .cmd .hi { font-size: 28px; } .pnl-big .v { font-size: 32px; }
  .fld { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) { #gl { display: none; } .tape .track, .btn-go::after { animation: none; } }

/* ---------- 与旧样式的衔接 ---------- */
.top { display: flex; }
.top h1 { flex: none; }
.top h1::before { content: none; }
.tclk .clock { display: flex; grid-template-columns: none; }
.tclk .clock .st { grid-column: auto; overflow: visible; font-size: 11px; }
.bottom-nav .ico svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.card h3 { font-family: var(--disp); font-size: 15px; letter-spacing: .5px; font-weight: 800; }
.modal { border-radius: 6px; border: 1px solid var(--brand-line); box-shadow: var(--shadow), var(--glow); background: #0b0b0e; }
[data-theme="light"] .modal { background: #fff; }
.modal h3 { font: 650 19px var(--disp); letter-spacing: .5px; }
table.t th { font: 700 10.5px var(--mono); letter-spacing: 1px; }
table.t td.num, table.t td .num { font-weight: 700; }
input, select, textarea { border-radius: 3px; }
.nav a { white-space: nowrap; }

/* =====================================================================================
   OBSIDIAN 收口层：统一覆盖上面的旧样式——更少的装饰、更大的数字、更细的线。
   ===================================================================================== */
body { font-feature-settings: "tnum" 1, "cv11" 1; -webkit-font-smoothing: antialiased; }
.card { border-radius: 12px; }
.card::before { content: none; }
.card:hover { border-color: rgba(255, 255, 255, .14); }
.card.spot::after { background: radial-gradient(420px circle at var(--mx, -999px) var(--my, -999px), rgba(255, 255, 255, .025), transparent 45%); }
.eyebrow { font: 600 11px var(--disp); letter-spacing: .6px; color: var(--sub); }
.eyebrow::before { width: 5px; height: 5px; border-radius: 50%; background: var(--text); box-shadow: none; }
.h-sec h2 { font: 600 20px/1.2 var(--disp); letter-spacing: 0; }
.h-sec .eyebrow { background: none; color: var(--weak); padding: 0; letter-spacing: .8px; }
.btn { border-radius: 999px; font-weight: 550; }
.btn.primary { background: #fff; color: #09090b; border-color: #fff; font-weight: 650; box-shadow: none; }
.btn.primary:hover { background: #e4e4e7; color: #09090b; box-shadow: 0 0 0 4px rgba(255, 255, 255, .08); }
[data-theme="light"] .btn.primary { background: #09090b; color: #fff; border-color: #09090b; }
[data-theme="light"] .btn.primary:hover { background: #27272a; color: #fff; }
.seg { border-radius: 999px; } .seg button { border-radius: 999px; }
.seg button.on { background: var(--text); color: var(--ink); font-weight: 650; }
.pill { border-radius: 999px; }
.live { font: 600 10px var(--disp); letter-spacing: .8px; border-radius: 999px; box-shadow: none; padding: 2px 8px; }

/* 侧栏 */
.side { background: rgba(9, 9, 11, .92); }
.logo .wm b { font: 650 16px/1 var(--disp); letter-spacing: -.2px; }
.logo .wm small { font: 500 10.5px/1.4 var(--disp); color: var(--sub); letter-spacing: .4px; opacity: 1; }
.nav a { border-radius: 8px; font-size: 14px; font-weight: 500; letter-spacing: 0; }
.nav a.on { font-weight: 600; }
.nav a.on .ico { color: var(--text); }
.nav a .en { border-radius: 999px; font: 500 9.5px var(--disp); }
.nav a.on .en { color: var(--ink); background: var(--text); border-color: var(--text); }
.nav .ink { background: rgba(255, 255, 255, .06); border-radius: 8px; }
.nav .ink::before { background: var(--text); width: 2px; border-radius: 2px; }
.side-foot .quote-of-day { border-left: 1px solid rgba(255, 255, 255, .25); padding-left: 12px; font: 400 11.5px/1.65 var(--disp); color: var(--text2); letter-spacing: 0; }
.side-foot .q-en { font-style: italic; color: var(--text); font-size: 11.5px; line-height: 1.6; }
.side-foot .q-cn { margin-top: 6px; color: var(--sub); font-size: 11.5px; }
.side-foot .q-by { margin-top: 6px; color: var(--weak); font-size: 10.5px; letter-spacing: .3px; }

/* 顶栏 */
.top { background: rgba(9, 9, 11, .78); }
.top h1 { font: 600 20px/1.2 var(--disp); letter-spacing: -.2px; }
.top h1 small { font: 500 11px var(--disp); letter-spacing: .6px; color: var(--weak); }
.tclk .clock { border-radius: 999px; background: transparent; }
.tclk .clock .nm { background: none; color: var(--sub); font-weight: 500; padding: 0; font-size: 11px; }
.tclk .clock .tm { font-weight: 600; font-size: 13px; }
.cmdk-btn, .icon-btn { border-radius: 999px !important; }
.gt-chip { display: inline-flex; align-items: center; gap: 8px; height: 28px; padding: 0 12px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .16); font: 600 10.5px var(--disp); letter-spacing: 1.2px; color: var(--text); white-space: nowrap; }
.gt-chip i { width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 3px rgba(255, 255, 255, .12); }
[data-theme="light"] .gt-chip i { background: #09090b; }
.tape { background: transparent; }
.tape .it b { color: var(--text); font-weight: 600; }
.tape .it { border-right: 1px solid var(--line2); }

/* 总览：主舞台 */
.cmd-l { background: var(--card); border-color: var(--line); padding: 30px 32px 28px; }
.cmd-l::after { content: none; }
[data-theme="light"] .cmd-l { background: #fff; }
.cmd .hi { font: 600 34px/1.15 var(--disp); letter-spacing: -.6px; margin: 16px 0 12px; }
.cmd .hi em { color: var(--text); background: linear-gradient(90deg, #fff, #a1a1aa); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
[data-theme="light"] .cmd .hi em { background: linear-gradient(90deg, #09090b, #52525b); -webkit-background-clip: text; background-clip: text; }
.idn { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 12px; color: var(--sub); margin-bottom: 16px; }
.idn span { display: inline-flex; align-items: baseline; gap: 5px; }
.idn b { font: 600 13px var(--num); color: var(--text); }
.cmd .mood { position: relative; padding: 14px 16px 12px; border: 1px solid var(--line2); border-radius: 10px; background: var(--inner); max-width: 760px; font-size: 13.5px; line-height: 1.75; color: var(--text2); }
.cmd .mood .cheer { margin-top: 8px; color: var(--text); font-weight: 550; }
.cmd .mood .mood-src { position: absolute; right: 12px; top: -8px; padding: 0 6px; background: var(--card2); border-radius: 999px; font-size: 10.5px; color: var(--weak); }
.cmd .mood .cur { width: 2px; background: var(--text); }
.pnl-big .l { font: 500 11px var(--disp); letter-spacing: .4px; }
.pnl-big .v { font: 300 44px/1.05 var(--num); letter-spacing: -1.5px; }
.pnl-big .s { font: 500 12.5px var(--num); }
.pnl-big .s .chip { border-radius: 999px; }
.btn-go { height: 46px; padding: 0 26px; border-radius: 999px; background: #fff; color: #09090b; font: 650 15px var(--disp); letter-spacing: .2px; box-shadow: none; }
.btn-go:hover { background: #e4e4e7; box-shadow: 0 0 0 5px rgba(255, 255, 255, .08); transform: none; }
.btn-go::after { content: none; }
.btn-go small { font: 500 11px var(--disp); letter-spacing: 0; opacity: .55; }
[data-theme="light"] .btn-go { background: #09090b; color: #fff; }
.btn-line { height: 46px; border-radius: 999px; font: 550 13.5px var(--disp); letter-spacing: 0; background: transparent; }
.btn-line:hover { border-color: rgba(255, 255, 255, .3); color: var(--text); }
.pulse .bar2 { height: 6px; border-radius: 999px; }
.pulse .bar2 i.u { background: var(--up); box-shadow: none; } .pulse .bar2 i.d { background: var(--down); box-shadow: none; }
.pulse .lbl { font: 500 12px var(--disp); }
.mover { border-radius: 8px; }
.tile .l { font: 500 11px var(--disp); letter-spacing: .3px; }
.tile .v { font: 300 26px/1.2 var(--num); letter-spacing: -.6px; }
.nudge { border-radius: 12px; border-color: var(--line); background: var(--card); }
.mblock .mh .tag { font: 600 11px var(--disp); letter-spacing: .6px; border-radius: 999px; background: var(--text); color: var(--ink); box-shadow: none; }
.mblock .mh h2 { font: 600 24px var(--disp); letter-spacing: -.3px; }
.flash-msg { border-radius: 14px; border-color: rgba(255, 255, 255, .2); box-shadow: var(--shadow); font: 600 18px var(--disp); letter-spacing: 0; background: rgba(12, 12, 15, .96); }
.flash-msg small { color: var(--sub); }
table.t th { font: 500 11px var(--disp); letter-spacing: .3px; }

/* ---------- 策略执行说明书 ---------- */
.ex { padding: 22px 24px 24px; }
.ex-h { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 16px; }
.ex-h h3 { margin: 0; font: 600 18px var(--disp); letter-spacing: -.2px; }
.ex-ans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.ex-ans > div { border: 1px solid var(--line); border-radius: 12px; padding: 14px 16px; background: var(--inner); }
.ex-ans .q, .ex-ai .q { font: 600 12px var(--disp); color: var(--sub); margin-bottom: 8px; letter-spacing: .3px; }
.ex-ans .a { font-size: 13px; line-height: 1.75; color: var(--text2); }
.ex-ans .a b { color: var(--text); font-weight: 600; }
.ex-sec { margin-top: 24px; }
.ex-sec h4 { margin: 0 0 10px; font: 600 14px var(--disp); display: flex; align-items: baseline; gap: 10px; }
.ex-pipe { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; border: 1px solid var(--line2); border-radius: 12px; overflow: hidden; }
.ex-pipe li { display: grid; grid-template-columns: 34px 72px 1fr; gap: 10px; align-items: baseline; padding: 10px 14px; font-size: 13px; color: var(--text2); border-top: 1px solid var(--line2); }
.ex-pipe li:first-child { border-top: 0; }
.ex-pipe li .n { font: 500 13px var(--num); color: var(--weak); }
.ex-pipe li b { color: var(--text); font-weight: 600; }
.ex-uni { display: flex; flex-wrap: wrap; gap: 6px; }
.ex-uni .more { display: none; } .ex-uni.open .more { display: inline-flex; }
.chip2 { display: inline-flex; gap: 6px; align-items: baseline; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--line); font-size: 12px; color: var(--text2); cursor: pointer; background: transparent; transition: border-color .15s, color .15s; }
.chip2 em { font-style: normal; font: 500 10.5px var(--num); color: var(--weak); }
.chip2:hover { border-color: rgba(255, 255, 255, .3); color: var(--text); }
.chip2.all { color: var(--text); }
.ex-exits { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.ex-x { border: 1px solid var(--line2); border-radius: 12px; padding: 12px 14px; }
.ex-bar { height: 4px; border-radius: 999px; background: var(--line2); margin: 8px 0; overflow: hidden; }
.ex-bar i { display: block; height: 100%; border-radius: 999px; background: var(--text); }
.ex-bar i.down { background: var(--down); } .ex-bar i.up { background: var(--up); } .ex-bar i.neu { background: var(--text); opacity: .75; }
.ex-st { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 8px; font: 500 12px var(--num); color: var(--sub); }
.ex-rep { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
.ex-r { border: 1px solid var(--line2); border-radius: 12px; padding: 12px 14px; }
.ex-r .row { gap: 8px; margin-bottom: 6px; }
.ex-kv { display: flex; flex-wrap: wrap; gap: 4px 12px; font: 500 11.5px var(--num); color: var(--sub); margin-top: 6px; }
.ex-cols { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: 24px; }
.ex-risk > div { display: flex; justify-content: space-between; padding: 8px 0; border-top: 1px solid var(--line2); font-size: 13px; color: var(--sub); }
.ex-risk b { color: var(--text); font-weight: 600; font-family: var(--num); }
.ex-params { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px 18px; }
.ex-params .gt { font: 600 11px var(--disp); color: var(--weak); letter-spacing: .6px; margin-bottom: 4px; }
.ex-params .p { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-top: 1px solid var(--line2); font-size: 12px; color: var(--weak); }
.ex-params .p span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ex-params .p b { font: 500 12px var(--num); color: var(--sub); white-space: nowrap; }
.ex-params .p.chg span { color: var(--text2); } .ex-params .p.chg b { color: var(--text); font-weight: 600; }
.ex-ai { margin-top: 12px; border: 1px solid rgba(157, 184, 255, .25); background: rgba(157, 184, 255, .04); border-radius: 12px; padding: 14px 16px; }
.ex-ai .row { gap: 10px; }
.ex-ai-g { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 18px; margin-top: 12px; }
.ex-sleeves { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; margin-top: 12px; }
.ex-sl { border: 1px solid var(--line2); border-radius: 12px; padding: 12px 14px; cursor: pointer; transition: border-color .15s; }
.ex-sl:hover { border-color: rgba(255, 255, 255, .25); }
.pill.purple { color: var(--cyan); background: rgba(157, 184, 255, .1); border-color: rgba(157, 184, 255, .25); }
@media (max-width: 900px) { .ex-ans, .ex-cols, .ex-ai-g { grid-template-columns: 1fr; } }

/* ---------- 弹窗 ---------- */
.modal { border-radius: 16px; border: 1px solid var(--line); box-shadow: var(--shadow); background: #111114; }
.modal.wide { width: 980px; }
.modal h3 { font: 600 17px var(--disp); letter-spacing: -.2px; }

/* ---------- 自选：AI 分析按钮 ---------- */
.wrow { grid-template-columns: minmax(0, 1.5fr) 1fr 90px 74px 22px; }
.wrow .chg { border-radius: 999px; font: 600 12.5px var(--num); }
.wrow .chg.up-bg, .wrow .chg.down-bg { box-shadow: none; }
.wrow .px { font: 500 15px var(--num); }
.wrow .rg .bar i { background: var(--text); box-shadow: none; }
.ai-b { height: 26px; padding: 0 10px; border-radius: 999px; border: 1px solid var(--line); background: transparent; color: var(--text2); font: 550 11.5px var(--disp); cursor: pointer; white-space: nowrap; transition: border-color .15s, color .15s, background .15s; }
.ai-b:hover { border-color: rgba(157, 184, 255, .5); color: var(--text); background: rgba(157, 184, 255, .06); }

/* ---------- 期权结构 ---------- */
.os-intro { max-width: 980px; line-height: 1.75; margin: -4px 0 14px; }
.os-intro b { color: var(--text2); }
.os-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 12px; }
.os { padding: 16px 18px; }
.os .row { gap: 8px; }
.bias { font: 600 11.5px var(--disp); padding: 3px 10px; border-radius: 999px; border: 1px solid var(--line); color: var(--text2); }
.bias.up { color: var(--up); border-color: rgba(245, 71, 91, .35); } .bias.down { color: var(--down); border-color: rgba(34, 195, 126, .35); }
.os-hl { margin: 8px 0 4px; font-size: 13.5px; color: var(--text); font-weight: 550; }
.ladder { position: relative; height: 54px; margin: 8px 6px 4px; }
.ladder .rail { position: absolute; left: 0; right: 0; top: 26px; height: 2px; background: var(--line); border-radius: 2px; }
.ladder .zone { position: absolute; top: 24px; height: 6px; background: rgba(255, 255, 255, .1); border-radius: 999px; }
.ladder .tick { position: absolute; top: 20px; transform: translateX(-50%); }
.ladder .tick i { display: block; width: 1px; height: 14px; background: var(--sub); margin: 0 auto; }
.ladder .tick span { position: absolute; left: 50%; transform: translateX(-50%); white-space: nowrap; font: 500 10.5px var(--num); color: var(--sub); }
.ladder .tick span.t { bottom: 18px; } .ladder .tick span.b { top: 18px; }
.ladder .tick.cw i { background: var(--up); } .ladder .tick.pw i { background: var(--down); } .ladder .tick.fl i { background: var(--cyan); } .ladder .tick.mp span { color: var(--text); }
.ladder .spot { position: absolute; top: 20px; transform: translateX(-50%); }
.ladder .spot i { display: block; width: 12px; height: 12px; border-radius: 50%; background: #fff; box-shadow: 0 0 0 3px rgba(255, 255, 255, .15); }
.os-kv { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12px; color: var(--sub); margin-top: 6px; }
.os-kv b { color: var(--text); font: 550 12px var(--num); }
.os-act { margin-top: 10px; display: grid; gap: 6px; }
.os-act > div { font-size: 12.5px; color: var(--text2); line-height: 1.6; }
.os-act em { font-style: normal; display: inline-block; font: 600 10.5px var(--disp); color: var(--ink); background: var(--text); border-radius: 999px; padding: 1px 8px; margin-right: 8px; }
.os-d h4 { margin: 0 0 8px; font: 600 13.5px var(--disp); }
.os-d-g { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 900px) { .os-d-g { grid-template-columns: 1fr; } }

/* ---------- AI 分析面板 ---------- */
.xmask { position: fixed; inset: 0; background: rgba(0, 0, 0, .55); backdrop-filter: blur(3px); z-index: 60; opacity: 0; transition: opacity .25s; }
.xmask.open { opacity: 1; }
.xpanel { position: fixed; top: 0; right: 0; bottom: 0; width: 620px; max-width: 100vw; z-index: 61; background: #0e0e11; border-left: 1px solid var(--line); box-shadow: var(--shadow); transform: translateX(102%); transition: transform .3s var(--ease); display: flex; flex-direction: column; }
[data-theme="light"] .xpanel { background: #fff; }
.xpanel.open { transform: none; }
.xp-h { display: flex; align-items: flex-start; gap: 12px; padding: 20px 22px 14px; border-bottom: 1px solid var(--line2); }
.xp-h h3 { margin: 6px 0 0; font: 600 20px var(--disp); letter-spacing: -.3px; }
.xp-b { flex: 1; overflow-y: auto; padding: 18px 22px 28px; }
.xp-steps .st { display: flex; align-items: center; gap: 10px; padding: 9px 0; font-size: 13px; color: var(--weak); border-top: 1px solid var(--line2); transition: color .3s; }
.xp-steps .st i { width: 8px; height: 8px; border-radius: 50%; border: 1px solid var(--weak); }
.xp-steps .st.done { color: var(--text2); } .xp-steps .st.done i { background: var(--text); border-color: var(--text); }
.xp-steps .st:not(.done) i { animation: blink 1.2s steps(1) infinite; }
.xp-verdict { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.xp-verdict > div { border: 1px solid var(--line); border-radius: 14px; padding: 14px 16px; background: var(--inner); }
.xp-verdict .big { font: 600 34px/1.15 var(--disp); letter-spacing: -.5px; margin: 4px 0 8px; }
.xp-verdict.up .big { color: var(--up); } .xp-verdict.down .big { color: var(--down); }
.xp-verdict .conf { height: 4px; border-radius: 999px; background: var(--line); overflow: hidden; margin-bottom: 6px; }
.xp-verdict .conf i { display: block; height: 100%; background: var(--text); border-radius: 999px; }
.xp-verdict .act { display: inline-block; font: 650 22px var(--disp); margin: 6px 0 8px; padding: 4px 16px; border-radius: 999px; border: 1px solid var(--line); }
.xp-verdict .act.up { background: var(--up); border-color: var(--up); color: #fff; } .xp-verdict .act.down { background: var(--down); border-color: var(--down); color: #fff; } .xp-verdict .act.neu { background: #fff; color: #09090b; }
.xp-hl { margin: 14px 0 12px; font-size: 14px; line-height: 1.7; color: var(--text); font-weight: 550; }
.xp-plan { display: grid; grid-template-columns: repeat(4, 1fr); border: 1px solid var(--line2); border-radius: 12px; overflow: hidden; }
.xp-plan > div { padding: 10px 12px; border-left: 1px solid var(--line2); display: flex; flex-direction: column; gap: 2px; }
.xp-plan > div:first-child { border-left: 0; }
.xp-plan span { font-size: 11px; color: var(--sub); } .xp-plan b { font: 550 15px var(--num); }
.xp-r { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line2); }
.xp-r > .row { margin-bottom: 6px; } .xp-r > b { display: block; margin-bottom: 6px; font-size: 13.5px; }
.xp-r .small { line-height: 1.7; }
.xp-r .sc { font: 600 11.5px var(--num); padding: 1px 8px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); }
.xp-r .sc.up { color: var(--up); border-color: rgba(245, 71, 91, .35); } .xp-r .sc.down { color: var(--down); border-color: rgba(34, 195, 126, .35); }
.xp-ev { display: grid; grid-template-columns: 44px 1fr; gap: 10px; padding: 8px 0; border-top: 1px dashed var(--line2); }
.xp-ev:first-of-type { border-top: 0; }
.xp-ev .imp { font: 600 10.5px var(--disp); text-align: center; padding: 2px 0; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); height: fit-content; }
.xp-ev .imp.up { color: var(--up); border-color: rgba(245, 71, 91, .35); } .xp-ev .imp.down { color: var(--down); border-color: rgba(34, 195, 126, .35); }
.xp-f { display: flex; align-items: center; gap: 8px; margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--line2); }

/* ---------- 日历：关注清单 + 月历角标 ---------- */
.wwatch { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0 0 18px; }
.wwatch .card { padding: 14px 18px 8px; }
.wwatch .hd { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
.wwatch .hd b { font: 600 14px var(--disp); }
.wi { display: grid; grid-template-columns: 86px 1fr; gap: 12px; align-items: center; padding: 8px 0; border-top: 1px solid var(--line2); cursor: pointer; font-size: 13px; }
.wi:hover .t { color: var(--text); }
.wi .d b { display: block; font: 600 14px var(--num); } .wi .d span { font-size: 11px; color: var(--weak); }
.wi .t { color: var(--text2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wi .k { display: inline-block; font: 600 10.5px var(--disp); padding: 1px 8px; margin-right: 8px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); }
.wi.k-earn .k { color: var(--ink); background: var(--text); border-color: var(--text); }
.wi.k-opex .k, .wi.k-sopex .k { color: var(--cyan); border-color: rgba(157, 184, 255, .35); }
.cal-day .wb { display: flex; flex-wrap: wrap; gap: 3px; margin: 2px 0 3px; }
.cal-day .wb span { font: 600 9.5px var(--num); padding: 1px 5px; border-radius: 999px; white-space: nowrap; }
.cal-day .wb .earn { background: var(--text); color: var(--ink); }
.cal-day .wb .opx { border: 1px solid rgba(157, 184, 255, .45); color: var(--cyan); }
@media (max-width: 900px) { .wwatch { grid-template-columns: 1fr; } }
@media (max-width: 1640px) { .cmdk-btn .t { display: none; } .gt-chip .l2 { display: none; } }
@media (max-width: 1200px) { .gt-chip { display: none; } }

/* ---------- AI 面板：趋势预测 / 规则包 / 多空资金 / 历史 ---------- */
.mask { z-index: 70; }
.fc { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fc-c { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; background: var(--inner); }
.fc-c .d { font: 600 22px var(--disp); margin: 2px 0 4px; } .fc-c .d span { font: 550 13px var(--num); color: var(--sub); margin-left: 8px; }
.fc-c.up .d { color: var(--up); } .fc-c.down .d { color: var(--down); }
.fc-dr { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.fc-dr i { font-style: normal; font-size: 10.5px; color: var(--sub); border: 1px solid var(--line2); border-radius: 999px; padding: 1px 8px; }
.fc-n { margin-top: 10px; font-size: 13px; line-height: 1.7; color: var(--text); padding: 8px 12px; border-left: 2px solid var(--text); background: var(--inner); border-radius: 0 8px 8px 0; }
.rb-hz { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 4px 0 10px; }
.rb-hz b { font: 600 13px var(--num); } .rb-hz b.up { color: var(--up); } .rb-hz b.down { color: var(--down); }
.rb-bar { position: relative; height: 6px; border-radius: 999px; background: var(--line2); margin-top: 6px; }
.rb-bar::after { content: ""; position: absolute; left: 50%; top: -2px; bottom: -2px; width: 1px; background: var(--weak); }
.rb-bar i { position: absolute; top: 0; bottom: 0; border-radius: 999px; } .rb-bar i.up { background: var(--up); } .rb-bar i.down { background: var(--down); }
.rb-g { display: grid; gap: 4px; }
.rb-g > div { display: grid; grid-template-columns: 64px 1fr 40px 52px; align-items: center; gap: 8px; font-size: 12px; color: var(--sub); }
.rb-gb { height: 4px; border-radius: 999px; background: var(--line2); overflow: hidden; } .rb-gb i { display: block; height: 100%; } .rb-gb i.up { background: var(--up); } .rb-gb i.down { background: var(--down); }
.rb-g em { font: 600 12px var(--num); font-style: normal; text-align: right; } .rb-g em.up { color: var(--up); } .rb-g em.down { color: var(--down); }
.rb-f { display: grid; grid-template-columns: 34px 1fr auto; gap: 10px; align-items: start; padding: 7px 0; border-top: 1px dashed var(--line2); }
.rb-f .id { font-size: 10.5px; color: var(--weak); padding-top: 2px; }
.rb-f .sc { font: 600 11.5px var(--num); padding: 1px 8px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); }
.rb-f .sc.up { color: var(--up); border-color: rgba(245, 71, 91, .35); } .rb-f .sc.down { color: var(--down); border-color: rgba(34, 195, 126, .35); }
.rb-his { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; }
.rb-his > div { border: 1px solid var(--line2); border-radius: 10px; padding: 8px 12px; }
.rb-his b { font: 600 18px var(--num); } .rb-his b.up { color: var(--up); } .rb-his b.down { color: var(--down); }
.mn-d { display: inline-flex; gap: 3px; vertical-align: middle; margin-left: 4px; }
.mn-d i { width: 8px; height: 8px; border-radius: 50%; border: 1px solid var(--line); } .mn-d i.up { background: var(--up); border-color: var(--up); } .mn-d i.down { background: var(--down); border-color: var(--down); }
.hs-k { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 4px 0 8px; }
.hs-k > div { border: 1px solid var(--line2); border-radius: 10px; padding: 8px 12px; display: flex; flex-direction: column; gap: 1px; }
.hs-k span { font-size: 11px; color: var(--sub); } .hs-k b { font: 600 16px var(--num); } .hs-k b.up { color: var(--up); } .hs-k b.down { color: var(--down); } .hs-k em { font-style: normal; font-size: 11px; color: var(--weak); }
.hs-e { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; color: var(--sub); margin-bottom: 6px; } .hs-e b { font: 600 12px var(--num); }

/* ---------- 模拟仓 AI 复盘官 ---------- */
.srv { padding: 18px 22px; }
.srv h4, .rv-h { margin: 0 0 8px; font: 600 13.5px var(--disp); }
.rv-h { margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--line2); }
.rv-score { text-align: right; margin: 0 12px; } .rv-score b { font: 600 30px var(--num); display: block; line-height: 1; } .rv-score span { font-size: 11px; color: var(--sub); }
.rv-score b.up { color: var(--up); } .rv-score b.down { color: var(--down); }
.rv-concl { margin-top: 12px; font-size: 13.5px; line-height: 1.8; color: var(--text); }
.rv-k { grid-template-columns: repeat(6, 1fr); margin-top: 14px; }
.rv-g { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 18px; }
.rv-chk { display: grid; grid-template-columns: 20px 1fr; gap: 8px; padding: 5px 0; }
.rv-chk > span { width: 18px; height: 18px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; border: 1px solid var(--line); color: var(--sub); }
.rv-chk .ok { color: var(--ink); background: var(--text); border-color: var(--text); } .rv-chk .no { color: #fff; background: var(--up); border-color: var(--up); }
.rv-dir { font-size: 12.5px; padding: 6px 12px; margin-bottom: 5px; border: 1px solid var(--line); border-radius: 999px; color: var(--text); width: fit-content; max-width: 100%; }
.rv-tr { display: grid; gap: 2px; }
.rv-t { display: flex; gap: 12px; padding: 10px 0; border-top: 1px dashed var(--line2); }
.rv-t:first-child { border-top: 0; }
.rv-t .gd { flex: none; width: 28px; height: 28px; border-radius: 8px; display: grid; place-items: center; font: 700 14px var(--disp); border: 1px solid var(--line); color: var(--sub); }
.rv-t .gd.up { color: var(--up); border-color: rgba(245, 71, 91, .4); } .rv-t .gd.down { color: var(--down); border-color: rgba(34, 195, 126, .4); }
.rv-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 6px; font-size: 12px; color: var(--text2); line-height: 1.6; }
.rv-3 span { display: block; font-size: 10.5px; color: var(--weak); letter-spacing: .5px; }
.rv-chg { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.rv-chg > span { font-size: 11.5px; color: var(--text2); border: 1px solid var(--line2); border-radius: 999px; padding: 3px 10px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rv-chg b { color: var(--text); margin-right: 4px; } .rv-chg em { font-style: normal; font-family: var(--num); color: var(--sub); }
.rv-l { display: flex; gap: 14px; align-items: center; padding: 8px 0; border-top: 1px solid var(--line2); }
.rv-l .st { display: inline-block; font: 600 10.5px var(--disp); padding: 1px 8px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); margin-right: 6px; }
.rv-l.v .st { background: var(--text); color: var(--ink); border-color: var(--text); } .rv-l.a .st { color: var(--text); border-color: var(--text); }
.rv-l.x { opacity: .5; } .rv-l.x .small { text-decoration: line-through; }
.rv-l .cf { flex: none; width: 110px; display: flex; align-items: center; gap: 8px; font: 550 11.5px var(--num); color: var(--sub); }
.rv-l .cb { flex: 1; height: 4px; border-radius: 999px; background: var(--line2); overflow: hidden; } .rv-l .cb i { display: block; height: 100%; background: var(--text); }
.rv-hi { display: grid; grid-template-columns: 84px 36px 1fr; gap: 8px; align-items: center; padding: 5px 0; border-top: 1px dashed var(--line2); cursor: pointer; transition: background .15s; }
.rv-hi:hover { background: var(--inner); } .rv-hi b { font: 600 13px var(--num); } .rv-hi b.up { color: var(--up); } .rv-hi b.down { color: var(--down); }
.rv-hi .small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rv-dg { padding: 16px 20px; }
.rv-dg-it { display: flex; gap: 14px; align-items: flex-start; padding: 12px 0; border-top: 1px solid var(--line2); cursor: pointer; transition: background .15s; }
.rv-dg-it:first-of-type { margin-top: 10px; } .rv-dg-it:hover { background: var(--inner); }
.rv-dg-it .sc10 { flex: none; width: 44px; height: 44px; border-radius: 12px; border: 1px solid var(--line); display: grid; place-items: center; font: 600 16px var(--num); }
.rv-dg-it .sc10.up { color: var(--up); } .rv-dg-it .sc10.down { color: var(--down); }
.rv-dg-it .r { text-align: right; flex: none; line-height: 1.7; }
@media (max-width: 900px) { .rv-g, .rv-3, .fc, .rb-hz, .rb-his { grid-template-columns: 1fr; } .rv-k { grid-template-columns: repeat(3, 1fr); } .hs-k { grid-template-columns: 1fr 1fr; } }

/* ===== Stock-Fit 个股专属策略 ===== */
.sf { padding: 18px 22px; }
.sf h4 { margin: 0 0 8px; font: 700 13px var(--sans, inherit); letter-spacing: .3px; }
.sf-h { margin-top: 22px !important; padding-top: 14px; border-top: 1px solid var(--line2); }
.sf-ok { color: var(--text); border-color: color-mix(in srgb, var(--text) 35%, transparent); }
.sf-no { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
.sf-sig { min-width: 190px; padding: 10px 14px; border: 1px solid var(--line2); border-radius: 4px; background: var(--inner); display: flex; flex-direction: column; gap: 4px; }
.sf-sig b { font-size: 15px; } .sf-sig.on { border-color: color-mix(in srgb, var(--up) 45%, transparent); } .sf-sig.on b { color: var(--up); }
.sf-rule { margin: 12px 0 4px; padding: 10px 14px; border-left: 2px solid var(--cyan); background: var(--inner); border-radius: 0 4px 4px 0; font-size: 13px; line-height: 1.75; }
.sf-g { display: grid; grid-template-columns: 1.25fr 1fr; gap: 22px; margin-top: 16px; }
.sf-g3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 10px; }
.sf-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.sf-tags span { font-size: 12px; padding: 3px 10px; border: 1px solid var(--line); border-radius: 999px; color: var(--text2); }
.sf-k { grid-template-columns: repeat(3, 1fr); margin: 8px 0 10px; }
.sf-ai { margin-top: 10px; padding: 8px 12px; border: 1px dashed color-mix(in srgb, var(--purple) 45%, transparent); border-radius: 4px; font-size: 12.5px; line-height: 1.7; }
.sf-ai b { color: var(--purple); margin-right: 6px; }
.sf-gate { display: flex; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line2); }
.sf-gate > span { width: 20px; height: 20px; flex: none; border-radius: 50%; display: grid; place-items: center; font: 700 11px var(--mono); border: 1px solid currentColor; }
.sf-gate .ok { color: var(--text2); } .sf-gate .no { color: #ff6b6b; } .sf-gate .warn { color: var(--warn); }
.sf-t { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.sf-t th { font: 700 10.5px var(--mono); color: var(--sub); text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--line); letter-spacing: .5px; }
.sf-t td { padding: 6px 8px; border-bottom: 1px solid var(--line2); font-variant-numeric: tabular-nums; }
.sf-t .r { text-align: right; } .sf-t tr.on td { background: color-mix(in srgb, var(--cyan) 8%, transparent); } .sf-t tr.bh td { color: var(--sub); }
.sf-t.wide td:last-child { max-width: 420px; }
.sf-years { display: grid; grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 8px; }
.sf-years > div { border: 1px solid var(--line2); border-radius: 4px; padding: 8px 10px; display: flex; flex-direction: column; gap: 2px; font-size: 12px; background: var(--inner); }
.sf-years > div.win { border-color: color-mix(in srgb, var(--up) 35%, transparent); }
.sf-years b { font: 700 12px var(--mono); } .sf-years span { font: 650 15px var(--mono); } .sf-years em { font-style: normal; color: var(--sub); font-size: 11px; }
.sf-years i { font-style: normal; font: 10px var(--mono); color: var(--weak); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-leg { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 6px; font-size: 11.5px; color: var(--sub); }
.sf-leg i, .sf-dot { display: inline-block; width: 10px; height: 3px; border-radius: 2px; margin-right: 6px; vertical-align: middle; }
.sf-imp { display: grid; grid-template-columns: 130px 1fr 44px; gap: 8px; align-items: center; padding: 2px 0; }
.sf-imp > div { height: 6px; background: var(--line2); border-radius: 3px; overflow: hidden; } .sf-imp i { display: block; height: 100%; background: #5fd4d0; }
.sf-imp em { font: 10.5px var(--mono); font-style: normal; color: var(--sub); text-align: right; }
.sf-an { display: flex; flex-wrap: wrap; gap: 6px; } .sf-an span { font: 11px var(--mono); padding: 3px 8px; border: 1px solid var(--line2); border-radius: 3px; color: var(--sub); }
.sf-list { margin-top: 14px; display: flex; flex-direction: column; gap: 8px; }
.sf-li { display: flex; gap: 14px; align-items: center; padding: 12px 14px; border: 1px solid var(--line2); border-radius: 4px; color: inherit; text-decoration: none; transition: border-color .15s, background .15s; }
.sf-li:hover { border-color: var(--line); background: var(--inner); } .sf-li .r { text-align: right; min-width: 150px; }
.sf-mini { padding: 12px 18px; }
.sf-prog { height: 4px; background: var(--line2); border-radius: 2px; overflow: hidden; margin-bottom: 12px; } .sf-prog i { display: block; height: 100%; background: var(--brand); transition: width .4s; }
.sf-steps { max-height: 280px; overflow: auto; font-size: 12.5px; line-height: 1.9; }
@media (max-width: 900px) { .sf-g, .sf-g3 { grid-template-columns: 1fr; } .sf-k { grid-template-columns: repeat(2, 1fr); } }

/* ===== X 博主评论 ===== */
.xcard { padding: 16px 20px; }
.xbar { gap: 10px; align-items: center; flex-wrap: wrap; }
.xlogo { width: 28px; height: 28px; border-radius: 6px; display: grid; place-items: center; background: var(--text); color: var(--card); font: 700 15px var(--mono); flex: none; }
.xwho, .xhot { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 12px; align-items: center; }
.xwho button { font-size: 12px; padding: 3px 10px; border-radius: 999px; border: 1px solid var(--line); background: transparent; color: var(--sub); cursor: pointer; transition: all .15s; }
.xwho button.on, .xwho button:hover { color: var(--text); border-color: var(--text2); }
.xhot a { font: 11.5px var(--mono); padding: 2px 8px; border: 1px solid var(--line2); border-radius: 999px; color: var(--text2); text-decoration: none; }
.xhot a em { font-style: normal; color: var(--weak); margin-left: 3px; } .xhot a.on { border-color: var(--cyan); color: var(--cyan); }
.xlist { display: flex; flex-direction: column; gap: 10px; }
.xlist.two { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: start; }
.xpost { border: 1px solid var(--line2); border-radius: 8px; padding: 12px 14px; background: var(--inner); transition: border-color .15s; min-width: 0; }
.xpost:hover { border-color: var(--line); }
.xhd { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 13px; }
.xhd img, .xav { width: 22px; height: 22px; border-radius: 50%; flex: none; background: var(--line2); display: inline-block; }
.xtx { margin: 8px 0 6px; font-size: 13.5px; line-height: 1.7; white-space: pre-wrap; word-break: break-word; color: var(--text); }
.xtx a { color: var(--cyan); text-decoration: none; } .xtx a:hover { text-decoration: underline; }
.xft { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.xtag { font: 11px var(--mono); color: var(--cyan) !important; text-decoration: none; }
.xft .xtag { padding: 1px 6px; border: 1px solid var(--line2); border-radius: 999px; }
.xsrc { font-size: 10.5px; padding: 1px 6px; border-radius: 999px; border: 1px dashed var(--line); color: var(--weak); }
.xbadge { margin-left: 6px; font: 600 10.5px var(--mono); padding: 1px 6px; border-radius: 999px; border: 1px solid var(--line); color: var(--text2); text-decoration: none; vertical-align: middle; }
@media (max-width: 900px) { .xlist.two { grid-template-columns: 1fr; } }

/* ===== 学习资料 ===== */
.lrn-hero { padding: 18px 22px; }
.lrn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.lrn-t { padding: 14px 16px; color: inherit; text-decoration: none; display: flex; flex-direction: column; min-width: 0; }
.lrn-t:hover { border-color: var(--line); }
.lrn-nm { font-size: 15px; font-weight: 650; }
.lrn-idea { line-height: 1.7; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.lrn-q { margin: 8px 0 0; padding-left: 10px; border-left: 2px solid var(--line); font-size: 12.5px; color: var(--sub); line-height: 1.7; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.lrn-sk { margin-top: auto; padding-top: 10px; display: flex; flex-wrap: wrap; gap: 6px; }
.lrn-chip { font-size: 12px; padding: 3px 10px; border: 1px solid var(--line2); border-radius: 999px; color: var(--text2); cursor: pointer; transition: border-color .15s; }
.lrn-chip:hover { border-color: var(--text2); }
.lrn-b { font: 600 11px var(--mono); color: var(--sub); } .lrn-b.win { color: var(--up); }
.lrn-quotes { columns: 3 320px; column-gap: 12px; }
.lrn-qc { display: block; break-inside: avoid; margin-bottom: 12px; padding: 14px 16px; color: inherit; text-decoration: none; }
.lrn-qt { font-size: 14px; line-height: 1.7; color: var(--text); }
.lrn-cols .lrn-col { padding: 14px 18px; } .lrn-col h4 { margin: 0 0 8px; font-size: 13px; }
.lrn-li { font-size: 13px; line-height: 1.75; padding: 3px 0; color: var(--text2); }
.lrn-q2 { padding: 8px 0; border-bottom: 1px solid var(--line2); font-size: 13px; line-height: 1.7; } .lrn-q2:last-child { border: 0; }
.lrn-warn { padding: 12px 18px; font-size: 13px; border-left: 2px solid var(--warn); } .lrn-warn b { color: var(--warn); margin-right: 6px; }
.lrn-skill { padding: 14px 18px; margin-bottom: 10px; }
.lrn-cmp { margin-top: 10px; font-size: 12.5px; color: var(--text2); padding: 8px 12px; border: 1px dashed var(--line); border-radius: 4px; }
.lrn-card { padding: 16px 20px; } .lrn-card pre { margin: 10px 0 0; padding: 12px 14px; background: var(--inner); border: 1px solid var(--line2); border-radius: 4px; font: 12px/1.7 var(--mono); white-space: pre-wrap; max-height: 420px; overflow: auto; color: var(--text2); }
.sf-an a { text-decoration: none; }

/* 期权投机实验室 */
.opt-live { color: var(--up); border-color: color-mix(in srgb, var(--up) 45%, transparent); }
.opt-log { max-height: 460px; overflow: auto; display: flex; flex-direction: column; gap: 5px; }
.opt-log > div { line-height: 1.6; word-break: break-word; }

/* ====================== 总览 v10：注意力优先（数字 + 图，少文字） ====================== */
.cmd .hi { margin: 14px 0 6px; }
.pnl-big { margin: 18px 0 16px; }
.pnl-big .s { display: flex; align-items: center; gap: 4px; }
.tile .v { margin-top: 6px; }
.xbar { height: 4px; background: var(--line); border-radius: 999px; overflow: hidden; margin-top: 10px; }
.xbar i { display: block; height: 100%; background: var(--brand); border-radius: 999px; }
.tile .s { font-size: 11px; color: var(--weak); margin-top: 4px; }
/* 持仓热力条 */
.hs-w { display: flex; flex-direction: column; gap: 6px; margin: 0 0 18px; }
.hs-r { display: flex; align-items: center; gap: 8px; }
.hs-l { font: 700 10px var(--mono); color: var(--weak); width: 18px; letter-spacing: 1px; }
.hs { flex: 1; display: flex; gap: 2px; height: 34px; border-radius: 6px; overflow: hidden; }
.hs-b { min-width: 0; display: flex; flex-direction: column; justify-content: center; padding: 0 6px; cursor: pointer; color: #fff; transition: filter .15s; overflow: hidden; }
.hs-b:hover { filter: brightness(1.2); }
.hs-b span { font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: .9; }
.hs-b b { font: 650 11px var(--mono); white-space: nowrap; }
/* 情绪晴雨表 */
.baro { padding: 16px 18px; }
.baro .lnk { background: none; border: 0; color: var(--sub); cursor: pointer; padding: 0; }
.baro .lnk:hover { color: var(--text); }
.baro-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 10px; }
.baro-m { padding: 10px 12px 12px; border: 1px solid var(--line2); border-radius: 10px; background: var(--inner); cursor: pointer; transition: border-color .15s; min-width: 0; }
.baro-m:hover { border-color: var(--brand-line); }
.baro-m .bh { display: flex; align-items: center; font-size: 13px; }
.bcall { font: 650 11px var(--mono); padding: 2px 8px; border-radius: 999px; background: rgba(255, 255, 255, .06); color: var(--sub); white-space: nowrap; }
.bcall.up { background: rgba(245, 71, 91, .14); color: var(--up); } .bcall.down { background: rgba(34, 195, 126, .14); color: var(--down); }
.gw { position: relative; margin-top: 4px; }
.gw .gv { position: absolute; left: 0; right: 0; bottom: 0; text-align: center; line-height: 1; }
.gw .gv b { display: block; font: 650 30px var(--mono); letter-spacing: -1px; }
.gw .gv span { font-size: 11.5px; color: var(--sub); }
.gw .gv i { font: normal 650 10px var(--mono); margin-left: 4px; }
.gw.big .gv b { font-size: 46px; } .gw.big .gv span { font-size: 13px; }
.gw.big .bcall { display: inline-block; margin-top: 10px; }
.g-on { animation: gdraw .9s var(--ease) both; stroke-dasharray: 400; }
@keyframes gdraw { from { stroke-dashoffset: 400; } to { stroke-dashoffset: 0; } }
.bgr { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 10px; margin-top: 10px; }
.bgr > div { display: flex; align-items: center; gap: 6px; font-size: 11px; color: var(--sub); }
.bgr span { width: 24px; flex: none; }
.bb { flex: 1; height: 5px; background: var(--line); border-radius: 999px; overflow: hidden; }
.bb i { display: block; height: 100%; border-radius: 999px; }
.dots { display: flex; gap: 2px; margin-top: 10px; flex-wrap: nowrap; }
.dots i { flex: 1; height: 8px; min-width: 2px; border-radius: 2px; background: var(--line); }
.dots i.ok { background: var(--down); } .dots i.no { background: var(--up); } .dots i.wait { background: var(--warn); opacity: .7; }
.bacc { font: 600 11px var(--mono); margin-top: 6px; color: var(--sub); }
.bacc b { color: var(--text); font-size: 13px; }
/* A股 / 美股 tab */
.mk-tabs { display: flex; gap: 8px; margin: 30px 0 12px; }
.mk-tabs button { display: inline-flex; align-items: center; gap: 8px; padding: 8px 16px; border-radius: 999px; border: 1px solid var(--line); background: var(--card); color: var(--sub); font: 600 14px var(--disp); cursor: pointer; transition: all .15s; }
.mk-tabs button b { font: 650 12px var(--mono); }
.mk-tabs button.on { color: var(--text); border-color: var(--text); background: var(--inner); }
.mk-tabs .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--weak); }
.mk-tabs .dot.on { background: var(--up); box-shadow: 0 0 8px var(--up); } .mk-tabs .dot.pre { background: var(--warn); }
.mblock { margin-top: 0; }
/* AI 研判卡（可视化） */
.ai-card .stance { font-size: 36px; margin: 8px 0 2px; }
.conf { display: flex; gap: 3px; margin-bottom: 10px; } .conf i { width: 14px; height: 4px; border-radius: 999px; background: var(--line); } .conf i.on { background: var(--cyan); }
.dims { display: flex; flex-direction: column; gap: 5px; margin: 6px 0 10px; }
.dm { display: grid; grid-template-columns: 34px 1fr 22px; align-items: center; gap: 8px; font-size: 12px; color: var(--sub); }
.dm b { font: 650 12px var(--mono); text-align: right; }
.dbar { position: relative; height: 8px; background: var(--line2); border-radius: 999px; }
.dbar::after { content: ""; position: absolute; left: 50%; top: -2px; bottom: -2px; width: 1px; background: var(--weak); opacity: .5; }
.dbar i { position: absolute; top: 0; bottom: 0; border-radius: 999px; }
.dbar i.p { background: var(--up); } .dbar i.n { background: var(--down); }
.sgs, .hcs { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 8px; }
.sg { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; padding: 3px 9px 3px 4px; border-radius: 999px; background: var(--inner); border: 1px solid var(--line2); color: var(--text2); max-width: 100%; }
.sg i { font: normal 700 9.5px var(--mono); width: 16px; height: 16px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; background: var(--line); color: var(--sub); flex: none; }
.sg.p { border-color: rgba(245, 71, 91, .35); } .sg.p i { background: var(--up); color: #fff; }
.sg.n { border-color: rgba(34, 195, 126, .35); } .sg.n i { background: var(--down); color: #fff; }
.cfl { font-size: 11.5px; color: var(--warn); margin-bottom: 8px; }
.hc { font-size: 11.5px; color: var(--text2); display: inline-flex; align-items: center; gap: 4px; }
.intel { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.intel > div { font: 600 10.5px var(--mono); color: var(--weak); }
.mb { display: flex; height: 4px; border-radius: 999px; overflow: hidden; background: var(--line); margin-top: 4px; }
.mb i.p { background: var(--up); } .mb i.n { background: var(--down); }
/* 事件时间轴 */
.tl { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); padding: 0; overflow: hidden; }
.tl-d { padding: 10px 8px 12px; border-left: 1px solid var(--line2); min-height: 92px; min-width: 0; }
.tl-d:first-child { border-left: 0; }
.tl-d.today { background: var(--inner); } .tl-d.we { opacity: .6; }
.tl-h { display: flex; align-items: baseline; gap: 6px; margin-bottom: 8px; } .tl-h b { font: 650 16px var(--mono); } .tl-h span { font-size: 11px; color: var(--weak); }
.tl-ev { display: flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--text2); padding: 3px 0; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tl-ev:hover { color: var(--text); }
.tl-ev i { width: 6px; height: 6px; border-radius: 50%; flex: none; background: var(--weak); }
.tl-ev i.cn { background: var(--up); } .tl-ev i.us { background: var(--cyan); } .tl-ev i.gl { background: var(--warn); }
.tl-ev.imp3 { font-weight: 650; color: var(--text); }
.tl-more { font-size: 10.5px; color: var(--weak); }
/* 模拟盘小卡 */
.sim-mini { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.sm-it { padding: 12px 14px; cursor: pointer; transition: border-color .15s; } .sm-it:hover { border-color: var(--brand-line); }
.sm-it .n { font-size: 12.5px; color: var(--sub); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 6px; }
.sm-it .row b { font: 650 18px var(--mono); } .sm-it .t { font: 600 11px var(--mono); margin-top: 2px; }
/* 晴雨表详情弹窗 */
.baro-x .seg { margin-bottom: 12px; }
.bx-top { display: flex; gap: 20px; align-items: center; }
.bx-top .gw { width: 240px; flex: none; text-align: center; }
.bx-top .grow { flex: 1; min-width: 0; }
.bx-g { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; margin-top: 14px; }
.bx-t { font-size: 13px; font-weight: 650; margin-bottom: 8px; }
.cp { display: grid; grid-template-columns: 30px 88px 1fr 28px; align-items: center; gap: 8px; font-size: 12.5px; padding: 4px 0; }
.cp .g { font-size: 10.5px; color: var(--weak); } .cp b { font: 650 12px var(--mono); text-align: right; }
.zb { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; text-align: center; }
.zb .bar { height: 90px; display: flex; align-items: flex-end; background: var(--inner); border-radius: 6px; overflow: hidden; }
.zb .bar i { display: block; width: 100%; border-radius: 6px 6px 0 0; opacity: .85; }
.zb b { display: block; font: 650 13px var(--mono); margin-top: 4px; } .zb span { font-size: 11px; color: var(--weak); }
.bx-k { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.bx-k > div { background: var(--inner); border-radius: 8px; padding: 10px; text-align: center; }
.bx-k b { display: block; font: 650 20px var(--mono); } .bx-k span { font-size: 11px; color: var(--weak); }
.baro-x .bar2 { display: flex; height: 10px; border-radius: 999px; overflow: hidden; background: var(--line); }
.baro-x .bar2 i { display: block; height: 100%; } .baro-x .bar2 .u { background: var(--up); } .baro-x .bar2 .d { background: var(--down); } .baro-x .bar2 .f { background: var(--weak); opacity: .4; }
.lbl2 { display: flex; justify-content: space-between; gap: 8px; font: 600 11.5px var(--mono); margin-top: 6px; color: var(--sub); }
@media (max-width: 900px) {
  .baro-2, .bx-g { grid-template-columns: 1fr; }
  .tl { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .bx-top { flex-direction: column; }
}
.sg { overflow: hidden; } .sg { white-space: nowrap; text-overflow: ellipsis; max-width: 220px; }
.dots i { max-width: 12px; }
.bx-top .gw { width: auto; } .bx-gc { width: 240px; flex: none; }
.ai-bare .ai-card { border: 0; background: none; padding: 0; } .ai-bare .ai-card > .row:first-child { display: none; }
.hl1 { font-size: 13px; color: var(--text2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 6px; }
.hs-b { color: var(--text); }
.xbadge { white-space: nowrap; cursor: pointer; } .wrow .nm b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 160px; display: inline-block; vertical-align: middle; }

/* ====================== v11：按钮去「AI 味」——细线、直角偏小圆角、文字型分段、黄铜色点缀 ====================== */
:root { --accent: #c9a36a; --accent-weak: rgba(201, 163, 106, .14); }
[data-theme="light"] { --accent: #8a5a1f; --accent-weak: rgba(138, 90, 31, .10); }
.btn { height: 32px; padding: 0 14px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; border-radius: 6px; border: 1px solid var(--line);
  background: transparent; color: var(--text); font: 500 13px var(--disp); letter-spacing: .02em; box-shadow: none; transition: background .15s, border-color .15s, color .15s; }
.btn:hover { background: var(--inner); border-color: var(--sub); color: var(--text); box-shadow: none; }
.btn:active { transform: translateY(1px); }
.btn .rip { display: none; }
.btn.sm { height: 26px; padding: 0 10px; font-size: 12px; }
.btn.primary { background: var(--text); color: var(--bg); border-color: var(--text); font-weight: 600; box-shadow: inset 0 -2px 0 var(--accent); }
.btn.primary:hover { background: var(--text); color: var(--bg); box-shadow: inset 0 -3px 0 var(--accent); }
[data-theme="light"] .btn.primary, [data-theme="light"] .btn.primary:hover { background: #1c1b19; color: #faf8f4; border-color: #1c1b19; }
.btn.ghost { border-color: transparent; color: var(--sub); }
.btn.ghost:hover { background: transparent; color: var(--text); text-decoration: underline; text-underline-offset: 5px; text-decoration-color: var(--accent); }
.btn.danger { background: transparent; color: var(--up); border-color: rgba(245, 71, 91, .45); }
.btn.danger:hover { background: rgba(245, 71, 91, .08); }
.icon-btn { width: 32px; height: 32px; border-radius: 6px !important; background: transparent; }
.icon-btn:hover { border-color: var(--sub); }
/* 分段控件：文字 + 下划线指示，不再是填充胶囊 */
.seg { background: transparent !important; border: 0 !important; border-radius: 0 !important; padding: 0; gap: 2px; border-bottom: 1px solid var(--line2) !important; }
.seg button { border-radius: 0 !important; padding: 5px 10px 7px; background: transparent !important; color: var(--sub); font-weight: 500; box-shadow: none !important; position: relative; }
.seg button:hover { color: var(--text); }
.seg button.on { color: var(--text) !important; font-weight: 600; background: transparent !important; }
.seg button.on::after { content: ""; position: absolute; left: 10px; right: 10px; bottom: -1px; height: 2px; background: var(--accent); }
/* 总览 A股 / 美股 tab：同样的编辑式下划线 */
.mk-tabs { gap: 22px; border-bottom: 1px solid var(--line2); }
.mk-tabs button { border: 0; border-radius: 0; background: transparent; padding: 6px 0 10px; font: 600 16px var(--disp); position: relative; color: var(--sub); }
.mk-tabs button.on { background: transparent; color: var(--text); }
.mk-tabs button.on::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--accent); }
/* 总览：复盘按钮挨着盈亏；每日一句 */
.rv-btn { margin-left: 8px; height: 22px; padding: 0 9px; border-radius: 5px; border: 1px solid var(--line); background: transparent; color: var(--sub); font: 500 11.5px var(--disp); cursor: pointer; transition: all .15s; }
.rv-btn:hover { color: var(--text); border-color: var(--sub); }
.rv-btn.due { color: var(--accent); border-color: var(--accent); }
.rv-btn.due::before { content: ""; display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); margin-right: 5px; vertical-align: 1px; }
.cheer-line { margin-top: 6px; min-height: 56px; font: 500 19px/1.6 var(--disp); letter-spacing: .02em; color: var(--text); max-width: 680px; }
.cheer-line .cur { display: inline-block; width: 2px; height: 20px; background: var(--accent); margin-left: 3px; vertical-align: -3px; animation: blink 1s steps(1) infinite; }
/* 指数卡片：分时 */
.idx .ixm { grid-column: 1 / -1; margin-top: 8px; min-height: 58px; }
.idx .ixt { display: flex; justify-content: space-between; font: 500 9.5px var(--mono); color: var(--weak); margin-top: 2px; }

/* ---------- v12：策略库（静态 / AI · 排序 · 简介卡）+ 加密 ---------- */
.lib-sort{display:inline-flex;align-items:center;gap:6px;margin-left:6px}
.lib-sort select{height:28px;font-size:12px;padding:0 8px;border-radius:999px}
.lib-hint{margin:-4px 0 12px;line-height:1.6}
.lib-it .lib-rk{display:inline-block;min-width:18px;margin-right:6px;color:var(--weak);font-size:11px}
.lib-it .tg{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.lib-it .tg i{font-style:normal;font-size:10.5px;line-height:16px;padding:0 6px;border-radius:999px;border:1px solid var(--line);color:var(--text2)}
.lib-it .tg i.ai,.cr-s i.ai{border-color:color-mix(in srgb,var(--purple) 50%,transparent);color:var(--purple)}
.intro{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:var(--inner)}
.intro-p{font-size:13.5px;line-height:1.8;color:var(--text)}
.intro-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line2)}
.intro-g>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.intro-g .k{font-size:11px;color:var(--weak)}
.intro-g b{font-size:13px;font-weight:600}
.intro-g b.ai{color:var(--purple)}
.intro-g .s{font-size:11.5px;color:var(--text2);line-height:1.6;overflow-wrap:anywhere}
@media (max-width:900px){.intro-g{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cr-wall{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px}
.cr-q{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:var(--card)}
.cr-q .n{font-weight:600;font-size:13px}.cr-q .n span{font-weight:400;font-size:11px;color:var(--weak);margin-left:6px}
.cr-q .p{font-size:15px;margin-top:4px}.cr-q .c{font-size:12px}
.cr-card{padding:14px 16px}.cr-card .l{font-size:12px;color:var(--weak)}.cr-card .v{font-size:22px;font-weight:600;margin:4px 0}.cr-card .s{font-size:12px;color:var(--text2);line-height:1.7}
.cr-sig{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px;margin-top:10px}
.cr-s{display:flex;flex-direction:column;gap:3px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:inherit;text-decoration:none;transition:border-color .15s}
.cr-s:hover{border-color:var(--accent)}
.cr-s i{font-style:normal;font-size:10px;padding:0 5px;border-radius:999px;border:1px solid;align-self:flex-start}
.cr-syms{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
.cr-syms>div{display:flex;flex-direction:column;border:1px solid var(--line2);border-radius:8px;padding:8px 10px}
.sim.on{border-color:var(--accent)}

/* ---------- v13：减负 —— 详情只留 4 个核心数，其余进标签页 / 折叠 ---------- */
.lib-it{padding:9px 12px;grid-template-columns:1fr 72px}
.lib-it .n{font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px;-webkit-line-clamp:unset}
.lib-it .n i{font-style:normal;font-size:10px;line-height:15px;padding:0 5px;border-radius:999px;border:1px solid var(--line);color:var(--sub);font-weight:500;flex:none}
.lib-it .n i.ai{border-color:color-mix(in srgb,var(--purple) 45%,transparent);color:var(--purple)}
.lib-it .m{font-size:11px;font-weight:500;gap:8px}
.lib-it .m b{font-weight:650}
.kgrid.k4{grid-template-columns:repeat(4,1fr)}
.dt{padding:18px 22px}
.dt-h{display:flex;align-items:flex-start;gap:8px}
.dt-tag{font-size:11.5px;color:var(--weak)}
.lib-detail .dt .ttl{font-size:22px;margin:2px 0 6px}
.dt-p{font-size:13px;line-height:1.75;color:var(--text2);max-width:880px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;cursor:pointer}
.dt-p.open{-webkit-line-clamp:unset}
.dt-sub{display:flex;flex-wrap:wrap;gap:14px;font-size:11.5px;color:var(--sub);margin:-4px 0 6px}
.dt-sub b{font-weight:600;color:var(--text)}
.dt-kv{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12px;color:var(--sub);margin-top:12px}
.dt-kv b{font-weight:600;color:var(--text)}
.dt-tabs{margin-bottom:12px}
.ai-nb{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.ai-nb>div{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.ai-nb b{font-size:13px}.ai-nb span{font-size:12.5px;line-height:1.7;color:var(--text2)}
.ai-sims{display:flex;flex-direction:column}
.ai-sim{display:grid;grid-template-columns:1fr auto 80px 90px;gap:12px;align-items:center;padding:9px 4px;border-top:1px solid var(--line2);font-size:13px;color:var(--text);text-decoration:none}
.ai-sim:hover{background:var(--row-on)}
.ai-empty{display:flex;align-items:center;gap:14px;padding:10px 0;color:var(--text2)}
details.fold{padding:12px 20px}
details.fold>summary{cursor:pointer;font-size:13.5px;font-weight:600;list-style:none}
details.fold>summary::before{content:"▸";display:inline-block;width:14px;color:var(--weak);transition:transform .15s}
details.fold[open]>summary::before{transform:rotate(90deg)}
.ord{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--line2);font-size:12.5px}
.zf-v{font-size:13.5px;font-weight:600;padding:10px 14px;border-radius:8px;border:1px solid var(--line);margin-bottom:14px;line-height:1.7}
.zf-v.down{border-color:color-mix(in srgb,var(--down) 35%,transparent)}.zf-v.up{border-color:color-mix(in srgb,var(--up) 35%,transparent)}
.zf-rs>div{display:grid;grid-template-columns:150px 1fr 110px;gap:10px;align-items:center;padding:4px 0;font-size:12.5px}
.zf-rs .ex-bar{margin:0}
.zf-t{display:grid;grid-template-columns:1fr 70px 64px;gap:4px 10px;padding:6px 0;border-top:1px solid var(--line2);font-size:12.5px;align-items:center}
.zf-t .xs.muted{grid-column:1/-1}
@media (max-width:900px){.ai-nb{grid-template-columns:1fr}.kgrid.k4{grid-template-columns:1fr 1fr}}

/* ===== 第十五版：总览三市场 / 自选（券商式）/ 学习（交易大师 · 交易秘籍） ===== */
.cmd-l .sub { font-size: 13px; color: var(--sub); margin-top: 2px; }
.cmd-l .cheer-line { margin-top: 18px; font-size: 14px; line-height: 1.75; color: var(--text2); min-height: 26px; max-width: 640px; }
.acct-tiles.t3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; height: 100%; }
.acct-tiles.t3 .tile { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px; }
.acct-tiles.t3 .tile .v { font-size: 21px; margin-top: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tile .tp { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; font: 600 12.5px var(--mono); }
.tile .tp .chip { padding: 1px 6px; border-radius: 3px; font-size: 11.5px; white-space: nowrap; overflow: visible; text-overflow: clip; max-width: none; width: auto; }
.tile .tp .chip.up { background: var(--up); color: #fff; } .tile .tp .chip.down { background: var(--down); color: var(--ink); }
.tile .xbar { height: 3px; background: var(--line); margin-top: auto; overflow: hidden; } .tile .xbar i { display: block; height: 100%; background: var(--brand); opacity: .7; }
.tile .s { display: flex; gap: 4px 8px; align-items: center; flex-wrap: wrap; font-size: 11px; white-space: nowrap; }
.tile .s .rv-btn { padding: 2px 8px; font-size: 11px; }
.tile .s .rv-btn { margin-left: auto; }
.card.baro { margin-top: 16px; padding: 14px 18px; }
.baro-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 8px; }
@media (max-width: 1100px) { .acct-tiles.t3, .baro-3 { grid-template-columns: 1fr; } }

.wl-top { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; flex-wrap: wrap; }
.wl-top .wsearch { margin: 0; width: 380px; max-width: 100%; }
.wl-top .wsearch input { height: 36px; font-size: 13px; padding-left: 38px; }
.wl-top .wsearch .ic { top: 9px; left: 14px; }
.wl-top .wsearch .sug { top: 42px; }
.seg .n { margin-left: 6px; font-size: 11px; opacity: .55; }
.wl { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 16px; align-items: start; }
.wl-list { padding: 0; overflow: hidden; }
.wl-h, .wl-r { display: grid; grid-template-columns: minmax(0, 1.4fr) 88px 78px 78px 100px 76px; gap: 8px; align-items: center; padding: 0 14px; }
.wl-h { height: 34px; font-size: 11px; color: var(--weak); border-bottom: 1px solid var(--line); }
.wl-h span:not(:first-child) { text-align: right; } .wl-h span:nth-child(5) { text-align: center; }
.wl-r { height: 52px; border-bottom: 1px solid var(--line2); cursor: pointer; transition: background .12s; font-size: 13px; }
.wl-r:hover { background: var(--row-on); } .wl-r.on { background: var(--brand-weak); box-shadow: inset 2px 0 0 var(--brand); }
.wl-r .nm { min-width: 0; } .wl-r .nm b { display: block; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wl-r .nm span { font: 11px var(--mono); color: var(--weak); }
.wl-r .num { text-align: right; font-family: var(--mono); white-space: nowrap; }
.wl-r .px { font-weight: 650; }
.wl-r .chg { display: inline-block; min-width: 64px; text-align: center; padding: 3px 6px; border-radius: 3px; font-weight: 650; font-size: 12px; background: var(--line2); }
.wl-r .spk { height: 28px; }
.wl-r .am { font-size: 12px; }
.wl-pane { padding: 16px 18px; position: sticky; top: 12px; min-height: 520px; }
.wp-h { display: flex; align-items: flex-start; gap: 8px; }
.wp-n { font-size: 15px; font-weight: 650; }
.wp-px { font: 650 28px/1.2 var(--mono); }
.wp-kv { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px 14px; margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--line2); }
.wp-kv div { display: flex; justify-content: space-between; font-size: 12px; } .wp-kv span { color: var(--weak); }
@media (max-width: 1200px) { .wl { grid-template-columns: 1fr; } .wl-pane { position: static; } }

.lrn-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 12px; }
.lrn-t { display: flex; flex-direction: column; padding: 14px 16px; color: var(--text); text-decoration: none; min-height: 150px; }
.lrn-t:hover { border-color: var(--brand-line); }
.lrn-t .lrn-nm { font-size: 15px; font-weight: 650; }
.lrn-t .lrn-en { margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lrn-t .lrn-idea { margin-top: 8px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.65; }
.lrn-ft { display: flex; gap: 6px; align-items: center; margin-top: auto; padding-top: 10px; font-size: 11px; color: var(--weak); flex-wrap: wrap; }
.lrn-ft span:not(.grow) { padding: 1px 7px; border: 1px solid var(--line); border-radius: 999px; }
.lrn-ft b { font-weight: 600; color: var(--sub); margin-left: 6px; }
.bk-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.bk-c { display: flex; gap: 14px; padding: 14px; color: var(--text); text-decoration: none; }
.bk-c:hover { border-color: var(--brand-line); }
.bk-cv { flex: none; width: 70px; height: 98px; border: 1px solid var(--line); border-radius: 4px; background: var(--inner); display: flex; align-items: center; justify-content: center; text-align: center; padding: 6px; font-size: 11.5px; font-weight: 650; line-height: 1.4; color: var(--text2); overflow: hidden; }
.bk-m { min-width: 0; flex: 1; display: flex; flex-direction: column; }
.bk-t { font-size: 14px; font-weight: 650; }
.bk-d { margin-top: 6px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.6; }
.bk-f { display: flex; gap: 6px; align-items: center; margin-top: auto; padding-top: 8px; font-size: 11px; color: var(--weak); }
.bk-f span:not(.grow):not(.xs) { padding: 1px 7px; border: 1px solid var(--line); border-radius: 999px; }
.bk-list { border: 1px solid var(--line); border-radius: var(--radius); background: var(--card); overflow: hidden; }
.bk-r { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--line2); font-size: 13px; flex-wrap: wrap; }
.bk-r:last-child { border-bottom: 0; } .bk-r a { color: var(--text); }
.bk-view { padding: 0; overflow: hidden; height: calc(100vh - 190px); min-height: 520px; }
.bk-view iframe { width: 100%; height: 100%; border: 0; background: #fff; }
.tile .s .kv { flex-basis: 100%; } .tile .s .rv-btn { margin-left: auto; }

/* ---------- 第十六版：日历（A股 / 美股分开 · 闭市置灰 · AI 盘前总结） ---------- */
.cal-day.off { background: color-mix(in srgb, var(--weak) 11%, var(--card)); }
.cal-day.off:hover { background: color-mix(in srgb, var(--weak) 16%, var(--card)); }
.cal-day.off .dn > span:first-child { color: var(--weak); }
.cal-day.off .dn .lab { color: var(--weak); }
.cal-day.off .ev-chip { opacity: .6; }
.cal-day.out { opacity: .45; }
.cal-day.out.sel, .cal-day.out:hover { opacity: .8; }
.cal-legend { display: inline-flex; align-items: center; gap: 6px; }
.cal-legend .lg-off { width: 12px; height: 12px; border-radius: 3px; background: color-mix(in srgb, var(--weak) 22%, var(--card)); border: 1px solid var(--line); display: inline-block; }
.card.dg { padding: 14px 18px; margin-bottom: 16px; }
.dg-hd { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.dg-hd b { font-size: 14px; }
.dg-hl { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 4px; line-height: 1.5; }
.dg-pts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 18px; }
.dg-pt { display: flex; gap: 8px; font-size: 13px; line-height: 1.6; min-width: 0; }
.dg-pt > div { min-width: 0; overflow-wrap: anywhere; }
.dg-imp { flex: none; font: 600 11px var(--mono); padding-top: 2px; width: 28px; }
.dg-watch { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 10px; }
.dg-w { font-size: 12px; padding: 2px 10px; border-radius: 999px; border: 1px solid var(--line); background: var(--inner); }
.ev-ai { background: var(--inner); padding: 12px 14px; }
@media (max-width: 900px) { .dg-pts { grid-template-columns: 1fr; } }
.cal-day.today .dn > span:first-child { color: var(--ink, #111); }

/* ---------- 第十七版：总览左上名人名言 ---------- */
.cmd-l .cheer-line #cheer { display: flex; flex-direction: column; gap: 4px; cursor: pointer; }
.cmd-l .cheer-line .qt-cn { font-size: 15px; line-height: 1.7; color: var(--text); font-weight: 600; }
.cmd-l .cheer-line .qt-en { font-size: 12px; line-height: 1.55; color: var(--weak); font-style: italic; }
.cmd-l .cheer-line .qt-by { font-size: 12px; color: var(--sub); display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; }
.cmd-l .cheer-line .qt-ctx { font-size: 11px; color: var(--weak); opacity: .8; }
.cmd-l .cheer-line #cheer:hover .qt-cn { color: var(--brand); transition: color .15s; }

/* ---------- 自选总体 AI 分析（第十八版） ---------- */
.wl-ai { margin-top: 16px; padding: 14px 18px; }
.wai-bd.dim { opacity: .5; pointer-events: none; transition: opacity .15s; }
.wai-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 12px; }
.wai-col { min-width: 0; }
.wai-ct { font-size: 13px; font-weight: 700; margin-bottom: 6px; }
.wai-ct .n { font: 600 11px var(--mono); color: var(--weak); margin-left: 4px; }
.wai-pk { border: 1px solid var(--line); border-radius: 10px; padding: 9px 12px; margin-bottom: 8px; cursor: pointer; background: var(--inner); transition: border-color .15s, box-shadow .15s; min-width: 0; overflow-wrap: anywhere; }
.wai-pk.bull { border-left: 3px solid var(--up); }
.wai-pk.bear { border-left: 3px solid var(--down); }
.wai-pk:hover { border-color: var(--sub); box-shadow: 0 1px 4px rgba(0,0,0,.06); }
.wai-all { margin-top: 12px; }
.wai-all summary { cursor: pointer; color: var(--sub); }
.wai-t { margin-top: 8px; font-size: 13px; }
.wai-tr { display: grid; grid-template-columns: minmax(120px, 1.3fr) 110px 70px 110px minmax(0, 2fr); gap: 8px; align-items: center; padding: 6px 4px; border-bottom: 1px solid var(--line); cursor: pointer; }
.wai-tr.h { color: var(--weak); font-size: 11px; cursor: default; }
.wai-tr:not(.h):hover { background: var(--inner); }
.wai-tr .nm { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wai-tr .nm i { font-style: normal; font-size: 11px; color: var(--weak); margin-left: 6px; }
.wai-tr .sig { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 900px) { .wai-cols { grid-template-columns: 1fr; } .wai-tr { grid-template-columns: minmax(0, 1fr) 90px 60px; } .wai-tr > :nth-child(4), .wai-tr > :nth-child(5) { display: none; } }

/* ---------- 市场天气预报（第十八版） ---------- */
.bx-sec { font-size: 13px; font-weight: 700; margin: 16px 0 8px; color: var(--text); }
.wx { display: flex; flex-direction: column; gap: 12px; }
.wx-hero { display: flex; gap: 14px; align-items: center; }
.wx-when { font-size: 12px; color: var(--sub); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.wx-sky { font-size: 24px; font-weight: 700; margin: 2px 0 4px; }
.wx-tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 10px; }
.wx-t { border: 1px solid var(--line); border-radius: 10px; padding: 10px 12px; background: var(--inner); display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.wx-t.dim b { color: var(--weak) !important; }
.wx-t .k { font-size: 12px; color: var(--sub); }
.wx-t b { font: 700 22px var(--mono); }
.wx-sk { align-self: flex-start; margin-top: 4px; font-size: 10.5px; padding: 1px 8px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); }
.wx-sk.ok { color: var(--up); border-color: color-mix(in srgb, var(--up) 35%, transparent); }
.wx-sk.no { color: var(--weak); border-style: dashed; }
.wx-band { position: relative; height: 26px; margin: 6px 0 2px; }
.wx-band .z { position: absolute; left: 50%; top: 2px; bottom: 12px; width: 1px; background: var(--weak); opacity: .6; }
.wx-band .b { position: absolute; top: 5px; height: 6px; border-radius: 999px; background: linear-gradient(90deg, var(--down), var(--sub) 50%, var(--up)); opacity: .75; }
.wx-band span { position: absolute; top: 13px; transform: translateX(-50%); font: 10px var(--mono); color: var(--sub); }
.wx-more summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--sub); margin-bottom: 8px; }
.wx-g { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(200px, 1fr); gap: 16px; align-items: start; }
.wx-tb { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.wx-tb th { text-align: left; font-weight: 500; color: var(--weak); font-size: 11px; padding: 4px 6px; border-bottom: 1px solid var(--line); }
.wx-tb td { padding: 5px 6px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.wx-live .dots i { cursor: default; }
.wx-mini { display: flex; align-items: center; gap: 6px; font-size: 12px; margin: 2px 0 6px; color: var(--text2, var(--sub)); }
.wx-mini b { color: var(--text); }
@media (max-width: 900px) { .wx-g { grid-template-columns: 1fr; } .wx-tb th:nth-child(5), .wx-tb td:nth-child(5) { display: none; } }

/* 第十九版：策略库「研究曲线」条目 */
.dt-cav { margin: 10px 0 2px; padding: 8px 12px; border-radius: 8px; background: color-mix(in srgb, var(--amber, #d97706) 9%, transparent); border: 1px solid color-mix(in srgb, var(--amber, #d97706) 28%, transparent); font-size: 12px; line-height: 1.6; color: var(--text2, #374151); }
.rs-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 18px; margin-top: 10px; }
@media (max-width: 720px) { .rs-grid { grid-template-columns: 1fr; } }

/* ====================================================================== 第十九版：总览左上卡片（固定宽度 + 艺术字 + 粒子显字） */
.btn.xs { height: 22px; padding: 0 9px; font-size: 11px; border-radius: 999px; }
.bk-ok { color: var(--brand); }
/* 左右两栏宽度固定：右侧账户卡最宽 760px，左侧占剩余空间；换一句名言时不再跟着内容伸缩 */
.cmd { width: 100%; grid-template-columns: minmax(0, 1fr) minmax(0, 760px); }
.cmd > * { min-width: 0; }
@media (max-width: 1500px) { .cmd { grid-template-columns: minmax(0, 1fr) minmax(0, 640px); } }
@media (max-width: 1100px) { .cmd { grid-template-columns: 1fr; } }
.cmd-l { --ink: #ecce8c; --ink2: #b98d45; position: relative; isolation: isolate;
  background: radial-gradient(120% 90% at 100% 0%, rgba(236, 206, 140, .07), transparent 55%), radial-gradient(80% 60% at 0% 100%, rgba(236, 206, 140, .035), transparent 60%), var(--card); }
[data-theme="light"] .cmd-l { --ink: #9a6b22; --ink2: #6f4a14; background: radial-gradient(120% 90% at 100% 0%, rgba(214, 170, 90, .12), transparent 55%), #fff; }
.cmd-l > canvas.fx-cv { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; }
.cmd-l .eyebrow { font: 500 15px/1 "Cormorant Garamond", "LXGW WenKai Screen", "LXGW WenKai", "Kaiti SC", STKaiti, KaiTi, "Songti SC", serif; letter-spacing: 1.5px; color: color-mix(in srgb, var(--ink) 70%, var(--sub)); text-transform: uppercase; }
.cmd-l .eyebrow::before { background: var(--ink); }
.cmd .cmd-l .hi { font: 600 38px/1.25 "LXGW WenKai Screen", "LXGW WenKai", "Kaiti SC", STKaiti, KaiTi, "Songti SC", serif; letter-spacing: 1px; margin: 16px 0 8px; color: var(--text); }
.cmd .cmd-l .hi em { background: none; -webkit-text-fill-color: currentColor; color: var(--ink); }
.cmd .cmd-l .hi em .fx-ch { background: linear-gradient(180deg, #f8e7b8 10%, var(--ink) 55%, var(--ink2)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
[data-theme="light"] .cmd .cmd-l .hi em .fx-ch { background: linear-gradient(180deg, #c89a4a, var(--ink) 50%, var(--ink2)); -webkit-background-clip: text; background-clip: text; }
.cmd-l .sub { font: 400 14px/1.6 "LXGW WenKai Screen", "LXGW WenKai", "Kaiti SC", STKaiti, KaiTi, "Songti SC", serif; letter-spacing: .5px; color: var(--sub); }
.cmd-l .cheer-line { max-width: 660px; min-height: 158px; margin-top: 20px; }
.cmd-l .cheer-line #cheer { gap: 8px; }
.cmd-l .cheer-line .qt-cn { font: 500 18px/1.75 "LXGW WenKai Screen", "LXGW WenKai", "Kaiti SC", STKaiti, KaiTi, "Songti SC", serif; letter-spacing: .5px; color: var(--text); }
.cmd-l .cheer-line .qt-en { font: italic 500 15px/1.55 "Cormorant Garamond", "Times New Roman", serif; letter-spacing: .3px; color: var(--weak); }
.cmd-l .cheer-line .qt-by { font: 400 13.5px/1.5 "LXGW WenKai Screen", "LXGW WenKai", "Kaiti SC", STKaiti, KaiTi, "Songti SC", serif; letter-spacing: .5px; color: var(--sub); }
.cmd-l .cheer-line #cheer:hover .qt-cn { color: var(--ink); }
/* 逐字：先模糊、稍大、透明，粒子汇聚到位时清晰浮现 */
.fx-ch { display: inline-block; opacity: 0; filter: blur(7px); transform: translateY(3px) scale(1.18); animation: fxIn .62s cubic-bezier(.2, .7, .2, 1) forwards; animation-delay: var(--d, 0ms); }
.fx-w { display: inline-block; white-space: nowrap; }
.fx-ch.fx-now { animation: none; opacity: 1; filter: none; transform: none; }
@keyframes fxIn { 55% { opacity: .9; filter: blur(1.5px); } to { opacity: 1; filter: blur(0); transform: none; } }
@media (prefers-reduced-motion: reduce) { .fx-ch { animation: none; opacity: 1; filter: none; transform: none; } }

/* 自选 · 三个市场的 AI 当日分析 */
.wl-ais { margin-top: 20px; display: grid; gap: 12px; }
.wl-ais-h { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.wl-ais-h b { font-size: 15px; }
.wl-ais .wl-ai { margin-top: 0; }
.wai-hd { cursor: pointer; user-select: none; gap: 8px; flex-wrap: nowrap; min-width: 0; }
.wai-ex { min-width: 0; }
.wai-fold { display: inline-block; color: var(--weak); transform: rotate(90deg); transition: transform .15s; font-size: 11px; }
.wl-ai.fold .wai-fold { transform: none; }
.wl-ai.fold .wai-bd { display: none; }
.wl-ai:not(.fold) .wai-hl1 { display: none; }
.wai-hl1 { color: var(--text2, var(--sub)); margin: 4px 0 0 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wai-cnt { display: inline-flex; gap: 6px; font: 600 12px var(--mono); }
.wai-cnt i { font-style: normal; }
.wai-cnt .up { color: var(--up); } .wai-cnt .down { color: var(--down); }
.wai-ctx { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 8px 10px; margin: 10px 0; border-radius: 10px; background: var(--inner); }
.wai-tags { display: flex; flex-wrap: wrap; gap: 4px 8px; margin-top: 4px; align-items: baseline; }
.wai-tag { font-size: 11px; padding: 1px 8px; border-radius: 999px; color: var(--c); background: color-mix(in srgb, var(--c) 12%, transparent); white-space: nowrap; }
.wai-rs { font-weight: 600; color: var(--amber, #d97706); margin-left: 6px; }
.wai-rrow { padding: 6px 2px; border-bottom: 1px solid var(--line); cursor: pointer; }
.wai-rrow:hover { background: var(--inner); }
@media (max-width: 900px) { .wai-ex { display: none; } }

/* 总览右栏：账户三卡在上，情绪晴雨表三个并排在下，作为一个整体填满右侧 */
.cmd-r { grid-template-rows: auto 1fr; }
.cmd-r .baro { margin: 0; display: flex; flex-direction: column; }
.baro-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 10px; flex: 1; }
.baro-3 .baro-m { display: flex; flex-direction: column; }
.baro-3 .gw svg { width: 100%; height: auto; max-height: 96px; }
@media (max-width: 1500px) { .baro-3 .bgr { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .baro-3 { grid-template-columns: 1fr; } }
.cmd-r .acct-tiles.t3 { height: auto; }

/* 策略页：列表 + 预览（点进去看详情） */
.lb-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 14px; }
.lb-q { position: relative; display: flex; align-items: center; }
.lb-q .ic { position: absolute; left: 10px; color: var(--weak); font-size: 13px; pointer-events: none; }
.lb-q input { height: 30px; width: 200px; padding: 0 12px 0 28px; border-radius: 999px; font-size: 12.5px; }
.lb-sort { height: 30px; width: auto; font-size: 12px; padding: 0 10px; border-radius: 999px; }
.lb-more { position: relative; }
.lb-more > summary { list-style: none; cursor: pointer; }
.lb-more > summary::-webkit-details-marker { display: none; }
.lb-menu { position: absolute; right: 0; top: calc(100% + 6px); z-index: 30; min-width: 230px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); box-shadow: 0 8px 24px rgba(0,0,0,.18); display: grid; gap: 6px; }
.lb-menu .lnk { background: none; border: 0; padding: 4px 0; text-align: left; color: var(--text); cursor: pointer; font-size: 13px; }
.lb-menu .lnk:hover { color: var(--brand); }
.lb { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 16px; align-items: start; }
.lb-list { padding: 4px; max-height: calc(100vh - 150px); overflow: auto; position: sticky; top: 12px; }
.lb-it { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; align-items: center; padding: 10px 12px; border-radius: 10px; cursor: pointer; transition: background .15s; }
.lb-it + .lb-it { border-top: 1px solid var(--line2); }
.lb-it:hover { background: var(--inner); }
.lb-it.on { background: var(--brand-weak, var(--inner)); box-shadow: inset 2px 0 0 var(--brand); }
.lb-it .n { display: flex; align-items: center; gap: 6px; min-width: 0; font-size: 13.5px; font-weight: 600; }
.lb-it .n .ellip { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.lb-it .n i { font-style: normal; font-size: 10px; line-height: 16px; padding: 0 6px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); font-weight: 500; flex: none; }
.lb-it .n i.ai { border-color: color-mix(in srgb, var(--purple) 45%, transparent); color: var(--purple); }
.lb-it .v { grid-row: 1 / 3; grid-column: 2; font: 650 15px var(--mono); text-align: right; }
.lb-it .v.muted { font: 500 12px inherit; }
.lb-it .m { font: 500 11.5px var(--mono); color: var(--weak); }
.lb-pv { padding: 18px 20px; position: sticky; top: 12px; min-height: 420px; }
.lp-h { display: flex; gap: 10px; align-items: flex-start; }
.lp-t { font-size: 20px; font-weight: 650; line-height: 1.35; margin: 2px 0 6px; }
.lp-p { font-size: 13px; line-height: 1.7; color: var(--text2); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.lp-k { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 14px 0 6px; }
.lp-k > div { padding: 10px 12px; border-radius: 10px; background: var(--inner); display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.lp-k span { font-size: 11.5px; color: var(--weak); }
.lp-k b { font: 650 18px var(--mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lp-cav { margin-top: 8px; font-size: 12px; line-height: 1.6; color: var(--sub); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.lp-note { margin: 12px 0; padding: 10px 12px; border-radius: 10px; background: var(--inner); font-size: 12.5px; line-height: 1.7; color: var(--text2); }
.lp-kv { display: grid; gap: 8px; }
.lp-kv > div { display: grid; grid-template-columns: 48px minmax(0, 1fr); gap: 8px; font-size: 13px; }
.lp-kv span { color: var(--weak); }
.lp-kv b { font-weight: 500; }
.lp-f { display: flex; align-items: center; gap: 8px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line2); flex-wrap: wrap; }
.lb-back { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.ex-more { margin-top: 14px; border: 1px solid var(--line2); border-radius: 10px; padding: 8px 12px; }
.ex-more > summary { cursor: pointer; font-size: 13px; color: var(--sub); }
.ex-more[open] > summary { margin-bottom: 8px; }
@media (max-width: 1100px) { .lb { grid-template-columns: 1fr; } .lb-list, .lb-pv { position: static; max-height: none; } }
@media (max-width: 700px) { .lp-k { grid-template-columns: 1fr 1fr; } .lb-q input { width: 140px; } }

/* 总览左上卡片：全部白字（浅色主题跟随正文色），打字效果 */
.cmd-l .eyebrow, .cmd-l .sub, .cmd .cmd-l .hi, .cmd .cmd-l .hi em, .cmd-l .cheer-line .qt-cn, .cmd-l .cheer-line .qt-en, .cmd-l .cheer-line .qt-by { color: var(--text) !important; -webkit-text-fill-color: currentColor; background: none; }
.cmd-l .eyebrow::before { background: var(--text); }
.cmd-l .eyebrow { letter-spacing: 1px; }
.cmd-l .sub { opacity: .8; }
.cmd-l .cheer-line .qt-en { opacity: .7; }
.cmd-l .cheer-line .qt-by { display: block; opacity: .8; }
.cmd-l .cheer-line #cheer:hover .qt-cn { color: var(--text); opacity: .85; }
.tw-caret { display: inline-block; width: 2px; height: 1em; margin-left: 2px; vertical-align: -2px; background: currentColor; animation: blink 1s steps(1) infinite; }
.cmd-l > canvas.fx-cv { display: none; }
/* 晴雨表小卡只留表盘 + 一句天气 */
.baro-3 .baro-m { justify-content: flex-start; gap: 6px; }
/* 复盘提醒不再用强调色（副标题里已有一句提示） */
.rv-btn.due { color: var(--sub); border-color: var(--line); }
.rv-btn.due::before { background: var(--sub); }
.cmd-l .sub .sl { line-height: 1.7; }
.cmd-l .sub .sl + .sl { opacity: .85; }

/* 晴雨表详情：今天 / 明天 / 准不准 */
.bw { display: flex; flex-direction: column; gap: 10px; min-width: min(560px, 80vw); }
.bw-sec { font-size: 14px; font-weight: 600; color: var(--text); margin-top: 14px; padding-bottom: 6px; border-bottom: 1px solid var(--line); }
.bw-sec:first-child { margin-top: 0; }
.bw-sec span { font-weight: 400; font-size: 12px; color: var(--weak); margin-left: 6px; }
.bw-today, .bw-tmr { display: flex; gap: 18px; align-items: center; }
.bw-g { width: 170px; flex: none; }
.bw-txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.bw-big { font-size: 17px; font-weight: 600; color: var(--text); }
.bw-line { font-size: 13px; color: var(--text2); }
.bw-note { font-size: 12px; color: var(--weak); line-height: 1.6; }
.bw-kpi { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 4px; }
.bw-kpi > div { display: flex; flex-direction: column; gap: 2px; }
.bw-kpi span { font-size: 12px; color: var(--sub); }
.bw-kpi b { font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; }
.bw-kpi i { font-style: normal; font-size: 11px; color: var(--weak); }
.bw-acc { display: flex; flex-direction: column; gap: 10px; }
.bw-row { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; font-size: 13px; }
.bw-row > span { color: var(--sub); min-width: 150px; }
.bw-row > b { font-weight: 600; }
.bw-row > em { font-style: normal; font-size: 12px; color: var(--weak); }
.bw-dots { display: flex; gap: 3px; flex-basis: 100%; margin-left: 162px; }
.bw-dots i { width: 9px; height: 9px; border-radius: 50%; background: var(--line); }
.bw-dots i.ok { background: var(--text); opacity: .75; }
.bw-dots i.no { background: transparent; border: 1px solid var(--weak); }
@media (max-width: 640px) { .bw-today, .bw-tmr { flex-direction: column; align-items: stretch; } .bw-g { margin: 0 auto; } .bw-dots { margin-left: 0; } .bw-kpi { grid-template-columns: 1fr 1fr; } }
/* 实盘账户：AI 今日汇报 + 复盘（左操作日志 / 右 AI 复盘记录） */
.ai-rep { padding: 16px 20px; }
.ai-rep .row b { font-size: 14px; }
.ar-sum { margin-top: 10px; font-size: 13.5px; line-height: 1.75; color: var(--text); }
.ar-st { display: inline-block; margin-right: 8px; padding: 1px 10px; border-radius: 999px; border: 1px solid var(--line); font-size: 12px; color: var(--text); }
.ar-hs { margin-top: 12px; display: flex; flex-direction: column; border-top: 1px solid var(--line2); }
.ar-h { display: grid; grid-template-columns: 120px 56px 1fr; gap: 10px; align-items: baseline; padding: 8px 0; border-bottom: 1px solid var(--line2); font-size: 13px; }
.ar-h b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ar-h span:last-child { color: var(--text2); }
.ar-ex { margin-top: 10px; font-size: 12.5px; color: var(--sub); line-height: 1.8; }
.rv-head { display: flex; align-items: baseline; gap: 12px; margin-top: 28px; margin-bottom: 10px; }
.rv-head h3 { margin: 0; font-size: 15px; }
.rv2 { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 16px; align-items: start; }
.rv2 > .card { padding: 14px 16px; }
.rv2 > .card > .row { margin-bottom: 8px; gap: 8px; align-items: baseline; }
.rv2 .tlog { max-height: 640px; overflow: auto; }
.rv-list2 { display: flex; flex-direction: column; gap: 8px; max-height: 600px; overflow: auto; }
.rv2-it { border: 1px solid var(--line2); border-radius: 10px; background: var(--inner); }
.rv2-it > .h { display: flex; gap: 12px; align-items: center; padding: 10px 12px; cursor: pointer; }
.rv2-it > .h .t { font-size: 13.5px; font-weight: 600; }
.rv2-it > .h .o { font-size: 12px; color: var(--sub); margin-top: 2px; }
.rv2-it > .h .r { text-align: right; display: flex; flex-direction: column; font-size: 12px; }
.rv2-it > .h .r span { color: var(--weak); font-size: 11px; }
.rv2-it > .b { display: none; padding: 0 12px 12px; }
.rv2-it.open > .b { display: block; }
.rv-ts { display: flex; flex-direction: column; border-top: 1px solid var(--line2); }
.rv-t { padding: 8px 0; border-bottom: 1px solid var(--line2); }
.rv-t .l1 { display: flex; gap: 8px; align-items: baseline; font-size: 13px; flex-wrap: wrap; }
.rv-t .l2 { font-size: 12px; color: var(--sub); margin-top: 3px; line-height: 1.6; }
.rv-t .l2.c { color: var(--text2); }
.rv-tag { font-size: 11px; padding: 0 8px; border-radius: 999px; border: 1px solid var(--line); color: var(--sub); }
.rv-tag.bad { color: var(--warn); border-color: currentColor; } .rv-tag.good { color: var(--text); border-color: var(--sub); }
.rv-t .bad { color: var(--warn); }
.rv-sec { margin-top: 10px; font-size: 12.5px; }
.rv-sec b { font-size: 12px; color: var(--sub); }
.rv-sec ul { margin: 4px 0 0; padding-left: 18px; line-height: 1.75; }
@media (max-width: 960px) { .rv2 { grid-template-columns: 1fr; } .ar-h { grid-template-columns: 1fr auto; } .ar-h span:last-child { grid-column: 1 / -1; } }

/* ---------- 中 / EN 语言切换（右上角） ---------- */
.lang-btn { display: inline-flex; align-items: center; gap: 5px; height: 32px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--line); background: transparent; color: var(--sub); font: 600 12px/1 var(--mono, ui-monospace, monospace); letter-spacing: .06em; cursor: pointer; white-space: nowrap; transition: color .15s, border-color .15s; }
.lang-btn:hover { color: var(--text); border-color: var(--sub); }
.lang-btn i { font-style: normal; opacity: .35; }
.lang-btn span { opacity: .5; transition: opacity .15s; }
.lang-btn span.on { opacity: 1; color: var(--text); }
@media (max-width: 760px) { .lang-btn { height: 30px; padding: 0 10px; } }
/* 英文比中文长：窄处允许省略，避免撑破布局 */
html[lang="en"] .nav a, html[lang="en"] .bottom-nav a { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
html[lang="en"] .gt-chip .l2 { display: none; }
html[lang="en"] .q-cn { display: none; }
/* 语言按钮永远可见：时钟 / 搜索框在窄处收缩，按钮不缩 */
.top .bar > .lang-btn, .top .bar > #themeBtn { flex-shrink: 0; }
.top .bar .tclk { min-width: 0; overflow: hidden; }
.top .bar h1 { flex-shrink: 0; }
html[lang="en"] .top .bar .cmdk-btn .t { display: none; }
@media (max-width: 1500px) { html[lang="en"] .tclk .clock .st { display: none; } }
