:root {
    --bg: #070a0e; --card: #0d1117; --card2: #131920; --border: #1e2d3d;
    --gold: #f0b90b; --green: #0ecb81; --red: #f6465d; --blue: #37d6fa;
    --purple: #a855f7; --text: #c9d1d9; --text2: #6e7681; --orange: #ff9800;
    --sb: 220px; /* 左侧导航栏宽度 */
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: 'PingFang SC','Microsoft YaHei',monospace; background: var(--bg); color: var(--text); padding: 16px; min-height: 100vh; }

/* ═══ 左侧导航栏（可收起 / 展开） ═══ */
.sidebar { position:fixed; top:0; left:0; bottom:0; width:var(--sb); background:var(--card);
    border-right:1px solid var(--border); display:flex; flex-direction:column; padding:14px 10px; z-index:70; transition:width .2s; overflow-y:auto; }
.sidebar-brand { color:var(--gold); font-weight:bold; font-size:14px; letter-spacing:.5px; padding:4px 8px 14px; white-space:nowrap; overflow:hidden; }
.sidebar-collapse { position:absolute; top:16px; right:10px; width:24px; height:24px; border-radius:6px;
    background:var(--bg); border:1px solid var(--border); color:var(--text2); cursor:pointer; font-size:13px; line-height:1; transition:all .15s; }
.sidebar-collapse:hover { border-color:var(--gold); color:var(--gold); }
.sidebar-nav { display:flex; flex-direction:column; gap:4px; margin-top:6px; }
.snav { display:flex; align-items:center; gap:10px; width:100%; text-align:left; background:transparent; border:none;
    color:var(--text2); padding:10px 12px; border-radius:8px; cursor:pointer; font-size:13px; font-weight:bold; transition:all .15s; white-space:nowrap; overflow:hidden; }
.snav:hover { background:var(--card2); color:var(--text); }
.snav.snav-active { background:var(--card2); color:var(--gold); box-shadow:0 1px 3px rgba(0,0,0,.15); }
.sico { font-size:15px; line-height:1; flex:none; width:18px; text-align:center; }
.stxt { white-space:nowrap; }
.sidebar-account { margin-top:auto; }
.nav-account { color:var(--text2); }
.nav-account.logged { color:var(--green); }
.savatar { width:22px; height:22px; border-radius:50%; object-fit:cover; flex:none; border:1px solid var(--border); }
/* 收起态：仅显示图标 */
body.sidebar-collapsed .sidebar { width:64px; }
body.sidebar-collapsed .stxt, body.sidebar-collapsed .sidebar-brand { display:none; }
body.sidebar-collapsed .snav { justify-content:center; padding:10px 0; }
/* 收起时：导航下移给收起按钮留位（避免第一个图标被按钮挡住） */
body.sidebar-collapsed .sidebar-nav { margin-top:30px; }
/* 收起时：主题按钮与个人中心图标保持合适间距 */
body.sidebar-collapsed .snav-theme { margin-top:10px; }
/* 收起时：收起按钮半个身子探出侧栏外，箭头朝外（JS 切换 « / »，不要再旋转，否则方向相反） */
body.sidebar-collapsed .sidebar-collapse { right:auto; left:50%; transform:translateX(-50%); top:10px; z-index:71; background:var(--card2); box-shadow:0 1px 4px rgba(0,0,0,.35); }

/* 桌面端：主内容让出左侧导航栏空间 */
@media (min-width:769px) {
    body { padding-left:calc(var(--sb) + 16px); }
    body.sidebar-collapsed { padding-left:calc(64px + 16px); }
    .log-box-lg { height:70vh; min-height:300px; max-height:95vh; }   /* 桌面端「操作日志」外框默认加高 */
    /* 桌面端操作日志：由 JS 精确计算可用高度并贴到视口底部（.log-fit 由 app.js 添加） */
    .log-box-lg.log-fit { min-height:200px; max-height:none; }
}
/* 手机端左侧抽屉把手：默认隐藏，仅窄屏显示（修复桌面端顶部出现的杂散箭头） */
.mobile-drawer-handle { display: none; }
@media (max-width: 768px) {
    .mobile-drawer-handle {
        display: flex; align-items: center; justify-content: center;
        position: fixed; left: 0; top: 50%; transform: translateY(-50%);
        z-index: 45; width: 26px; height: 56px;
        background: var(--card); border: 1px solid var(--border); border-left: none;
        border-radius: 0 10px 10px 0; color: var(--text); font-size: 22px; cursor: pointer;
    }
}

/* ── 背景主题（点头部按钮循环切换，缓解纯黑刺眼；文字保持浅色保证可读）── */
body.theme-1 { --bg:#0a0f1e; --card:#0f1626; --card2:#16203a; --border:#22304d; }
body.theme-2 { --bg:#140a1e; --card:#1d1029; --card2:#261433; --border:#3a2150; }
body.theme-3 { --bg:#08140f; --card:#0c1d15; --card2:#102a1e; --border:#1d3a2a; }
body.theme-4 { --bg:#1c150f; --card:#241a12; --card2:#2e2318; --border:#463320; }
body.theme-5 { --bg:#101418; --card:#161c22; --card2:#1e262e; --border:#2a333d; }
/* 白色主题：深色文字保证可读；金银红绿等强调色保持不变 */
body.theme-6 { --bg:#f5f7fa; --card:#ffffff; --card2:#f0f2f5; --border:#d0d7de; --text:#1f2328; --text2:#656d76; }
body.theme-6 .header, body.theme-6 .panel, body.theme-6 .table-wrap { box-shadow:0 1px 3px rgba(31,35,40,.04); }
body.theme-6 .hbtn { border-color:var(--border); color:var(--text2); }
body.theme-6 .hbtn:hover { border-color:var(--blue); color:var(--blue); background:rgba(9,105,218,.06); }
body.theme-6 table.main-table tr:hover td { background:rgba(9,105,218,.04); }
body.theme-6 .pct-up { background:rgba(14,203,129,.10); }
body.theme-6 .pct-down { background:rgba(246,70,93,.10); }
body.theme-6 .log-box { background:#ffffff; }
body.theme-6 .badge-closed { background:rgba(101,109,118,.08); }
body.theme-6 .sig-hold { background:rgba(101,109,118,.08); }
body.theme-6 ::-webkit-scrollbar-thumb { background:#c8ced6; }
/* 暗红主题 */
body.theme-7 { --bg:#1a0a0c; --card:#241014; --card2:#2e161a; --border:#4a2029; }
/* 深青主题 */
body.theme-8 { --bg:#08181a; --card:#0d2226; --card2:#112c31; --border:#1d424a; }
/* 深蓝灰主题（来自用户提供的背景色样张，仅背景色随样张） */
body.theme-9 { --bg:#1b2233; --card:#232c42; --card2:#2c3650; --border:#3a4a6a; }
/* 暗夜蓝黑主题（来自用户截图样张 #0b0f1b，仅取背景色） */
body.theme-10 { --bg:#0b0f1b; --card:#0f1427; --card2:#161d33; --border:#232c46; }

.header { display:flex; justify-content:space-between; align-items:center; background:var(--card); border:1px solid var(--border); border-radius:10px; padding:12px 20px; margin-bottom:14px; }

/* ===== 大盘价格滚动条 ===== */
.market-ticker {
    display:flex; align-items:center; gap:10px;
    background:var(--card); border:1px solid var(--border); border-radius:10px;
    padding:7px 12px; margin-bottom:14px; overflow:hidden;
    position:sticky; top:0; z-index:45;
}
.market-ticker-label {
    font-size:12px; font-weight:bold; color:var(--gold); white-space:nowrap;
    padding-right:8px; border-right:1px solid var(--border); flex:0 0 auto;
}
.market-ticker-viewport { flex:1 1 auto; overflow:hidden; }
.market-ticker-track {
    display:flex; align-items:center; gap:22px; width:max-content; white-space:nowrap;
    animation:ticker-scroll 32s linear infinite;
}
.market-ticker:hover .market-ticker-track { animation-play-state:paused; }
@keyframes ticker-scroll { from { transform:translateX(0); } to { transform:translateX(-50%); } }
.mt-coin { display:inline-flex; align-items:baseline; gap:7px; font-size:13px; cursor:pointer; padding:2px 4px; border-radius:6px; }
.mt-coin:hover { background:var(--card2); }
.mt-sym { font-weight:bold; color:var(--text); letter-spacing:.3px; }
.mt-price { color:var(--text); font-variant-numeric:tabular-nums; }
.mt-chg { font-variant-numeric:tabular-nums; font-weight:bold; }
.mt-chg.up { color:var(--red); }    /* 涨=红（中国习惯） */
.mt-chg.down { color:var(--green); }
.mt-sep { color:var(--border); }
.market-ticker-loading { color:var(--text2); font-size:12px; }
@media (max-width:768px) {
    .market-ticker { padding:6px 10px; }
    .market-ticker-track { gap:16px; }
    .mt-coin { font-size:12px; }
}
.header-left h2 { font-size:16px; color:var(--gold); letter-spacing:1px; }
.header-left .subtitle { font-size:11px; color:var(--text2); margin-top:3px; }
.header-center { flex:1; display:flex; justify-content:center; }
.header-right { display:flex; align-items:center; gap:16px; }
.nav-tabs { display:flex; background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:3px; gap:3px; }
.nav-tab { background:transparent; border:none; color:var(--text2); padding:6px 18px; border-radius:6px; cursor:pointer; font-size:13px; font-weight:bold; transition:all .2s; }
.nav-tab:hover { color:var(--text); }
.nav-tab.active { background:var(--card2); color:var(--gold); box-shadow:0 1px 3px rgba(0,0,0,.15); }
.live-tag { font-size:12px; font-weight:bold; display:flex; align-items:center; gap:5px; }
.dot { width:7px; height:7px; border-radius:50%; animation: blink 1s infinite; }
.status-green { color:var(--green); } .status-green .dot { background:var(--green); box-shadow:0 0 8px var(--green); }
.status-red { color:var(--red); } .status-red .dot { background:var(--red); box-shadow:0 0 8px var(--red); }
@keyframes blink { 50% { opacity:.2; } }
#bj-time { color:var(--gold); font-size:18px; font-weight:bold; font-family:monospace; min-width:90px; text-align:right; }
.hbtn { background:transparent; border:1px solid var(--border); color:var(--text2); padding:5px 12px; border-radius:5px; cursor:pointer; font-size:12px; transition:all .2s; }
.hbtn:hover { border-color:var(--blue); color:var(--blue); }
/* 20260823d：顶部 API 用量 + 刷新按钮 + 时间区统一卡片化、对齐、美化 */
.api-usage { min-width:150px; background:var(--card2); border:1px solid var(--border); border-radius:8px; padding:8px 10px; font-size:10px; color:var(--text2); line-height:1.4; }
.api-usage-row { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:4px; }
.api-usage-row .api-label { font-weight:600; }
.api-usage strong { color:var(--gold); font-family:monospace; font-size:11px; }
.btn-mini { font-size:10px; line-height:1; padding:3px 8px; border-radius:6px; border:1px solid var(--border); background:var(--bg); color:var(--text); cursor:pointer; white-space:nowrap; transition:all .2s; }
.btn-mini:hover { border-color:var(--gold); color:var(--gold); }
.btn-mini.paused { background:var(--red); color:#fff; border-color:var(--red); }
.btn-mini:disabled { opacity:.5; cursor:default; }
.api-progress { height:4px; overflow:hidden; background:var(--border); border-radius:99px; }
.api-progress span { display:block; width:0; height:100%; border-radius:inherit; background:var(--green); transition:width .3s, background .3s; }

.refresh-controls { display:flex; flex-direction:column; gap:6px; }
.refresh-btn { width:92px; justify-content:center; text-align:center; padding:5px 0;
    /* 20260906a：顶部「刷新行情 / 刷新价格」按钮去掉边框 —— WS 推送已实时收到行情/价格，
       手动刷新按钮仅保留文字 + hover 反馈框，不需要再画一圈边框。 */
    border:none;
    background:transparent; }
.refresh-btn:hover { background:rgba(55,214,250,.08); border-color:transparent; }
/* 20260906g：refresh-row / refresh-label / refresh-input 已废弃，秒数改由 localStorage 持久化 */
.header-times { display:flex; flex-direction:column; gap:6px; font-size:11px; color:var(--text2); text-align:right; line-height:1.5; min-width:110px; background:var(--card2); border:1px solid var(--border); border-radius:8px; padding:8px 10px; position:relative; overflow:hidden; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.header-times::before { content:''; position:absolute; left:0; top:8px; bottom:8px; width:3px; background:linear-gradient(to bottom, var(--blue), var(--gold)); border-radius:0 2px 2px 0; }
.ht-row { display:flex; justify-content:flex-end; align-items:center; gap:6px; padding-left:6px; }
.ht-label { font-weight:600; font-size:11px; }
.ht-time { font-family:monospace; font-size:12px; color:var(--text); background:var(--bg); padding:2px 6px; border-radius:4px; border:1px solid var(--border); transition:all .2s; }
.ht-row:hover .ht-time { border-color:var(--gold); color:var(--gold); box-shadow:0 0 0 2px rgba(240,185,11,.10); }
.ht-row:hover .ht-label { filter:brightness(1.2); }

.panel { background:var(--card); border:1px solid var(--border); border-radius:10px; margin-bottom:14px; overflow:hidden; }
.panel-header { display:flex; justify-content:space-between; align-items:center; padding:10px 16px; cursor:pointer; border-bottom:1px solid var(--border); user-select:none; }
.panel-header:hover { background:rgba(255,255,255,.02); }
.panel-title { font-size:13px; font-weight:bold; display:flex; align-items:center; gap:8px; }
.panel-body { padding:14px 16px; }
.arrow { font-size:12px; color:var(--text2); }

.form-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:12px; }
.form-grid-3 { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:12px; }
.field label { display:block; font-size:11px; color:var(--text2); margin-bottom:4px; }
.field input, .field select { width:100%; background:var(--bg); border:1px solid var(--border); color:var(--text); padding:7px 10px; border-radius:5px; font-size:12px; outline:none; transition:border .2s; font-family:inherit; }
.field input:focus, .field select:focus { border-color:var(--gold); }
/* 20260902f+g：select 下拉项（option）颜色修复 —— 用户反馈
     「排除MACD金叉」「MACD交叉自动平仓窗口」「涨幅榜」等下拉框打开后，
     列表项文字是浅灰/灰白色，在深色页面背景上几乎看不清。
     之前只给 .field select 配了 color:var(--text)，但浏览器渲染 option 面板时
     经常用系统的「白底黑字 / 深底深字」配色，与页面 --text 脱节。
     v20260902f 只覆盖了 .field / .cond-field / .fund-exclude / .tf-select / .reason-select
     / .modal-body 下的 select，但「MACD交叉自动平仓」的窗口下拉框（#cfg-close-macd-window）
     是用 inline style 直接写的，没归入上述任何一个 class —— 所以颜色还是看不清。
     升级为对所有 select 生效的兜底选择器，同时保留具体 class 的精细样式以便后续扩展。*/
select option,
.field select option,
.cond-field select option,
.fund-exclude .fe-box select option,
.tf-select option,
.reason-select option,
.modal-body select option {
    background:#1a1f2c;
    color:#ffffff;
    padding:6px 10px;
}
select option:checked,
.field select option:checked,
.cond-field select option:checked {
    background:#1a1f2c;
    color:var(--gold);
    font-weight:700;
}
select option:hover,
.field select option:hover,
.cond-field select option:hover {
    background:#2a3142;
    color:#ffffff;
}

/* 资金费率区间 —— 美化分段输入控件 */
.cond-head { display:flex; align-items:center; gap:6px; }
.range-input { display:flex; align-items:center; gap:6px; }
.range-input .ri-mid { color:var(--text2); font-size:12px; flex:none; }
.range-input .ri-seg { flex:1; min-width:0; display:flex; align-items:center; gap:5px; background:var(--bg); border:1px solid var(--border); border-radius:7px; padding:6px 9px; transition:border .18s, box-shadow .18s; }
.range-input .ri-seg:focus-within { border-color:var(--gold); box-shadow:0 0 0 2px rgba(240,185,11,.14); }
.range-input .ri-cap { font-size:11px; font-weight:700; color:var(--gold); flex:none; }
.range-input .ri-seg input { width:100%; min-width:0; background:transparent; border:none; outline:none; color:var(--text); font-size:12px; padding:0 14px 0 0; font-family:inherit; }
.form-row { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.btn { padding:7px 20px; border-radius:5px; font-size:12px; font-weight:bold; cursor:pointer; border:none; transition:all .2s; }
.btn-gold { background:var(--gold); color:#000; } .btn-gold:hover { opacity:.85; }
.btn-outline { background:transparent; border:1px solid var(--border); color:var(--text2); }
.btn-outline:hover { border-color:var(--gold); color:var(--gold); }
.toggle { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--text2); cursor:pointer; }
.toggle input { accent-color:var(--green); width:14px; height:14px; cursor:pointer; }

.log-box { margin-top:10px; background:var(--bg); border:1px solid var(--border); border-radius:5px; padding:8px 10px; height:90px; overflow-y:auto; font-size:12px; font-family:'PingFang SC','Microsoft YaHei',sans-serif; }
/* 自动下单日志：加高 + 可拖拽调整高度，日志持久化后条数多，需要能长时间往回翻 */
.log-box-lg { height:300px; resize:vertical; min-height:120px; max-height:70vh; }
.log-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:2px; }
.log-line { padding:2px 0; border-bottom:1px solid var(--border); line-height:1.6; word-break:break-all; white-space:pre-wrap; font-family:inherit; }

/* 手动下单区 */
.manual-order { display:flex; align-items:flex-end; flex-wrap:wrap; gap:10px; }
.manual-order .field { margin:0; }
.btn-long { background:var(--green); color:#04150d; }
.btn-long:hover { opacity:.85; }
.btn-short { background:var(--red); color:#1a0407; }
.btn-short:hover { opacity:.85; }
.btn:disabled { opacity:.5; cursor:not-allowed; }
.manual-hint { font-size:11px; color:var(--text2); padding-bottom:8px; }
.manual-hint.real { color:var(--red); font-weight:bold; }
.manual-hint.sim { color:var(--blue); }
.log-ok { color:var(--green); } .log-err { color:var(--red); } .log-info { color:var(--gold); } .log-warn { color:var(--orange); } .log-diag { color:#5cc98a; font-weight:600; }
/* 20260901v：操作日志内出现的交易对（USDT/USDC/BUSD 等永续合约）渲染为可点击 chip；
   点击 → 直接 openKline(sym) 打开 K 线弹窗。 */
.log-sym { display:inline-block; padding:0 6px; margin:0 1px; border-radius:4px; background:rgba(240,185,11,.14); color:var(--gold); font-weight:600; cursor:pointer; transition: background .15s, color .15s; }
.log-sym:hover { background:var(--gold); color:#0d1117; }

/* 20260902q：金额模式切换 chip（保证金 ⟷ 总金额），跟随 label 一起放在金额 input 上方 */
.chip-toggle {
  background: rgba(240,185,11,.16);
  color: var(--gold);
  border: 1px solid rgba(240,185,11,.4);
  border-radius: 4px;
  padding: 1px 8px;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.5;
  transition: background .15s, color .15s, border-color .15s;
}
.chip-toggle:hover {
  background: var(--gold);
  color: #0d1117;
  border-color: var(--gold);
}
.chip-toggle.active-notional {
  background: rgba(38,166,154,.18);
  color: var(--teal,#26a69a);
  border-color: rgba(38,166,154,.55);
}
.chip-toggle.active-notional:hover {
  background: var(--teal,#26a69a);
  color: #0d1117;
  border-color: var(--teal,#26a69a);
}

/* AI 智能分析面板 */
.ai-sec { margin-bottom:10px; }
.ai-sec:last-child { margin-bottom:0; }
.ai-sec-title { font-weight:bold; color:var(--purple,#a855f7); font-size:13px; margin-bottom:4px; }
.ai-line { font-size:12px; line-height:1.7; color:var(--text); padding:1px 0; }
.ai-warn { color:var(--red); font-weight:600; }
.ai-foot { margin-top:8px; font-size:11px; color:var(--text2); border-top:1px solid var(--border); padding-top:6px; }

/* 走势弹窗 · 手机端优化：放大窗口、避免文字被滚动条截断 */
@media (max-width: 600px) {
  #pnl-trend-modal { padding: 6px !important; }
  #pnl-trend-modal .pnl-trend-box {
    max-width: 100% !important;
    max-height: 98vh !important;
    border-radius: 12px !important;
  }
  #pnl-trend-head { padding: 10px 12px !important; font-size: 13px !important; }
  #pnl-trend-meta { padding: 4px 12px 0 !important; font-size: 11px !important; line-height: 1.6 !important; word-break: break-word; }
  #pnl-trend-touch-info { display: block; padding: 4px 12px 2px !important; font-size: 12px !important; color: var(--text) !important; }
  #pnl-trend-tip { display: none !important; } /* 手机端用固定信息条替代浮动 tooltip */
  #pnl-trend-chart { min-height: 180px !important; }
}

/* 走势弹窗 · 固定触摸信息条（桌面端默认不显示，鼠标悬停时由 JS 显示） */
#pnl-trend-touch-info { display: none; }

/* 交易历史：桌面端也允许横向滚动，避免左侧导航栏展开后「设置/平仓」等右侧列被截断 */
.trade-records { border:1px solid var(--border); border-radius:8px; overflow-x:auto; }
.trade-records table { width:max-content; min-width:100%; border-collapse:collapse; font-size:11px; table-layout:auto; }
/* 20260908c：新增「平仓时间」列后为不撑出横向滚动条，单元格左右内边距 10px → 6px（18 列共省约 144px） */
.trade-records th { color:var(--text2); padding:7px 6px; border-bottom:1px solid var(--border); text-align:center; background:var(--bg); white-space:nowrap; max-width:110px; overflow:hidden; text-overflow:ellipsis; }
.trade-records td { padding:7px 6px; border-bottom:1px solid var(--border); text-align:center; white-space:nowrap; max-width:110px; overflow:hidden; text-overflow:ellipsis; }
/* 放开方向/状态/按钮列，让文字和按钮完整显示 */
.trade-records th:nth-child(2), .trade-records td:nth-child(2),   /* 交易对 */
.trade-records th:nth-child(3), .trade-records td:nth-child(3),   /* 方向 */
#trade-record-table th:nth-child(16), #trade-record-table td:nth-child(16), /* 状态 */
#trade-record-table th:nth-child(17), #trade-record-table td:nth-child(17), /* 设置 */
#trade-record-table th:nth-child(18), #trade-record-table td:nth-child(18)  /* 平仓 */ { max-width:none; }
/* 价格类列再压窄一点，避免长小数撑爆表格 */
.trade-records th:nth-child(4), .trade-records td:nth-child(4),
.trade-records th:nth-child(5), .trade-records td:nth-child(5),
.trade-records th:nth-child(9), .trade-records td:nth-child(9),
.trade-records th:nth-child(10), .trade-records td:nth-child(10) { max-width:84px; }
/* 20260908c：开仓时间 / 平仓时间 两列压窄（内容已是 MM/DD HH:mm 紧凑格式，全文在 title 里） */
#trade-record-table th:nth-child(1), #trade-record-table td:nth-child(1),
#trade-record-table th:nth-child(12), #trade-record-table td:nth-child(12) { max-width:76px; }
.badge { display:inline-block; padding:1px 6px; border-radius:3px; font-size:10px; font-weight:bold; }
.badge-long { background:rgba(14,203,129,.15); color:var(--green); border:1px solid rgba(14,203,129,.3); }
.badge-short { background:rgba(246,70,93,.15); color:var(--red); border:1px solid rgba(246,70,93,.3); }
.badge-open { background:rgba(240,185,11,.1); color:var(--gold); border:1px solid rgba(240,185,11,.3); }
.badge-closed { background:rgba(110,118,129,.1); color:var(--text2); border:1px solid var(--border); }
.badge-sl { background:rgba(246,70,93,.2); color:var(--red); border:1px solid var(--red); }
.badge-tp { background:rgba(14,203,129,.2); color:var(--green); border:1px solid var(--green); }
.pnl-pos { color:var(--green); font-weight:bold; } .pnl-neg { color:var(--red); font-weight:bold; }
.pnl-pct { font-size:13px; font-weight:bold; margin-left:4px; white-space:nowrap; }
.price-cell { display:flex; align-items:flex-start; justify-content:flex-end; gap:2px; }

.alert-panel { border:1px solid rgba(246,70,93,.4); border-radius:10px; margin-bottom:14px; background:rgba(246,70,93,.03); }
.alert-panel .panel-header { border-bottom-color:rgba(246,70,93,.2); }
.alert-panel .panel-title { color:var(--red); }

.table-wrap { background:var(--card); border:1px solid var(--border); border-radius:10px; overflow:hidden; }
table.main-table { width:100%; border-collapse:collapse; text-align:center; font-size:12px; }
table.main-table th { color:var(--text2); padding:10px 8px; border-bottom:1px solid var(--border); background:var(--card2); font-weight:normal; font-size:11px; }
table.main-table td { padding:10px 8px; border-bottom:1px solid var(--border); }
table.main-table tr:hover td { background:rgba(255,255,255,.015); }
.sym-box { position:relative; display:inline-block; min-width:130px; text-align:left; }
.sym-text { font-weight:bold; color:var(--gold); padding-right:44px; font-size:12px; }
.badge-group { position:absolute; top:-8px; right:0; display:flex; flex-direction:column; gap:2px; }
.tag { font-size:9px; padding:1px 4px; border-radius:3px; font-weight:bold; }
.tag-spot { color:var(--green); border:1px solid var(--green); }
.tag-new { background:var(--red); color:#fff; }
.tag-sim { background:rgba(130,140,160,.22); color:var(--text2); border:1px solid rgba(130,140,160,.4); margin-left:4px; vertical-align:top; }
.tag-real { background:rgba(240,185,11,.16); color:var(--gold); border:1px solid rgba(240,185,11,.45); margin-left:4px; vertical-align:top; font-weight:bold; }
/* 账户余额性质徽标：模拟（灰）/ 真实（绿，对接币安合约余额） */
.tag-balance { font-size:9px; padding:1px 5px; border-radius:3px; font-weight:bold; margin-left:4px; vertical-align:middle; }
.tag-balance.sim { background:rgba(130,140,160,.22); color:var(--text2); border:1px solid rgba(130,140,160,.4); }
.tag-balance.real { background:rgba(46,160,67,.18); color:var(--green); border:1px solid var(--green); }
.tag-fi-1h { color:var(--red); border:1px solid var(--red); }
.tag-fi-4h { color:var(--gold); border:1px solid var(--gold); }
.tag-fi-8h { color:var(--green); border:1px solid var(--green); }
.up { color:var(--green); } .down { color:var(--red); }
.pct-box { padding:2px 5px; border-radius:3px; }
.pct-up { background:rgba(14,203,129,.12); color:var(--green); }
.pct-down { background:rgba(246,70,93,.12); color:var(--red); }

.sig { display:inline-flex; align-items:center; gap:3px; font-size:10px; padding:2px 6px; border-radius:3px; font-weight:bold; }
.sig-buy { background:rgba(14,203,129,.15); color:var(--green); border:1px solid rgba(14,203,129,.3); }
.sig-sell { background:rgba(246,70,93,.15); color:var(--red); border:1px solid rgba(246,70,93,.3); }
.sig-hold { background:rgba(110,118,129,.1); color:var(--text2); border:1px solid var(--border); }

.divider { height:1px; background:var(--border); margin:10px 0; }
.stats-bar { display:flex; gap:20px; padding:8px 0; flex-wrap:wrap; }
.stat-item { font-size:11px; color:var(--text2); }
.stat-item span { color:var(--text); font-weight:bold; margin-left:4px; }

/* 20260905a：滚动条 4px → 10px（用户反馈太细看不到、鼠标难拉到）；
   hover 时滑块加亮加粗，拖拽中保持高亮，命中区更大更好抓 */
::-webkit-scrollbar { width:10px; height:10px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:var(--border); border-radius:5px; min-height:32px; }
::-webkit-scrollbar-thumb:hover { background:var(--text2); }
::-webkit-scrollbar-thumb:active { background:var(--text); }
::-webkit-scrollbar-corner { background:transparent; }
/* Firefox：auto 宽度 + 滑块配色 */
* { scrollbar-color: var(--border) transparent; }

.cond-tags { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }
.ctag { font-size:10px; padding:1px 6px; border-radius:3px; border:1px solid; }
/* 条件去勾时的样式：标签保留，粉色文字在上，下方两道细虚线（在标签内、不大条），表示"该条件不参与过滤" */
.cond-disabled {
    position: relative;
    display: inline-block;
    color: #ff7a96;                       /* 粉色文字，表示不参与过滤 */
    border-color: rgba(255, 77, 109, .55) !important;
    text-decoration: none;
    background:
        repeating-linear-gradient(90deg, #ff7a96 0 3px, transparent 3px 7px) left bottom        / 100% 1px no-repeat,
        repeating-linear-gradient(90deg, #ff7a96 0 3px, transparent 3px 7px) left calc(100% - 2px) / 100% 1px no-repeat !important;
    padding-bottom: 5px;                  /* 给两道虚线留出空间（仍在标签内） */
}

/* 美股合约标签：粉色，与"去勾双横线"配色呼应，便于一眼区分美股 */
.tag-stock { color:#ff4d6d; border-color:rgba(255,77,109,.45); background:rgba(255,77,109,.1); }

/* 做多条件每行：复选框 + 数值输入框 */
.cond-field label { display:flex; align-items:center; gap:5px; cursor:pointer; }
.cond-field label input[type=checkbox] { width:14px; height:14px; cursor:pointer; accent-color:var(--green); flex:none; margin:0; }
.cond-field input[type=number] { margin-top:4px; }

/* 排除资金费率合约：下拉框美化（与区间输入 .ri-seg 同款金边胶囊） */
/* 20260904b：MACD/资金费率等「排除」类条件改为纵向排列，
   复选框标签在上方，下拉/输入控件在下方，解决横向挤压导致的排版错乱。 */
.fund-exclude { display:flex; flex-direction:column; align-items:flex-start; gap:6px; }
.fund-exclude .fe-label { margin:0; font-size:11px; color:var(--text2); white-space:nowrap; }
.fund-exclude .fe-box { width:100%; flex:none; min-width:0; display:flex; align-items:center; gap:8px;
    background:var(--bg); border:1px solid var(--border); border-radius:7px;
    padding:5px 10px; transition:border .18s, box-shadow .18s; }
.fund-exclude .fe-box:focus-within { border-color:var(--gold); box-shadow:0 0 0 2px rgba(240,185,11,.14); }
.fund-exclude .fe-box select { flex:1; min-width:0; background:transparent; border:none; outline:none;
    color:var(--text); font-size:12px; padding:0; font-family:inherit; cursor:pointer; }
.fund-exclude .fe-suffix { font-size:11px; color:var(--text2); white-space:nowrap; flex:none; }
.fund-exclude .fe-sep   { font-size:11px; color:var(--border); padding:0 2px; flex:none; }
.fund-exclude .fe-box input[type=number] {
    width:46px; background:transparent; border:none; outline:none;
    color:var(--text); font-size:12px; padding:0; font-family:inherit; text-align:center;
}
.fund-exclude .fe-hint  { width:100%; margin-top:0; font-size:11px; color:var(--text2); line-height:1.5; }
.ctag-green { color:var(--green); border-color:rgba(14,203,129,.4); background:rgba(14,203,129,.07); }
.ctag-red { color:var(--red); border-color:rgba(246,70,93,.4); background:rgba(246,70,93,.07); }
.ctag-gold { color:var(--gold); border-color:rgba(240,185,11,.4); background:rgba(240,185,11,.07); }
.ctag-blue { color:var(--blue); border-color:rgba(55,214,250,.4); background:rgba(55,214,250,.07); }

.section-label { font-size:10px; color:var(--text2); letter-spacing:1px; text-transform:uppercase; margin-bottom:8px; padding-bottom:4px; border-bottom:1px solid var(--border); }

/* 持仓表格内：迷你按钮（设置 / 平仓） */
.btn-mini { padding:4px 9px; border-radius:5px; font-size:11px; font-weight:bold; cursor:pointer; border:1px solid var(--border); background:transparent; color:var(--text2); transition:all .15s; white-space:nowrap; }
.btn-mini:hover { border-color:var(--gold); color:var(--gold); background:rgba(240,185,11,.08); }
.btn-mini.btn-danger { border-color:rgba(246,70,93,.5); color:var(--red); }
.btn-mini.btn-danger:hover { background:rgba(246,70,93,.15); border-color:var(--red); }

/* 下单记录「数量」列：点击切换为名义金额(数量×现价) */
.qty-toggle { cursor:pointer; user-select:none; color:var(--gold); font-weight:bold; border-bottom:1px dashed var(--border); }
.qty-toggle:hover { border-bottom-color:var(--gold); }
.qty-toggle.amt { color:var(--green); }

/* 持仓设置弹窗 */
.modal-mask { position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:999; display:flex; align-items:center; justify-content:center; }
.modal-box { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; width:420px; max-width:92vw; box-shadow:0 10px 40px rgba(0,0,0,.5); }
.modal-title { font-size:14px; font-weight:bold; color:var(--text); margin-bottom:14px; }
.modal-box .form-grid { grid-template-columns:repeat(3,1fr); }
.modal-box .form-row { margin-top:14px; }

/* 持仓设置弹窗：币安风格仓位止盈止损 */
/* ── 持仓设置弹窗 ── */
/* 手机端限制最大高度 + 内部可滚动；底部按钮行 sticky 可见，避免按钮被裁切后无法保存 */
@media (max-width: 768px) {
    .pos-settings-box {
        width: 100vw !important;
        max-width: 100vw !important;
        max-height: calc(100vh - 16px) !important;
        border-radius: 12px 12px 0 0 !important;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch;
        padding-bottom: env(safe-area-inset-bottom, 0);
    }
    .pos-settings-box .form-row {
        position: sticky !important;
        bottom: 0 !important;
        background: var(--card) !important;
        padding: 12px 18px calc(12px + env(safe-area-inset-bottom, 0px)) !important;
        border-top: 1px solid var(--border) !important;
        box-shadow: 0 -4px 12px rgba(0,0,0,.4) !important;
        margin: 0 !important;
        justify-content: flex-end !important;
        z-index: 5;
    }
    .pos-settings-box .form-row .btn {
        flex: 1 !important;
        min-width: 0 !important;
        font-size: 15px !important;
        padding: 11px 16px !important;
    }
}
.pos-settings-box { width:420px; max-width:92vw; padding:0; overflow:hidden; position:relative; }
.pos-settings-head { display:flex; align-items:center; justify-content:space-between; padding:16px 18px; border-bottom:1px solid var(--border); cursor:move; user-select:none; }
.pos-settings-head:active { cursor:grabbing; }
.pos-settings-box .modal-close { cursor:pointer; }
.pos-settings-title { font-size:16px; font-weight:bold; color:var(--text); }
.pos-settings-info { padding:14px 18px; border-bottom:1px solid var(--border); }
.pos-info-row { display:flex; align-items:center; justify-content:space-between; margin:6px 0; font-size:12px; }
.pos-info-label { color:var(--text2); }
.pos-info-val { color:var(--text); font-weight:600; font-family:monospace; }
.pos-settings-section { padding:14px 18px; border-bottom:1px solid var(--border); }
.pos-section-label { font-size:13px; font-weight:bold; color:var(--text); margin-bottom:8px; }
.pos-price-input { display:flex; align-items:center; gap:8px; background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:8px 10px; }
.pos-price-input input { flex:1; background:transparent; border:none; outline:none; color:var(--text); font-size:14px; font-family:inherit; min-width:0; }
.pos-input-unit { font-size:12px; color:var(--text2); }
.pos-input-ref { font-size:12px; color:var(--text2); padding-left:8px; border-left:1px solid var(--border); }
.pos-drag-handle { font-size:16px; line-height:1; color:var(--text2); cursor:ns-resize; user-select:none; padding:4px 2px; border-radius:4px; transition:.15s; }
.pos-drag-handle:hover { color:var(--gold); background:rgba(255,255,255,.06); }
.pos-drag-handle.active { color:var(--gold); }
.pos-hint { font-size:11px; color:var(--text2); margin-top:8px; line-height:1.5; }
.pos-hint span { color:var(--text); font-weight:600; }
.pos-est { font-size:12px; color:var(--text2); margin-top:4px; }
.pos-est.pos-up { color:var(--green); }
.pos-est.pos-down { color:var(--red); }
.pos-error { font-size:11px; color:var(--red); margin-top:6px; min-height:16px; }
.pos-settings-foot { padding:12px 18px; font-size:11px; color:var(--text2); line-height:1.5; background:var(--bg); }
.pos-settings-box .form-row { padding:14px 18px 18px; margin:0; justify-content:flex-end; }
.pos-settings-box .form-row .btn { min-width:90px; }
.pos-price-input.error { border-color:var(--red); background:rgba(246,70,93,.08); }
.pos-price-input.ok { border-color:var(--green); }
/* 持仓设置：按价格 / 按百分比 模式切换 */
.pos-mode-toggle { display:flex; gap:8px; margin-bottom:6px; }
.pos-mode-btn { flex:1; padding:8px 0; border:1px solid var(--border); background:var(--bg); color:var(--text2); border-radius:8px; font-size:13px; cursor:pointer; font-family:inherit; transition:.15s; }
.pos-mode-btn.active { background:var(--gold); border-color:var(--gold); color:#1a1a1a; font-weight:bold; }
.pos-mode-tip { font-size:11px; color:var(--text2); margin-top:8px; line-height:1.5; }
.pos-sub-label { font-size:12px; color:var(--text); font-weight:600; margin-bottom:6px; }

/* K 线弹窗打开时锁定背景滚动（避免背后页面仍可滚动） */
body.kline-lock { overflow:hidden; }
/* 20260907d：K 线弹窗打开时隐藏顶部 header，把空间让给 K 线图 */
body.kline-lock .header { display:none; }
/* 20260907i：非「监控行情」页面自动隐藏整条顶部标题/状态栏，把纵向空间让给内容区
   （侧栏本身的收起箭头/底部导航已足够切页，不再需要悬浮 ☰） */
body.header-hidden .header { display:none; }
/* K 线弹窗（全屏放大，避开左侧导航栏，铺满剩余区域；背景使用主题底色，完全遮住背后内容） */
.kline-mask { position:fixed; inset:16px 16px 16px calc(var(--sb) + 16px); background:var(--bg); z-index:999; display:flex; align-items:stretch; justify-content:stretch; }
body.sidebar-collapsed .kline-mask { left:calc(64px + 16px); }
.kline-mask .modal-box { width:100%; height:100%; max-width:none; display:flex; flex-direction:column; }
.modal-close { margin-left:auto; background:transparent; border:none; color:var(--text2); font-size:16px; cursor:pointer; line-height:1; padding:2px 6px; border-radius:6px; }
.modal-close:hover { color:var(--red); background:rgba(255,255,255,.06); }
/* K 线弹窗标题：标题+价格在左，按钮在右 */
.kline-title { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.kline-title-left { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.kline-title-price { font-size:12px; color:var(--text2); }
.kline-title-price .price { font-weight:700; color:var(--text); font-size:16px; }
.kline-title-price .pct { margin-left:6px; font-weight:600; }
.kline-title-price .pct.up { color:var(--green); }
.kline-title-price .pct.down { color:var(--red); }
.kline-title-btns { display:flex; align-items:center; gap:4px; margin-left:auto; }
.kline-draw-tools { display:flex; align-items:center; gap:3px; margin-right:6px; }
.kline-tool-btn { background:var(--bg2); border:1px solid var(--border); color:var(--text2); font-size:11px; padding:4px 7px; border-radius:6px; cursor:pointer; font-family:inherit; transition:.15s; }
.kline-tool-btn:hover { color:var(--gold); border-color:var(--gold); }
.kline-tool-btn.active { background:var(--gold); border-color:var(--gold); color:#1a1a1a; font-weight:bold; }
/* K 线实时状态标识：WebSocket 直连绿色呼吸点，轮询兜底橙色点 */
.kline-live-dot { display:inline-block; width:7px; height:7px; border-radius:50%; margin-left:10px; margin-right:4px; vertical-align:middle; }
.kline-live-dot.live { background:var(--green); box-shadow:0 0 0 0 rgba(14,203,129,.4); animation:klinePulse 1.2s infinite; }
.kline-live-dot.poll { background:var(--orange); }
.kline-live-text { font-size:10px; color:var(--text2); vertical-align:middle; }
@keyframes klinePulse { 0% { box-shadow:0 0 0 0 rgba(14,203,129,.4); } 70% { box-shadow:0 0 0 5px rgba(14,203,129,0); } 100% { box-shadow:0 0 0 0 rgba(14,203,129,0); } }
/* K 线最大化按钮（SVG 双窗重叠图标，位于标题右侧、关闭按钮左侧） */
.modal-max { background:transparent; border:1px solid transparent; color:var(--text2); cursor:pointer; line-height:1; padding:6px; border-radius:8px; display:flex; align-items:center; justify-content:center; transition:all .15s ease; }
.modal-max:hover { color:var(--gold); background:var(--bg2); border-color:var(--border); transform:scale(1.08); }
.modal-max:active { transform:scale(0.96); }
.modal-max .max-ico { display:block; }
/* K 线最大化后按钮高亮，提示可再点还原 */
.kline-mask.kline-maximized .modal-max { color:var(--gold); background:var(--bg2); border-color:var(--border); }
/* K 线最大化：电脑端全屏铺满（覆盖导航与大盘条），再点还原 */
.kline-mask.kline-maximized { inset:0 !important; z-index:10001; background:var(--bg); }
.kline-mask.kline-maximized .modal-box { border-radius:0; }
/* 预警历史保留小时数输入框（标题内联小号数字框） */
.ah-hours { width:54px; font-size:12px; padding:1px 5px; border:1px solid var(--border); border-radius:5px; background:var(--bg2); color:var(--text); text-align:center; }
.ah-hours:focus { outline:none; border-color:var(--blue); }
.kline-intervals { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.kbtn { padding:4px 12px; font-size:12px; border-radius:6px; border:1px solid var(--border); background:var(--bg2); color:var(--text2); cursor:pointer; }
.kbtn:hover { color:var(--text); border-color:var(--gold); }
.kbtn.active { background:var(--gold); color:#0d1117; border-color:var(--gold); font-weight:700; }
.kline-indi-panel { display:flex; flex-wrap:wrap; align-items:center; gap:8px 14px; font-size:12px; color:var(--text2); margin-bottom:8px; padding:8px 10px; background:var(--bg2); border-radius:8px; border:1px solid var(--border); }
.kline-indi-panel label { display:inline-flex; align-items:center; gap:4px; cursor:pointer; }
.kline-indi-panel input[type="number"] { background:var(--bg); color:var(--text); border:1px solid var(--border); border-radius:4px; padding:3px 4px; font-size:11px; text-align:center; }
.kline-indi-panel input[type="checkbox"] { margin:0 2px 0 0; }
/* 20260902d：加 max-height —— 小屏/矮窗口下画布不再撑破弹窗导致 K 线画到可视区外（"出框"） */
.kline-canvas-wrap { position:relative; width:100%; flex:1 1 auto; min-height:520px; max-height:calc(100vh - 200px); background:var(--bg2); border-radius:8px; overflow:hidden; cursor:grab; }   /* 20260902c：360 → 520，K 线主图增高，给大涨幅 K 线更多垂直空间 */
.kline-canvas-wrap.dragging { cursor:grabbing; }
#kline-canvas { display:block; width:100%; height:100%; }
/* 20260902q：kline-loading 改为左上角小胶囊，不再用深色全屏遮罩挡住 K 线 */
.kline-loading { position:absolute; top:6px; left:6px; display:flex; align-items:center; gap:4px; padding:3px 9px; color:var(--text); font-size:11px; background:rgba(7,10,14,.55); border:1px solid rgba(240,185,11,.35); border-radius:10px; z-index:5; letter-spacing:.3px; backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); transition: color .15s, background .15s, border-color .15s; }
.kline-loading::before { content:""; width:8px; height:8px; border-radius:50%; background:var(--gold); box-shadow:0 0 6px var(--gold); animation:kline-loading-pulse 1.2s ease-in-out infinite; }
.kline-loading.clickable { cursor: pointer; user-select: none; -webkit-user-select: none; }
.kline-loading.error { color: var(--orange); border-color:rgba(255,152,0,.45); }
.kline-loading.error::before { background:var(--orange); box-shadow:0 0 6px var(--orange); animation:none; }
.kline-loading.clickable:hover { background:rgba(255,152,0,.18); color:#ffb74d; border-color:rgba(255,152,0,.65); }
.kline-loading.clickable:active { background:rgba(255,152,0,.25); }
@keyframes kline-loading-pulse { 0%,100% { opacity:.35; transform:scale(.85); } 50% { opacity:1; transform:scale(1.15); } }
/* 20260901k：右下角浮动失败提示（不挡 K 线主体，旧 K 线作为兜底继续显示） */
.kline-fail-banner { position:absolute; right:14px; bottom:14px; z-index:6; max-width:80%; padding:8px 14px; border-radius:6px; background:rgba(255,152,0,.14); color:#ffb74d; border:1px solid rgba(255,152,0,.4); font-size:12px; cursor:pointer; user-select:none; -webkit-user-select:none; backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); box-shadow:0 4px 12px rgba(0,0,0,.4); transition: background .15s; }
.kline-fail-banner:hover { background:rgba(255,152,0,.22); }
.kline-fail-banner:active { background:rgba(255,152,0,.32); }
/* 20260902j：向左无限滚动加载更早历史时的右上角提示胶囊（不挡 K 线主体） */
.kline-history-tip { position:absolute; right:12px; top:12px; z-index:6; max-width:70%; padding:6px 12px; border-radius:14px; background:rgba(33,150,243,.16); color:#64b5f6; border:1px solid rgba(33,150,243,.45); font-size:12px; font-weight:600; user-select:none; -webkit-user-select:none; backdrop-filter:blur(2px); -webkit-backdrop-filter:blur(2px); box-shadow:0 4px 12px rgba(0,0,0,.4); transition: background .15s, opacity .2s; pointer-events:none; }
.kline-history-tip.err { background:rgba(244,67,54,.16); color:#ef9a9a; border-color:rgba(244,67,54,.45); }
.kline-history-tip:not(.err) { animation: klineTipPulse 1.4s ease-in-out infinite; }
@keyframes klineTipPulse { 0%,100% { opacity:1; } 50% { opacity:.62; } }
/* 20260901g：手机端 title 中交易对名（#kline-sym）过长截断为省略号，避免「K线 ANI…USDT」样式丢字 */
@media (max-width: 768px) {
    #kline-sym { max-width: 32vw; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display:inline-block; vertical-align:bottom; }
}
/* 20260902e：B/S 买卖点诊断条 —— 把原本只在 F12 控制台的诊断信息直接显示在 K 线下方。
   用户已第 5 次反馈「开空单没有 S 标志」，靠猜改了 4 版都没定位到，必须让用户能自己看到数据。 */
.kline-bs-diag { margin-top:8px; background:var(--bg2); border:1px solid var(--border); border-radius:6px;
    padding:6px 9px; font-size:11px; color:var(--text2); cursor:pointer; user-select:none;
    -webkit-user-select:none; line-height:1.6; word-break:break-all; transition:border-color .15s; }
.kline-bs-diag:hover { border-color:var(--gold); }
.kline-bs-diag.warn { border-color:var(--orange); }
.kline-bs-diag .bsd-num { color:var(--text); font-weight:600; }
.kline-bs-diag .bsd-ok { color:var(--green); font-weight:600; }
.kline-bs-diag .bsd-bad { color:var(--red); font-weight:600; }
.kline-bs-diag .bsd-hint { color:var(--gold); }
.kline-bs-diag-detail { margin-top:6px; padding-top:6px; border-top:1px dashed var(--border);
    font-size:10.5px; color:var(--text2); line-height:1.75; }
.kline-bs-diag-detail .bsd-row { padding:2px 0; }
.kline-info { margin-top:10px; }
.kline-info-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px 12px; }
.kline-info-grid .ki { background:var(--bg2); border-radius:6px; padding:7px 9px; }
.kline-info-grid .ki .k { font-size:10px; color:var(--text2); }
.kline-info-grid .ki .v { font-size:12px; color:var(--text); margin-top:2px; font-weight:600; word-break:break-all; }
.kline-info-err { font-size:11px; color:var(--text2); margin-top:6px; }
.kline-tooltip { position:absolute; display:none; background:rgba(20,24,30,.95); border:1px solid var(--border); border-radius:8px; padding:8px 10px; font-size:11px; color:#e8eaed; pointer-events:none; z-index:10; box-shadow:0 4px 16px rgba(0,0,0,.4); line-height:1.6; min-width:140px; }
.kline-tooltip .up { color:#0ecb81; }
.kline-tooltip .down { color:#f6465d; }
@media (max-width:768px) {
    .kline-mask { position:fixed !important; inset:0 !important; border-radius:0; z-index:10000; }
    body.nav-open .kline-mask { inset:0 !important; }
    .kline-mask .modal-box { width:100vw !important; height:100vh !important; max-width:none !important; border-radius:0; padding:12px 14px; }
    .kline-info-grid { grid-template-columns:repeat(2,1fr); }
    .kline-canvas-wrap { height:280px; }
    /* 手机端隐藏画线工具条（画线/小手/水平/线段/射线/撤销/清空），桌面端保留 */
    .kline-draw-tools { display:none !important; }
}

/* 可排序表头 */
.th-sort { cursor:pointer; user-select:none; white-space:nowrap; }
.th-sort:hover { color:var(--gold); }
.sort-arrow { font-size:9px; color:var(--gold); }

/* ── 统计页面 ── */
.stats-filter-bar { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; margin-bottom:16px; }
.stats-cards { display:grid; grid-template-columns:repeat(6,1fr); gap:12px; }
.stat-card { background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:14px 10px; text-align:center; }
.stat-card .stat-label { font-size:11px; color:var(--text2); margin-bottom:6px; }
.stat-card .stat-value { font-size:20px; font-weight:bold; color:var(--text); font-family:monospace; }
.stat-sub { font-size:10px; color:var(--text2); margin-top:4px; font-family:monospace; display:flex; align-items:baseline; justify-content:center; gap:4px; }
/* 20260902o：统计面板初始资金可手动编辑；JS 用镜像元素按数值长度动态收紧输入框，去掉数字与 USD 之间的空隙 */
.st-initial-input {
    width:60px; padding:0 1px; margin:0;
    background:transparent; border:1px solid transparent; border-radius:4px;
    color:var(--text); font-family:monospace; font-size:28px; font-weight:bold; line-height:1.1; text-align:left;
    transition:all .15s ease; -moz-appearance:textfield;
}
.st-initial-input::-webkit-outer-spin-button,
.st-initial-input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.st-initial-input:hover { border-color:var(--border); background:rgba(255,255,255,.03); }
.st-initial-input:focus { outline:none; border-color:var(--gold); background:rgba(240,185,11,.08); color:var(--gold); }
.stat-card-lg { grid-column:span 3; padding:18px 14px; display:flex; flex-direction:column; justify-content:center; }
.stat-card-lg .stat-value { font-size:32px; }
.stat-card-lg .stat-sub { font-size:11px; margin-top:6px; }

@media (max-width:768px) {
    .stat-card-lg { grid-column:span 2; }
    .stat-card-lg .stat-value { font-size:24px; }
}

/* API Key/Secret 已保存掩码态：绿色边框 + 圆点字符，提示已填写并保存 */
.field input.api-saved { border-color:rgba(14,203,129,.5); color:var(--green); letter-spacing:2px; }
.risk-progress { height:6px; background:var(--border); border-radius:99px; overflow:hidden; }
.risk-progress span { display:block; height:100%; background:var(--green); border-radius:inherit; transition:width .3s, background .3s; }
.risk-progress span.warn { background:var(--orange); }
.risk-progress span.danger { background:var(--red); }
.curve-tabs { display:flex; gap:6px; }
.curve-tab { background:transparent; border:1px solid var(--border); color:var(--text2); padding:4px 12px; border-radius:5px; cursor:pointer; font-size:11px; }
.curve-tab:hover { color:var(--text); }
.curve-tab.active { background:var(--blue); color:#000; border-color:var(--blue); font-weight:bold; }
.chart-wrap { width:100%; height:260px; background:var(--bg); border:1px solid var(--border); border-radius:8px; overflow:hidden; position:relative; }
.chart-wrap svg { width:100%; height:100%; }
.chart-axis { stroke:var(--border); stroke-width:1; }
.chart-grid { stroke:var(--border); stroke-width:1; stroke-dasharray:4 4; opacity:.5; }
.chart-grid.chart-zero { stroke:var(--gold); stroke-dasharray:6 4; opacity:.9; stroke-width:1.5; }
.chart-line { fill:none; stroke:var(--blue); stroke-width:2; }
.chart-area { fill:rgba(55,214,250,.12); stroke:none; }
.chart-dot { fill:var(--blue); r:3; }
.chart-dot-win { fill:var(--green); }
.chart-dot-loss { fill:var(--red); }
.chart-label { font-size:13px; fill:var(--text2); font-family:monospace; }

/* ── 曲线悬停取值：参考线 + 高亮点 + 浮层 ── */
.chart-cursor { stroke:var(--gold); stroke-width:1; stroke-dasharray:3 3; opacity:.75; pointer-events:none; }
.chart-dot-hi { fill:var(--gold); stroke:var(--bg); stroke-width:1.5; pointer-events:none; }
.chart-tip {
    display:none; position:absolute; z-index:20; pointer-events:none;
    min-width:116px; padding:8px 11px;
    background:rgba(13,17,23,0.96); border:1px solid var(--border); border-radius:8px;
    box-shadow:0 6px 20px rgba(0,0,0,.45);
    font-size:12px; line-height:1.7; color:var(--text); white-space:nowrap;
    /* 提升文字清晰度：加字重和轻微阴影，避免被曲线/柱状图干扰 */
    font-weight:500; text-shadow:0 1px 2px rgba(0,0,0,.8);
}
.chart-tip .tip-title { font-size:11px; color:#9ca3af; margin-bottom:4px; font-family:monospace; }
.chart-tip b { font-family:monospace; font-size:13px; font-weight:bold; }
.chart-tip .tip-up { color:#0ecb81; text-shadow:0 1px 2px rgba(0,0,0,.7); }
.chart-tip .tip-down { color:#f6465d; text-shadow:0 1px 2px rgba(0,0,0,.7); }
.chart-tip .tip-dim { color:#9ca3af; font-size:11px; }

/* ── 盈亏计算器 ── */
.calc-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:12px; }
@media (max-width:900px) { .calc-grid { grid-template-columns:repeat(2,1fr); } }
.calc-row { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:12px; }
.calc-dir { display:flex; gap:6px; }
.calc-dir-btn { background:transparent; border:1px solid var(--border); color:var(--text2); padding:5px 16px; border-radius:5px; cursor:pointer; font-size:12px; font-weight:bold; transition:all .15s; }
.calc-dir-btn:hover { border-color:var(--gold); color:var(--gold); }
.calc-dir-btn.active { background:rgba(240,185,11,.12); border-color:var(--gold); color:var(--gold); }
.calc-dir-btn#calc-short.active { background:rgba(246,70,93,.12); border-color:var(--red); color:var(--red); }
.calc-result { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; }
@media (max-width:900px) { .calc-result { grid-template-columns:repeat(2,1fr); } }
.calc-item { background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:12px 10px; text-align:center; display:flex; flex-direction:column; gap:6px; }
.calc-item span { font-size:11px; color:var(--text2); }
.calc-val { font-size:17px; font-weight:bold; color:var(--text); font-family:monospace; }
.calc-val.pnl-pos { color:var(--green); } .calc-val.pnl-neg { color:var(--red); }
/* 百分比价格换算（盈亏计算器下方独立小工具） */
.calc-pct-box { margin-top:16px; padding-top:14px; border-top:1px dashed var(--border); }
.calc-pct-title { font-size:13px; font-weight:bold; color:var(--text); margin-bottom:10px; }
.calc-pct-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:12px; }
@media (max-width:900px) { .calc-pct-grid { grid-template-columns:repeat(2,1fr); } }
.calc-pct-btns { display:flex; gap:8px; flex-wrap:wrap; }

/* 双击复制：可复制光标 + 提示条 */
.copyable { cursor:copy; }
.calc-item strong { cursor:copy; }
.chart-wrap.copyable { cursor:copy; }
.copy-toast { position:fixed; bottom:28px; left:50%; transform:translateX(-50%); background:rgba(0,0,0,.82); color:#fff; padding:8px 16px; border-radius:6px; font-size:12px; z-index:9999; opacity:0; transition:opacity .2s; pointer-events:none; white-space:nowrap; }
.copy-toast.show { opacity:1; }

/* 新闻快讯列表 */
.news-list { list-style:none; margin:0; padding:0; max-height:72vh; overflow-y:auto; scrollbar-width:thin; }
/* 律动/快讯：明显的滚动条，方便翻看更多条目 */
.news-list::-webkit-scrollbar { width:9px; }
.news-list::-webkit-scrollbar-track { background:var(--bg); border-radius:5px; }
.news-list::-webkit-scrollbar-thumb { background:var(--border); border-radius:5px; }
.news-list::-webkit-scrollbar-thumb:hover { background:var(--text2); }
.news-item { display:flex; gap:10px; align-items:baseline; padding:10px 8px; border-bottom:1px solid var(--border); font-size:13px; line-height:1.6; }
.news-item:hover { background:var(--bg); }
/* 快讯时间：显示完整北京时间 YYYY-MM-DD HH:MM，需要更宽 */
.news-time { color:var(--text2); font-family:monospace; font-size:11px; flex:0 0 108px; white-space:nowrap; }
.news-tag { flex:0 0 44px; text-align:center; font-size:10px; padding:1px 0; border-radius:4px; color:#fff; }
.tag-jin10 { background:#e6a23c; }
.tag-blockbeats { background:#409eff; }
.news-content { flex:1; color:var(--text); word-break:break-word; }
.news-item.important { background:rgba(246,70,93,.08); }
.news-item.important .news-content { color:var(--red); font-weight:bold; }

@media (max-width:1100px) {
    .stats-cards { grid-template-columns:repeat(3,1fr); }
    .header { flex-wrap:wrap; gap:10px; }
    .header-center { order:3; width:100%; justify-content:center; margin-top:6px; }
}
@media (max-width:700px) {
    .stats-cards { grid-template-columns:repeat(2,1fr); }
}

/* ═══ 登录遮罩（默认覆盖全屏，未登录不可用） ═══ */
.login-overlay { position:fixed; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center;
    background:linear-gradient(135deg, #0a0f1e 0%, #141a2e 50%, #0d1117 100%); }
.login-card { width:340px; max-width:92vw; background:var(--card); border:1px solid var(--border); border-radius:14px;
    padding:28px 26px; box-shadow:0 20px 60px rgba(0,0,0,.55); }
.login-logo { font-size:20px; font-weight:bold; color:var(--gold); text-align:center; letter-spacing:1px; }
.login-sub { font-size:12px; color:var(--text2); text-align:center; margin:6px 0 22px; }
.login-field { margin-bottom:14px; }
.login-field label { display:block; font-size:11px; color:var(--text2); margin-bottom:5px; }
.login-field input { width:100%; background:var(--bg); border:1px solid var(--border); color:var(--text);
    padding:10px 12px; border-radius:7px; font-size:14px; outline:none; transition:border .2s; }
.login-field input:focus { border-color:var(--gold); }
.login-err { color:var(--red); font-size:12px; min-height:16px; margin-bottom:8px; text-align:center; }
.login-btn { width:100%; background:var(--gold); color:#000; border:none; padding:11px; border-radius:7px;
    font-size:14px; font-weight:bold; cursor:pointer; transition:opacity .2s; }
.login-btn:hover { opacity:.85; }
.login-hint { font-size:11px; color:var(--text2); text-align:center; margin-top:14px; }
.login-hint b { color:var(--text); }
.login-version { font-size:11px; color:var(--text2); text-align:center; margin-bottom:12px; }
.login-version.ok { color:var(--green); }
.pw-wrap { position:relative; display:flex; align-items:center; }
.pw-wrap input { width:100%; padding-right:42px; }
.pw-eye { position:absolute; right:8px; top:50%; transform:translateY(-50%); background:none; border:none; cursor:pointer; font-size:17px; line-height:1; padding:4px; opacity:.65; }
.pw-eye:hover { opacity:1; }

/* 用户管理表格的「密码」列：与登录密码框不同，
   这里是展示给管理员看的 + 一键复制，故用方框 + 眼睛触发显示。
   注意：必须把全局 .pw-eye 的 position:absolute 重置掉，否则绝对定位
   会让按钮漂到 <td> 外面看不见。 */
.pw-cell { font-family:var(--mono); font-size:12px; letter-spacing:.5px;
    display:inline-flex; align-items:center; gap:6px; }
.pw-cell .pw-box { background:var(--bg); border:1px solid var(--border); border-radius:6px;
    padding:3px 8px; min-width:60px; max-width:200px; overflow:hidden;
    text-overflow:ellipsis; white-space:nowrap; font-weight:600; }
.pw-cell .pw-box.legacy { color:var(--text2); font-style:italic; font-weight:400; }
.pw-cell .pw-eye, .pw-cell .pw-copy {
    position:static !important; transform:none !important;
    background:transparent; border:1px solid var(--border);
    border-radius:6px; padding:3px 8px; cursor:pointer;
    font-size:12px; line-height:1.2; opacity:1; color:var(--text2);
    width:auto; height:auto;
}
.pw-cell .pw-eye:hover, .pw-cell .pw-copy:hover {
    border-color:var(--gold); color:var(--gold); }
.pw-cell .pw-copy.copied { color:var(--green); border-color:var(--green); }
/* 当密码已显示时，眼睛按钮打勾提示可再次点 = 隐藏 */
.pw-cell .pw-eye.shown { color:var(--green); border-color:var(--green); }

/* 账户下拉菜单：JS 固定定位到触发按钮（兼容桌面侧栏 / 手机底栏） */
.account-menu { position:fixed; background:var(--card); border:1px solid var(--border);
    border-radius:8px; padding:6px; min-width:150px; box-shadow:0 10px 30px rgba(0,0,0,.5); z-index:90; }
.account-user { font-size:11px; color:var(--text2); padding:4px 8px 8px; border-bottom:1px solid var(--border); margin-bottom:6px; }
.account-item { display:block; width:100%; text-align:left; background:transparent; border:none; color:var(--text);
    padding:7px 8px; border-radius:5px; cursor:pointer; font-size:12px; transition:all .12s; }
.account-item:hover { background:var(--card2); color:var(--text); }
.account-logout { font-weight:bold; }
.account-logout:hover { background:rgba(246,70,93,.12); color:var(--red); }

/* 登录浮层：登录 / 注册 / 激活 视图切换链接 */
.login-links { display:flex; justify-content:space-between; gap:8px; margin-top:12px; font-size:12px; }
.login-links a { color:var(--text2); text-decoration:none; cursor:pointer; transition:color .15s; }
.login-links a:hover { color:var(--gold); }

/* 我的资料：头像上传 */
.profile-avatar { display:flex; align-items:center; justify-content:center; margin:6px 0 12px; }
.profile-avatar-img { width:84px; height:84px; border-radius:50%; object-fit:cover; border:1px solid var(--border); }
.profile-avatar-empty { width:84px; height:84px; border-radius:50%; background:var(--bg); border:1px dashed var(--border);
    display:flex; align-items:center; justify-content:center; color:var(--text2); font-size:12px; text-align:center; padding:8px; }

/* 卡密管理：生成 / 续费工具条 */
.card-tools { display:flex; flex-direction:column; gap:12px; margin-bottom:12px; }
.card-create-row, .card-renew-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; color:var(--text); }
.card-create-row select, .card-renew-row input { background:var(--bg); border:1px solid var(--border); color:var(--text);
    padding:7px 10px; border-radius:5px; font-size:12px; outline:none; transition:border .2s; }
.card-create-row input { width:64px; }
.card-renew-row input { flex:1; min-width:120px; }
.card-create-row select:focus, .card-renew-row input:focus { border-color:var(--gold); }

/* 统计：真实/模拟切换按钮（激活态高亮） */
.btn-outline.active { border-color:var(--green); color:var(--green); background:rgba(14,203,129,.1); }

/* 新闻源切换按钮 */
.hbtn.active { border-color:var(--gold); color:var(--gold); background:rgba(240,185,11,.12); }

/* 统计余额错误提示 */
.stat-err { color:var(--red); font-size:11px; margin-top:4px; line-height:1.4; }

/* 指标周期下拉（15M / 30M / 1H） */
.tf-select { background:var(--card2); color:var(--gold); border:1px solid var(--border); border-radius:6px;
    padding:2px 6px; font-size:11px; font-weight:bold; cursor:pointer; outline:none; }
.tf-select:hover { border-color:var(--gold); }
.tf-select:disabled { opacity:.5; cursor:wait; }
/* 30M/1H 是按需拉取的，这里显示其数据更新时间 / 权重不足提示 */
.tf-hint { font-size:10px; color:var(--text2); font-weight:normal; white-space:nowrap; }

/* 预警历史「当前价」：价格 + 右上角涨跌幅小徽标（与"模拟"标签同款尺寸） */
.cur-wrap { position:relative; display:inline-block; padding-right:44px; padding-top:3px; white-space:nowrap; }
.cur-pct { position:absolute; top:-8px; right:0; font-size:9px; font-weight:bold;
    padding:1px 4px; border-radius:3px; line-height:1.3; }
.cur-up { background:rgba(14,203,129,.18); color:var(--green); border:1px solid rgba(14,203,129,.4); }
.cur-down { background:rgba(246,70,93,.18); color:var(--red); border:1px solid rgba(246,70,93,.4); }

/* 下单记录「盈亏(U)」列：金额 + 右上角盈亏百分比小徽标（与预警历史「当前价」同款） */
.pos-pnl-wrap { position:relative; display:inline-block; padding-right:46px; padding-top:4px; white-space:nowrap; min-width:70px; }
.pos-pnl-wrap .pos-pnl-pct { position:absolute; top:-9px; right:0; font-size:9px; font-weight:bold;
    padding:1px 4px; border-radius:3px; line-height:1.3; }
.pos-pnl-wrap .pos-pnl-up { background:rgba(14,203,129,.18); color:var(--green); border:1px solid rgba(14,203,129,.4); }
.pos-pnl-wrap .pos-pnl-down { background:rgba(246,70,93,.18); color:var(--red); border:1px solid rgba(246,70,93,.4); }

/* 快讯链接 */
.news-link { color:var(--text); text-decoration:none; }
.news-link:hover { color:var(--gold); text-decoration:underline; }
.news-tag.tag-binance { background:rgba(240,185,11,.15); color:var(--gold); }

/* 统计：币安真实持仓面板 */
.real-positions { margin-top:16px; background:var(--bg); border:1px solid rgba(14,203,129,.3); border-radius:8px; padding:14px 16px; }
.real-positions-title { font-size:13px; font-weight:bold; color:var(--green); margin-bottom:10px; }
.real-positions-err { color:var(--red); font-size:12px; margin-bottom:8px; }
.real-positions .trade-records th { background:var(--bg); }
.real-positions table { width:100%; border-collapse:collapse; font-size:11px; }
.real-positions th { color:var(--text2); padding:7px 10px; border-bottom:1px solid var(--border); text-align:center; }
.real-positions td { padding:7px 10px; border-bottom:1px solid var(--border); text-align:center; }

/* ═══ 做多/做空 子面板（独立收起 + 半椭圆开关） ═══ */
.sub-panel { border:1px solid var(--border); border-radius:12px; margin:10px 0; overflow:hidden; background:var(--panel); }
.sub-panel-head {
    display:flex; align-items:center; gap:12px;
    padding:11px 14px; cursor:pointer; user-select:none;
    background:linear-gradient(90deg, rgba(14,203,129,.08), rgba(246,70,93,.05));
    border-bottom:1px solid var(--border);
}
.sub-panel:last-child .sub-panel-head { border-bottom:1px solid var(--border); }
.sub-panel-body { padding:12px 14px; }
.sub-panel-body[style*="display: none"] { padding:0; }
.sub-title { flex:1; font-size:13px; font-weight:600; color:var(--text); }
.sub-arrow { font-size:11px; color:var(--text2); transition:transform .15s; }

/* 半椭圆（半圆）开关按钮 */
.side-pill {
    border:none; cursor:pointer; outline:none;
    padding:7px 18px; font-size:12.5px; font-weight:700; letter-spacing:.3px;
    border-radius:999px / 999px;            /* 半椭圆/胶囊 */
    transition:all .18s ease; min-width:104px; text-align:center;
    box-shadow:0 1px 4px rgba(0,0,0,.18);
}
.side-pill.on { color:#fff; }
.side-pill.off { color:var(--text2); background:rgba(140,140,140,.18); border:1px solid var(--border); }
.pill-long.on { background:linear-gradient(135deg,#0ecb81,#06a86a); }
.pill-long.off { color:rgba(14,203,129,.85); }
.pill-short.on { background:linear-gradient(135deg,#f6465d,#d6293e); }
.pill-short.off { color:rgba(246,70,93,.85); }
.side-pill:active { transform:scale(.96); }
/* 止盈止损：只是标识，不是开关 */
.pill-risk { display:inline-block; cursor:default; color:#1b1b1b; background:linear-gradient(135deg,#f0b90b,#e0a800); }
.pill-risk:active { transform:none; }
.head-risk { background:linear-gradient(90deg, rgba(240,185,11,.12), rgba(240,185,11,.02)); }

/* 妖币预警：做多/做空信号分栏美化 */
.alert-side-head { padding:10px 14px; font-size:12px; font-weight:800; letter-spacing:.4px; }
.head-long { color:#0ecb81; background:linear-gradient(90deg, rgba(14,203,129,.16), transparent); border-left:4px solid #0ecb81; border-bottom:1px solid rgba(14,203,129,.18); }
.head-short { color:#f6465d; background:linear-gradient(90deg, rgba(246,70,93,.16), transparent); border-left:4px solid #f6465d; border-bottom:1px solid rgba(246,70,93,.18); border-top:1px solid rgba(246,70,93,.18); margin-top:6px; }
.alert-table tbody tr { transition:background .12s; }
.alert-table tbody tr:hover { background:rgba(255,255,255,.04); }
#alert-short-list tbody tr { box-shadow:inset 3px 0 0 rgba(246,70,93,.45); }

/* 配置区行内说明文字 */
.hint-line {
    margin:8px 0 2px; padding:8px 10px; font-size:11px; line-height:1.6;
    color:var(--text2); background:rgba(240,185,11,.08);
    border-left:3px solid var(--gold); border-radius:0 8px 8px 0;
}
.hint-line b { color:var(--gold); }

/* ═══ 手机端底部导航（默认隐藏，仅窄屏显示） ═══ */
.mobile-bottom-nav { display:none; }
.hamburger { display:none; }   /* 桌面端隐藏汉堡按钮，仅在手机端 @media 内显示（需求9） */

@media (max-width: 768px) {
    /* 手机端：去掉底部导航，改用左侧抽屉导航（需求9） */
    .sidebar {
        display:flex; flex-direction:column;
        transform:translateX(-100%);
        transition:transform .25s ease;
        width:212px; z-index:90;
        box-shadow:2px 0 16px rgba(0,0,0,.45);
    }
    body.nav-open .sidebar { transform:translateX(0); }
    .sidebar-backdrop {
        display:none; position:fixed; inset:0;
        background:rgba(0,0,0,.45); z-index:85;
    }
    body.nav-open .sidebar-backdrop { display:block; }
    .mobile-bottom-nav { display:none; }
    /* 汉堡按钮：仅手机端显示，用于打开左侧抽屉 */
    .hamburger {
        display:inline-flex; align-items:center; justify-content:center;
        width:38px; height:38px; font-size:18px; margin-right:4px; flex:0 0 auto;
    }
    /* 抽屉里不需要收起按钮（避免与抽屉开关混淆） */
    .sidebar-collapse { display:none; }
    /* 即便本地曾记录"收起"，手机端抽屉也始终展开显示文字 */
    body.sidebar-collapsed .sidebar { width:212px; }
    body.sidebar-collapsed .stxt, body.sidebar-collapsed .sidebar-brand { display:block; }
    body.sidebar-collapsed .snav { justify-content:flex-start; padding:10px 12px; }
    /* 内容正常留白（无底部导航遮挡） */
    body { padding:10px 8px; }

    /* 头部竖向堆叠、字号放大，避免挤成一团 */
    .header { flex-direction:column; align-items:stretch; gap:10px; }
    .header-left h2 { font-size:15px; }
    .header-right { display:grid; grid-template-columns:repeat(2, 1fr); gap:8px; align-items:stretch; }
    .api-usage { min-width:0; grid-column:1 / -1; }

    /* 表单网格改单列，输入框/按钮放大更好点 */
    .form-grid, .form-grid-3 { grid-template-columns:1fr; }
    .modal-box .form-grid { grid-template-columns:1fr; }
    .field input, .field select, .btn, .hbtn { font-size:14px; padding:9px 12px; }
    .manual-order { flex-direction:column; align-items:stretch; }
    .manual-order .field { max-width:none; }
    .manual-order .btn { width:100%; }

    /* 表格横向滚动：滚动容器(.table-wrap/.trade-records/.real-positions)在手机端可左右滑动；
       仅对「位于滚动容器内」的表应用 nowrap + max-content，避免波及妖币预警等未做滚动容器的表被裁切 */
    .table-wrap, .trade-records, .real-positions { overflow-x:auto; -webkit-overflow-scrolling:touch; }
    .table-wrap table.main-table, .trade-records table, .real-positions table { width:max-content; min-width:100%; }
    .table-wrap table.main-table th, .table-wrap table.main-table td,
    .trade-records th, .trade-records td { white-space:nowrap; }
    .panel-body { padding:12px 10px; }

    /* 手机端下单记录：所有列完整显示，不再出现「8/31 19:5…」「$0.00293…」这类截断
       （表格本身可左右滑动，宽度由内容撑开，不影响桌面端） */
    .trade-records th, .trade-records td { max-width:none !important; }
    /* 「触发信号」列例外：保留点击展开全文的紧凑样式，避免超长文本把表格撑得过宽 */
    .trade-records td:nth-child(11) { max-width:120px !important; }

    /* 统计卡片两列 */
    .stats-cards { grid-template-columns:repeat(2,1fr); }
    .stats-filter-bar { gap:8px; }
    .stat-card .stat-value { font-size:18px; }
}

/* 信号周期 15M/1H 切换按钮（做多/做空各自独立） */
.tf-toggle {
    display:inline-flex; align-items:center; gap:2px;
    background:var(--card2); border:1px solid var(--border); border-radius:8px;
    padding:2px; margin-right:8px;
}
.tf-btn {
    border:none; background:transparent; color:var(--text2);
    font-size:11px; font-weight:600; padding:3px 9px; border-radius:6px; cursor:pointer;
    transition:all .15s;
}
.tf-btn.on { background:var(--gold); color:#0d1117; }
.tf-btn:not(.on):hover { color:var(--text); }

/* 下单记录「平仓原因」可点击编辑 */
.reason-edit {
    cursor:pointer; color:var(--text); border-bottom:1px dotted var(--text2);
    padding:1px 4px; border-radius:4px; max-width:160px; display:inline-block;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap; vertical-align:middle;
}
.reason-edit:hover { background:var(--card2); color:var(--gold); }
.reason-empty { color:var(--text2); font-style:italic; }
.reason-input {
    width:140px; max-width:160px; font-size:12px; padding:2px 6px;
    background:var(--bg); color:var(--text); border:1px solid var(--gold); border-radius:4px;
}
.reason-select {
    max-width:160px; font-size:12px; padding:2px 6px;
    background:var(--bg); color:var(--text); border:1px solid var(--gold); border-radius:4px;
}

/* ═══════════════════════════════════════════════════════════
   观察池卡片（20260822i/j）
   ═══════════════════════════════════════════════════════════ */
.ctag-gray { background:var(--text2); color:#0d1117; }
.ctag-orange { background:var(--orange); color:#0d1117; }
.observe-cards { display:flex; flex-direction:column; gap:10px; }
.ob-empty { color:var(--text2); padding:16px; text-align:center; font-size:13px; }
.ob-card { background:var(--bg); border:1px solid var(--border); border-radius:10px; padding:12px 14px; overflow:hidden; }
.ob-card.st-SHORT_SIGNAL { border-left:3px solid var(--red); }
.ob-card.st-CANCELLED { border-left:3px solid var(--text2); opacity:.85; }
.ob-card.st-IN_POSITION { border-left:3px solid var(--orange); }
.ob-card.st-CLOSED { border-left:3px solid var(--green); }
.ob-head { display:flex; align-items:center; gap:8px; flex-wrap:wrap; font-size:13px; font-weight:bold; margin-bottom:10px; }
.ob-oid { color:var(--text2); font-size:10px; font-weight:normal; }
.ob-time { color:var(--text2); font-size:11px; margin-left:auto; font-weight:normal; }
.ob-head .ob-del { margin-left:8px; }
.ob-cols { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.ob-box { background:var(--card); border:1px solid var(--border); border-radius:8px; padding:10px; }
.ob-sub { font-size:11px; color:var(--text2); margin-bottom:8px; border-bottom:1px solid var(--border); padding-bottom:4px; }
.ob-kv { display:flex; justify-content:space-between; gap:8px; font-size:12px; margin:4px 0; }
.ob-kv span { color:var(--text2); }
.ob-kv b { color:var(--text); font-weight:600; }
.ob-h { color:var(--gold) !important; }
.ob-l1 { color:var(--blue) !important; }
.ob-r1 { color:var(--red) !important; }
.ob-cancel { color:var(--red); font-size:12px; margin-top:8px; }
@media (max-width:900px) {
    .ob-cols { grid-template-columns:1fr; }
}

/* ═══════════════════════════════════════════════════════════
   20260823c 修复/优化：
   - Req1 桌面端「操作日志」面板加高（520px），手机端保持 300px
   - Req2 市场情绪/爆仓热图布局左移加宽、仪表盘与热图块放大；爆仓热图增加 Binance K 线按价位成交量兜底（标注 estimate）
   - Req3 卡密续费：永久会员不再消耗卡并提示；季卡剩余>90天续月卡保持季卡不降级
   - Req4 顶部杂散小箭头桌面端隐藏（仅手机端显示）
   - Req5 新增「刷新价格」按钮 + 行情/价格刷新间隔输入框（秒，可配置，手动点击仍可用）
   - Req6 律动快讯解析修正（article_id 替代 content_id，支持 minified 变量引用）；刷新按钮 force 绕过缓存并在操作日志记录成功/失败
   - Req7 下单记录独立为左侧导航「下单记录」页（位于「操作日志」上方）
   20260823a 新增：卡密双击复制 / 新闻两栏 / 市场情绪 / 爆仓热图
   ═══════════════════════════════════════════════════════════ */

/* ── 卡密表格：单个卡密双击复制 ── */
.card-code {
    font-family: monospace;
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
    transition: background .15s;
}
.card-code:hover {
    background: var(--card2);
    color: var(--gold);
}

/* ── 新闻页面：两栏布局 ── */
.news-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 14px;
    align-items: start;
}
.news-main { min-width: 0; }
.news-side { min-width: 0; display: flex; flex-direction: column; gap: 14px; }
/* Req2：宽屏下把「市场情绪 / 爆仓热图」移到左侧并加宽该列 */
@media (min-width: 1101px) {
    .news-layout { grid-template-columns: 460px 1fr; }
    .news-side { order: 1; }   /* 组件置左 */
    .news-main { order: 2; }   /* 快讯置右 */
}

@media (max-width: 1100px) {
    .news-layout { grid-template-columns: 1fr; }
    .news-side { flex-direction: row; flex-wrap: wrap; }
    .news-side > .panel { flex: 1; min-width: 280px; }
}
@media (max-width: 768px) {
    .news-side { flex-direction: column; }
    .news-side > .panel { min-width: 0; }
}

/* ── 市场情绪仪表盘 ── */
.sentiment-wrap { text-align: center; padding: 8px 0; }
.sentiment-gauge {
    position: relative;
    width: 240px;
    height: 120px;
    margin: 0 auto 10px;
    overflow: hidden;
}
.gauge-arc {
    position: absolute;
    top: 0;
    left: 0;
    width: 240px;
    height: 240px;
    border-radius: 50%;
    background: conic-gradient(
        from 180deg,
        #ef4444 0deg 36deg,
        #f97316 36deg 72deg,
        #f0b90b 72deg 108deg,
        #84cc16 108deg 144deg,
        #22c55e 144deg 180deg
    );
    mask: radial-gradient(circle at 50% 50%, transparent 62%, black 63%);
    -webkit-mask: radial-gradient(circle at 50% 50%, transparent 62%, black 63%);
}
.gauge-needle {
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 3px;
    height: 104px;
    background: var(--text);
    border-radius: 3px;
    transform-origin: bottom center;
    transform: translateX(-50%) rotate(-90deg);
    transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1);
    z-index: 2;
}
.gauge-value {
    position: absolute;
    bottom: 8px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 34px;
    font-weight: bold;
    color: var(--text);
    z-index: 3;
}
.sentiment-label {
    font-size: 15px;
    font-weight: bold;
    margin-bottom: 10px;
}
.sentiment-scale {
    display: flex;
    justify-content: space-between;
    font-size: 10px;
    color: var(--text2);
    padding: 0 4px;
}

/* ═══ 止盈止损：做多 / 做空 两套独立配置（20260903r） ═══ */
.tpsl-dual {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 12px;
}
.tpsl-group {
    padding: 10px 12px;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg);
    min-width: 0;
}
/* 组内只有 2 个字段（止盈/止损），固定两列，不要继承外层的 4 列 */
.tpsl-group .form-grid { grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 0; }
.tpsl-title {
    font-size: 12px; font-weight: 700; margin-bottom: 8px;
    padding-bottom: 6px; border-bottom: 1px dashed var(--border);
}
.tpsl-long .tpsl-title { color: var(--green); }
.tpsl-short .tpsl-title { color: var(--red); }
/* 窄屏：两套上下堆叠，避免输入框被压成一条 */
@media (max-width: 768px) {
    .tpsl-dual { grid-template-columns: 1fr; gap: 10px; }
}

/* ═══ 微信 ClawBot 绑定面板（20260903r：手机端改为单列堆叠，避免二维码与按钮被挤压） ═══ */
.wclaw-grid {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 14px;
    align-items: start;
    margin-top: 14px;
    padding: 12px;
    border: 1px dashed var(--border);
    border-radius: 10px;
}
.wclaw-qr-col { text-align: center; }
.wclaw-qr-box {
    width: 180px; height: 180px; max-width: 100%;
    border: 1px solid var(--border); border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--text2); font-size: 12px; background: #fff;
    text-align: center; padding: 8px; line-height: 1.5;
    box-sizing: border-box;
}
.wclaw-qr-box img,
.wclaw-qr-img {
    width: 100%; height: 100%;
    max-width: 100%; max-height: 100%;
    object-fit: contain; display: block; margin: auto;
}
/* 已绑定态：改为自适应宽度的身份卡片（不再锁 180×180，避免文字溢出框外） */
.wclaw-qr-box.is-bound {
    width: auto; height: auto;
    min-width: 200px; max-width: 280px;
    justify-content: flex-start; align-items: stretch;
    text-align: left; padding: 12px;
}
.wclaw-qr-tip.is-bound { max-width: none; white-space: normal; word-break: break-all; }
.wclaw-qr-tip { margin-top: 6px; font-size: 11px; color: var(--text2); max-width: 180px; }
.wclaw-info-col { min-width: 0; }
.wclaw-btn-row { gap: 8px; }
/* 手机端：整体单列，二维码居中，按钮两列网格，文案不再被挤成竖条 */
@media (max-width: 768px) {
    .wclaw-grid {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 10px;
    }
    /* 仅「二维码态」保持正方形；已绑定卡片由内容撑高，不要被 aspect-ratio 压扁 */
    .wclaw-qr-box:not(.is-bound) { margin: 0 auto; width: 100%; max-width: 220px; height: auto; aspect-ratio: 1 / 1; }
    .wclaw-qr-box.is-bound { margin: 0 auto; width: auto; min-width: 0; max-width: 280px; height: auto; }
    .wclaw-qr-tip { max-width: none; margin-left: auto; margin-right: auto; }
    .wclaw-btn-row {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 8px;
    }
    .wclaw-btn-row .btn {
        width: 100%;
        justify-content: center;
        text-align: center;
        /* 手机上允许折行，避免「手动检查（微信上确认后再点）」这类长文案被省略号截断 */
        white-space: normal;
        word-break: break-word;
        line-height: 1.35;
        padding-left: 6px;
        padding-right: 6px;
    }
}
/* 超窄屏（≤380px）：按钮改为单列，保证文字完整可见 */
@media (max-width: 380px) {
    .wclaw-btn-row { grid-template-columns: 1fr; }
    .tpsl-group .form-grid { grid-template-columns: 1fr; }
}

/* ── 爆仓热图 ── */
.heatmap-tabs { display: flex; gap: 6px; align-items: center; }
.heatmap-tab { padding: 3px 8px; font-size: 11px; }
.heatmap-tab.active { background: var(--gold); color: #0d1117; border-color: var(--gold); }
.heatmap-wrap { min-height: 140px; }
.heatmap-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    font-size: 11px;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--border);
}
.heatmap-treemap {
    position: relative;
    border-radius: 8px;
    overflow: hidden;
    background: var(--bg2);
}
.heatmap-block {
    position: absolute;
    border-radius: 6px;
    padding: 4px 6px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    overflow: hidden;
    cursor: default;
    transition: filter .15s, box-shadow .15s;
    color: #fff;
}
.heatmap-block:hover { filter: brightness(1.15); box-shadow: 0 0 0 2px rgba(240,185,11,.6); z-index: 2; }
.heatmap-block-symbol { font-size: 14px; font-weight: 700; line-height: 1.15; text-shadow: 0 1px 2px rgba(0,0,0,.45); }
.heatmap-block-amount { font-size: 11px; font-weight: 700; margin-top: 2px; text-shadow: 0 1px 2px rgba(0,0,0,.45); }
.heatmap-block-side { font-size: 9px; margin-top: 1px; opacity: .92; text-shadow: 0 1px 2px rgba(0,0,0,.45); }
.heatmap-block-price { font-size: 11px; font-weight: bold; color: var(--text); }

/* 20260904a：统计概览 —— 做多 / 做空分板块（总览下方两块并排） */
.stats-side-wrap { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
@media (max-width:900px) { .stats-side-wrap { grid-template-columns:1fr; } }
.stats-side-card {
    background: var(--bg2);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 12px 14px 14px;
    box-shadow: 0 1px 4px rgba(0,0,0,.18);
    transition: border .2s, box-shadow .2s;
}
.stats-side-card:hover { box-shadow: 0 2px 10px rgba(0,0,0,.28); }
.stats-side-long  { border-top: 3px solid var(--green); }
.stats-side-short { border-top: 3px solid var(--red); }
.stats-side-head {
    display: flex; align-items: center; gap: 8px;
    font-size: 14px; font-weight: 700; margin-bottom: 10px;
    padding-bottom: 8px; border-bottom: 1px dashed var(--border);
}
.stats-side-title { letter-spacing: .5px; }
.stats-side-long  .stats-side-title { color: var(--green); }
.stats-side-short .stats-side-title { color: var(--red); }
.stats-side-dot { display:inline-block; width:10px; height:10px; border-radius:50%; flex:none; }
.dot-long  { background: var(--green); box-shadow: 0 0 8px rgba(14,203,129,.55); }
.dot-short { background: var(--red);   box-shadow: 0 0 8px rgba(246,70,93,.55); }
.stats-side-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px 10px; }
@media (max-width:700px) { .stats-side-grid { grid-template-columns:repeat(2,1fr); } }
.ss-item {
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 7px 9px;
    min-height: 46px;
    display: flex; flex-direction: column; justify-content: center;
}
.ss-item-lg {
    grid-column: span 2;
    background: linear-gradient(135deg, rgba(14,203,129,.08), rgba(14,203,129,.02));
    border-color: rgba(14,203,129,.4);
}
.stats-side-short .ss-item-lg {
    background: linear-gradient(135deg, rgba(246,70,93,.08), rgba(246,70,93,.02));
    border-color: rgba(246,70,93,.4);
}
.ss-label { font-size: 10px; color: var(--text2); letter-spacing: .5px; margin-bottom: 2px; }
.ss-value { font-size: 14px; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
/* 20260906a：笔数卡片右侧的「胜 N · 亏 M」小字 */
.ss-sub { font-size: 10px; font-weight: 600; color: var(--text2); margin-left: 4px; white-space: nowrap; }
/* 20260906b：胜/亏独立框里的分隔斜杠 */
.ss-sep { color: var(--text2); font-weight: 400; margin: 0 2px; }
.ss-value.pnl-pos { color: var(--green); }
.ss-value.pnl-neg { color: var(--red); }

/* ===== 回测数据（20260905i） ===== */
.bt-controls { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; margin-bottom: 10px; }
.bt-field { display: flex; flex-direction: column; gap: 4px; }
.bt-field label { font-size: 11px; color: var(--text2); }
.bt-field input, .bt-field select {
    padding: 6px 8px; border: 1px solid var(--border); border-radius: 6px;
    background: var(--card); color: var(--text); font-size: 12px; min-width: 110px;
}
/* 20260907v：回测按钮横排（开始回测 / 一键回测 / 暂停拉取），不再每行一个挤成一列 */
.bt-btns-row { display: flex; flex-direction: row; gap: 8px; align-items: stretch; flex-wrap: wrap; }
.bt-btns-row .btn { white-space: nowrap; }
.bt-sym-wrap { position: relative; width: 230px; }
.bt-sym-wrap input { width: 100%; box-sizing: border-box; }
.bt-symbol-list {
    position: absolute; z-index: 80; top: 100%; left: 0; right: 0; max-height: 260px; overflow: auto;
    background: var(--card2); border: 1px solid var(--border); border-radius: 6px;
    box-shadow: 0 8px 24px rgba(0,0,0,.35); margin-top: 2px;
}
.bt-symbol-item { padding: 6px 10px; font-size: 12px; cursor: pointer; color: var(--text); }
.bt-symbol-item:hover { background: rgba(55,214,250,.12); }
.bt-symbol-empty { color: var(--text2); cursor: default; }
.bt-cfg-line { font-size: 11px; color: var(--text2); margin-bottom: 8px; line-height: 1.8; }
.bt-status { font-size: 12px; color: var(--blue); margin: 6px 0; }
.bt-status.bt-err { color: var(--red); }
.bt-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; margin: 10px 0 12px; }
.bt-card {
    border: 1px solid var(--border); border-top: 2px solid var(--blue); border-radius: 10px;
    padding: 12px 14px; background: var(--card); text-align: center;
}
.bt-card .bt-cl { font-size: 11px; color: var(--text2); margin-bottom: 6px; }
.bt-card .bt-cv { font-size: 21px; font-weight: 700; }
.bt-card .bt-unit { font-size: 12px; font-weight: normal; color: var(--text2); }
.bt-up { color: var(--green); }
.bt-down { color: var(--red); }
.bt-statgrid { border: 1px solid var(--border); border-radius: 8px; overflow: hidden; margin-bottom: 12px; }
.bt-srow { display: flex; border-bottom: 1px solid var(--border); }
.bt-srow:last-child { border-bottom: none; }
.bt-slab { width: 240px; flex-shrink: 0; padding: 8px 14px; font-size: 12px; color: var(--text2);
    background: var(--card); border-right: 1px solid var(--border); }
.bt-sval { padding: 8px 14px; font-size: 12px; color: var(--text); }
.bt-chart-wrap { width: 100%; border: 1px solid var(--border); border-radius: 8px; background: var(--card); margin-bottom: 12px; position: relative; }
.bt-chart-wrap canvas { display: block; }
/* 20260906a：右上角工具栏（显示区间 + 适应 + 最大化） */
.bt-chart-toolbar { position: absolute; top: 8px; right: 10px; z-index: 5; display: flex; gap: 6px; align-items: center;
    background: rgba(20,30,40,.55); border: 1px solid rgba(255,255,255,.08); border-radius: 6px; padding: 4px 6px;
    backdrop-filter: blur(4px); }
.bt-tool-label { font-size: 11px; color: var(--text2); padding: 0 4px; font-variant-numeric: tabular-nums; }
.bt-tool-btn   { font-size: 11px; padding: 3px 8px; border-radius: 4px; border: 1px solid transparent; background: transparent; color: var(--text2); cursor: pointer; transition: all .18s; }
.bt-tool-btn:hover { color: var(--blue); border-color: rgba(55,214,250,.35); background: rgba(55,214,250,.08); }
/* 20260906a：最大化 —— 全屏铺满（遮罩式） */
.bt-chart-wrap.bt-maximized {
    position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 10000;
    margin: 0; border-radius: 0; border-color: transparent; background: var(--bg);
}
.bt-chart-wrap.bt-maximized canvas { width: 100% !important; height: 100% !important; }
.bt-chart-wrap.bt-maximized .bt-tool-btn { font-size: 13px; padding: 5px 12px; }
.bt-chart-wrap.bt-maximized .bt-tool-label { font-size: 12px; }
.bt-table-wrap { max-height: 340px; overflow: auto; border: 1px solid var(--border); border-radius: 8px; }
.bt-notes { font-size: 11px; color: var(--text2); margin-top: 8px; line-height: 1.8; }
.bt-tooltip {
    position: absolute; z-index: 30; pointer-events: none;
    background: rgba(7, 10, 14, 0.94); color: var(--text); border: 1px solid var(--border);
    border-radius: 6px; padding: 8px 10px; font-size: 11px; line-height: 1.6;
    box-shadow: 0 8px 22px rgba(0,0,0,.45); min-width: 178px;
}
.bt-tooltip .bt-up { color: var(--green); }
.bt-tooltip .bt-down { color: var(--red); }
.bt-tooltip span { white-space: nowrap; }
@media (max-width: 768px) {
    .bt-slab { width: 150px; }
    .bt-card .bt-cv { font-size: 17px; }
}

/* ── 交易分析（日/月/年盈亏日历 · 20260907f）── */
.ta-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; flex-wrap:wrap; }
.ta-modes { display:inline-flex; border:1px solid var(--border); border-radius:8px; overflow:hidden; }
.ta-mode-btn { border:none; background:var(--card2); color:var(--text2); padding:6px 18px; cursor:pointer; font-size:12px; }
.ta-mode-btn.active { background:var(--gold); color:#1b1f27; font-weight:600; }
.ta-nav { display:inline-flex; align-items:center; gap:8px; }
.ta-nav-btn { border:1px solid var(--border); background:var(--card2); color:var(--text); border-radius:6px; padding:4px 10px; cursor:pointer; font-size:12px; }
.ta-nav-btn:hover { border-color:var(--gold); color:var(--gold); }
/* 20260908f：交易分析刷新按钮（日/月/年右侧，拉取时旋转） */
.ta-refresh-btn { border:1px solid var(--border); background:var(--card2); color:var(--text2); border-radius:8px; padding:6px 11px; cursor:pointer; font-size:14px; line-height:1; }
.ta-refresh-btn:hover { border-color:var(--gold); color:var(--gold); }
.ta-refresh-btn.spinning { animation: ta-spin .8s linear infinite; pointer-events:none; }
@keyframes ta-spin { to { transform: rotate(360deg); } }
#ta-period-label { font-size:14px; font-weight:600; color:var(--text); min-width:72px; text-align:center; }
.ta-summary { display:flex; align-items:baseline; gap:12px; margin-bottom:10px; }
.ta-count { font-size:12px; color:var(--text2); }
.ta-total { font-size:24px; font-weight:700; }
.ta-total.ta-up { color:var(--green); }
.ta-total.ta-down { color:var(--red); }
.ta-total.ta-flat { color:var(--text2); }
.ta-note { font-size:11px; color:var(--text2); margin-top:8px; }
.ta-weekrow { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:6px; }
.ta-week { text-align:center; font-size:11px; color:var(--text2); }
.ta-days { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.ta-months { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.ta-cell { min-height:56px; border:1px solid var(--border); border-radius:8px; padding:5px 6px; background:var(--card2); display:flex; flex-direction:column; gap:2px; }
.ta-cell.ta-empty { border:none; background:transparent; }
.ta-cell.ta-today { border-color:var(--gold); }
.ta-cell.ta-win { background:rgba(14,203,129,.10); border-color:rgba(14,203,129,.35); }
.ta-cell.ta-loss { background:rgba(246,70,85,.10); border-color:rgba(246,70,85,.35); }
.ta-mcell { min-height:72px; border:1px solid var(--border); border-radius:8px; padding:6px 8px; background:var(--card2); display:flex; flex-direction:column; gap:3px; }
.ta-mcell.ta-win { background:rgba(14,203,129,.10); border-color:rgba(14,203,129,.35); }
.ta-mcell.ta-loss { background:rgba(246,70,85,.10); border-color:rgba(246,70,85,.35); }
.ta-day-num { font-size:12px; color:var(--text); font-weight:600; }
.ta-day-pnl { font-size:12px; font-weight:700; }
.ta-day-pnl.ta-up { color:var(--green); }
.ta-day-pnl.ta-down { color:var(--red); }
.ta-day-pnl.ta-flat { color:var(--text2); }
.ta-day-n { font-size:10px; color:var(--text2); }
@media (max-width:768px) {
    .ta-cell { min-height:48px; padding:4px; }
    .ta-day-pnl { font-size:10px; }
    .ta-months { grid-template-columns:repeat(3,1fr); }
}
