/* 钢子出击 - 主样式表 */

/* ═══════════════ Remix Icon 基础对齐 ═══════════════ */
.card-head h3 i[class^="ri-"],
.nav-tab i[class^="ri-"],
.info-icon i[class^="ri-"] {
  margin-right: 6px;
  font-size: 1.15em;
  vertical-align: -0.1em;
}
.header-btn i[class^="ri-"] {
  font-size: 1.2em;
  line-height: 1;
}
.logo-icon i[class^="ri-"] {
  font-size: inherit;
  line-height: 1;
}

/* ═══════════════ 全局 ═══════════════ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#0a0d10;--bg2:#0f1318;--card:#141820;--card2:#181d26;
  --card-hover:#1c222d;--border:#232a36;--border2:#2d3545;
  --text:#e8ecf1;--text2:#b0b8c4;--text3:#a0aec0;--text-primary:#e8ecf1;--text-secondary:#b0b8c4;--text-muted:#a0aec0;--bg-tertiary:rgba(30,41,59,0.5);--accent:#38bdf8;--border-color:rgba(148,163,184,0.1);--muted:#a0aec0;--surface:#1e293b;
  --green:#00d68f;--green2:#00b37a;--green-bg:rgba(0,214,143,.1);
  --red:#ff4757;--red2:#e63e50;--red-bg:rgba(255,71,87,.1);
  --yellow:#ffc107;--yellow-bg:rgba(255,193,7,.1);
  --blue:#3b82f6;--blue-bg:rgba(59,130,246,.1);
  --purple:#a855f7;--purple-bg:rgba(168,85,247,.1);
  --cyan:#06b6d4;--cyan-bg:rgba(6,182,212,.1);
  --orange:#f97316;--orange-bg:rgba(249,115,22,.1);
  --r:10px;--r2:14px;
  --shadow:0 4px 24px rgba(0,0,0,.4);
  --glow-green:0 0 20px rgba(0,214,143,.15);
  --glow-red:0 0 20px rgba(255,71,87,.15);
}
html{font-size:13px;scroll-behavior:smooth;overflow-x:hidden}
/* #MEDIUM-11 修复：iOS Safari 100vh 问题 */
html {
  height: -webkit-fill-available;
}
body{
  font-family:'SF Pro Display',-apple-system,BlinkMacSystemFont,'PingFang SC','Noto Sans SC',system-ui,sans-serif;
  background:var(--bg);color:var(--text);
  min-height:100vh;
  min-height:100dvh;
  min-height:-webkit-fill-available;
  overflow-x:hidden;
  background-image:
    radial-gradient(ellipse 90% 50% at 50% -10%,rgba(59,130,246,.04) 0%,transparent 70%),
    radial-gradient(ellipse 60% 50% at 100% 100%,rgba(0,214,143,.03) 0%,transparent 60%);
}
/* #DOM-02 修复：防止容器横向溢出 */
.main-content,.container{max-width:100%;overflow-x:hidden}
/* grid/flex 子项防溢出：minmax(0,1fr) 已处理 grid，这里补 flex 子项 */
.grid-2>*,.grid-3>*,.grid-2-1>*,.grid-3-1>*,.overview>*{min-width:0}
.app-toast{
  position:fixed;left:50%;bottom:26px;transform:translateX(-50%);
  background:rgba(20,24,32,.95);color:var(--text);
  border:1px solid var(--border2);padding:9px 14px;border-radius:10px;
  font-size:12px;opacity:0;pointer-events:none;transition:opacity .2s ease;
  max-width:min(92vw,520px);
  text-align:center;
  z-index:9999;
}
.app-toast.show{opacity:1}
.app-confirm-mask{
  position:fixed;inset:0;background:rgba(0,0,0,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;z-index:10000;
}
.app-confirm-mask.show{display:flex}
.app-confirm-box{
  width:min(360px,92vw);background:var(--card2);border:1px solid var(--border2);
  border-radius:14px;padding:18px;box-shadow:var(--shadow);
}
.app-confirm-title{font-size:15px;font-weight:600;color:var(--text);margin-bottom:8px}
.app-confirm-text{font-size:13px;color:var(--text2);line-height:1.6;margin-bottom:14px}
.app-confirm-actions{display:flex;justify-content:flex-end;gap:8px}
.app-confirm-primary{background:var(--blue,#007aff)!important;color:#fff!important;border-color:var(--blue,#007aff)!important}
@media (max-width: 480px){
  .app-confirm-box{width:min(94vw,360px);padding:12px}
  .app-confirm-actions{flex-direction:column}
  .app-confirm-actions .header-btn{width:100%;min-height:40px}
}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#2d3545;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#3d4555}

/* ═══════════════ 底部实时行情滚动条 ═══════════════ */
.ticker-bar{
  position:fixed;bottom:0;left:0;right:0;z-index:200;
  background:var(--bg2);border-top:1px solid var(--border);
  overflow:hidden;height:32px;
  backdrop-filter:blur(12px);
  background:rgba(15,19,24,.92);
}
.ticker-track{
  display:flex;align-items:center;height:100%;gap:32px;
  white-space:nowrap;
  will-change:transform;
}
.ticker-track.animating{
  animation:ticker-scroll var(--scroll-duration, 30s) linear infinite;
}
.ticker-item{display:flex;align-items:center;gap:6px;font-size:11px;flex-shrink:0}
.ticker-item .sym{font-weight:600;color:var(--text2);font-size:10px}
.ticker-item .price{font-weight:700;font-variant-numeric:tabular-nums}
.ticker-item .chg{font-size:10px;padding:1px 5px;border-radius:3px;font-weight:600}
@keyframes ticker-scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

/* ═══════════════ 固定顶部 ═══════════════ */
.sticky-top{
  position:sticky;top:0;z-index:100;
  backdrop-filter:blur(16px);
  -webkit-backdrop-filter: blur(16px);
  background:rgba(10,13,16,.88);
  /* iOS Safari（viewport-fit=cover）适配刘海安全区 */
  padding-top: env(safe-area-inset-top);
}
.header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 32px;border-bottom:1px solid var(--border2);
}
.logo{display:flex;align-items:center;gap:12px;min-width:0}

/* ═══════════════ AI 信号滚动条 ═══════════════ */
.signal-ticker{
  overflow:hidden;height:28px;
  background:linear-gradient(90deg, rgba(59,130,246,.06), rgba(0,214,143,.06), rgba(168,85,247,.06));
  border-bottom:1px solid var(--border);position:relative;
}
.signal-ticker::before,.signal-ticker::after{
  content:'';position:absolute;top:0;bottom:0;width:40px;z-index:2;pointer-events:none;
}
.signal-ticker::before{left:0;background:linear-gradient(90deg,var(--bg2),transparent)}
.signal-ticker::after{right:0;background:linear-gradient(270deg,var(--bg2),transparent)}
.signal-ticker-track{
  display:flex;align-items:center;height:100%;gap:48px;
  white-space:nowrap;will-change:transform;padding:0 16px;
}
.signal-ticker-track.animating{
  animation:signal-scroll var(--signal-duration, 20s) linear infinite;
}
@keyframes signal-scroll{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

.signal-ticker-item{
  display:inline-flex;align-items:center;gap:6px;
  font-size:11.5px;font-weight:500;color:var(--text2);flex-shrink:0;
}
.signal-ticker-item i{font-size:13px}
.signal-ticker-item.waiting{color:var(--text3);font-style:italic}

.signal-ticker-item .sig-dot{
  width:6px;height:6px;border-radius:50%;flex-shrink:0;
  animation:pulse 2s infinite;
}
.signal-ticker-item .sig-label{font-weight:700}
.signal-ticker-item .sig-conf{opacity:.7;font-size:10.5px}
.signal-ticker-item .sig-sep{color:var(--text3);opacity:.3;margin:0 4px}

/* 信号颜色 */
.signal-ticker-item.sig-buy .sig-dot{background:var(--green);box-shadow:0 0 6px rgba(0,214,143,.5)}
.signal-ticker-item.sig-buy .sig-label{color:var(--green)}
.signal-ticker-item.sig-sell .sig-dot{background:var(--red);box-shadow:0 0 6px rgba(255,71,87,.5)}
.signal-ticker-item.sig-sell .sig-label{color:var(--red)}
.signal-ticker-item.sig-hold .sig-dot{background:var(--yellow);box-shadow:0 0 6px rgba(255,193,7,.4)}
.signal-ticker-item.sig-hold .sig-label{color:var(--yellow)}
.logo-icon{
  width:36px;height:36px;border-radius:10px;
  background:linear-gradient(135deg,#3b82f6,#06b6d4);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:900;color:#fff;letter-spacing:-1px;
  box-shadow:0 0 16px rgba(59,130,246,.3);
}
.logo h1{font-size:17px;font-weight:700;letter-spacing:-.5px;color:var(--text)}
.logo h1 span{
  font-size:10px;color:var(--blue);background:var(--blue-bg);
  padding:2px 8px;border-radius:20px;font-weight:600;margin-left:8px;
  vertical-align:middle;
}
.header-right{display:flex;align-items:center;gap:10px}
.status-pill{
  display:flex;align-items:center;gap:6px;font-size:11.5px;
  background:rgba(0,214,143,.18);color:#98ffd6;
  padding:6px 14px;border-radius:20px;font-weight:600;
  border:1px solid rgba(0,214,143,.45);height:32px;box-sizing:border-box;
  text-shadow:0 0 8px rgba(0,214,143,.25);
}
.status-pill.is-online{background:rgba(0,214,143,.18);color:#98ffd6}
.status-pill.is-offline{background:rgba(255,71,87,.18);color:#ffb7bf;border-color:rgba(255,71,87,.45);text-shadow:0 0 8px rgba(255,71,87,.2)}
.status-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 2s infinite;will-change:opacity;contain:paint}
.status-pill .dot.offline{background:var(--red)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.header-time{font-size:11px;color:var(--text3);font-variant-numeric:tabular-nums;height:32px;display:inline-flex;align-items:center;white-space:nowrap}
.header-btn{
  height:32px;box-sizing:border-box;
  padding:0 12px;font-size:11px;border-radius:8px;cursor:pointer;
  border:1px solid var(--border);background:var(--card);color:var(--text2);
  transition:all .2s;display:inline-flex;align-items:center;justify-content:center;gap:4px;
}
.header-btn:hover{border-color:var(--border2);color:var(--text);background:var(--card2)}
.header-btn.voice-btn{font-size:16px;padding:0 8px}
.header-btn.theme-toggle{font-size:16px;padding:0 8px}
.logout-btn i{font-size:14px;line-height:1}

/* ═══════════════ 导航 Tab ═══════════════ */
.nav-tabs{
  display:flex;gap:2px;padding:0 32px;background:var(--bg2);
  border-bottom:1px solid var(--border);overflow-x:auto;
}
.nav-tab{
  padding:12px 20px;font-size:12px;font-weight:500;color:var(--text3);
  cursor:pointer;border-bottom:2px solid transparent;transition:.2s;
  background:none;border-top:none;border-left:none;border-right:none;
  white-space:nowrap;
}
.nav-tab:hover{color:var(--text2)}
.nav-tab.active{color:var(--blue);border-bottom-color:var(--blue);font-weight:600}
.nav-tab:focus-visible{
  outline:2px solid var(--blue);outline-offset:-2px;
  color:var(--text);border-radius:4px 4px 0 0;
}
.nav-tab.dev-disabled{opacity:.55;cursor:not-allowed;border-bottom-style:dashed}

/* Tab 内容 */
.tab-page{display:none}
.tab-page.active{display:block}

/* ═══════════════ 主体 ═══════════════ */
.container{max-width:1520px;margin:0 auto;padding:20px 28px 60px}
.section-title{
  font-size:11px;text-transform:uppercase;letter-spacing:1.5px;
  color:var(--text3);font-weight:600;margin:24px 0 12px;
  display:flex;align-items:center;gap:8px;
}
.section-title::after{content:'';flex:1;height:1px;background:var(--border)}

/* ═══════════════ 概览卡片 ═══════════════ */
.overview{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.stat-card{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--r2);padding:18px 20px;position:relative;overflow:hidden;
  transition:all .3s cubic-bezier(.22,1,.36,1);
}
.stat-card::after{
  content:'';position:absolute;top:0;left:0;right:0;height:2px;
  background:var(--accent,var(--border2));
}
.stat-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--border2)}
.stat-card .icon{
  width:32px;height:32px;border-radius:8px;display:flex;align-items:center;
  justify-content:center;font-size:15px;margin-bottom:10px;
}
.stat-card.up{--accent:var(--green)}
.stat-card.down{--accent:var(--red)}
.stat-card .icon.up{background:var(--green-bg)}
.stat-card .icon.down{background:var(--red-bg)}
.stat-card .label{font-size:11px;color:var(--text3);margin-bottom:6px;font-weight:500;letter-spacing:.3px}
.stat-card .value{font-size:22px;font-weight:800;letter-spacing:-.5px;line-height:1;font-variant-numeric:tabular-nums}
.stat-card .change{
  display:inline-flex;align-items:center;gap:3px;font-size:11px;
  margin-top:8px;padding:2px 8px;border-radius:6px;font-weight:600;
}
.g{color:var(--green)}.r{color:var(--red)}
.g-bg{background:var(--green-bg);color:var(--green)}
.r-bg{background:var(--red-bg);color:var(--red)}

/* ═══════════════ 网格布局 ═══════════════ */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}
.grid-2-1{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.grid-3-1{display:grid;grid-template-columns:2fr 1fr;gap:20px}
.mb{margin-bottom:24px}

/* ═══════════════ 热力图 ═══════════════ */
.heatmap-grid{display:grid;grid-template-columns:40px repeat(7,1fr);gap:3px}
.heatmap-cell{
  aspect-ratio:1;border-radius:3px;display:flex;align-items:center;justify-content:center;
  font-size:9px;font-weight:600;color:rgba(255,255,255,.7);transition:transform .15s;cursor:default;
}
.heatmap-cell:hover{transform:scale(1.15);z-index:1}
.heatmap-cell.label{background:transparent!important;color:var(--text3);font-size:9px;font-weight:400}
.heatmap-labels{display:flex;justify-content:space-between;margin-bottom:6px;font-size:10px;color:var(--text3);padding:0 2px}
.heatmap-scale{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:10px;color:var(--text3)}
.heatmap-scale .bar{height:6px;flex:1;border-radius:3px;background:linear-gradient(90deg,var(--red),#2d3545,var(--green))}

/* ═══════════════ 进度条 ═══════════════ */
.metric-bar{
  display:flex;align-items:center;gap:10px;padding:8px 0;
  border-bottom:1px solid var(--border);
}
.metric-bar:last-child{border-bottom:none}
.metric-label{font-size:11px;color:var(--text2);min-width:80px}
.metric-track{flex:1;height:6px;background:var(--bg2);border-radius:3px;overflow:hidden}
.metric-fill{height:100%;border-radius:3px;transition:width .6s ease}
.metric-fill.fill-up{background:var(--green)}
.metric-fill.fill-down{background:var(--red)}
.metric-fill.fill-cyan{background:var(--cyan)}
.metric-fill.fill-muted{background:var(--text3)}
.metric-value{font-size:12px;font-weight:700;min-width:48px;text-align:right}

/* ═══════════════ 卡片 ═══════════════ */
.card{background:var(--card);border:1px solid var(--border2);border-radius:var(--r2);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,0.18);margin-bottom:6px}
.card-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid var(--border);
}
.card-head h3{font-size:13px;font-weight:600;display:flex;align-items:center;gap:7px;color:var(--text)}
.card-head .badge{font-size:10px;padding:3px 10px;border-radius:20px;font-weight:600}
.badge-cyan{background:var(--cyan-bg);color:var(--cyan)}
.badge-purple{background:var(--purple-bg);color:var(--purple)}
.card-body{padding:16px 18px}

/* ═══════════════ 准确率筛选按钮组 ═══════════════ */
.acc-filter-group{display:flex;gap:4px;align-items:center}
.acc-filter-btn{
  font-size:11px;font-weight:600;padding:3px 12px;border-radius:14px;
  border:1px solid var(--border);background:transparent;color:var(--text3);
  cursor:pointer;transition:all .15s ease;white-space:nowrap;
}
.acc-filter-btn:hover{border-color:var(--blue);color:var(--blue)}
.acc-filter-btn.active{
  background:var(--blue);color:#fff;border-color:var(--blue);
}

/* ═══════════════ 图表 ═══════════════ */
.chart-h{position:relative}
.chart-h canvas{width:100%}
.chart-h-160{height:140px;}
.chart-h-220{height:220px}
.chart-h-250{height:250px}
.chart-h-280{height:280px}

/* ═══════════════ 信号日志 ═══════════════ */
.signal-feed{max-height:400px;overflow-y:auto}
.signal-item{
  display:flex;align-items:flex-start;gap:10px;padding:10px 14px;
  border-bottom:1px solid var(--border);font-size:11.5px;transition:background .15s;
}
.signal-item:hover{background:var(--card-hover)}
.signal-dot{width:8px;height:8px;border-radius:50%;margin-top:4px;flex-shrink:0}
.signal-time{color:var(--text3);font-size:10.5px;white-space:nowrap;min-width:42px}
.signal-msg{line-height:1.5;color:var(--text2)}
.signal-msg strong{color:var(--text);font-weight:600}

/* 粒子背景 Canvas */
#particleCanvas{
  position:fixed;top:0;left:0;width:100%;height:100%;
  z-index:0;pointer-events:none;
}
.main-content{position:relative;z-index:1;padding-bottom:36px}

/* 无数据提示 */
.no-data{text-align:center;color:var(--text3);padding:40px 20px;font-size:13px}
.no-data-sm{font-size:13px;padding:18px 12px}
.analysis-feed-card-gap{margin-top:16px}
.analysis-static-title{display:flex;align-items:center;gap:8px;font-weight:800;color:var(--text)}
.analysis-static-list{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.analysis-static-item{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.55;color:var(--text2)}
.analysis-static-check{color:#22c55e;font-weight:900}
.home-feed-head{flex-wrap:wrap;gap:8px}
.home-feed-title{display:flex;align-items:center;gap:8px}
.home-feed-status{font-size:11.5px;height:32px;box-sizing:border-box}
.home-feed-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pos-lev-tag{font-size:10px;padding:0 3px;border:1px solid var(--border);border-radius:3px;color:var(--text3);margin-left:2px}
.equity-chart-hidden{display:none}
.equity-curve-empty{display:none;font-size:12px}
.analysis-static-box{border:1px solid var(--border);background:var(--bg2);border-radius:14px;padding:12px}
.analysis-dynamic-wrap{display:block;visibility:visible;min-height:80px;margin-bottom:24px}
.analysis-loading-text{text-align:center;color:var(--text3);padding:40px 20px;font-size:13px}

/* AI 每日一句 */
.daily-quote{
  text-align:center;padding:16px 32px;color:var(--text3);
  font-size:12px;font-style:italic;border-top:1px solid var(--border);
  background:var(--bg2);
}
.daily-quote .quote-text{
  display:inline-block;max-width:600px;
  animation:fadeIn 1s ease;
}
.hidden{display:none}
@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideDown{from{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%,0)}}


/* ═══════════════ API 配额监控 ═══════════════ */
.quota-summary{padding:12px 0}
.quota-main-stat{
  display:flex;align-items:center;gap:24px;margin-bottom:20px;
}
.quota-ring{
  position:relative;width:120px;height:120px;border-radius:50%;
  background:conic-gradient(var(--color) calc(var(--progress) * 1%), var(--border) 0);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
}
.quota-ring::before{
  content:'';position:absolute;inset:8px;border-radius:50%;background:var(--card);
}
.quota-ring-inner{
  position:relative;z-index:1;text-align:center;
}
.quota-percent{
  display:block;font-size:24px;font-weight:700;color:var(--color);
}
.quota-status{
  display:block;font-size:11px;color:var(--text2);margin-top:2px;
}
.quota-text-stats{flex:1;display:flex;flex-direction:column;gap:10px}
.quota-stat-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:8px 12px;background:var(--bg2);border-radius:8px;
}
.stat-label{font-size:12px;color:var(--text2)}
.stat-value{font-size:14px;font-weight:600;color:var(--text)}
.stat-value.text-down{color:var(--red)}

.quota-progress-bar{
  position:relative;margin-bottom:20px;
}
.progress-track{
  height:8px;background:var(--bg2);border-radius:4px;overflow:hidden;
}
.progress-fill{
  height:100%;border-radius:4px;transition:width .3s ease;
}
.progress-marks{
  position:relative;height:0;
}
.progress-marks .mark-warning,
.progress-marks .mark-critical{
  position:absolute;top:-18px;transform:translateX(-50%);font-size:10px;cursor:help;
}

.quota-strategy{
  background:var(--bg2);border-radius:10px;padding:14px;margin-bottom:16px;
  border-left:3px solid var(--yellow);
}
.strategy-title{
  display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;
  color:var(--text);margin-bottom:10px;
}
.strategy-list{
  list-style:none;padding:0;margin:0;
}
.strategy-list li{
  padding:6px 0;padding-left:16px;position:relative;font-size:12px;color:var(--text2);
}
.strategy-list li::before{
  content:'•';position:absolute;left:4px;color:var(--yellow);
}

.quota-breakdown{margin-bottom:16px}
.breakdown-title{
  font-size:12px;font-weight:600;color:var(--text);margin-bottom:10px;
}
.breakdown-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:10px;
}
.breakdown-item{
  background:var(--bg2);border-radius:8px;padding:10px;text-align:center;
}
.breakdown-label{display:block;font-size:11px;color:var(--text3);margin-bottom:4px}
.breakdown-value{display:block;font-size:16px;font-weight:700;color:var(--blue)}

.quota-cost-projection{
  background:var(--green-bg);border-radius:10px;padding:14px;
  border:1px solid rgba(0,214,143,.2);
}
.projection-title{
  font-size:13px;font-weight:600;color:var(--green);margin-bottom:12px;
}
.projection-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
}
.projection-item{text-align:center}
.projection-label{display:block;font-size:10px;color:var(--text3);margin-bottom:4px}
.projection-value{display:block;font-size:15px;font-weight:700;color:var(--green)}

/* ═══════════════ 成本监控 ═══════════════ */
.cost-dashboard{padding:12px 0}
.cost-stats-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;
}
.cost-stat-card{
  background:var(--bg2);border-radius:10px;padding:14px;display:flex;align-items:center;gap:10px;
  border:1px solid var(--border);
}
.cost-stat-card.good{border-color:var(--green)}
.cost-stat-card.warning{border-color:var(--yellow)}
.cost-stat-card.bad{border-color:var(--red)}
.stat-icon{font-size:20px}
.stat-content{flex:1}
.stat-content .stat-value{
  display:block;font-size:20px;font-weight:700;color:var(--text);
}
.stat-content .stat-label{
  display:block;font-size:11px;color:var(--text3);margin-top:2px;
}

.cost-details{display:flex;flex-direction:column;gap:16px}
.details-section{
  background:var(--bg2);border-radius:10px;padding:14px;
}
.section-title{
  font-size:12px;font-weight:600;color:var(--text);margin-bottom:12px;
  padding-bottom:8px;border-bottom:1px solid var(--border);
}
.model-stats-list{display:flex;flex-direction:column;gap:8px}
.model-stat-item{
  display:flex;align-items:center;gap:10px;padding:8px 10px;
  background:var(--card);border-radius:6px;font-size:12px;
}
.model-name{flex:1;font-weight:600;color:var(--text)}
.model-calls{color:var(--text2)}
.model-cost{color:var(--green);font-weight:600}
.model-tokens{color:var(--text3);font-size:11px}

.response-time-stats{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;
}
.rt-stat{text-align:center;padding:10px;background:var(--card);border-radius:6px}
.rt-label{display:block;font-size:10px;color:var(--text3);margin-bottom:4px}
.rt-value{display:block;font-size:16px;font-weight:700;color:var(--blue)}

.error-stats{padding:10px}
.error-main{
  display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;
}
.error-rate{font-size:16px;font-weight:700}
.error-rate.low{color:var(--green)}
.error-rate.medium{color:var(--yellow)}
.error-rate.high{color:var(--red)}
.error-count{font-size:13px;color:var(--text2)}
.error-types{display:flex;flex-wrap:wrap;gap:6px}
.error-type-tag{
  padding:4px 10px;border-radius:20px;font-size:11px;
  background:var(--card);color:var(--text2);
}
.error-type-tag.timeout{background:var(--yellow-bg);color:var(--yellow)}
.error-type-tag.rate_limit{background:var(--orange-bg);color:var(--orange)}
.error-type-tag.auth{background:var(--red-bg);color:var(--red)}

/* ═══════════════ 配额说明 ═══════════════ */
.quota-info-grid{
  display:grid;grid-template-columns:repeat(2,1fr);gap:16px;
}
.info-item{
  display:flex;align-items:flex-start;gap:12px;padding:14px;
  background:var(--bg2);border-radius:10px;
}
.info-icon{font-size:24px}
.info-content{flex:1}
.info-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:4px}
.info-desc{font-size:11px;color:var(--text2);line-height:1.5}

/* ═══════════════ 徽章样式扩展 ═══════════════ */
.badge-blue{background:var(--blue-bg);color:var(--blue)}
.badge-green{background:var(--green-bg);color:var(--green)}
.badge-yellow{background:rgba(245,158,11,0.15);color:#f59e0b}
.badge-gray{background:rgba(100,116,139,0.15);color:#94a3b8}
.badge-red{background:rgba(239,68,68,0.15);color:#ef4444}

/* ═══════════════ 键盘焦点可见性（全局） ═══════════════ */
.header-btn:focus-visible{
  outline:2px solid var(--blue);outline-offset:2px;border-radius:8px;
}
a:focus-visible{
  outline:2px solid var(--blue);outline-offset:2px;border-radius:4px;
}
.settings-btn{font-size:16px;padding:0 8px;text-decoration:none}
/* === 手机端性能优化 === */
@media (max-width: 768px) {
  /* 关闭所有 backdrop-filter */
  .sticky-top, .ticker-bar, .nav-tabs, .card, .stat-card,
  .ai-hero, .role-card, .header-btn, .status-pill,
  .trade-record, .pos-card, .engine-sym-row {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  /* 头部纯色不透明 */
  .sticky-top {
    background: var(--bg) !important;
  }
  /* 底部纯色不透明 */
  .ticker-bar {
    background: var(--bg) !important;
  }
  /* 关闭装饰性动画 */
  .account-hero-main::before,
  .account-hero-main::after {
    animation: none !important;
  }
  /* 滚动动画 GPU 合成 */
  .ticker-track, .signal-ticker-track {
    will-change: transform;
    contain: layout style;
  }
  /* 卡片隔离重绘 */
  .card {
    contain: content;
  }
}
