/* 智远汇管家 · 全局样式 (v5.0) — v5-theme.css 提供 .v5-* 组件, 本文件保留 v4 深色变量 */

*{margin:0;padding:0;box-sizing:border-box}
:root{
  /* ══ 背景色系 - 深色主题（v5.3 升级）══ */
  --bg:#0d1f35;--bg1:#1a2332;--bg2:#111827;--bg3:#273548;
  --sapphire:rgba(30,64,175,.25);--sapphire2:rgba(30,64,175,.35);--sapphire3:rgba(59,130,246,.3);
  --gold:#d4af37;--gold2:#f0d060;
  /* ══ 主题色 - 蓝色系 ══ */
  --blue:#c8a84e;--cyan:#38bdf8;--teal:#2dd4bf;
  /* ══ 涨跌语义变量（中国惯例：涨红跌绿）══ */
  --up:#ef4444;--dn:#22c55e;--down:#22c55e;
  --up-bg:rgba(239,68,68,.15);--dn-bg:rgba(34,197,94,.15);
  /* ══ 功能色 ══ */
  --green:#22c55e;--red:#ef4444;--amber:#f59e0b;--purple:#a78bfa;
  --accent:#c8a84e;
  /* ══ 文字颜色 - 确保对比度 >= 4.5 ══ */
  --text:#e0d8c0;--text1:#e2e8f0;--text2:#8a8270;--text3:#8a8270;
  --muted:#64748b;
  /* ══ 主题色（主色）══ */
  --primary:#c8a84e;
  /* ══ 卡片/表面 ══ */
  --card:#111827;--bg-card:#111827;--card-bg:#111827;
  /* ══ 边框 - 低对比度柔和设计 ══ */
  --border:#334155;--border2:#475569;
  /* ══ 布局尺寸 ══ */
  --sidebar-w:220px;--header-h:92px;
}

/* 新消息动画 */
@keyframes slideIn {
  from {
    transform: translateX(-20px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: scale(0.9);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.new-item {
  animation: slideIn 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.new-badge {
  display: inline-block;
  animation: fadeIn 0.5s ease-out;
}

html,body{height:100%;overflow-x:hidden;overflow-y:auto;background:var(--bg);color:var(--text);font-weight:500}
body{font-family:'Segoe UI','PingFang SC',Roboto,'Microsoft YaHei',sans-serif;
  background:var(--bg);color:var(--text);display:flex;flex-direction:column}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:rgba(59,130,246,.35);border-radius:4px}

/* ══ HEADER ══ */
.header{
  height:var(--header-h);background:rgba(15,23,42,.95);backdrop-filter:blur(16px);
  border-bottom:1px solid var(--border);
  box-shadow:0 1px 6px rgba(0,0,0,.3);
  display:flex;flex-direction:column;
  position:fixed;top:0;left:0;right:0;z-index:1000;
}
.header-top{
  display:flex;align-items:center;
  padding:0 18px;gap:14px;height:58px;flex-shrink:0;
}
.header-news-bar{
  height:34px;background:rgba(10,22,45,.9);
  border-top:1px solid rgba(59,130,246,.15);
  display:flex;align-items:center;overflow:hidden;
  padding:0 10px;gap:0;flex-shrink:0;
}
.news-bar-label{
  flex-shrink:0;font-size:.68rem;padding:2px 8px;
  background:rgba(212,175,55,.15);border:1px solid rgba(212,175,55,.4);
  border-radius:4px;color:var(--gold);font-weight:600;margin-right:10px;
  white-space:nowrap;letter-spacing:.5px;
}
.news-bar-track{
  flex:1;overflow:hidden;position:relative;height:100%;
}
.news-bar-inner{
  display:flex;align-items:center;gap:0;
  white-space:nowrap;will-change:transform;
  transition:transform 0.5s linear;
}
.news-item-tk{
  display:inline-flex;align-items:center;gap:6px;
  padding:0 20px 0 0;font-size:.74rem;color:var(--text2);cursor:pointer;
}
.news-item-tk:hover{color:var(--gold)}
.news-item-tk .ni-dot{
  width:4px;height:4px;border-radius:50%;
  background:var(--blue);flex-shrink:0;
}
.news-item-tk .ni-dot.high{background:var(--red)}
.news-item-tk .ni-sep{
  color:var(--border);font-size:.8rem;margin:0 6px 0 0;
}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0}
.logo-icon{width:46px;height:46px;border-radius:13px;
  background:linear-gradient(145deg,#0a1929,#0f2847);
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 20px rgba(212,175,55,.45),0 0 8px rgba(212,175,55,.2),0 4px 14px rgba(0,0,0,.6);
  flex-shrink:0;position:relative;overflow:visible}
/* 星光闪烁动画 */
@keyframes starPulse{0%,100%{opacity:1;filter:drop-shadow(0 0 4px #ffe080) drop-shadow(0 0 8px #d4af37)}
  50%{opacity:.75;filter:drop-shadow(0 0 2px #d4af37)}}
@keyframes starFloat{0%,100%{transform:scale(1) rotate(-2deg)}50%{transform:scale(1.06) rotate(2deg)}}
@keyframes twinkle1{0%,100%{opacity:.9;transform:scale(1)}40%{opacity:.25;transform:scale(.6)}}
@keyframes twinkle2{0%,100%{opacity:.6;transform:scale(1)}60%{opacity:1;transform:scale(1.3)}}
@keyframes twinkle3{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}
.logo-icon .star-main{animation:starPulse 2.6s ease-in-out infinite, starFloat 4s ease-in-out infinite}
.logo-icon .star-t1{animation:twinkle1 1.9s ease-in-out .5s infinite}
.logo-icon .star-t2{animation:twinkle2 2.3s ease-in-out 1s infinite}
.logo-icon .star-t3{animation:twinkle3 1.6s ease-in-out 1.5s infinite}
.logo-text{font-size:1.2rem;font-weight:800;
  background:linear-gradient(135deg,#c8a84e,#c8a84e);
  -webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:1.5px}
.logo-ver{font-size:.58rem;padding:2px 7px;border-radius:10px;
  background:rgba(212,175,55,.15);border:1px solid rgba(212,175,55,.4);color:var(--gold)}
.header-ticker{display:flex;gap:12px;flex:1;overflow:hidden;
  font-size:.79rem;color:var(--text2);align-items:center;padding:0 8px}
.tk-vdiv{width:1px;height:22px;background:var(--border);flex-shrink:0}
.tk-item{display:flex;align-items:center;gap:5px;white-space:nowrap;flex-shrink:0}
.tk-item .lbl{color:var(--text3);font-size:.72rem}
.tk-item .val{font-weight:800}
.tk-divider{width:1px;height:18px;background:var(--border);flex-shrink:0}
.up{color:var(--red)}.dn{color:var(--green)}.flat{color:var(--text2)}

/* 盯盘中心滚动行情条 */
#ticker-tape-bar{background:linear-gradient(90deg,var(--bg2),var(--bg1));border:1px solid var(--border)}
#ticker-tape-content{display:flex;align-items:center;will-change:transform}
.header-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.status-badge{display:flex;align-items:center;gap:5px;font-size:.76rem;
  padding:4px 10px;border-radius:20px;border:1px solid;cursor:default;transition:.3s}
.status-badge.live{border-color:rgba(34,197,94,.4);color:var(--green);background:rgba(34,197,94,.08)}
.status-badge.warn{border-color:rgba(245,158,11,.4);color:var(--amber);background:rgba(245,158,11,.08)}
.status-badge.err{border-color:rgba(239,68,68,.4);color:var(--red);background:rgba(239,68,68,.08)}
.pulse{width:7px;height:7px;border-radius:50%;background:currentColor;animation:blink 1.4s infinite}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.3}}
.hdr-btn{padding:5px 13px;border-radius:30px;border:1px solid var(--blue);
  background:transparent;color:var(--blue);font-size:.8rem;cursor:pointer;transition:.2s}
.hdr-btn:hover{background:rgba(59,130,246,.15)}
.hdr-btn.primary{background:linear-gradient(135deg,var(--sapphire),var(--sapphire3));
  color:var(--text);border-color:rgba(212,175,55,.5)}
.hdr-btn.primary:hover{filter:brightness(1.15)}
.hdr-time{font-size:.78rem;color:var(--text3);font-variant-numeric:tabular-nums}

/* ══ LAYOUT ══ */
.app-body{display:flex;margin-top:var(--header-h);height:calc(100vh - var(--header-h));overflow:hidden}
n/* Pages container - fill remaining space */
.pages{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;}

/* ══ SIDEBAR ══ */
.sidebar{
  width:var(--sidebar-w);background:rgba(15,23,42,.98);border-right:1px solid var(--border);
  display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;padding:10px 0 20px;
  box-shadow:2px 0 8px rgba(0,0,0,.2);
}
.sidebar-logo-sub{padding:8px 16px 12px;font-size:.68rem;color:var(--text3);
  border-bottom:1px solid var(--border);margin-bottom:6px;letter-spacing:.5px}
.sidebar-section{padding:8px 14px 3px;font-size:.65rem;color:var(--text3);
  text-transform:uppercase;letter-spacing:1px;font-weight:600}
.nav-item{
  display:flex;align-items:center;gap:10px;padding:9px 16px;
  cursor:pointer;transition:.18s;border-left:3px solid transparent;
  font-size:.84rem;color:var(--text2);white-space:nowrap;
  position:relative;
}
.nav-item:hover{background:rgba(59,130,246,.08);color:var(--text)}
.nav-item.active{
  background:linear-gradient(90deg,rgba(59,130,246,.12),transparent);
  color:var(--primary);border-left-color:var(--blue);
}
.nav-item .nav-icon{width:18px;text-align:center;font-size:.9rem;flex-shrink:0}
.nav-item .nav-badge{
  margin-left:auto;font-size:.6rem;padding:2px 6px;border-radius:10px;
  background:rgba(239,68,68,.2);border:1px solid rgba(239,68,68,.4);color:var(--red);
}
.nav-item .nav-badge.gold{background:rgba(212,175,55,.15);border-color:rgba(212,175,55,.4);color:var(--gold)}
.nav-item .nav-badge.green{background:rgba(34,197,94,.15);border-color:rgba(34,197,94,.4);color:var(--green)}
.sidebar-bottom{margin-top:auto;padding:12px 14px;border-top:1px solid var(--border)}
.sidebar-bottom .nav-item{padding:7px 2px}

/* ══ MAIN ══ */
.main{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;max-width:100%;position:relative}
.page{display:none;padding:18px}
.page.active{display:block;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;max-width:100%;position:relative;z-index:0}
.page.active>*{margin-bottom:16px}
.page.active>*:last-child{margin-bottom:0}
/* 交付中心合并页使用 flex 列布局 */
#page-daily.active {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: 0;
  position: relative;
  z-index: 1;
}
#page-daily.active > * { margin-bottom: 0; }

/* ══ CARDS ══ */
.card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:16px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.card.gold-border{border-color:var(--border2)}
.card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.card-title{font-size:.9rem;font-weight:600;color:var(--text2);
  display:flex;align-items:center;gap:8px}
.card-title i{color:var(--blue);font-size:.85rem}
.card-title .dot{width:6px;height:6px;border-radius:50%;background:var(--green);
  animation:blink 1.4s infinite;flex-shrink:0}
.card-tools{display:flex;gap:6px}
.btn-xs{padding:3px 10px;border-radius:6px;font-size:.72rem;border:1px solid var(--border);
  background:transparent;color:var(--text2);cursor:pointer;transition:.15s}
.btn-xs:hover{background:rgba(59,130,246,.12);border-color:var(--blue);color:var(--text)}
.btn-xs.active{background:var(--blue);border-color:var(--blue);color:var(--text)}
/* 时间周期按钮 */
.btn-tf{padding:2px 9px;border-radius:5px;font-size:.69rem;border:1px solid rgba(59,130,246,.25);
  background:transparent;color:var(--text3);cursor:pointer;transition:.15s;letter-spacing:.2px}
.btn-tf:hover{background:rgba(59,130,246,.1);border-color:rgba(59,130,246,.6);color:var(--text)}
.btn-tf.active-tf{background:rgba(212,175,55,.18);border-color:var(--gold);color:var(--gold);font-weight:700}

/* ══ GRIDS ══ */
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.grid-monitor-main{display:grid;grid-template-columns:1fr 320px;gap:14px}
.monitor-sidebar{display:flex;flex-direction:column}
.grid4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.grid5{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.grid5 .m-card{padding:10px 12px}
.grid5 .m-lbl{font-size:.68rem}
.grid5 .m-val{font-size:.95rem;font-weight:700}
.grid5 .m-sub{font-size:.6rem}
.grid-5c{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.span2{grid-column:span 2}
.span3{grid-column:span 3}

/* ══ METRIC CARDS ══ */
.m-card{
  background:var(--bg1);border:1px solid var(--border);border-radius:10px;
  padding:14px 16px;display:flex;flex-direction:column;gap:5px;transition:.2s;
  box-shadow:0 1px 3px rgba(0,0,0,.04);
}
.m-card:hover{border-color:rgba(59,130,246,.45);transform:translateY(-1px)}
.m-card .m-lbl{font-size:.72rem;color:var(--text3);letter-spacing:.3px}
.m-card .m-val{font-size:1.4rem;font-weight:700;font-variant-numeric:tabular-nums}
.m-card .m-sub{font-size:.72rem;display:flex;align-items:center;gap:4px}
.m-card .m-icon{font-size:1.1rem;margin-bottom:2px}
/* TradingView Widget 在卡片内撑满 */
.m-card .tradingview-widget-container{height:100%;min-height:100px}
.m-card .tradingview-widget-container__widget{height:100%!important;min-height:100px}
.m-card.blue{border-color:rgba(59,130,246,.3)}
.m-card.blue .m-val{color:var(--blue)}
.m-card.green{border-color:rgba(34,197,94,.3)}
.m-card.green .m-val{color:var(--green)}
.m-card.red{border-color:rgba(239,68,68,.3)}
.m-card.red .m-val{color:var(--red)}
.m-card.amber{border-color:rgba(245,158,11,.3)}
.m-card.amber .m-val{color:var(--amber)}
.m-card.gold{border-color:rgba(212,175,55,.3)}
.m-card.gold .m-val{color:var(--gold)}
.m-card.purple{border-color:rgba(168,85,247,.3)}
.m-card.purple .m-val{color:var(--purple)}
.m-card.teal{border-color:rgba(20,184,166,.3)}
.m-card.teal .m-val{color:var(--teal)}

/* ══ CHART CONTAINERS ══ */
.chart-box{width:100%;border-radius:8px;overflow:hidden}
.h160{height:160px}
.h180{height:180px}
.h200{height:200px}
.h220{height:220px}
.h240{height:240px}
.h260{height:260px}
.h280{height:280px}
.h300{height:300px}
.h340{height:340px}
.h380{height:380px}
.h420{height:420px}
.h480{height:480px}

/* CFTC 持仓摘要 */
.cftc-latest{border:1px solid #334;border-radius:8px;padding:12px 14px;margin-bottom:12px;background:rgba(30,42,58,.6)}
.cftc-latest-header{font-weight:700;color:#d4af37;font-size:.85rem;margin-bottom:4px}
.cftc-latest-date{font-size:.7rem;color:var(--text3);margin-bottom:10px}
.cftc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px}
.cftc-metric{background:rgba(0,0,0,.2);border-radius:6px;padding:8px 10px;text-align:center}
.cftc-label{font-size:.65rem;color:var(--text3);margin-bottom:3px}
.cftc-value{font-size:.9rem;font-weight:700;color:var(--text1);font-family:monospace}
.cftc-value.up{color:var(--green)}
.cftc-value.dn{color:var(--red)}
.cftc-value.cftc-src{font-size:.65rem;color:var(--text3);font-weight:400}

/* ══ TABLE ══ */
.data-table{width:100%;border-collapse:collapse;font-size:.8rem}
.data-table th{padding:8px 12px;background:var(--bg2);color:var(--text2);
  font-weight:600;text-align:left;border-bottom:1px solid var(--border);font-size:.73rem}
.data-table td{padding:8px 12px;border-bottom:1px solid rgba(59,130,246,.08);
  color:var(--text2)}
.data-table tr:hover td{background:rgba(59,130,246,.06)}
.data-table .sym{color:var(--text);font-weight:600}
.data-table .tag{display:inline-block;padding:1px 7px;border-radius:5px;font-size:.67rem}
.tag-up{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.tag-dn{background:rgba(34,197,94,.15);color:var(--green);border:1px solid rgba(34,197,94,.3)}
.tag-flat{background:rgba(148,163,184,.1);color:var(--text3);border:1px solid rgba(148,163,184,.2)}
.tag-low{background:rgba(34,197,94,.12);color:var(--green);border:1px solid rgba(34,197,94,.25);font-size:.67rem}
.tag-mid{background:rgba(245,158,11,.12);color:var(--amber);border:1px solid rgba(245,158,11,.25);font-size:.67rem}
.tag-high{background:rgba(239,68,68,.12);color:var(--red);border:1px solid rgba(239,68,68,.25);font-size:.67rem}
/* ── 资讯卡片 ── */
#news-list .card{transition:.18s;cursor:default}
#news-list .card:hover{border-color:rgba(59,130,246,.35);background:rgba(15,40,75,.95)}


/* ══ LEDGER FORM ══ */
.fld-lbl{font-size:.72rem;color:var(--text3);margin-bottom:4px}
.fld-input{
  background:var(--bg1);border:1px solid var(--border);border-radius:7px;
  color:var(--text);padding:5px 9px;font-size:.8rem;outline:none;transition:.18s
}
.fld-input:focus{border-color:var(--blue);box-shadow:0 0 0 2px rgba(59,130,246,.18)}
.fld-input option{background:var(--bg-card)}
select.fld-input{cursor:pointer}
.btn-primary{
  background:linear-gradient(135deg,var(--sapphire),var(--sapphire3));
  border:1px solid rgba(212,175,55,.4);color:var(--text);border-radius:9px;
  cursor:pointer;font-weight:600;transition:.2s;letter-spacing:.5px
}
.btn-primary:hover{filter:brightness(1.15);box-shadow:0 4px 14px rgba(59,130,246,.3)}
/* 风险按钮颜色 */
.r1-btn.active{background:rgba(34,197,94,.25)!important;border-color:rgba(34,197,94,.6)!important;color:var(--green)!important}
.r2-btn.active{background:rgba(245,158,11,.25)!important;border-color:rgba(245,158,11,.6)!important;color:var(--amber)!important}
.r3-btn.active{background:rgba(239,68,68,.25)!important;border-color:rgba(239,68,68,.6)!important;color:var(--red)!important}
/* 台账行风险底色 */
.ldg-row-r1{border-left:3px solid var(--green)!important}
.ldg-row-r2{border-left:3px solid var(--amber)!important}
.ldg-row-r3{border-left:3px solid var(--red)!important;background:rgba(239,68,68,.04)!important}
/* 组合期权腿卡片 */
.combo-leg{
  background:rgba(168,85,247,.07);border:1px solid rgba(168,85,247,.25);
  border-radius:8px;padding:8px 10px;margin-bottom:7px;position:relative
}
.combo-leg .leg-lbl{font-size:.68rem;color:var(--purple);font-weight:600;margin-bottom:6px}
.combo-leg .del-leg{position:absolute;top:6px;right:8px;background:none;border:none;
  color:var(--red);cursor:pointer;font-size:.8rem;opacity:.6}
.combo-leg .del-leg:hover{opacity:1}

/* ══ PROGRESS BARS ══ */
.progress-wrap{width:100%}
.progress-hd{display:flex;justify-content:space-between;font-size:.74rem;
  color:var(--text3);margin-bottom:4px}
.progress-bar{height:6px;background:rgba(255,255,255,.06);border-radius:3px;overflow:hidden}
.progress-fill{height:100%;border-radius:3px;transition:width .6s}
.fill-blue{background:linear-gradient(90deg,var(--blue),var(--cyan))}
.fill-green{background:linear-gradient(90deg,var(--green),#34d399)}
.fill-red{background:linear-gradient(90deg,var(--red),#f87171)}
.fill-amber{background:linear-gradient(90deg,var(--amber),#fbbf24)}
.fill-purple{background:linear-gradient(90deg,var(--purple),#c084fc)}
.fill-gold{background:linear-gradient(90deg,var(--gold),var(--gold2))}

/* ══ ALERTS ══ */
.alert-list{display:flex;flex-direction:column;gap:6px}
.alert-item{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;
  border-radius:8px;font-size:.8rem;border:1px solid}
.alert-item.high{background:rgba(239,68,68,.12);border-color:rgba(239,68,68,.3);color:#fca5a5}
.alert-item.mid{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.3);color:#fcd34d}
.alert-item.low{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.3);color:#86efac}
.alert-item.info{background:rgba(59,130,246,.12);border-color:rgba(59,130,246,.3);color:#93c5fd}
.alert-time{font-size:.68rem;color:var(--text3);margin-left:auto;white-space:nowrap;padding-top:1px}

/* ══ HEAT TABLE ══ */
.heat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.heat-cell{padding:7px 6px;border-radius:6px;text-align:center;font-size:.72rem;
  font-weight:600;cursor:pointer;transition:.2s}
.heat-cell:hover{transform:scale(1.06)}
.heat-vp{font-size:.65rem;font-weight:400;opacity:.8}

/* ══ TABS ══ */
.tab-bar{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:14px}
.tab{padding:7px 16px;font-size:.8rem;color:var(--text3);cursor:pointer;
  border-bottom:2px solid transparent;transition:.15s}
.tab:hover{color:var(--text2)}
.tab.active{color:var(--blue);border-bottom-color:var(--blue)}

/* ══ 交付中心顶层 Tab ══ */
.daily-top-tabs {
  display: flex;
  gap: 0;
  border-bottom: 2px solid var(--border);
  background: var(--bg2);
  padding: 0 12px;
  flex-shrink: 0;
}
.daily-top-tab {
  padding: 10px 20px;
  font-size: .85rem;
  font-weight: 600;
  color: var(--text3);
  cursor: pointer;
  border-bottom: 3px solid transparent;
  transition: all .2s ease;
  display: flex;
  align-items: center;
  gap: 7px;
  position: relative;
}
.daily-top-tab:hover {
  color: var(--text2);
  background: rgba(59,130,246,.04);
}
.daily-top-tab.active {
  color: var(--primary-light, #c8a84e);
  border-bottom-color: var(--primary-light, #c8a84e);
  background: rgba(59,130,246,.06);
}
.daily-top-badge {
  font-size: .62rem;
  padding: 2px 7px;
  border-radius: 8px;
  background: linear-gradient(135deg, #10b981, #059669);
  color: #fff;
  font-weight: 700;
  letter-spacing: .02em;
}
.daily-top-panel {
  display: none !important;
  flex: 1 1 0%;
  min-height: 0;
  overflow: hidden;
}
.daily-top-panel.active {
  display: flex !important;
  flex-direction: column;
  overflow: hidden;
}

/* ══ RISK GAUGE ══ */
.gauge-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}
.gauge-val{font-size:2rem;font-weight:700}
.gauge-lbl{font-size:.75rem;color:var(--text3)}

/* ══ STRATEGY CARD ══ */
.strat-card{
  border:1px solid var(--border);border-radius:10px;padding:14px;
  background:var(--card-bg);cursor:pointer;transition:.2s;
}
.strat-card:hover{border-color:rgba(212,175,55,.4);background:var(--bg2)}
.strat-card.selected{border-color:var(--gold);background:rgba(212,175,55,.07)}
.strat-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:8px}
.strat-name{font-size:.88rem;font-weight:600;color:var(--text)}
.strat-tag{font-size:.62rem;padding:2px 8px;border-radius:10px;font-weight:600}
.strat-tag.low{background:rgba(34,197,94,.15);color:var(--green);border:1px solid rgba(34,197,94,.3)}
.strat-tag.mid{background:rgba(245,158,11,.15);color:var(--amber);border:1px solid rgba(245,158,11,.3)}
.strat-tag.high{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.strat-desc{font-size:.76rem;color:var(--text3);line-height:1.5;margin-bottom:10px}
.strat-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.strat-m{text-align:center}
.strat-m .sm-v{font-size:.92rem;font-weight:700}
.strat-m .sm-l{font-size:.65rem;color:var(--text3)}

/* ══ ARBITRAGE ══ */
.arb-card{
  border:1px solid var(--border);border-radius:10px;padding:14px;
  background:var(--card-bg);transition:.2s;
}
.arb-card.active-arb{border-color:rgba(212,175,55,.5);background:rgba(212,175,55,.06)}
.arb-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.arb-path{font-size:.85rem;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}
.arb-path i{color:var(--gold);font-size:.8rem}
.arb-profit{font-size:1.1rem;font-weight:700}
.arb-steps{display:flex;flex-direction:column;gap:4px}
.arb-step{display:flex;justify-content:space-between;align-items:center;
  font-size:.76rem;color:var(--text3);padding:3px 0;
  border-bottom:1px solid rgba(59,130,246,.06)}
.arb-step .step-val{color:var(--text2);font-weight:500}
.arb-tags{display:flex;gap:5px;margin-top:8px;flex-wrap:wrap}

/* ══ POLICY CARD ══ */
.policy-card{border-left:3px solid var(--blue);padding:10px 14px;
  background:rgba(59,130,246,.06);border-radius:0 8px 8px 0;margin-bottom:8px}
.policy-bank{font-size:.78rem;color:var(--blue);font-weight:600;margin-bottom:3px}
.policy-text{font-size:.8rem;color:var(--text2);line-height:1.55}
.policy-tone{display:inline-flex;align-items:center;gap:5px;font-size:.7rem;
  padding:2px 9px;border-radius:10px;margin-top:6px;font-weight:600}
.tone-hawk{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.tone-dove{background:rgba(34,197,94,.15);color:var(--green);border:1px solid rgba(34,197,94,.3)}
.tone-neutral{background:rgba(148,163,184,.1);color:var(--text3);border:1px solid rgba(148,163,184,.2)}

/* ══ CHAT BOX ══ */
.chat-box{display:flex;flex-direction:column;gap:8px;min-height:120px;max-height:220px;
  overflow-y:auto;padding:4px}
.msg{padding:9px 13px;border-radius:10px;font-size:.82rem;line-height:1.55;max-width:88%}
.msg.ai{background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.2);
  color:var(--text2);align-self:flex-start}
.msg.user{background:var(--bg2);border:1px solid var(--border2);
  color:var(--text);align-self:flex-end}
.chat-input-row{display:flex;gap:8px;margin-top:8px}
.chat-input{flex:1;padding:8px 14px;background:var(--bg1);
  border:1px solid var(--border);border-radius:8px;color:var(--text);
  font-size:.82rem;outline:none}
.chat-input:focus{border-color:var(--blue)}
.chat-send{padding:8px 18px;background:linear-gradient(135deg,var(--sapphire),var(--sapphire3));
  border:1px solid rgba(212,175,55,.4);border-radius:8px;color:var(--text);
  font-size:.82rem;cursor:pointer;transition:.2s;white-space:nowrap}
.chat-send:hover{filter:brightness(1.15)}

/* ══ MISC ══ */
.divider{height:1px;background:var(--border);margin:12px 0}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:.67rem;font-weight:600}
.badge-live{background:rgba(34,197,94,.15);color:var(--green);border:1px solid rgba(34,197,94,.3)}
.badge-warn{background:rgba(245,158,11,.15);color:var(--amber);border:1px solid rgba(245,158,11,.3)}
.badge-err{background:rgba(239,68,68,.15);color:var(--red);border:1px solid rgba(239,68,68,.3)}
.badge-alert{background:rgba(59,130,246,.15);color:var(--blue);border:1px solid rgba(59,130,246,.3)}
/* 均线单元格样式 */
.ma-container{display:flex;gap:12px;align-items:flex-start;font-size:.68rem;font-family:'SF Mono',Monaco,'Courier New',monospace;line-height:1.2}
.ma-section{display:flex;flex-direction:column;gap:1px}
.ma-type{color:var(--primary);font-weight:700;font-size:.65rem;margin-bottom:2px}
.ma-row{display:flex;gap:4px}
.ma-label{color:var(--text3);font-size:.62rem;min-width:25px}
.ma-divider{width:1px;background:var(--border);min-height:85px}
.text-muted{color:var(--text3);font-size:.78rem}
.text-sm{font-size:.8rem}
.flex-between{display:flex;justify-content:space-between;align-items:center}
.flex-center{display:flex;justify-content:center;align-items:center}
.gap-8{gap:8px}
.fw700{font-weight:700}
.skeleton{background:linear-gradient(90deg,rgba(255,255,255,.04) 25%,rgba(255,255,255,.09) 50%,rgba(255,255,255,.04) 75%);
  background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:4px}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.number-box{font-variant-numeric:tabular-nums}
/* 3D canvas */
#globe-canvas{width:100%;height:100%;display:block}
/* VaR bar */
.var-seg{height:100%;border-radius:3px;transition:width .6s}
/* Heatmap colors — 红涨绿跌（中国惯例） */
.hc-sp{background:rgba(239,68,68,.75);color:#fff}    /* 强涨-红 */
.hc-p{background:rgba(239,68,68,.45);color:#fff}   /* 小涨-深红 */
.hc-n{background:rgba(34,197,94,.45);color:#fff}   /* 小跌-深绿 */
.hc-sn{background:rgba(34,197,94,.75);color:#fff}     /* 强跌-绿 */
.hc-0{background:rgba(148,163,184,.1);color:var(--text3)}
/* Loading overlay */
.loading-overlay{position:absolute;inset:0;background:var(--card-bg);
  display:flex;align-items:center;justify-content:center;border-radius:12px;z-index:10}
.spinner{width:30px;height:30px;border:3px solid rgba(59,130,246,.2);
  border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ── 震荡指标卡片展开/收起 ── */
.osc-toggle-btn{
  background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.25);
  color:var(--text3);border-radius:5px;padding:2px 6px;cursor:pointer;font-size:.7rem;
  display:flex;align-items:center;transition:all .2s ease;line-height:1;min-width:24px;justify-content:center
}
.osc-toggle-btn:hover{background:rgba(59,130,246,.25);color:var(--blue);border-color:rgba(59,130,246,.5)}
.osc-toggle-btn i{transition:transform .25s ease}

/* 父级 osc-card 容器动画 */
.osc-card{
  transition:box-shadow .18s ease, border-color .18s ease;
  overflow:hidden;
  position:relative;
}
/* 全屏展开覆盖层 */
.osc-card.osc-expanded{
  position:fixed !important;
  top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;
  z-index:9000 !important;
  height:100vh !important;
  overflow:hidden !important;
  box-shadow:0 8px 40px rgba(0,0,0,.5) !important;
  border-color:var(--blue) !important;
  border-radius:0 !important;
  background:var(--bg) !important;
  margin:0 !important;
  display:flex !important;
  flex-direction:column !important;
  padding:0 !important;
}
.osc-card.osc-expanded .card-hd{
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:16px 24px;
  border-bottom:1px solid var(--border);
  margin-bottom:0;
  background:var(--bg2)
}
.osc-card.osc-expanded .card-title{
  font-size:1.1rem !important;
  font-weight:700 !important
}
/* 展开后高度由 JS setProperty('important') 控制，CSS 不设 height，避免 flex:auto 覆盖 */
.osc-card.osc-expanded .chart-box{
  flex:none !important;
  min-height:300px !important;
  min-width:0 !important;
  width:100% !important;
  padding:0 !important;
  overflow:hidden !important;
  position:relative !important
}
/* 收起时只显示标题行 */
.osc-card.osc-collapsed{
  padding-top:8px;padding-bottom:8px;
  overflow:hidden
}
/* chart-box 直接设置高度，不做过渡（避免 transition 和 resize 时序冲突） */
.osc-card .chart-box{
  overflow:hidden;
}
.osc-card.osc-collapsed .chart-box{
  height:0 !important;
  max-height:0 !important;
}
/* 按钮图标旋转方向 */
.osc-card.osc-collapsed .osc-toggle-btn i{transform:rotate(180deg)}
.osc-card.osc-expanded .osc-toggle-btn i{transform:rotate(0deg)}

/* ── 子卡片展开/收起 ── */
.osc-sub-card{
  overflow:hidden;
  transition:box-shadow .25s ease, border-color .25s ease;
  cursor:default;
}
.osc-sub-card .sub-card-inner{
  overflow:hidden;
  transition:height .25s ease, max-height .25s ease;
}
.osc-sub-card.osc-collapsed .sub-card-inner{
  height:0 !important;
  max-height:0 !important;
}
/* 子卡片展开：固定定位全屏，z-index 必须高于大卡片(9000) */
.osc-sub-card.osc-expanded{
  position:fixed !important;
  top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;
  z-index:9500 !important;
  height:100vh !important;
  overflow:hidden !important;
  box-shadow:0 8px 40px rgba(0,0,0,.5) !important;
  border-color:var(--blue) !important;
  background:var(--bg) !important;
  border-radius:0 !important;
  display:flex !important;
  flex-direction:column !important;
  padding:0 !important;
}
/* 展开后所有直接子元素除了 sub-card-inner 都 flex-shrink:0 */
.osc-sub-card.osc-expanded > :not(.sub-card-inner){
  flex-shrink:0 !important;
}
/* 标题栏展开样式（同时兼容 .card-hd 和 .sub-card-hd） */
.osc-sub-card.osc-expanded .card-hd,
.osc-sub-card.osc-expanded .sub-card-hd{
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:14px 24px;
  border-bottom:1px solid var(--border);
  margin-bottom:0;
  background:var(--bg2)
}
/* 兼容 inline style 标题栏（无 class 的 flex div） */
.osc-sub-card.osc-expanded > div:first-child:not(.sub-card-inner):not(.chart-box){
  flex-shrink:0;
  padding:14px 24px;
  border-bottom:1px solid var(--border);
  margin-bottom:0;
  background:var(--bg2)
}
.osc-sub-card.osc-expanded .card-title,
.osc-sub-card.osc-expanded .sub-card-title{
  font-size:1.05rem !important;
  font-weight:700 !important
}
/* 展开后 sub-card-inner 高度由 flex 自动分配（让 JS 控制内部 chart-box 尺寸） */
.osc-sub-card.osc-expanded .sub-card-inner{
  flex:1 1 auto !important;
  min-height:0 !important;
  min-width:0 !important;
  width:100% !important;
  padding:12px !important;
  overflow-y:auto !important;
  overflow-x:hidden !important
}
/* ── 纯 HTML 面板展开时内容放大（贝叶斯/安全约束/极端验证） ── */
.osc-sub-card.osc-expanded.html-panel .sub-card-inner{
  display:flex;
  justify-content:center;
  align-items:flex-start;
  padding:32px !important;
  overflow-y:auto !important
}
.osc-sub-card.osc-expanded.html-panel .sub-card-inner > *{
  zoom:1.5
}
.osc-sub-card.osc-expanded .chart-box{
  flex:none !important;
  min-height:300px !important;
  width:100% !important;
  padding:0 !important;
  overflow:hidden !important
}
.osc-sub-card .sub-toggle-btn{
  background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.2);
  color:var(--text3);border-radius:4px;padding:3px 8px;cursor:pointer;font-size:.75rem;
  display:inline-flex;align-items:center;gap:3px;
  transition:all .15s ease;margin-left:auto
}
.osc-sub-card .sub-toggle-btn:hover{background:rgba(59,130,246,.2);color:var(--blue)}
.osc-sub-card .sub-toggle-btn i{transition:transform .2s ease}
.osc-sub-card.osc-collapsed .sub-toggle-btn i{transform:rotate(180deg)}
.osc-sub-card.osc-expanded .sub-toggle-btn i{transform:rotate(0deg)}

/* ── TradingView 全屏 ── */
#tv-fullscreen-overlay{display:none !important;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.4);flex-direction:column}
#tv-fullscreen-overlay.active{display:flex !important}
#tv-fullscreen-container{width:100%;height:100%;overflow:hidden}
#tv-fullscreen-container iframe{width:100%;height:100%;border:none;display:block}

/* ══════════════════════════════════════════════════════════════
   响应式适配（平板 + 手机）
   ══════════════════════════════════════════════════════════════ */

/* ── 汉堡按钮（仅移动端显示） ── */
.sidebar-toggle{display:none;position:fixed;top:56px;left:8px;z-index:1001;
  width:36px;height:36px;border-radius:8px;border:1px solid var(--border);
  background:var(--bg2);color:var(--text);font-size:1rem;cursor:pointer;
  align-items:center;justify-content:center;transition:.2s}
.sidebar-toggle:hover{background:rgba(59,130,246,.2);border-color:var(--blue)}

/* ── 平板（<=1024px） ── */
@media(max-width:1024px){
  :root{--sidebar-w:64px}
  .sidebar .nav-item span:not(.nav-badge),
  .sidebar .sidebar-logo-sub,
  .sidebar .sidebar-section{display:none}
  .sidebar .nav-item{justify-content:center;padding:10px 0}
  .sidebar .nav-item .nav-icon{width:20px;font-size:1rem}
  .sidebar .nav-item .nav-badge{position:absolute;top:2px;right:2px;padding:1px 4px;font-size:.55rem}
  .grid3{grid-template-columns:1fr 1fr}
  .grid4{grid-template-columns:1fr 1fr}
  .grid5,.grid-5c{grid-template-columns:1fr 1fr 1fr}
  .grid-monitor-main{grid-template-columns:1fr}
  .dc-panel-v2{width:360px}
  .header-ticker{gap:6px;font-size:.72rem}
}

/* ── 手机（<=768px） ── */
@media(max-width:768px){
  :root{--header-h:56px;--font-scale:0.82}
  html,body{overflow-x:hidden;overflow-y:auto;height:auto;min-height:100%}
  html{font-size:calc(16px * var(--font-scale))}
  .app-body{height:auto;min-height:calc(100vh - var(--header-h));overflow:visible}
  .header-top{height:36px;padding:0 8px;gap:6px}
  .header-news-bar{height:16px;padding:0 6px}
  .news-bar-label{font-size:.52rem;padding:0 4px;margin-right:4px}
  .news-item-tk{font-size:.56rem;padding:0 10px 0 0}
  .logo-icon{width:26px;height:26px;border-radius:7px}
  .logo-text{font-size:.78rem;letter-spacing:.3px}
  .logo-ver{font-size:.42rem;padding:0 3px}
  .hdr-btn{padding:2px 6px;font-size:.6rem}
  .hdr-time{font-size:.56rem}
  .sidebar-toggle{display:flex;top:58px;left:6px;width:40px;height:40px;font-size:1.15rem;z-index:1002;border-radius:10px;border-width:1.5px}
  .sidebar{position:fixed;top:0;left:0;bottom:0;z-index:1001;
    width:240px;transform:translateX(-100%);transition:transform .25s ease;
    flex:none;width:0;overflow:hidden}
  .sidebar.open{transform:translateX(0);width:240px;overflow-y:auto}
  .sidebar .nav-item span:not(.nav-badge),
  .sidebar .sidebar-logo-sub,
  .sidebar .sidebar-section{display:block}
  .sidebar .nav-item{justify-content:flex-start;padding:8px 14px}
  .sidebar .nav-item .nav-icon{width:16px;font-size:.85rem}
  .sidebar .nav-item .nav-badge{position:static;margin-left:auto}
  /* 遮罩层 */
  .sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.15);z-index:1000}
  .sidebar-overlay.active{display:block}
  .grid2,.grid3,.grid4{grid-template-columns:1fr}
  .grid5,.grid-5c{grid-template-columns:1fr 1fr}
  .grid-monitor-main{grid-template-columns:1fr}
  .page{padding:6px}
  .page.active>*{margin-bottom:6px}
  .header-ticker{display:none}
  .card{padding:8px}
  .card-tools{flex-wrap:wrap;gap:3px}
  .card-title{font-size:.82rem}
  .card-subtitle{font-size:.62rem}
  .page-title{font-size:.95rem}
  .page-subtitle{font-size:.6rem}
  .btn-xs{font-size:.6rem;padding:2px 6px}
  .btn-tf{font-size:.56rem;padding:1px 5px}
  .btn{font-size:.72rem;padding:3px 8px}
  .m-val{font-size:1rem}
  .m-lbl{font-size:.58rem}
  .m-sub{font-size:.52rem}
  /* 数据表格横向滚动 */
  .data-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;font-size:.62rem}
  .data-table th,.data-table td{padding:3px 5px}
  /* 修复 min-width 溢出 */
  [style*="min-width"]{min-width:0 !important}
  .osc-card .card-hd{flex-wrap:wrap;gap:4px}
  .strat-metrics{grid-template-columns:1fr 1fr}
  .heat-grid{grid-template-columns:repeat(3,1fr);font-size:.82rem}
  /* K 线高度压缩 */
  #tv-chart-monitor{min-height:280px !important}
  #tv-chart-tech{min-height:300px !important}
}

/* ── 超小屏（<=480px）iPhone SE / 小屏手机 ── */
@media(max-width:480px){
  :root{--header-h:48px;--sidebar-w:0px;--font-scale:0.75}
  html{font-size:calc(16px * var(--font-scale))}
  .header-top{height:32px;padding:0 5px;gap:3px}
  .header-news-bar{height:14px}
  .news-bar-label{font-size:.45rem;padding:0 2px;margin-right:2px}
  .news-item-tk{font-size:.5rem}
  .logo-icon{width:22px;height:22px;border-radius:6px}
  .logo-text{font-size:.68rem}
  .logo-ver{display:none}
  .hdr-btn{padding:2px 5px;font-size:.55rem}
  .hdr-time{font-size:.5rem}
  .sidebar-toggle{top:50px;left:4px;width:38px;height:38px;font-size:1.1rem;border-radius:9px;border-width:1.5px}
  .sidebar.open{width:200px}
  .page{padding:4px}
  .card{padding:6px;border-radius:6px}
  .card-title{font-size:.76rem}
  .card-subtitle{font-size:.56rem}
  .page-title{font-size:.88rem}
  .page-subtitle{font-size:.52rem}
  .btn-xs{font-size:.52rem;padding:1px 4px}
  .btn-tf{font-size:.5rem;padding:1px 3px}
  .btn{font-size:.65rem;padding:3px 7px}
  .m-val{font-size:.88rem}
  .m-lbl{font-size:.5rem}
  .m-sub{font-size:.45rem}
  .data-table{font-size:.56rem}
  .data-table th,.data-table td{padding:2px 4px}
  .grid5,.grid-5c{grid-template-columns:1fr}
  .strat-metrics{grid-template-columns:1fr}
  .heat-grid{grid-template-columns:repeat(2,1fr);font-size:.78rem}
  /* K 线容器高度缩小 */
  #tv-chart-monitor{min-height:260px !important}
  /* 表单输入 */
  .form-input,.form-select{font-size:.75rem;padding:5px 8px}
  /* 底部导航栏占位 */
  .main{padding-bottom:56px}
}

/* ══════════════════════════════════════════════════════════════
   仪表盘自定义模块样式
   ══════════════════════════════════════════════════════════════ */

/* 拖拽中 */
.osc-card.dragging, .m-card.dragging {
  opacity: .4;
  transform: scale(.97);
  transition: opacity .15s, transform .15s;
}
.osc-card[draggable="true"] .card-hd,
.m-card[draggable="true"] > div:first-child {
  cursor: grab;
}

/* 设置面板 */
#dc-settings-panel {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 1000;
}
#dc-settings-panel.active {
  display: block;
}
.dc-panel-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.55);
}
.dc-panel {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 380px;
  max-width: 90vw;
  max-height: 70vh;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: 0 20px 60px rgba(0,0,0,.5);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.dc-panel-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
  color: var(--text1);
}
.dc-panel-body {
  padding: 14px 18px;
  overflow-y: auto;
  flex: 1;
}
.dc-panel-ft {
  padding: 10px 18px 14px;
  border-top: 1px solid var(--border);
}

/* 模块列表 */
.dc-module-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.dc-module-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,.03);
  border: 1px solid transparent;
  cursor: grab;
  transition: background .15s, border-color .15s;
}
.dc-module-item:hover {
  background: rgba(255,255,255,.06);
  border-color: var(--border);
}
.dc-module-item.dc-dragging {
  opacity: .4;
  border-color: var(--blue);
}
.dc-grip {
  color: var(--text3);
  font-size: .75rem;
  cursor: grab;
  flex-shrink: 0;
}
.dc-check {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .78rem;
  color: var(--text2);
  cursor: pointer;
  flex: 1;
}
.dc-check input[type="checkbox"] {
  width: 15px;
  height: 15px;
  accent-color: var(--blue);
  cursor: pointer;
  flex-shrink: 0;
}

/* 设置浮动按钮 */
#dc-settings-global-btn {
  position: fixed;
  bottom: 20px;
  right: 20px;
  z-index: 150;
  width: 40px;
  height: 40px;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--bg2);
  color: var(--text2);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .9rem;
  box-shadow: 0 4px 12px rgba(0,0,0,.4);
  transition: transform .2s, border-color .2s, color .2s;
}
#dc-settings-global-btn:hover {
  transform: scale(1.08);
  border-color: var(--blue);
  color: var(--blue);
}

/* 移动端设置按钮偏移 */
  #dc-settings-global-btn {
    bottom: 16px;
    right: 12px;
    width: 36px;
    height: 36px;
    font-size: .8rem;
  }
}

/* ═══ v2.0 增强：页面标签 ═══ */
.dc-panel-v2 {
  width: 440px;
  max-height: 78vh;
}
.dc-tabs {
  display: flex;
  gap: 0;
  padding: 0 18px;
  overflow-x: auto;
  border-bottom: 1px solid var(--border);
  scrollbar-width: none;
}
.dc-tabs::-webkit-scrollbar { display: none; }
.dc-tab {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 9px 12px;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  color: var(--text3);
  cursor: pointer;
  font-size: .72rem;
  font-weight: 500;
  white-space: nowrap;
  transition: color .15s, border-color .15s;
}
.dc-tab:hover {
  color: var(--text2);
}
.dc-tab.active {
  color: var(--gold);
  border-bottom-color: var(--gold);
}
.dc-tab-count {
  font-size: .6rem;
  padding: 1px 5px;
  border-radius: 8px;
  background: rgba(255,255,255,.06);
  color: var(--text3);
}
.dc-tab.active .dc-tab-count {
  background: rgba(212,175,55,.15);
  color: var(--gold);
}

/* ═══ v2.0 增强：统计栏 ═══ */
.dc-stats {
  display: flex;
  gap: 12px;
  margin-bottom: 12px;
  padding: 8px 12px;
  background: rgba(255,255,255,.02);
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,.04);
}
.dc-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1;
}
.dc-stat-num {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--text1);
}
.dc-stat-label {
  font-size: .65rem;
  color: var(--text3);
  margin-top: 2px;
}
.dc-stat-on .dc-stat-num { color: var(--green); }
.dc-stat-off .dc-stat-num { color: var(--text3); }

/* ═══ v2.0 增强：快捷按钮 ═══ */
.dc-quick-btn {
  background: rgba(255,255,255,.04);
  border: 1px solid var(--border);
  color: var(--text3);
  padding: 2px 8px;
  border-radius: 5px;
  font-size: .65rem;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.dc-quick-btn:hover {
  background: rgba(255,255,255,.08);
  color: var(--text2);
}
.dc-quick-btn-danger:hover {
  background: rgba(239,68,68,.1);
  border-color: rgba(239,68,68,.3);
  color: #ef4444;
}

/* ═══ v2.0 增强：卡片类型标签 ═══ */
.dc-type-tag {
  font-size: .55rem;
  padding: 1px 5px;
  border-radius: 4px;
  flex-shrink: 0;
  font-weight: 600;
}
.dc-type-tag.key {
  background: rgba(212,175,55,.12);
  color: var(--gold);
  border: 1px solid rgba(212,175,55,.25);
}
.dc-type-tag.osc {
  background: rgba(59,130,246,.1);
  color: var(--blue);
  border: 1px solid rgba(59,130,246,.25);
}
.dc-type-tag.metric {
  background: rgba(168,85,247,.1);
  color: var(--purple);
  border: 1px solid rgba(168,85,247,.25);
}

/* ═══ v2.0 增强：移动端适配 ═══ */
  .dc-panel-v2 {
    width: 92vw;
    max-height: 85vh;
  }
  .dc-tabs {
    padding: 0 12px;
  }
  .dc-tab {
    padding: 7px 8px;
    font-size: .68rem;
  }
}

/* ══════════════════════════════════════════════════════════════
   套利回测引擎样式 (AR-103)
   ══════════════════════════════════════════════════════════════ */
.bt-stat-card {
  background: rgba(255,255,255,.03);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 8px 10px;
  text-align: center;
}
.bt-stat-label {
  font-size: .65rem;
  color: var(--text3);
  margin-bottom: 4px;
}
.bt-stat-value {
  font-size: .95rem;
  font-weight: 600;
  color: var(--text1);
  font-variant-numeric: tabular-nums;
}

/* ══════════════════════════════════════════════════════════════
   政策跟踪模块样式
   ══════════════════════════════════════════════════════════════ */
.sentiment-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
}
.sentiment-badge.up { background: rgba(239,68,68,.12); color: var(--up); }
.sentiment-badge.dn { background: rgba(34,197,94,.12); color: var(--dn); }
.sentiment-badge { background: rgba(156,163,175,.12); color: var(--text2); }
.sentiment-badge small { font-weight: 400; opacity: .7; }

.source-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 600;
  background: rgba(255,255,255,.06);
  color: var(--text2);
  white-space: nowrap;
}
.source-badge.blue   { background: rgba(59,130,246,.12); color: #c8a84e; }
.source-badge.green  { background: rgba(34,197,94,.12);  color: #22c55e; }
.source-badge.gold   { background: rgba(212,175,55,.12); color: var(--gold); }
.source-badge.purple { background: rgba(167,139,250,.12);color: #a78bfa; }
.source-badge.amber  { background: rgba(245,158,11,.12); color: #f59e0b; }
.source-badge.teal   { background: rgba(45,212,191,.12); color: #2dd4bf; }

.policy-tag {
  display: inline-block;
  padding: 1px 6px;
  margin-right: 4px;
  border-radius: 3px;
  font-size: 10px;
  background: rgba(255,255,255,.06);
  color: var(--muted);
  border: 1px solid var(--border);
}

.policy-filter-btn {
  padding: 4px 12px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: transparent;
  color: var(--text2);
  font-size: 12px;
  cursor: pointer;
  transition: all .2s;
}
.policy-filter-btn:hover {
  background: rgba(255,255,255,.06);
  border-color: var(--primary);
  color: var(--primary);
}
.policy-filter-btn.active {
  background: var(--primary);
  color: var(--text);
}

/* 双栏面板 */
.policy-panel-header {
  padding: 10px 14px;
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
}
.policy-panel-header.china {
  background: linear-gradient(135deg, rgba(59,130,246,.18), rgba(34,197,94,.10));
  color: #7dd3fc;
  border-bottom: 1px solid rgba(59,130,246,.2);
}
.policy-panel-header.overseas {
  background: linear-gradient(135deg, rgba(167,139,250,.18), rgba(245,158,11,.10));
  color: #c4b5fd;
  border-bottom: 1px solid rgba(167,139,250,.2);
}
.policy-count-badge {
  display: inline-block;
  background: rgba(255,255,255,.15);
  border-radius: 10px;
  padding: 1px 8px;
  font-size: 12px;
  font-weight: 700;
}

/* 政策表格 */
.policy-table {
  width: 100%;
  border-collapse: collapse;
}
.policy-table thead tr {
  background: var(--bg2);
}
.policy-table thead th {
  padding: 8px 8px;
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  text-align: left;
  border-bottom: 1px solid var(--border);
}
.policy-row {
  border-bottom: 1px solid var(--border);
  transition: background .15s;
}
.policy-row:hover {
  background: rgba(255,255,255,.03);
}
.policy-row td {
  padding: 9px 8px;
  font-size: 13px;
  vertical-align: middle;
}
.policy-idx  { text-align: center; color: var(--muted); font-size: 11px; }
.policy-title { font-weight: 500; line-height: 1.5; color: var(--text1); }
.policy-tags  { margin-top: 3px; }
.policy-date  { white-space: nowrap; color: var(--muted); font-size: 12px; }
.policy-link  { margin-left: 6px; color: var(--primary); opacity: .6; font-size: 11px; }
.policy-link:hover { opacity: 1; }
.policy-empty { text-align: center; padding: 32px; color: var(--muted); font-size: 13px; }

/* 移动端降为单栏 */
@media (max-width: 900px) {
  #page-policy [style*="grid-template-columns:1fr 1fr"] {
    grid-template-columns: 1fr !important;
  }
}

/* 台账表头排序箭头 */
.sort-arrow { opacity: 0.3; font-size: 0.6rem; margin-left: 2px; }
.sort-arrow.active { opacity: 1; color: var(--cyan); }
th[onclick] { user-select: none; }
th[onclick]:hover { color: var(--cyan); }

/* 中文大写金额读法 */
.cn-reading {
  font-size: .72rem;
  color: var(--gold);
  opacity: .85;
  line-height: 1.3;
  padding: 2px 0 0;
  letter-spacing: .5px;
  word-break: break-all;
}
.cn-reading.card-reading {
  font-size: .68rem;
  opacity: .75;
  min-height: .9em;
}

/* ═══════════════════════════════════════════════════════════
   财务记账模块 (journal)
   ═══════════════════════════════════════════════════════════ */

/* 模板选择卡片 */
.jnl-tpl-card {
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 12px;
  cursor: pointer;
  transition: border-color .2s, box-shadow .2s;
}
.jnl-tpl-card:hover {
  border-color: var(--gold);
  box-shadow: 0 0 8px rgba(212, 175, 55, .15);
}

/* 分录行 */
.jnl-line-row {
  display: flex;
  gap: 4px;
  align-items: center;
  padding: 2px 0;
}
.jnl-line-row select,
.jnl-line-row input {
  font-size: .75rem;
  padding: 4px 6px;
}

/* 科目树 */
.jnl-acc-group { margin-bottom: 8px; }
.jnl-acc-group-hd {
  font-weight: 600;
  font-size: .8rem;
  padding: 6px 8px;
  background: var(--card-bg);
  border-radius: 4px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
}
.jnl-acc-group-body { padding-left: 12px; }
.jnl-acc-group.collapsed .jnl-acc-group-body { display: none; }
.jnl-acc-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 8px;
  border-bottom: 1px solid var(--border);
  font-size: .78rem;
}
.jnl-acc-cat {
  font-weight: 600;
  color: var(--gold);
}
.jnl-acc-child {
  padding-left: 24px;
  color: var(--text);
  opacity: .85;
}
.jnl-acc-inactive { opacity: .45; text-decoration: line-through; }
.jnl-acc-code {
  min-width: 50px;
  font-family: monospace;
  color: var(--muted);
}
.jnl-acc-name { flex: 1; }
.jnl-acc-ccy {
  font-size: .68rem;
  padding: 1px 6px;
  background: var(--card-bg);
  border-radius: 3px;
  color: var(--muted);
}

/* 报表 */
.jnl-report-title {
  font-size: 1rem;
  font-weight: 700;
  text-align: center;
  margin-bottom: 4px;
}
.jnl-report-date {
  text-align: center;
  font-size: .75rem;
  color: var(--muted);
  margin-bottom: 12px;
}
.jnl-report-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.jnl-report-col-hd {
  font-weight: 600;
  font-size: .82rem;
  color: var(--gold);
  padding: 4px 0;
  border-bottom: 2px solid var(--gold);
  margin-bottom: 4px;
}
.jnl-report-row {
  display: flex;
  justify-content: space-between;
  padding: 3px 0;
  font-size: .78rem;
  border-bottom: 1px dotted var(--border);
}
.jnl-report-total {
  font-weight: 700;
  border-bottom: 1px solid var(--gold);
  margin-top: 4px;
}
.jnl-report-check {
  text-align: center;
  margin-top: 12px;
  font-size: .82rem;
  padding: 8px;
  border-top: 2px solid var(--gold);
}
.jnl-report-net {
  text-align: center;
  margin-top: 12px;
  font-size: 1rem;
  padding: 10px;
  background: var(--card-bg);
  border-radius: 6px;
}

/* ══════════════════════════════════════════════════════════════
   手机端底部导航（4常驻 + "更多"抽屉）
   ══════════════════════════════════════════════════════════════ */
.bottom-tabs{display:none;position:fixed;bottom:0;left:0;right:0;z-index:999;
  height:52px;background:rgba(15,23,42,.97);border-top:1px solid var(--border);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  padding:0 4px;padding-bottom:env(safe-area-inset-bottom);
  box-shadow:0 -2px 12px rgba(0,0,0,.3)}
.bottom-tabs-inner{display:flex;height:100%;align-items:center;justify-content:space-around}
.bottom-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;flex:1;height:100%;color:var(--text3);font-size:.58rem;
  cursor:pointer;-webkit-tap-highlight-color:transparent;transition:.15s;
  text-decoration:none;user-select:none;position:relative}
.bottom-tab:active{transform:scale(.92)}
.bottom-tab.active{color:#d4af37}
.bottom-tab i{font-size:1.1rem;transition:.15s}
.bottom-tab.active i{transform:scale(1.1)}
.bottom-tab.active::before{content:'';position:absolute;top:2px;left:50%;
  transform:translateX(-50%);width:16px;height:2px;background:#d4af37;border-radius:1px}
/* "更多"按钮激活态 */
.bottom-tab-more.sub-active{color:#d4af37}
.bottom-tab-more.sub-active i{transform:rotate(90deg)}

/* ── 更多菜单遮罩 ── */
.more-overlay{position:fixed;top:0;left:0;right:0;bottom:0;
  background:rgba(0,0,0,.45);z-index:1000;opacity:0;pointer-events:none;
  transition:opacity .25s ease}
.more-overlay.active{opacity:1;pointer-events:auto}

/* ── 更多菜单面板 ── */
.more-panel{position:fixed;bottom:0;left:0;right:0;z-index:1010;
  background:var(--bg-card);border-radius:16px 16px 0 0;
  padding:12px 16px calc(52px + env(safe-area-inset-bottom,0px) + 16px);
  box-shadow:0 -4px 24px rgba(0,0,0,.18);
  transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;gap:2px}
.more-panel.active{transform:translateY(0)}
.more-item{display:flex;align-items:center;gap:14px;padding:13px 16px;
  border-radius:10px;font-size:.92rem;color:var(--text);
  transition:background .15s;cursor:pointer;-webkit-tap-highlight-color:transparent;
  user-select:none}
.more-item:hover,.more-item:active{background:var(--bg3)}
.more-item.sub-active{color:#d4af37;font-weight:600;background:rgba(212,175,55,.08)}
.more-item i{font-size:1.15rem;width:24px;text-align:center;flex-shrink:0}
.more-item span{flex:1}
.more-cancel{width:100%;padding:12px;border-radius:10px;margin-top:6px;
  background:var(--bg3);color:var(--text3);
  font-size:.9rem;font-weight:500;text-align:center;border:none;
  cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background .15s}
.more-cancel:hover,.more-cancel:active{background:var(--border)}

/* 菜单展开禁止滚动 */
body.has-more-menu{overflow:hidden}

/* 仅手机端显示 */
  .bottom-tabs{display:block}
  .main{padding-bottom:52px}
}
  .bottom-tabs{height:48px}
  .bottom-tab{font-size:.52rem}
  .bottom-tab i{font-size:.95rem}
  .main{padding-bottom:48px}
  .more-panel{padding-bottom:calc(48px + env(safe-area-inset-bottom,0px) + 12px)}
}

/* ══════════════════════════════════════════════════════════════
   手机横屏优化（landscape orientation）
   横屏下宽度更大，恢复两栏布局 + 放大字体 + K线撑满高度
   ══════════════════════════════════════════════════════════════ */

/* 横屏通用：<=768px 且横屏 */
@media(max-width:768px) and (orientation:landscape){
  :root{--font-scale:0.88;--header-h:44px}
  html{font-size:calc(16px * var(--font-scale))}
  /* 横屏 header 压得更矮，让出垂直空间 */
  .header-top{height:28px;padding:0 8px;gap:8px}
  .header-news-bar{height:14px}
  .logo-icon{width:22px;height:22px;border-radius:6px}
  .logo-text{font-size:.72rem}
  .logo-ver{font-size:.38rem;padding:0 2px}
  .hdr-btn{padding:2px 7px;font-size:.58rem}
  .hdr-time{font-size:.52rem}
  /* 汉堡按钮：横屏下偏小（宽度富裕，不需要那么大） */
  .sidebar-toggle{top:46px;left:4px;width:32px;height:32px;font-size:.95rem}
  /* 页面布局：两栏并排 */
  .page{padding:4px 6px}
  .page.active>*{margin-bottom:4px}
  .card{padding:6px 8px}
  .card-title{font-size:.85rem}
  .card-subtitle{font-size:.65rem}
  .page-title{font-size:.95rem}
  .page-subtitle{font-size:.6rem}
  .btn-xs{font-size:.6rem;padding:2px 6px}
  .btn-tf{font-size:.58rem;padding:1px 5px}
  .btn{font-size:.7rem;padding:3px 8px}
  .m-val{font-size:.95rem}
  .m-lbl{font-size:.56rem}
  .m-sub{font-size:.5rem}
  .data-table{font-size:.62rem}
  .data-table th,.data-table td{padding:3px 6px}
  /* 恢复两栏网格 */
  .grid2{grid-template-columns:1fr 1fr}
  .grid3,.grid4{grid-template-columns:1fr 1fr}
  .grid5,.grid-5c{grid-template-columns:1fr 1fr 1fr}
  .strat-metrics{grid-template-columns:1fr 1fr 1fr}
  .heat-grid{grid-template-columns:repeat(4,1fr)}
  /* K 线图：横屏高度优势——撑满可用高度 */
  #tv-chart-monitor{min-height:220px !important;max-height:55vh}
  #tv-chart-tech{min-height:240px !important;max-height:60vh}
  /* 底部导航栏：横屏更紧凑 */
  .main{padding-bottom:40px}
  /* 设置面板按钮位置 */
  #dc-settings-global-btn{bottom:10px;right:8px;width:32px;height:32px;font-size:.75rem}
  .dc-panel-v2{width:80vw;max-height:90vh}
}

/* 横屏超小屏（<=480px宽，但横屏高度可能只有~260px） */
@media(max-width:480px) and (orientation:landscape){
  :root{--header-h:38px;--font-scale:0.82}
  html{font-size:calc(16px * var(--font-scale))}
  .header-top{height:24px;padding:0 5px;gap:4px}
  .header-news-bar{height:12px}
  .news-bar-label{font-size:.4rem}
  .news-item-tk{font-size:.44rem}
  .logo-icon{width:18px;height:18px;border-radius:5px}
  .logo-text{font-size:.64rem}
  .logo-ver{display:none}
  .hdr-btn{padding:1px 5px;font-size:.5rem}
  .hdr-time{font-size:.46rem}
  .sidebar-toggle{top:38px;left:3px;width:28px;height:28px;font-size:.85rem}
  .page{padding:2px 4px}
  .card{padding:4px 6px;border-radius:5px}
  .card-title{font-size:.78rem}
  .card-subtitle{font-size:.58rem}
  .m-val{font-size:.85rem}
  .m-lbl{font-size:.5rem}
  .data-table{font-size:.56rem}
  .data-table th,.data-table td{padding:2px 4px}
  .grid2{grid-template-columns:1fr 1fr}
  .grid3,.grid4{grid-template-columns:1fr 1fr}
  .grid5,.grid-5c{grid-template-columns:1fr 1fr}
  .strat-metrics{grid-template-columns:1fr 1fr}
  .heat-grid{grid-template-columns:repeat(3,1fr);font-size:.82rem}
  #tv-chart-monitor{min-height:180px !important;max-height:50vh}
  #tv-chart-tech{min-height:200px !important;max-height:55vh}
  .bottom-tabs{height:36px}
  .bottom-tab{font-size:.46rem;padding:4px 0}
  .bottom-tab i{font-size:.8rem}
  .main{padding-bottom:36px}
}

/* ─── 大宗商品 v2.0 扩展样式 ─── */

/* 品类筛选条 */
.commodity-category-filter {
    display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; padding: 8px 0;
}
.cm-cat-btn {
    padding: 5px 12px; border: 1px solid var(--border); border-radius: 16px;
    background: transparent; color: var(--text3); font-size: 12px; cursor: pointer;
    transition: all .2s;
}
.cm-cat-btn:hover { border-color: var(--amber); color: var(--amber); }
.cm-cat-btn.active { background: var(--amber); color: var(--text); border-color: var(--amber); }

/* 摘要徽章 */
.commodity-summary {
    display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
    margin-bottom: 12px; padding: 6px 0;
}
.cm-summary-badge {
    padding: 2px 10px; border: 1px solid; border-radius: 12px;
    font-size: 11px; font-weight: 500;
}
.cm-summary-total { color: var(--muted); font-size: 12px; margin-left: 8px; }

/* v2 报价网格 */
.commodity-quotes-grid-v2 {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 10px; margin-bottom: 20px;
}
.commodity-card-v2 {
    background: var(--bg1); border: 1px solid var(--border); border-radius: 10px;
    padding: 12px; cursor: pointer; transition: all .2s;
}
.commodity-card-v2:hover {
    border-color: var(--amber); transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(245,158,11,0.15);
}
.commodity-card-header-v2 {
    display: flex; align-items: center; gap: 6px; margin-bottom: 6px;
}
.commodity-card-header-v2 i { font-size: 12px; }
.commodity-card-header-v2 .commodity-card-name { font-size: 12px; color: var(--text2); }
.commodity-card-header-v2 .commodity-card-code { font-size: 10px; color: var(--muted); margin-left: auto; }
.commodity-card-price-v2 { font-size: 18px; font-weight: 700; color: var(--text); }
.commodity-card-unit-v2 { font-size: 10px; color: var(--text3); margin-bottom: 4px; }
.commodity-card-v2 .commodity-card-change { font-size: 11px; }
.commodity-card-v2 .commodity-card-change.up { color: var(--red); }
.commodity-card-v2 .commodity-card-change.down { color: var(--green); }
.commodity-card-domestic { font-size: 10px; color: var(--text3); margin-top: 4px; }
.commodity-card-source-v2 { font-size: 9px; color: var(--border2); margin-top: 4px; }

/* v2 品种选择器（按品类分组） */
.commodity-pair-selector-v2 {
    display: flex; flex-wrap: wrap; gap: 4px; max-height: 200px;
    overflow-y: auto; padding: 4px 0;
}
.cm-pair-group { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }
.cm-pair-group-label {
    font-size: 10px; color: var(--muted); padding: 2px 6px;
    border-right: 1px solid var(--border); margin-right: 4px;
}

/* 适配小屏 */
@media (max-width: 768px) {
    .commodity-quotes-grid-v2 { grid-template-columns: repeat(2, 1fr); }
    .commodity-category-filter { gap: 4px; }
    .cm-cat-btn { padding: 3px 8px; font-size: 11px; }
}

/* ══════════════════════════════════════════════════════════════
   v5.3 深色主题 · Inline Style → CSS Class 提取
   将 dashboard.html 中的内联 style 迁移为语义 CSS 类
   ══════════════════════════════════════════════════════════════ */

/* ── 侧边栏导航项背景色 ── */
.nav-bg-blue   { background: linear-gradient(90deg, rgba(59,130,246,.15), rgba(30,64,175,.15)); }
.nav-bg-purple { background: linear-gradient(90deg, rgba(139,92,246,.15), rgba(109,40,217,.15)); }
.nav-bg-gold   { background: linear-gradient(90deg, rgba(245,200,66,.1), rgba(212,175,55,.08)); }
.nav-bg-amber  { background: linear-gradient(90deg, rgba(245,158,11,.12), rgba(217,119,6,.1)); }
.nav-bg-green  { background: linear-gradient(90deg, rgba(16,185,129,.12), rgba(5,150,105,.12)); }

/* ── 侧边栏导航图标颜色 ── */
.nav-icon-blue   { color: var(--blue); }
.nav-icon-purple { color: #8b5cf6; }
.nav-icon-gold   { color: var(--gold); }
.nav-icon-green  { color: #10b981; }
.nav-icon-amber  { color: #f97316; }

/* ── 侧边栏导航徽章 ── */
.nav-badge-live {
  background: var(--gold); color: #0d1f35;
  font-size: .55rem; padding: 1px 5px; border-radius: 8px;
}
.nav-badge-new {
  background: linear-gradient(135deg, #F59E0B, #D97706); color: #fff;
  font-size: .6rem; padding: 1px 6px; border-radius: 8px;
}
.nav-badge-green {
  background: linear-gradient(135deg, #10b981, #059669); color: #fff;
  font-size: .6rem; padding: 1px 6px; border-radius: 8px;
}

/* ── 金色描边徽章（复用） ── */
.badge-gold-outline {
  background: rgba(212,175,55,.15); color: #d4af37;
  border: 1px solid rgba(212,175,55,.3);
}

/* ── 侧边栏分割标题金色 ── */
.sidebar-section-gold { color: var(--gold); }

/* ── 布局辅助 ── */
.span-full { grid-column: 1 / -1; }
.span2     { grid-column: span 2; }
.span3     { grid-column: span 3; }
.flex-shrink-0 { flex-shrink: 0; }
.text-right { text-align: right; }
.overflow-x-auto { overflow-x: auto; }

/* ── 卡片彩色边框 ── */
.card-border-purple { border-color: rgba(168,85,247,.3); }
.card-border-green  { border-color: rgba(34,197,94,.3); }
.card-border-red    { border-color: rgba(239,68,68,.3); }

/* ── 微信支付风格 · 金市快讯图标 ── */
.news-bolt-icon { color: var(--gold); }

/* ── 响应式保持 ── */
@media (max-width: 768px) {
  .span2, .span3 { grid-column: auto; }
}


/* V5 sidebar 折叠状态 (与 responsive.css 协同, 折叠按钮 hover 已 inline) */
.home-btn{position:fixed;bottom:30px;right:24px;z-index:9999!important;width:48px;height:48px;border-radius:50%;background:#fff;box-shadow:0 2px 16px rgba(0,0,0,.10);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .35s cubic-bezier(.4,0,.2,1);border:.5px solid rgba(0,0,0,.06);outline:none;-webkit-tap-highlight-color:transparent;text-decoration:none}
.home-btn:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(0,0,0,.14)}
.home-btn:active{transform:scale(.9);box-shadow:0 1px 8px rgba(0,0,0,.06);transition:all .1s ease;background:#f5f5f5}
.home-btn svg{width:24px;height:24px;color:#1a1a2e}
/* Launchpad: bottom center */
body.launchpad-active .home-btn{bottom:90px;right:auto;left:50%;transform:translateX(-50%)}
body.launchpad-active .home-btn:hover{transform:translateX(-50%) translateY(-2px)}
body.launchpad-active .home-btn:active{transform:translateX(-50%) scale(.9)}
@media (max-width:768px){.home-btn{bottom:24px;right:16px;width:44px;height:44px}.home-btn svg{width:22px;height:22px}body.launchpad-active .home-btn{bottom:80px}}
@media (max-width:480px){.home-btn{bottom:20px;right:12px;width:40px;height:40px}.home-btn svg{width:20px;height:20px}body.launchpad-active .home-btn{bottom:70px}}

/* V5 sidebar 折叠状态 (P15 · 与 responsive.css 协同) */
.fs-sidebar--collapsed .fs-sidebar,body.fs-sidebar--collapsed .fs-sidebar{width:var(--fs-sidebar-collapsed-width,60px);transition:width var(--fs-transition-slow,350ms ease)}
.fs-sidebar--collapsed .fs-sidebar__brand-text,body.fs-sidebar--collapsed .fs-sidebar__brand-text,.fs-sidebar--collapsed .fs-nav-label,body.fs-sidebar--collapsed .fs-nav-label{display:none!important}
.fs-sidebar-toggle:hover{background:rgba(245,200,66,.15);color:var(--fs-color-gold,#f5c842)}
