/* 看盘/自选合并页（board）样式集合（决策 2026-09-23 两页合一）。
   令牌真源：web/common/design-tokens.css；本文件不硬编码颜色，全部走 var(--c-*) / 红涨绿跌语义类。
   卡片组件 .srow / 评分环 / 區间胶囊(.zone-bar/.zc) 复用 watch.css，本文件只收口 my-stock 侧的内联样式，
   加载顺序在 watch.css 之后，确保 .holding-brief / .seg / .toolbar 等同名样式以本页口径为准。 */
@import url(../common/help-tip.css);
:root { --danger:#dc2626; }
.wrap { max-width:1000px; }
.conn { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; padding:4px 10px; border-radius:999px; font-weight:600; }
.conn .dot { width:8px; height:8px; border-radius:50%; }
.conn.live { background:#e7f6ec; color:#16a34a; } .conn.live .dot { background:#16a34a; }
.conn.poll { background:#fef3e2; color:#d97706; } .conn.poll .dot { background:#d97706; }
.conn.off  { background:#f1f3f7; color:#6b7280; } .conn.off .dot { background:#9aa4b2; }

.page-head { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:6px 2px 14px; }
.page-head .lead { font-size:20px; font-weight:800; }
.page-head .grow { flex:1; }

/* 筛选工具条（与 admin 端 .search/.filter 同规格：控件统一 38px 高、自然宽度） */
.toolbar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:14px; }
.toolbar .search { flex:1 1 260px; min-width:200px; max-width:400px; display:flex; align-items:center; gap:8px;
  height:38px; padding:0 12px; background:var(--c-surface); border:1px solid var(--c-border); border-radius:10px;
  transition:border-color .15s ease, box-shadow .15s ease; }
.toolbar .search:focus-within { border-color:var(--c-primary); box-shadow:0 0 0 3px var(--c-primary-soft); }
.toolbar .search .ic { flex:none; display:inline-flex; color:var(--c-text-3); }
.toolbar .search input { flex:1; min-width:0; width:auto; height:100%; padding:0; border:none; outline:none;
  background:transparent; font-size:13.5px; color:var(--c-text); font-family:inherit; }
.toolbar select.filter { flex:0 0 auto; width:auto; max-width:200px; height:38px; padding:0 28px 0 12px; cursor:pointer; }
.toolbar select.filter:focus { border-color:var(--c-primary); box-shadow:0 0 0 3px var(--c-primary-soft); outline:none; }
.tb-divider { flex:none; width:1px; height:22px; background:var(--c-border); }
.filter { padding:8px 11px; border:1px solid var(--c-border); border-radius:9px; background:var(--c-surface); color:var(--c-text); font-size:13.5px; font-family:inherit; }
.seg { display:inline-flex; align-items:center; gap:2px; height:38px; padding:3px; background:var(--c-surface-2); border:1px solid var(--c-border); border-radius:10px; }
.seg button { height:100%; border:none; background:transparent; padding:0 14px; border-radius:8px; font-size:13px; cursor:pointer; color:var(--c-text-2); font-family:inherit; transition:background .15s ease, color .15s ease; }
.seg button:hover { color:var(--c-primary); }
.seg button.active { background:var(--c-primary); color:#fff; font-weight:600; }
.stats { font-size:12.5px; color:var(--c-text-3); margin-left:auto; white-space:nowrap; }
@media (max-width:640px){ .tb-divider { display:none; } }

/* 卡片网格：列数由 .cols-1/2/3 切换（用户偏好持久化到 localStorage）。各档均用 1fr 轨道铺满 .wrap 内容区（960px），
   使卡片左/右边缘与上方 holding-brief / toolbar 对齐（而非居中留白）——满足「对齐」诉求。
   复用 watch.css 的 .srow 卡片组件，与看板页视觉一致 */
.cards { display:grid; gap:12px; align-items:start; }
.cards.cols-1 { grid-template-columns:1fr; }
.cards.cols-2 { grid-template-columns:repeat(2, 1fr); }
.cards.cols-3 { grid-template-columns:repeat(3, 1fr); }
.srow .turn { font-family:var(--mono); font-size:12px; font-weight:600; color:var(--c-text-3); white-space:nowrap; }
.r-tag { font-size:11px; font-weight:700; color:var(--c-primary); margin-left:4px; }
.tag-type { font-size:11px; padding:2px 8px; border-radius:999px; margin-left:8px; font-weight:700; }
/* 标题信号徽章（2026-09-24）：持仓股标题原「持仓」徽章改为操作建议信号（buy/hold/sell），
   配色与 watch.css .badge 同源令牌（买入=红/持有=橙/减仓=绿）；.watch 仍用于自选股「自选」徽章 */
.tag-type.buy { background:var(--up-soft); color:var(--up); }
.tag-type.sell { background:var(--down-soft); color:var(--down); }
.tag-type.hold { background:var(--warn-soft); color:var(--warn); }
.tag-type.watch { background:color-mix(in srgb,var(--c-text-3) 14%,transparent); color:var(--c-text-3); }
/* 待研判徽标（2026-09-28 用户口径「无研判显待研判」）：虚线边框 + 中性灰字 = 尚未出结论，
   与实心语义色徽标（已确定结论：买入红/持有橙/减仓绿）在形态上区分；不引入红涨绿跌语义，
   避免被误读为方向判断。加 1px 边框故 padding 上下各减 1px，保持与兄弟徽标同一行高。 */
.tag-type.wait { background:transparent; color:var(--c-text-3); border:1px dashed var(--c-border); font-weight:600; padding:1px 7px; }
/* 个股行业/板块标签（2026-09-30 落地，同日 v2 修正）：身份级属性，与代码同为中性灰文本；
   v2：行业值常为长链（如 有色金属-贵金属-黄金），胶囊形态（灰底+描边）被撑成大块灰斑、
   与相邻小徽章并排突兀 ⇒ 撤底色/描边/圆角，改纯文本 + 「·」分隔符并入身份带，长值自然舒展 */
.tag-ind { font-size:12.5px; color:var(--c-text-3); font-weight:400; white-space:nowrap; }
.tag-ind::before { content:"·"; margin-right:8px; }
/* 评分环尺寸单一真源（2026-09-28 修正）：本文件在 watch.css 之后加载，此处若仍写 54px 会把
   viewBox="0 0 40 40" 的环整体放大到 54px（即「评分环与区间标签一行不协调」的残留根因）⇒ 统一 40×40 */
.ring { width:40px; height:40px; flex:none; } .ring-empty { display:flex; align-items:center; justify-content:center; width:40px; height:40px; color:var(--c-text-3); font-weight:800; }
/* 待研判评分位（2026-09-28）：与评分环同尺寸 40×40、圆角 10px 对齐卡片内 chip 体系；灰底 + 虚线边框表达
   「尚未出结论」，与相邻 ztag 胶囊同风格，避免把「待研判」三字塞进 40px 圆环内圈（挤且难读） */
.ring-pending { display:flex; align-items:center; justify-content:center; box-sizing:border-box; width:40px; height:40px;
  border:1px dashed var(--c-border); border-radius:10px; background:var(--c-surface-2); color:var(--c-text-3);
  font-size:10px; font-weight:700; letter-spacing:-.2px; }
.chips { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.chip { font-size:12px; padding:3px 9px; border-radius:8px; background:var(--c-bg); color:var(--c-text-2); border:1px solid var(--c-border); }
.kv { display:grid; grid-template-columns:auto 1fr; gap:3px 10px; font-size:12.5px; }
.kv b { color:var(--c-text-3); font-weight:600; }
/* 卡片详情字段高亮（用户诉求 2026-09-28）：标签+数值整段同色，令牌着色(无硬编码)，明暗主题自动适配 */
.kv.hl-up b, .kv.hl-up span { color:var(--up); font-weight:700; }
.kv.hl-warn b, .kv.hl-warn span { color:var(--warn); font-weight:700; }
.kv.hl-down b, .kv.hl-down span { color:var(--down); font-weight:700; }
/* 买入区命中 R 标签保留橙色（不被整段红覆盖；特异度高于 .kv.hl-up span） */
.kv.hl-up span.r-tag { color:var(--warn); font-weight:700; }
/* R买入区间着色（与报表 val-buy/val-hold/val-sell 同源；令牌着色，无硬编码） */
.rbuy-buy { color: var(--up); font-weight:700; }
.rbuy-hold { color: var(--warn); font-weight:700; }
.rbuy-sell { color: var(--primary); font-weight:700; }
.hv { grid-column:1 / -1; margin-top:8px; border-top:1px dashed var(--c-border); padding-top:8px; }
.empty { text-align:center; padding:48px 20px; color:var(--c-text-3); }

/* 按钮（common.css 已提供 .btn/.btn.danger，这里补 .btn.primary 显式主色轮廓） */
.btn.primary { background:var(--c-primary); color:#fff; }
.btn.primary:hover { opacity:.92; }
.btn.danger { background:transparent; color:var(--danger); border:1px solid #f1c4c0; }
.btn.danger:hover { background:#fdeceb; color:var(--danger); border-color:var(--danger); }
[data-theme="dark"] .btn.danger { color:#f87171; border-color:rgba(248,113,113,.4); }
[data-theme="dark"] .btn.danger:hover { background:rgba(220,38,38,.18); color:#fca5a5; border-color:#f87171; }

/* 表单（弹框用） */
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px 16px; }
.form-row { display:flex; flex-direction:column; gap:5px; }
.form-row.full { grid-column:1 / -1; }
.form-row label { font-size:12.5px; color:var(--c-text-3); font-weight:600; }
.form-row input { padding:9px 11px; border-radius:9px; border:1px solid var(--c-border); background:var(--c-bg); color:var(--c-text); font-size:14px; outline:none; width:100%; font-family:inherit; }
.btn-row { display:flex; gap:10px; justify-content:flex-end; margin-top:14px; }
.msg.err { background:#fdeceb; color:#dc2626; padding:8px 12px; border-radius:8px; font-size:13px; margin-top:10px; }
.msg.err.hidden { display:none; }

/* 弹框（common.css 未定义，这里补齐，与 admin 端一致） */
.modal-mask { position:fixed; inset:0; z-index:100; background:rgba(16,24,40,.45); display:none; align-items:center; justify-content:center; padding:16px; }
.modal-mask.open { display:flex; }
.modal { width:100%; max-width:560px; max-height:90vh; background:var(--c-surface); border:1px solid var(--c-border); border-radius:16px; box-shadow:var(--shadow-md); display:flex; flex-direction:column; overflow:hidden; }
.modal-head { display:flex; align-items:center; justify-content:space-between; padding:14px 18px; border-bottom:1px solid var(--c-border); }
.modal-head .title { font-size:16px; font-weight:700; }
.modal-close { border:none; background:transparent; font-size:20px; cursor:pointer; color:var(--c-text-3); line-height:1; }
.modal-body { padding:16px 18px; overflow:auto; }
.modal-foot { display:flex; justify-content:flex-end; gap:10px; padding:14px 18px; border-top:1px solid var(--c-border); }

/* 报表弹层 */
.report { font-size:13px; line-height:1.65; }
.report h3 { margin:18px 0 8px; font-size:15px; border-left:3px solid var(--c-primary); padding-left:8px; }
.report .zline { display:flex; flex-wrap:wrap; gap:6px 18px; margin:4px 0; }
.report .pair { font-size:12.5px; } .report .pair b { color:var(--c-text-3); }
.report .bull { background:#fde8e6; color:var(--c-up); padding:6px 10px; border-radius:8px; margin:4px 0; }
.report .bear { background:#e7f6ec; color:var(--c-down); padding:6px 10px; border-radius:8px; margin:4px 0; }
.report pre { white-space:pre-wrap; background:var(--c-bg); border:1px solid var(--c-border); border-radius:8px; padding:10px; font-family:var(--mono); font-size:12px; }
.bar { height:8px; border-radius:4px; background:var(--c-bg); overflow:hidden; margin:2px 0 6px; }
.bar > i { display:block; height:100%; background:var(--c-primary); }
/* 持仓变动时间线 */
.timeline { position:relative; padding-left:18px; }
.timeline .tl-item { position:relative; padding:0 0 16px 6px; }
.timeline .tl-dot { position:absolute; left:-15px; top:4px; width:10px; height:10px; border-radius:50%; background:var(--c-primary); }
.timeline .tl-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.timeline .tl-note { color:var(--c-text-2); font-size:13px; margin-top:3px; }
.timeline .tl-diff { font-size:12.5px; margin-top:3px; font-family:var(--mono); }
.badge.up { background:#fde8e6; color:var(--c-up); } .badge.down { background:#e7f6ec; color:var(--c-down); } .badge.off { background:#eef2f7; color:#475569; }
/* 双周期综合操作标签（2026-10-15）：红涨绿跌同令牌（买入/加仓=红、减仓/清仓=绿、观望/持有=琥珀） */
.badge.combo { font-weight:700; }
.badge.combo.buy { background:#fde8e6; color:var(--c-up); }
.badge.combo.sell { background:#e7f6ec; color:var(--c-down); }
.badge.combo.hold { background:#fff4e5; color:var(--c-warn); }
/* 周K方向徽章「待」态（MTA 2026-10-14）：无周K研判 / VIP 低等级不可见 → 虚线灰字，
   与 .tag-type.wait 同风格，避免用技术面外推方向冒充周K结论；有方向时复用 .badge.buy/hold/sell 令牌 */
.badge.wk.wait { background:transparent; color:var(--c-text-3); border:1px dashed var(--c-border); font-weight:600; }

/* 状态条：浮动 toast（脱离文档流，避免筛选/加载时挤压页面） */
.statusbar { position:fixed; top:18px; left:50%; transform:translateX(-50%); z-index:9999; max-width:calc(100vw - 32px); text-align:center; padding:9px 16px; border-radius:999px; font-size:13px; font-weight:600; box-shadow:var(--shadow-md); background:var(--c-surface); border:1px solid var(--c-border); animation:statusIn .18s ease; }
.statusbar.hidden { display:none; }
.statusbar.loading { color:#2563eb; border-color:#bfdbfe; }
.statusbar.error { color:var(--danger); border-color:#fca5a5; }
.statusbar.ok { color:#16a34a; border-color:#86efac; }
@keyframes statusIn { from { opacity:0; transform:translateX(-50%) translateY(8px); } to { opacity:1; transform:translateX(-50%) translateY(0); } }
@media (max-width:560px){ .form-grid{grid-template-columns:1fr;} }

/* 持仓视角要点（决策 60：代理研判口径 + 系统算法口径合并；令牌着色，无硬编码色） */
.holding-brief { margin:0 0 12px; padding:12px 14px; border:1px solid var(--c-border); border-radius:var(--radius); background:var(--c-surface); box-shadow:var(--shadow-sm); }
.holding-brief .bb-title { font-weight:800; font-size:14px; color:var(--c-text); }
.holding-brief .bb-sub { font-size:11.5px; font-weight:600; color:var(--c-text-3); margin-left:8px; }
.holding-brief .bb-row { padding:9px 0; border-top:1px solid var(--c-border); }
.holding-brief .bb-row:first-of-type { border-top:none; }
.holding-brief .bb-head { font-weight:700; font-size:13.5px; color:var(--c-text); }
.holding-brief .bb-line { font-size:12.5px; color:var(--c-text-2); margin-top:3px; }
.holding-brief .bb-line.dim { color:var(--c-text-3); }
.holding-brief .bb-note { font-size:12.5px; color:var(--c-text-2); margin-top:4px; padding-left:8px; border-left:3px solid var(--c-warn); }
.holding-brief .bb-k { font-weight:700; color:var(--c-warn); margin-right:5px; font-size:11px; }
.holding-brief .bb-badge { font-size:11px; font-weight:700; padding:1px 7px; border-radius:6px; margin-left:6px; vertical-align:middle; }
.holding-brief .bb-badge.buy { color:var(--c-up); border:1px solid var(--c-up); }
/* 待研判徽标（2026-09-28 用户口径）：当日无研判时替代「组合唯一看多」——虚线灰字表达「尚未出结论」，
   与 .act（蓝）/ .buy（红）实线徽标区分，避免用技术面外推信号冒充研判结论 */
.holding-brief .bb-badge.wait { color:var(--c-text-3); border:1px dashed var(--c-border); font-weight:600; }
.holding-brief .bb-badge.act { color:var(--c-primary); border:1px solid var(--c-primary); }
.holding-brief .bb-now { font-family:var(--mono); font-weight:700; color:var(--c-text); }
.holding-brief .bb-now b { font-weight:700; }
/* 持仓视角要点高亮（用户诉求 2026-09-28）：止盈档=红 / 回撤止损=橙 / 持仓止损=绿。
   整段（标签+数值）同色，令牌着色（--up=红, --warn=橙, --down=绿），明暗主题自动适配；｜ 分隔符与 .dim 行其余文字保持 --c-text-3。 */
.holding-brief .bb-hl-tp { color:var(--up); font-weight:700; }
.holding-brief .bb-hl-trail { color:var(--warn); font-weight:700; }
.holding-brief .bb-hl-stop { color:var(--down); font-weight:700; }
/* R买入区高亮（用户诉求 2026-09-28）：与卡片「买入区」同红(--up)，整段(标签+数值)同色 */
.holding-brief .bb-hl-rbuy { color:var(--warn); font-weight:700; }
.holding-brief .bb-hl-bz { color:var(--warn); font-weight:700; }
/* 距买入区高亮（用户诉求 2026-09-28）：整段(标签+数值)同色，≤0(已入/触及买区,便宜可买)=绿 --down；>0(仍在买区上方偏贵)=红 --up；
   红涨绿跌铁律延伸；后附提示词(如「勿追高」)保持灰；无法解析(%)时 class 为空，继承 .dim 灰。 */
.holding-brief .bb-hl-bz-near { color:var(--down); font-weight:700; }
.holding-brief .bb-hl-bz-far { color:var(--up); font-weight:700; }
/* KDJ 状态高亮（用户诉求 2026-09-28）：与「距买入区」同套位置色逻辑（高位红/低位绿，红涨绿跌），整段(标签 KD + 数值)同色。
   超买(J>100,高位)=红 --up；超卖(J<0,低位)=绿 --down；中性无色(继承 .bb-line 灰)。 */
.holding-brief .bb-hl-kdj-ob { color:var(--up); font-weight:700; }
.holding-brief .bb-hl-kdj-os { color:var(--down); font-weight:700; }
.holding-brief .bb-head-row { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:8px; }
.holding-brief .bb-toggle { flex:none; width:28px; height:28px; border:1px solid var(--c-border); background:var(--c-surface-2); color:var(--c-text-2); border-radius:8px; cursor:pointer; font-size:13px; line-height:1; display:inline-flex; align-items:center; justify-content:center; transition:transform .15s ease, border-color .15s ease; }
.holding-brief .bb-toggle:hover { border-color:var(--c-primary); color:var(--c-primary); }
.holding-brief.collapsed .bb-body { display:none; }
.holding-brief.collapsed .bb-toggle { transform:rotate(-90deg); }

/* ---------- 卡片标题区间胶囊（用户诉求 2026-09-24） ----------
   .ztag / .z-<key> 着色定义在 watch.css（与看盘同口径），本页只收敛布局与尺寸 */
.srow-mid .ztag { flex:none; }
.srow-mid .srow-tools { display:flex; align-items:center; gap:6px; margin-left:auto; }

/* 卡片操作图标按钮（2026-09-28 图标化）：报表（文档图标）与「更多操作」（齿轮）统一 30×30 方形图标按钮；
   去掉「报表 ↗」文字后工具区变窄，标题行区间胶囊与工具不再换行 */
.srow-tools .btn-d { flex:none; width:30px; height:30px; padding:0; display:inline-flex; align-items:center; justify-content:center; border-radius:9px; }
.srow-tools .btn-d svg { display:block; }

/* 齿轮操作入口：与报表图标同规格，hover / 展开态走主色 */
.gear { flex:none; width:30px; height:30px; padding:0; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--c-border); border-radius:9px; background:var(--c-surface-2); color:var(--c-text-2);
  cursor:pointer; transition:border-color .15s ease, color .15s ease, background .15s ease; }
.gear:hover { border-color:var(--c-primary); color:var(--c-primary); }
.gear.on { border-color:var(--c-primary); color:var(--c-primary); background:var(--c-primary-soft); }
.gear svg { display:block; }

/* 拖拽排序手柄（2026-09-30 落地）：仅「全部」视图可见；抓取光标 + 中性灰，不与涨跌/信号色冲突 */
.card-grip { flex:none; width:22px; height:30px; display:inline-flex; align-items:center; justify-content:center;
  font-size:15px; line-height:1; color:var(--c-text-3); cursor:grab; user-select:none; border-radius:9px;
  transition:color .15s ease, background .15s ease; }
.card-grip:hover { color:var(--c-primary); background:var(--c-primary-soft); }
.card-grip:active { cursor:grabbing; }
.srow.dragging { opacity:.45; }
.srow.drag-over { outline:2px dashed var(--c-primary); outline-offset:-2px; }
/* 筛选态（非全部视图）：禁用拖拽并隐藏手柄（排序语义不稳，见 dragFilterActive） */
.no-drag .card-grip { display:none; }

/* 卡片操作菜单（body 级 fixed 浮层：卡片 .srow 为 overflow:hidden，挂卡片内会被裁剪） */
.card-menu { position:fixed; z-index:1200; min-width:152px; padding:6px; background:var(--c-surface);
  border:1px solid var(--c-border); border-radius:12px; box-shadow:var(--shadow-md); display:none; }
.card-menu.open { display:block; }
.card-menu button { display:block; width:100%; padding:9px 10px; border:0; border-radius:8px; background:transparent;
  color:var(--c-text); font-family:inherit; font-size:13px; text-align:left; cursor:pointer; }
.card-menu button:hover { background:var(--c-surface-2); }
.card-menu button.danger { color:var(--danger); }
.card-menu button.danger:hover { background:#fdeceb; }
[data-theme="dark"] .card-menu button.danger:hover { background:rgba(220,38,38,.18); }
.card-menu .sep { height:1px; margin:5px 4px; background:var(--c-border); }

/* 持仓视角要点：标题行整行可点击折叠（右侧 ▾ 保留，两者同效） */
.holding-brief .bb-head-row { cursor:pointer; }
.holding-brief .bb-head-row:hover .bb-title { color:var(--c-primary); }

/* 买入区 + R≥2 子带价格条（2026-09-28 定稿：红段=高盈亏比甜区[il,r2]，橙段=低R段(r2,ih]；令牌着色，无硬编码）
   形态：条内两端标区间端点价 il/ih（浅色字+轻阴影），R≥2 达标价 r2 居中压在红/橙分界处（条内）。条上方分割线 + r2 胶囊已移除。
   归属：属「建仓参数」，持仓/自选股统一由决策卡「建仓计划」组承载 —— 「买入区」标签与价格条<b>同行</b>（标签左、
   条体在 .kp-lv-att 内占满行内剩余宽度），图例说明 .rbuy-leg 下移<b>单独占一行</b>（见 .kp-lv-leg）；
   2026-09-30 起自选中栏同样渲染建仓计划组，原「详情底部独立块 .rbuy-zone」已删（价格条全站仅决策卡一处落位）。 */
/* 绘图区：左右无内边距 ⇒ 标签 left:% 与条形百分比同基准 */
.rbuy-plot { position:relative; }
/* 条：底用 --surface-2；子带填充直接复用 --up / --warn 真源（禁 --up-soft/--warn-soft：
   仅 12~14% 叠灰底会发灰、两段色相不可辨；也不单设低饱和 fill 令牌）。 */
.rbuy-bar { position:relative; display:flex; height:20px; border-radius:6px; overflow:hidden; background:var(--surface-2); }
.rbuy-seg { flex:0 0 auto; }
.rbuy-seg.red { background:var(--up); }
.rbuy-seg.orange { background:var(--warn); }
.rbuy-bar.all-red .rbuy-seg.orange, .rbuy-bar.all-orange .rbuy-seg.red { display:none; }
/* 条内端点价（区间上下限 il / ih）：压在饱和子带上 ⇒ 用浅色字 + 轻阴影保证对比度 */
.rbuy-end { position:absolute; top:50%; transform:translateY(-50%); font-style:normal; font-family:var(--mono);
  font-size:10.5px; color:rgba(255,255,255,.96); text-shadow:0 1px 2px rgba(0,0,0,.28); pointer-events:none; }
.rbuy-end.l { left:7px; }
.rbuy-end.r { right:7px; }
/* 达标价 r2 标签（写条内、水平居中压在红/橙两子带分界处）：白色字 + 深色阴影，深浅主题与红/橙底上均可读。
   2026-09-28 最终口径：移除分割线与上方胶囊、移除贴边偏移逻辑 —— 价格数字直接居中骑在分界即可。
   ⚠ .rbuy-bar 带 overflow:hidden 保圆角裁剪 ⇒ 标签必须满条高且不溢出（出界部分会被剪掉、不可见）。 */
.rbuy-mark { position:absolute; top:50%; transform:translate(-50%,-50%); height:100%; display:flex; align-items:center;
  font-style:normal; font-family:var(--mono); font-size:10.5px; font-weight:800; line-height:1; color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.4); white-space:nowrap; pointer-events:none; }
/* 决策卡「建仓计划」组内的买入区价格条（2026-09-28 最终口径：条体直接落在 .kp-lv-att 内，不再有 .rbuy-zone 包裹层，
   故原先给 .kp-lv-group .rbuy-zone 的「去内边距/去底虚线」已无对象，上下间距改由 .kp-lv-attach / .kp-lv-leg 控制）；
   仅保留条高压紧：20px → 18px，与行内标签小字号协调 */
.kp-lv-group .rbuy-bar { height:18px; }
/* 图例说明（2026-09-28 最终口径：保留标签说明、下移<b>独占一行</b>，不参与「标签+价格条」的同行 flex）；
   方块与子带同源令牌着色（--up / --warn），保证「条上填充色 === 图例方块色」永远一致 */
.rbuy-leg { display:flex; align-items:center; flex-wrap:wrap; gap:5px; margin-top:6px; font-size:10.5px; color:var(--c-text-3); line-height:1.5; }
.rbuy-leg .sw { width:9px; height:9px; border-radius:2px; display:inline-block; margin:0 2px 0 0; }
.rbuy-leg .sw.red { background:var(--up); }
.rbuy-leg .sw.orange { background:var(--warn); }
.rbuy-leg .num { font-family:var(--mono); font-weight:700; }
.rbuy-leg .num.red { color:var(--up); }
.rbuy-leg .num.orange { color:var(--warn); }
/* 「买入区」标签行：标签居左、价格条居右占满行内剩余宽度，二者<b>同行</b>（align-items:center 使条体与标签垂直居中）。
   图例说明不在本行内 —— 由 .kp-lv-leg 独占下一行（若图例留在同列，窄宽下会折行撑高整块、把标签挤到图例行）。
   双类 .kp-lv.kp-lv-attach 提高特异度，稳定覆盖 .kp-lv 的 justify-content:space-between。 */
.kp-lv.kp-lv-attach { display:flex; align-items:center; justify-content:flex-start; gap:8px; padding-bottom:2px; }
.kp-lv-att { flex:1; min-width:0; }
/* 价格条图例说明行：单独占一行（紧随「买入区」标签+价格条行），左对齐到组内左缘 */
.kp-lv-leg { padding:0 0 3px; }
.kp-lv-leg .rbuy-leg { margin-top:4px; }

/* 建仓分档限价「分档建仓」行（2026-10-08 新增，执行层派生参数，不改引擎算法真源）
   【设计变更·初版叠加方案已废弃】初版把三档刻度叠在买入区价格条上，但引擎买入区带宽仅约 2%（il~ih），
   而三档相对 il 上浮 2%/4%/6% ⇒ 真实数据下档位几乎必然超出 ih（洛钼实例 il=13.85/ih=14.13，
   档位 14.13/14.40/14.68 三档全越界），叠加方案既画不出来、又把「越界」噪声塞进图例。
   现改为独立行：三档各一枚 chip（仓位% + 限价）横向排布，间距清晰、现价触及则高亮。
   ① 双类 .kp-lv-group .ldg-row 提高特异度覆盖 watch.css（前端铁律：禁裸单类）；
   ② 未成交=中性描边、已成交=买入红实色边框 —— 形状与颜色双重区分，非颜色单一编码；
   ③ 禁软色 / 禁 opacity 叠色（会随底色漂移），已成交态用实色边框 + 浅底。 */
.kp-lv-group .ldg-row { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.kp-lv-group .ldg-lab { font-size:11.5px; color:var(--text-3); flex:none; }
.kp-lv-group .ldg-chip {
  display:inline-flex; align-items:baseline; gap:4px; flex:none;
  padding:2px 8px; border-radius:999px;
  border:1px solid var(--c-border); background:var(--surface);
  font-family:var(--mono); font-size:11.5px; line-height:1.5; cursor:default;
}
.kp-lv-group .ldg-chip b { font-weight:600; color:var(--text-2); }
.kp-lv-group .ldg-chip i { font-style:normal; color:var(--text); }
.kp-lv-group .ldg-chip.done { border-color:var(--up); background:var(--surface-2); }
.kp-lv-group .ldg-chip.done b, .kp-lv-group .ldg-chip.done i { color:var(--up); }
.kp-lv-group .ldg-sum { font-size:11px; color:var(--text-3); margin-left:2px; }

/* 行业 chips 筛选条（2026-09-28 落地；2026-09-30 v2：默认折叠一行防撑长页面）
   折叠实现：.ind-chips.collapsed 仅 overflow:hidden，行高由 JS 按 chip 实测高度内联设定（免字体渲染差导致裁切）；
   「展开/收起」按钮仅在 chips 溢出一行时显示（board.js syncIndChips 控制 .hidden） */
.ind-chips-bar { display:flex; align-items:center; gap:8px; margin:0 0 12px; }
.ind-chips { flex:1; min-width:0; display:flex; flex-wrap:wrap; gap:8px; }
.ind-chips.collapsed { overflow:hidden; }
.ind-chip { border:1px solid var(--c-border); background:var(--c-surface); color:var(--c-text-2);
  font-size:12.5px; padding:5px 14px; border-radius:999px; cursor:pointer; font-family:inherit;
  transition:border-color .15s ease, color .15s ease, background .15s ease; }
.ind-chip:hover { border-color:var(--c-primary); color:var(--c-primary); }
.ind-chip.active { background:var(--c-primary); color:#fff; border-color:var(--c-primary); font-weight:600; }
.ind-toggle { flex:none; border:0; background:transparent; color:var(--c-primary); font-size:12px;
  font-family:inherit; cursor:pointer; padding:4px 6px; white-space:nowrap; }
.ind-toggle:hover { text-decoration:underline; }

/* 区间概览胶囊：移动端折叠展开按钮（2026-10-12，形态对齐 .ind-toggle）。
   桌面端由 JS 加 .hidden 隐藏；此处同时兜底 .zone-toggle.hidden 与全局 .hidden 同效，避免缺类导致按钮残留。 */
.zone-toggle { flex:none; border:0; background:transparent; color:var(--c-primary); font-size:12px;
  font-family:inherit; cursor:pointer; padding:4px 6px; white-space:nowrap; margin:0 0 10px 2px; }
.zone-toggle:hover { text-decoration:underline; }
.zone-toggle.hidden { display:none; }
/* 被折叠的胶囊：display:none 从 grid 移除，剩余前 6 项在移动端 2 列网格中自然排成 3 行 */
.zone-bar .zc.zone-hidden { display:none; }

/* ============ 卡片标题（对齐原型 kanpan-full：评分环并排价格、趋势徽标+AI动作徽标+区间价签、分组·成本副行） ============ */
/* 评分环与价格块并排：watch.css 默认 srow-pq 为 baseline 对齐（环底与价格底不齐），改 center 与价格块垂直居中 */
.srow-pq { align-items:center; }
.pq-right { text-align:right; line-height:1.15; }
/* 副行：分组 · 成本/自选（原型 kp-sub） */
.kp-sub { font-size:12px; color:var(--c-text-3); margin:2px 0 10px; }
.kp-sub .pnl { font-weight:700; margin-left:0; }
.kp-sub .pnl.up { color:var(--up); }
.kp-sub .pnl.down { color:var(--down); }
.kp-sub .pnl.flat { color:var(--c-text-3); }
/* 非今日分析徽标：虚线中性，区别于实色语义徽标（待研判） */
.tag-type.noday { background:transparent; color:var(--c-text-3); border:1px dashed var(--c-border); font-weight:600; padding:1px 7px; }

/* 区间价格标签（原型 ztags）：显式区分「建仓 / 持仓」两侧；红涨绿跌令牌着色，无硬编码 */
.ztag.pl-buy  { background:var(--up-soft);   color:var(--up); }
.ztag.pl-down { background:var(--down-soft); color:var(--down); }
.ztag.pl-warn { background:var(--warn-soft); color:var(--warn); }
.ztag.pl-up   { background:var(--up-soft);   color:var(--up); }

/* ============ 卡片详情四面板（对齐原型 kp-trend / kp-dec / kp-tech / 研判备注） ============ */
/* 面板统一卡片感（2026-09-29 统一）：三栏（趋势档案/持仓决策/技术指标）同款外观——
   同 1px 边框 + 同 12px 圆角 + 同 8px/10px 内边距 + 同白底(--c-surface) + 轻投影(--shadow-sm)，
   消除此前「左栏灰蓝底(--c-surface-2)、中栏白底、右栏无边框无底」的三栏不一致；令牌着色，明暗主题自适应 */
.kp-trend, .kp-dec, .kp-tech {
  margin-top:12px; border:1px solid var(--c-border); border-radius:12px;
  padding:8px 10px; background:var(--c-surface); box-shadow:var(--shadow-sm);
}
.kp-trend:first-child, .kp-dec:first-child, .kp-tech:first-child { margin-top:4px; }
/* 技术指标面板：单列「标签｜值｜分区标签」行式，行间 1px 细分隔线，取消每格独立边框卡片 ——
   2026-09-28 用户反馈原「10 张边框小卡竖排」过高且零碎；行式在窄卡内不折行错位，整块高度约减半 */
.kp-tech { display:flex; flex-direction:column; }
/* 面板标题行：三栏（趋势档案/持仓决策/技术指标）同款头部——标题 + 右侧标签，
   底部细线分隔正文（统一层次，消除「栏内无分隔」的单调感） */
.kp-th { display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding-bottom:6px; margin-bottom:6px; border-bottom:1px solid var(--c-border); }
.kp-tt { font-size:12px; font-weight:800; color:var(--c-text); }
.kp-tt .help-tip { margin-left:5px; } /* ⓘ 紧贴标题、留 5px 呼吸空隙（2026-10-16 用户反馈周K方向面板图标被顶到最右） */
.kp-ttag { font-size:10.5px; font-weight:700; padding:2px 9px; border-radius:999px; }
.kp-ttag.buy   { background:var(--up-soft);   color:var(--up); }
.kp-ttag.hold  { background:var(--warn-soft); color:var(--warn); }
.kp-ttag.sell  { background:var(--down-soft); color:var(--down); }
.kp-sum { font-size:12px; color:var(--c-text-2); margin-top:6px; line-height:1.6; }

/* 持仓决策面板（背景/边框/投影已由上方三栏统一规则设定，此处仅保留面板专属内部结构样式） */
.kp-dh { display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding-bottom:6px; margin-bottom:6px; border-bottom:1px solid var(--c-border); }
.kp-dt { font-size:12px; font-weight:800; }
.kp-prof { font-family:var(--mono); font-weight:700; font-size:12px; margin-left:8px; }
.kp-dbadge { font-size:11px; font-weight:800; padding:3px 10px; border-radius:999px; letter-spacing:.03em; }
.kp-dbadge.ADD    { background:var(--up-soft);   color:var(--up); }
.kp-dbadge.HOLD   { background:var(--warn-soft); color:var(--warn); }
.kp-dbadge.REDUCE { background:var(--down-soft); color:var(--down); }
.kp-dbadge.CLEAR  { background:color-mix(in srgb, var(--down) 18%, transparent); color:var(--down); border:1px solid var(--down); }
.kp-dbadge.HEDGE  { background:var(--c-primary-soft); color:var(--c-primary); }
/* 关键价位：拆为「建仓计划 / 持仓跟踪」两组，由小标题分界，避免建仓·持仓混排 */
.kp-lv-group { margin-top:6px; }
.kp-lv-group:first-child { margin-top:2px; }
.kp-lvg-h { font-size:10.5px; font-weight:700; color:var(--c-text-3); letter-spacing:.04em; margin-bottom:3px; }
/* 建仓计划/持仓跟踪两组均由小标题(.kp-lvg-h)分界，不再用虚线（面板头部已有标题分隔线，避免重复线条） */
.kp-lv-group .kp-levels { border-top:none; padding-top:2px; margin-top:2px; }
.kp-lv { display:flex; justify-content:space-between; font-size:12px; padding:2px 0; }
.kp-lv span:first-child { color:var(--c-text-3); }
.kp-lv b { font-family:var(--mono); font-weight:700; }
/* 带「?」说明的行：标签与 ? 居左、数值仍右对齐（? 用统一组件 .help-tip，与周K方向判断图标同源） */
.kp-lv-has-tip { justify-content:flex-start; gap:5px; }
.kp-lv-has-tip > b { margin-left:auto; }
.kp-fuse { margin-top:8px; font-size:11px; color:var(--warn); background:var(--warn-soft); padding:6px 9px; border-radius:7px; line-height:1.5; }

/* 技术指标行（原型 kanpan-full 原为 .kp-tech 4 列边框卡片网格，2026-09-28 按用户要求简化为行式）
   行结构：标签(定宽) | 值(mono，左端对齐) —— 分区标签贴行右端，各行右缘对齐 */
/* 技术指标行：标签(定宽·灰) | 数值(mono·深·700) | 量级分区(软色块)，三层字重/色彩对比拉满，缓解亮色平感（1+2+3 落地） */
.kp-tk { display:flex; align-items:baseline; gap:10px; padding:5px 0; border-bottom:1px solid var(--c-border); }
.kp-tk:last-child { border-bottom:none; }
.kp-tkl { flex:0 0 auto; min-width:54px; font-size:10.5px; color:var(--c-text-3); font-weight:600; }
.kp-tkl .help-tip { margin-left:5px; } /* ? 紧跟指标名但留少量呼吸空隙，防贴字/盖字（2026-10-16 用户反馈） */
.kp-tkv { flex:1 1 auto; min-width:0; display:flex; align-items:baseline; justify-content:space-between; gap:8px; font-family:var(--mono); font-weight:700; font-size:11.5px; color:var(--c-text); line-height:1.5; word-break:break-word; }
.kp-tkv .kp-zone { margin-left:0; flex:0 0 auto; }
/* 指标量级分区小标签（红涨绿跌：up=红/warn=橙/down=绿）：加大留白 + 同色系描边，让色块在白底上更跳 */
.kp-zone { font-style:normal; font-size:10.5px; font-weight:800; padding:2px 8px; border-radius:7px; white-space:nowrap; border:1px solid color-mix(in srgb, currentColor 28%, transparent); }
.kp-zone.up { background:var(--up-soft); color:var(--up); }
.kp-zone.down { background:var(--down-soft); color:var(--down); }
.kp-zone.warn { background:var(--warn-soft); color:var(--warn); }

/* 研判备注行 */
/* 研判备注：基础样式只管字号/颜色；上间距与虚分割线不放这里 —— 持仓股由 .kp-bottom 通栏承载分隔线、
   自选直接子元素由上方列位规则收口（2026-09-30 用户口径：自选备注落左下角、无分割线） */
.kp-note { font-size:13px; color:var(--c-text-2); }
.kp-note b { color:var(--c-text); }

/* 趋势档案：阶段/驱动/共振/状态 pills（对齐原型 kanpan-full：加粗前缀 + p-up/p-down/p-warn 三色） */
.kp-pills { display:flex; flex-wrap:wrap; gap:6px; margin-top:2px; }
.kp-pill { font-size:11px; padding:3px 9px; border-radius:7px; background:var(--c-surface-2); border:1px solid var(--c-border); color:var(--c-text-2); }
.kp-pill b { color:var(--c-text-3); font-weight:600; margin-right:4px; }
.kp-pill.p-up   { color:var(--up);   border-color:color-mix(in srgb,var(--up) 35%,var(--c-border)); }
.kp-pill.p-down { color:var(--down); border-color:color-mix(in srgb,var(--down) 35%,var(--c-border)); }
.kp-pill.p-warn { color:var(--warn); border-color:color-mix(in srgb,var(--warn) 35%,var(--c-border)); }
/* 趋势强度条（对齐原型 .kp-str） */
.kp-str { margin-top:8px; }
.kp-str .kp-sl { display:flex; justify-content:space-between; font-size:11px; color:var(--c-text-3); margin-bottom:3px; }
.kp-str .kp-bar { height:7px; border-radius:4px; background:var(--c-surface); overflow:hidden; }
.kp-str .kp-bar > i { display:block; height:100%; border-radius:4px; }

/* 持仓决策：决策理由（多/空/中性圆点，对齐原型 .kp-reason） */
.kp-reason { list-style:none; padding:0; margin:8px 0 0; }
.kp-reason li { position:relative; padding:3px 0 3px 16px; font-size:12px; line-height:1.5; color:var(--c-text-2); border-bottom:1px dashed var(--c-border); }
.kp-reason li:last-child { border-bottom:none; }
.kp-reason li::before { content:""; position:absolute; left:2px; top:9px; width:7px; height:7px; border-radius:50%; }
.kp-reason li.r-up::before { background:var(--up); }
.kp-reason li.r-down::before { background:var(--down); }
.kp-reason li.r-hold::before { background:var(--warn); }
.kp-reason li b { font-weight:700; }
.kp-reason li b.u { color:var(--up); } .kp-reason li b.d { color:var(--down); } .kp-reason li b.h { color:var(--warn); }
/* 四维评分竖条（对齐原型 kanpan-full .kp-4d） */
.kp-4d { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:10px; }
.kp-4d .kp-dim { text-align:center; }
.kp-4d .kp-dim .kp-dn { font-size:10px; color:var(--c-text-3); margin-bottom:3px; }
.kp-4d .kp-dim .kp-track { height:36px; width:10px; margin:0 auto; border-radius:5px; background:var(--c-surface-2); position:relative; overflow:hidden; }
.kp-4d .kp-dim .kp-track > i { position:absolute; bottom:0; left:0; right:0; border-radius:5px; }
.kp-4d .kp-dim .kp-dv { font-family:var(--mono); font-size:10.5px; font-weight:700; margin-top:3px; }
/* 长文本折叠（趋势结论/决策理由）：默认限高 + 底部渐隐，点「展开/收起」看全文（事件委托切换 .kp-fold.open） */
.kp-fold { margin-top:6px; }
.kp-fold > .kp-fold-body { max-height:calc(var(--kp-lines,3) * 1.62em); overflow:hidden; }
.kp-fold:not(.open) > .kp-fold-body { -webkit-mask-image:linear-gradient(180deg,#000 62%,transparent); mask-image:linear-gradient(180deg,#000 62%,transparent); }
.kp-fold.open > .kp-fold-body { max-height:none; }
.kp-fold-btn { display:inline-block; margin-top:4px; border:none; background:none; padding:0; color:var(--c-primary); font-size:11px; font-weight:600; cursor:pointer; }
.kp-fold-btn::after { content:"▾"; margin-left:3px; font-size:9px; }
.kp-fold.open .kp-fold-btn::after { content:"▴"; }

/* 看盘卡片详情（2026-09-29「方案A+」定稿）：展开即全宽，详情 3 栏网格（趋势 / 持仓 / 技术）
   + 底部通栏（左研判备注、右四维评分竖条，四维已从持仓决策卡移出）。
   align-items:stretch 让三栏面板边框底边拉齐，消除「中间高两边低」。 */
.srow.open { grid-column:1 / -1; }
.srow.open .detail { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:16px; align-items:stretch; }
.srow.open .detail > .kp-tech { grid-column:3; }
/* 仅自选股（无四维、备注为 .detail 直接子元素）：备注落「左下角」第 1 列（趋势档案正下方，2026-09-30 用户口径），
   并去掉基础样式的上间距与虚分割线（持仓股的分隔线由 .kp-bottom 通栏承载，自选直接子元素不需要） */
.srow.open .detail > .kp-note { grid-column:1; margin-top:0; padding-top:0; border-top:none; }
/* 详情底部通栏：左 = 研判备注（占满剩余宽），右 = 四维竖条（固定 420px 靠右）；上侧虚分隔线统一由本带承载 */
.srow.open .detail > .kp-bottom { grid-column:1 / -1; display:flex; align-items:center; gap:16px; margin-top:10px; padding-top:8px; border-top:1px dashed var(--c-border); }
.srow.open .detail > .kp-bottom .kp-note { flex:1 1 auto; min-width:0; margin-top:0; padding-top:0; border-top:none; }
.srow.open .detail > .kp-bottom .kp-b4d { flex:0 0 420px; margin-left:auto; }
.srow.open .detail > .kp-bottom .kp-4d { margin-top:0; }
/* 持仓股但无研判备注：四维单独靠右，不与空占位并排 */
.srow.open .detail > .kp-bottom.single .kp-4d { flex:0 0 420px; margin-left:auto; }
@media (max-width:640px){
  /* 技术指标已改行式（flex 单列），窄屏只需收紧标签列宽 */
  .kp-tkl { min-width:42px; }
  .kp-4d { grid-template-columns:repeat(4,1fr); }
  /* 窄屏回退单栏，避免 3 栏挤压；技术/备注恢复自动列流 */
  .srow.open .detail { grid-template-columns:1fr; }
  .srow.open .detail > .kp-tech,
  .srow.open .detail > .kp-note { grid-column:auto; }
  /* 底部通栏窄屏改为纵向堆叠（备注在上、四维在下并铺满整行） */
  .srow.open .detail > .kp-bottom { flex-direction:column; align-items:stretch; }
  .srow.open .detail > .kp-bottom .kp-b4d,
  .srow.open .detail > .kp-bottom.single .kp-4d { flex:none; margin-left:0; }
  /* 窄屏卡片网格回退单列，无论用户选 1/2/3 列均强制单栏，避免挤压 */
  .cards, .cards.cols-1, .cards.cols-2, .cards.cols-3 { grid-template-columns:1fr; }
}

/* 返回顶部悬浮按钮（2026-10-12）：下滑超阈值后渐显，点击平滑回顶；
   配色走设计令牌（主色描边/图标、面板底、阴影），明暗主题自适应；z-index 低于弹层(100+)不遮挡。
   显隐用 opacity+visibility+transform 过渡，避免 display:none 切换的闪跳；移动端适当内缩避让边缘。 */
.to-top { position:fixed; right:16px; bottom:18px; z-index:80; width:44px; height:44px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer; padding:0;
  border:1px solid var(--border); background:var(--panel); color:var(--primary);
  box-shadow:var(--shadow-md); opacity:0; visibility:hidden; transform:translateY(10px); pointer-events:none;
  transition:opacity .18s ease, transform .18s ease, visibility .18s ease, border-color .15s ease; }
.to-top:hover { border-color:var(--primary); }
.to-top.show { opacity:1; visibility:visible; transform:translateY(0); pointer-events:auto; }

/* 周K方向判断面板（多周期分析 MTA，2026-10-15）：与趋势/持仓/技术三栏同款卡片外观，仅令牌着色、明暗自适应。
   布局（2026-10-15 修正）：.detail 为固定三栏网格（技术指标钉第 3 列），本面板作为整行通栏
   置于技术指标之后（grid-column:1/-1），不参与三栏列流，避免把技术指标挤到第二行造成错位 */
.wk-card { margin-top:0; border:1px solid var(--c-border); border-radius:12px;
  padding:8px 10px; background:var(--c-surface); box-shadow:var(--shadow-sm); }
.srow.open .detail > .wk-card { grid-column:1 / -1; }
.wk-card:first-child { margin-top:4px; }
.wk-card .kp-th { position:relative; }
.wk-card .p-up { color:var(--up); }
.wk-card .p-down { color:var(--down); }
.wk-card .p-warn { color:var(--warn); }
/* 「?」图标 / 弹层已统一到 common/help-tip.css（.help-tip / .help-tip-pop），本页只保留弹层内页内内容排版 */
.wk-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:4px 14px; margin-top:2px; }
.wk-cell { display:flex; align-items:baseline; gap:6px; font-size:12px; min-width:0; }
.wk-cell > span { color:var(--c-text-3); flex:none; }
.wk-cell > b { font-weight:700; white-space:nowrap; }
.wk-cell > b > i, .wk-cell i { font-style:normal; color:var(--c-text-3); font-size:11px; white-space:normal; }
.wk-dims { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.wk-dim { display:inline-flex; align-items:baseline; gap:4px; border:1px solid var(--c-border);
  border-radius:6px; padding:2px 8px; font-size:12px; color:var(--c-text); }
.wk-dim b { color:var(--c-text-3); font-weight:600; }
.wk-dim em { font-style:normal; font-weight:700; font-size:13px; }
.wk-formula { font-size:11.5px; color:var(--c-text-3); margin-top:6px; line-height:1.5; font-family:var(--mono); }
.wk-note { font-size:12px; color:var(--c-text-2); margin-top:6px; line-height:1.6; }
.wk-rules { display:flex; flex-direction:column; gap:5px; }
.wk-rule { display:flex; align-items:baseline; gap:8px; font-size:12px; line-height:1.6; }
.wk-rule b { flex:0 0 auto; font-weight:600; color:var(--c-text-3); text-align:left; }
.wk-rule span { color:var(--c-text); }
@media (max-width:640px){
  .wk-rule { flex-direction:column; gap:1px; }
  .wk-rule b { flex:none; text-align:left; }
  .wk-grid { grid-template-columns:repeat(2,1fr); }
  .wk-cell > b { white-space:normal; }
}
[data-theme="dark"] .to-top { color:var(--primary); }
@media (max-width:640px){ .to-top { right:12px; bottom:14px; width:42px; height:42px; } }
