/* =============================================================================
 * 星枢 · 可复用样式底座  xs-core.css   v0.2
 * -----------------------------------------------------------------------------
 * 【资产来源与出处】（本文件 100% 复用历史资产，未从零造轮子）
 *   ① 主题变量 / 主面板 / Modal / Toast / Radio-Card / 按钮 / 输入框
 *      ← E:/星枢财经_V3.1/style.css（426 行，深色科技风：深蓝黑底 + 冰蓝主色 #64FFDA）
 *   ② 数据卡片 / 栅格面板 / 数据表格 / 状态标签 / 顶部告警条
 *      ← E:/星枢审计/99_升级与搭建_v3/前端/只读仪表盘/index.html（51 行 CSS，行 9-59）
 *   ③ 本轮新增（历史资产中缺失，轻封装）：
 *      滑块 Slider、双轨余额条、Loading 态、反馈浮层、审批表格操作列
 * -----------------------------------------------------------------------------
 * 红线：任何页面引用本文件后，展示层的手机号必须经过 XSUi.maskPhone() 脱敏。
 * ========================================================================== */

/* ===== ① 主题变量（源自 星枢财经 V3.1） ===== */
:root {
  --bg-deep: #0A0F1A;
  --bg-panel: #0F1626;
  --bg-modal: rgba(16, 24, 42, 0.92);
  --ice: #64FFDA;
  --ice-soft: rgba(100, 255, 218, 0.14);
  --ice-line: rgba(100, 255, 218, 0.28);
  --ice-border: rgba(100, 255, 218, 0.22);
  --warn: #FF8C00;
  --warn-soft: rgba(255, 140, 0, 0.12);
  --text-main: #D9E4F5;
  --text-dim: #8A97B0;
  --glass-border: 1px solid var(--ice-border);
  --radius-lg: 16px;
  --radius-md: 10px;

  /* ② 只读仪表盘语义色（合并进来，用于表格/标签/图表） */
  --line: #2a3346;
  --ok: #36d399;
  --bad: #f87272;
  --grey: #4a5568;
  --acc: #4ea1ff;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html, body {
  height: 100%;
  background: var(--bg-deep);
  color: var(--text-main);
  font-family: "Microsoft YaHei", "PingFang SC", "Segoe UI", sans-serif;
}

/* ==================== 主面板 ==================== */
.main-panel { height: 100vh; display: flex; flex-direction: column;
  background: radial-gradient(1200px 500px at 15% -10%, rgba(100,255,218,.06), transparent 60%), var(--bg-panel);
  transition: filter .3s ease; }
.main-panel.is-locked { filter: grayscale(.6) brightness(.45); pointer-events: none; user-select: none; }

.main-header { display: flex; align-items: center; justify-content: space-between;
  padding: 18px 28px; border-bottom: 1px solid var(--ice-line); }
.main-header h1 { font-size: 22px; letter-spacing: 2px; color: var(--ice);
  text-shadow: 0 0 18px rgba(100,255,218,.35); }

.chip { font-size: 12px; padding: 4px 12px; border-radius: 999px;
  border: 1px solid var(--ice-border); color: var(--text-dim); background: rgba(255,255,255,.02); }
.chip-dormant { border-color: rgba(255,140,0,.45); color: var(--warn); background: var(--warn-soft); }
.chip-ok { border-color: rgba(54,211,153,.45); color: var(--ok); background: rgba(54,211,153,.12); }

.main-body { flex: 1; display: flex; min-height: 0; }

/* ---- 左侧栏 ---- */
.side-bar { width: 320px; padding: 22px; border-right: 1px solid var(--ice-line);
  display: flex; flex-direction: column; gap: 16px; background: rgba(255,255,255,.015); overflow-y: auto; }
.side-bar h2 { font-size: 15px; color: var(--ice); letter-spacing: 1px;
  padding-bottom: 10px; border-bottom: 1px dashed var(--ice-border); }
.filter-item label { display: block; font-size: 12px; color: var(--text-dim); margin-bottom: 6px; letter-spacing: 1px; }
.filter-value { padding: 10px 12px; border-radius: var(--radius-md); border: var(--glass-border);
  background: rgba(255,255,255,.02); font-size: 13px; color: var(--ice); word-break: break-all; }
.filter-value.empty { color: var(--text-dim); font-style: italic; }
.bar-hint { font-size: 11px; color: var(--text-dim); line-height: 1.6; }
.workspace { flex: 1; padding: 24px; overflow-y: auto; }
.ws-placeholder { height: 100%; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 12px; border: 1px dashed var(--ice-border);
  border-radius: var(--radius-lg); color: var(--text-dim); }
.ws-placeholder p { font-size: 18px; color: var(--ice); letter-spacing: 2px; }
.ws-placeholder span { font-size: 12px; }

/* ==================== ③ 双轨余额条（新增） ==================== */
.wallet-bar { display: flex; gap: 10px; align-items: center; }
.wallet-cell { display: flex; flex-direction: column; align-items: flex-end;
  padding: 6px 14px; border-radius: var(--radius-md); border: var(--glass-border);
  background: rgba(100,255,218,.05); min-width: 132px; }
.wallet-cell .wk { font-size: 10px; color: var(--text-dim); letter-spacing: .5px; }
.wallet-cell .wv { font-size: 17px; font-weight: 600; color: var(--ice); font-variant-numeric: tabular-nums; }
.wallet-cell.perm .wv { color: #FFD166; }
.wallet-cell.low .wv { color: var(--bad); }
.wallet-cell.low { border-color: rgba(248,114,114,.45); background: rgba(248,114,114,.1); }

/* ==================== ② 数据卡片 / 栅格 / 面板（源自只读仪表盘） ==================== */
.cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
@media(max-width:1100px){ .cards { grid-template-columns: repeat(2, 1fr); } }
.card { background: var(--bg-panel); border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.card .k { color: var(--text-dim); font-size: 11px; letter-spacing: .3px; margin-bottom: 6px; }
.card .v { font-size: 20px; font-weight: 600; line-height: 1.2; color: var(--text-main); }
.card .u { color: var(--text-dim); font-size: 10px; margin-top: 5px; }
.card.greyed { opacity: .45; }

.grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-bottom: 14px; }
@media(max-width:900px){ .grid { grid-template-columns: 1fr; } }
.panel { background: var(--bg-panel); border: 1px solid var(--line); border-radius: 12px; padding: 14px; }
.panel h3 { margin: 0 0 10px; font-size: 13px; font-weight: 600; color: var(--ice); }
.chart { height: 240px; }
.full { grid-column: 1/-1; }

/* ==================== ② 数据表格 / 状态标签（源自只读仪表盘） ==================== */
.tw { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 12px; }
th, td { padding: 8px 8px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
th { color: var(--text-dim); font-weight: 500; white-space: nowrap; }
td.r, th.r { text-align: right; }
tbody tr:hover { background: rgba(100,255,218,.03); }
.tag { padding: 2px 7px; border-radius: 5px; font-size: 11px; white-space: nowrap; }
.t-ok { background: rgba(54,211,153,.15); color: var(--ok); }
.t-warn { background: rgba(251,189,35,.15); color: var(--warn); }
.t-bad { background: rgba(248,114,114,.15); color: var(--bad); }
.t-grey { background: rgba(138,151,173,.15); color: var(--text-dim); }
.t-ice { background: rgba(100,255,218,.15); color: var(--ice); }

/* ---- 表格行内操作按钮（③ 新增，审批中心用） ---- */
.op-btn { padding: 3px 10px; margin-right: 5px; border-radius: 6px; font-size: 11px;
  cursor: pointer; border: 1px solid transparent; background: rgba(255,255,255,.06);
  color: var(--text-main); transition: all .18s ease; }
.op-btn:hover { filter: brightness(1.25); }
.op-btn.ok { border-color: rgba(54,211,153,.4); color: var(--ok); background: rgba(54,211,153,.1); }
.op-btn.bad { border-color: rgba(248,114,114,.4); color: var(--bad); background: rgba(248,114,114,.1); }
.op-btn.ice { border-color: var(--ice-border); color: var(--ice); background: var(--ice-soft); }
.op-btn:disabled { opacity: .4; cursor: not-allowed; filter: none; }

/* ---- 顶部告警条（源自只读仪表盘 .banner） ---- */
.banner { background: rgba(248,114,114,.12); border: 1px solid rgba(248,114,114,.3);
  border-radius: 8px; padding: 10px 14px; font-size: 12px; color: var(--bad);
  margin-bottom: 12px; display: none; }
.banner.show { display: block; }
.banner.info { background: rgba(78,161,255,.12); border-color: rgba(78,161,255,.3); color: var(--acc); }
.banner.ok { background: rgba(54,211,153,.12); border-color: rgba(54,211,153,.3); color: var(--ok); }

/* ==================== 弹窗 Modal（源自星枢财经 V3.1） ==================== */
.modal-overlay { position: fixed; inset: 0; background: rgba(2,4,10,.72); backdrop-filter: blur(3px);
  display: flex; align-items: center; justify-content: center; z-index: 100; }
.modal-overlay.hidden { display: none; }
.modal { width: min(680px, 92vw); max-height: 88vh; display: flex; flex-direction: column;
  border-radius: var(--radius-lg); border: var(--glass-border); background: var(--bg-modal);
  backdrop-filter: blur(14px); overflow: hidden; animation: modalIn .28s ease;
  box-shadow: 0 0 0 1px rgba(255,255,255,.03), 0 24px 70px rgba(0,0,0,.65), 0 0 46px rgba(100,255,218,.12); }
@keyframes modalIn { from { opacity:0; transform: translateY(18px) scale(.97);} to { opacity:1; transform: translateY(0) scale(1);} }
.modal-titlebar { display: flex; align-items: center; padding: 14px 18px;
  border-bottom: 1px solid var(--ice-line); background: rgba(100,255,218,.04); gap: 12px; }
.tb-left { font-size: 13px; color: var(--ice); letter-spacing: 1px; white-space: nowrap; }
.tb-center { flex: 1; text-align: center; font-size: 15px; font-weight: bold; color: var(--text-main); letter-spacing: 2px; }
.tb-close { width: 30px; height: 30px; border: 1px solid transparent; border-radius: 8px;
  background: transparent; color: var(--text-dim); font-size: 20px; line-height: 1; cursor: pointer; transition: all .2s ease; }
.tb-close:hover { color: var(--warn); border-color: rgba(255,140,0,.5); background: var(--warn-soft); }
.modal-body { padding: 6px 24px; overflow-y: auto; }
.block { padding: 18px 0; border-bottom: 1px solid var(--ice-line); }
.block-last { border-bottom: none; }
.block h3 { font-size: 14px; color: var(--ice); letter-spacing: 1px; margin-bottom: 6px; }
.optional-tag { font-size: 12px; color: var(--warn); font-weight: normal; }
.tip { font-size: 12px; color: var(--text-dim); margin-bottom: 12px; }
.note { font-size: 11px; color: var(--text-dim); margin-top: 10px; line-height: 1.6;
  padding-left: 10px; border-left: 2px solid var(--ice-border); }
.modal-footer { padding: 16px 24px 14px; border-top: 1px solid var(--ice-line);
  display: flex; flex-direction: column; gap: 10px; background: rgba(100,255,218,.03); }
.footer-row { display: flex; justify-content: flex-end; gap: 14px; }
.footer-note { font-size: 11px; color: var(--text-dim); text-align: center; opacity: .85; }

/* ==================== 单选卡片（源自星枢财经 V3.1） ==================== */
.radio-row { display: flex; gap: 12px; flex-wrap: wrap; }
.radio-card { flex: 1; min-width: 140px; display: flex; flex-direction: column; gap: 4px;
  padding: 12px 14px; border: var(--glass-border); border-radius: var(--radius-md);
  background: rgba(255,255,255,.02); cursor: pointer; transition: all .2s ease; }
.radio-card em { font-style: normal; font-size: 11px; color: var(--text-dim); }
.radio-card:hover { border-color: var(--ice); background: var(--ice-soft); }
.radio-card input { accent-color: var(--ice); margin-right: 6px; }
.radio-card span { font-size: 13px; color: var(--text-main); display: inline; }
.radio-card.selected { border-color: var(--ice); background: var(--ice-soft); box-shadow: 0 0 12px rgba(100,255,218,.18); }

/* ==================== 输入框（源自星枢财经 V3.1） ==================== */
.text-input { width: 100%; padding: 11px 14px; border-radius: var(--radius-md);
  border: var(--glass-border); background: rgba(255,255,255,.03); color: var(--text-main);
  font-size: 14px; outline: none; transition: all .2s ease; }
.text-input::placeholder { color: #5A6780; }
.text-input:focus { border-color: var(--ice); box-shadow: 0 0 12px rgba(100,255,218,.2); }
.text-input.input-error { border-color: var(--bad); box-shadow: 0 0 12px rgba(248,114,114,.3); }
.profile-grid { display: flex; gap: 14px; }
.profile-grid .field { flex: 1; }
.profile-grid label { display: block; font-size: 12px; color: var(--text-dim); margin-bottom: 6px; }

/* ==================== ③ 滑块 Slider（历史资产缺失，本轮轻封装） ==================== */
.slider-row { display: flex; flex-direction: column; gap: 6px; padding: 12px 0; }
.slider-head { display: flex; justify-content: space-between; align-items: baseline; }
.slider-head .sl-label { font-size: 12px; color: var(--text-main); letter-spacing: .5px; }
.slider-head .sl-value { font-size: 15px; font-weight: 600; color: var(--ice);
  font-variant-numeric: tabular-nums; min-width: 62px; text-align: right; }
.slider-head .sl-value.changed { color: var(--warn); }
.slider-desc { font-size: 11px; color: var(--text-dim); line-height: 1.5; }
.slider-track { position: relative; display: flex; align-items: center; gap: 10px; }
.slider-range { flex: 1; -webkit-appearance: none; appearance: none; height: 6px; border-radius: 3px;
  background: linear-gradient(90deg, var(--ice) 0%, var(--ice) var(--pct, 50%), rgba(255,255,255,.1) var(--pct, 50%), rgba(255,255,255,.1) 100%);
  outline: none; cursor: pointer; }
.slider-range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px;
  border-radius: 50%; background: var(--ice); border: 2px solid var(--bg-deep);
  box-shadow: 0 0 10px rgba(100,255,218,.6); cursor: grab; }
.slider-range::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.15); }
.slider-range::-moz-range-thumb { width: 14px; height: 14px; border-radius: 50%; background: var(--ice);
  border: 2px solid var(--bg-deep); box-shadow: 0 0 10px rgba(100,255,218,.6); cursor: grab; }
.slider-range:disabled { opacity: .4; cursor: not-allowed; }
.slider-default { font-size: 10px; color: var(--text-dim); }

/* ---- 母系统基准标记（XS-COMMERCIAL-20261031）----
   在滑块轨道上画一条竖线，标出母系统当前取值，管理员一眼看出自己调偏多少。
   竖线位置 = 8px + (轨道宽 - 滑块直径 16px) × 基准百分比，与拖拽手柄同心。 */
.slider-base-mark {
  position: absolute; top: -3px; bottom: -3px; width: 2px; border-radius: 1px;
  left: calc(8px + (100% - 16px) * var(--base-pct-num, 0.5));
  background: linear-gradient(180deg, rgba(255,209,102,.95), rgba(255,209,102,.5));
  box-shadow: 0 0 8px rgba(255,209,102,.6);
  pointer-events: none; display: none;
}
.slider-base {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; color: #A9C4E0; letter-spacing: .3px;   /* 比 --text-dim 更亮，便于比对 */
}
.slider-base b { color: #FFD166; font-weight: 600; font-variant-numeric: tabular-nums; }
.slider-base .sb-sep { color: #5b6b83; }
.slider-base .sb-delta { color: #8FA3BE; font-variant-numeric: tabular-nums; }
.slider-base .sb-delta.off { color: #FFB454; }

/* ==================== 输入框自动补全（行情联想） ==================== */
.ac-wrap { position: relative; }
.ac-list {
  position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 80;
  max-height: 272px; overflow-y: auto; background: #111A29;
  border: 1px solid var(--ice-line); border-radius: 10px;
  box-shadow: 0 14px 36px rgba(0,0,0,.55); display: none;
}
.ac-list.show { display: block; }
.ac-item { display: flex; align-items: center; gap: 10px; padding: 9px 12px;
  cursor: pointer; font-size: 12px; border-bottom: 1px solid rgba(255,255,255,.04); }
.ac-item:last-child { border-bottom: none; }
.ac-item:hover, .ac-item.active { background: var(--ice-soft); }
.ac-item .ac-code { color: var(--ice); font-family: Consolas, Menlo, monospace;
  font-weight: 600; letter-spacing: .5px; min-width: 58px; }
.ac-item .ac-name { color: var(--text-main); flex: 1; }
.ac-item .ac-market { color: var(--text-dim); font-size: 10px;
  border: 1px solid var(--line); border-radius: 4px; padding: 1px 5px; }
.ac-hint { padding: 10px 12px; font-size: 11px; color: var(--text-dim); }
.sym-ok { font-size: 11px; color: var(--ok); }
.sym-warn { font-size: 11px; color: var(--warn); }

/* ==================== 卦象明细（结果展示区） ==================== */
.gua-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); gap: 10px; }
.gua-cell { background: rgba(255,255,255,.03); border: 1px solid var(--line);
  border-radius: 8px; padding: 8px 10px; }
.gua-cell .gk { font-size: 10px; color: var(--text-dim); margin-bottom: 4px; }
.gua-cell .gv { font-size: 14px; color: var(--text-main); font-weight: 600; letter-spacing: 1px; }
.gua-cell .gv.hl { color: var(--ice); }
.yao-table { width: 100%; border-collapse: collapse; font-size: 11px; margin-top: 8px; }
.yao-table th, .yao-table td { padding: 6px 8px; text-align: center;
  border-bottom: 1px solid var(--line); color: var(--text-main); }
.yao-table th { color: var(--text-dim); font-weight: 500; font-size: 10px; }
.yao-table tr.is-dong { background: rgba(255,140,0,.09); }
.yao-table td.is-shi { color: #FFD166; font-weight: 600; }
.yao-table td.is-ying { color: #4ea1ff; font-weight: 600; }
.yao-table td.yang { color: #ff8a80; }
.yao-table td.yin { color: #81d4fa; }
.gua-quote { font-size: 11px; color: #A9C4E0; line-height: 1.75; padding: 9px 11px;
  background: rgba(255,255,255,.03); border-left: 2px solid var(--ice-line);
  border-radius: 4px; margin-top: 8px; }

/* ==================== 按钮（源自星枢财经 V3.1） ==================== */
.btn { padding: 11px 26px; border-radius: var(--radius-md); font-size: 14px; letter-spacing: 1px;
  cursor: pointer; transition: all .2s ease; border: none; }
.btn-gray { color: var(--text-dim); background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.08); }
.btn-gray:hover { color: var(--text-main); background: rgba(255,255,255,.1); }
.btn-ice { color: #06231C; font-weight: bold; background: linear-gradient(135deg, var(--ice), #3ADBB8);
  box-shadow: 0 0 18px rgba(100,255,218,.3); }
.btn-ice:hover { filter: brightness(1.12); box-shadow: 0 0 26px rgba(100,255,218,.45); }
.btn-warn { color: #2A1600; font-weight: bold; background: linear-gradient(135deg, #FFB34D, var(--warn)); }
.btn:disabled { opacity: .5; cursor: not-allowed; filter: grayscale(.5); }

.btn-generate { margin-top: 6px; padding: 12px; border: none; border-radius: var(--radius-md);
  font-size: 15px; font-weight: bold; letter-spacing: 2px; cursor: not-allowed;
  color: var(--text-dim); background: rgba(255,255,255,.05); transition: all .25s ease; }
.btn-generate:disabled { opacity: .55; }
.btn-generate:not(:disabled) { cursor: pointer; color: #06231C;
  background: linear-gradient(135deg, var(--ice), #3ADBB8); box-shadow: 0 0 22px rgba(100,255,218,.35); }
.btn-generate:not(:disabled):hover { filter: brightness(1.1); }

/* ---- ③ Loading 态（按钮内旋转圈） ---- */
.btn.is-loading, .btn-generate.is-loading { position: relative; color: transparent !important; pointer-events: none; }
.btn.is-loading::after, .btn-generate.is-loading::after {
  content: ''; position: absolute; inset: 0; margin: auto; width: 16px; height: 16px;
  border: 2px solid rgba(6,35,28,.35); border-top-color: #06231C; border-radius: 50%;
  animation: xsSpin .7s linear infinite; }
@keyframes xsSpin { to { transform: rotate(360deg); } }

/* ==================== Toast（源自星枢财经 V3.1，扩展成功/失败态） ==================== */
.toast { position: fixed; top: 32px; left: 50%; transform: translate(-50%, -16px);
  padding: 12px 24px; border-radius: var(--radius-md); font-size: 14px; letter-spacing: 1px;
  background: rgba(20,14,4,.95); border: 1px solid var(--warn); color: var(--warn);
  box-shadow: 0 8px 30px rgba(0,0,0,.6), 0 0 20px rgba(255,140,0,.25);
  opacity: 0; pointer-events: none; transition: all .3s ease; z-index: 200; max-width: 70vw; text-align: center; }
.toast.show { opacity: 1; transform: translate(-50%, 0); }
.toast.ok { background: rgba(4,22,16,.95); border-color: var(--ok); color: var(--ok);
  box-shadow: 0 8px 30px rgba(0,0,0,.6), 0 0 20px rgba(54,211,153,.25); }
.toast.bad { background: rgba(26,6,6,.95); border-color: var(--bad); color: var(--bad);
  box-shadow: 0 8px 30px rgba(0,0,0,.6), 0 0 20px rgba(248,114,114,.25); }

/* ==================== ③ 反馈浮层（思路源自面相系统 feedback.js） ==================== */
.fb-float { position: fixed; right: 18px; bottom: 18px; z-index: 150; width: 300px;
  background: var(--bg-modal); border: var(--glass-border); border-radius: var(--radius-lg);
  padding: 14px 16px; box-shadow: 0 16px 44px rgba(0,0,0,.6); display: none; }
.fb-float.show { display: block; animation: modalIn .25s ease; }
.fb-float h4 { font-size: 13px; color: var(--ice); margin-bottom: 4px; }
.fb-float .fb-sub { font-size: 11px; color: var(--text-dim); margin-bottom: 10px; }
.fb-btns { display: flex; gap: 8px; }

/* ==================== 登录页专用（源自 v3/前端/v0.1/index.html 交互结构） ==================== */
.login-wrap { height: 100%; display: flex; align-items: center; justify-content: center; }
.login-box { width: min(420px, 92vw); background: var(--bg-panel); border: var(--glass-border);
  border-radius: var(--radius-lg); padding: 30px 32px; box-shadow: 0 24px 70px rgba(0,0,0,.6); }
.login-box h2 { font-size: 20px; color: var(--ice); letter-spacing: 2px; margin-bottom: 4px; }
.login-box .lg-sub { font-size: 11px; color: var(--text-dim); margin-bottom: 22px; }
.fl { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.fl label { font-size: 12px; color: var(--text-dim); }

/* ==================== 杂项 ==================== */
.mono { font-family: Consolas, "Courier New", monospace; font-size: 11.5px; }
.json-view { background: rgba(0,0,0,.35); border: 1px solid var(--line); border-radius: 8px;
  padding: 12px; font-family: Consolas, "Courier New", monospace; font-size: 11.5px;
  color: #A8D8C8; white-space: pre-wrap; word-break: break-all; max-height: 340px; overflow: auto; }
.row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.spacer { flex: 1; }
.muted { color: var(--text-dim); font-size: 11px; }
.modal-body::-webkit-scrollbar, .side-bar::-webkit-scrollbar, .workspace::-webkit-scrollbar { width: 6px; }
.modal-body::-webkit-scrollbar-thumb, .side-bar::-webkit-scrollbar-thumb, .workspace::-webkit-scrollbar-thumb { background: var(--ice-border); border-radius: 3px; }

/* ---------- 周期选择器（G1 horizon）---------- */
.hz-group{display:flex;gap:6px;flex-wrap:wrap;margin-top:2px}
.hz-btn{
  padding:7px 14px;border-radius:8px;cursor:pointer;font-size:12px;
  border:1px solid var(--line,#2a3550);background:transparent;color:var(--text-main,#dfe7ff);
  transition:all .15s
}
.hz-btn:hover{border-color:var(--accent,#7fd4ff)}
.hz-btn.on{
  background:rgba(127,212,255,.14);border-color:var(--accent,#7fd4ff);
  color:var(--accent,#7fd4ff);font-weight:600
}
