/* ==================================================================
   缠道 · 缠论分析系统 - 样式表
   设计方向：高端金融终端 × 东方禅意
   主色：暗红墨色基底 + 琥珀金强调
   ================================================================== */

/* ===== 设计变量 ===== */
:root{
  /* 背景层次：从深到浅 */
  --bg:#0f0608;          /* 最深底色 */
  --bg2:#180a0d;         /* 次深 */
  --bg3:#22100f;         /* 卡片背景 */
  --bg-card:#1a0b0e;     /* 卡片背景 */
  --bg-elevated:#2a1316; /* 浮起元素 */
  
  /* 线条 */
  --line:#3d1820;        /* 主分隔线 */
  --line2:#502028;      /* 次分隔线 */
  --line3:#1f0c10;       /* 最浅分隔 */
  
  /* 强调色：琥珀金系 */
  --orange:#ff6a1a;
  --orange2:#ff9442;
  --gold:#f0c040;
  --gold2:#ffd966;
  --gold-dim:#8a6e2a;
  
  /* 涨跌色（A股惯例：红涨绿跌） */
  --red:#e83838;
  --red2:#ff5050;
  --red-dim:rgba(232,56,56,.15);
  --green:#00c896;
  --green2:#2bd47e;
  --green-dim:rgba(0,200,150,.15);
  
  /* 文字层次 */
  --txt:#ecd8bc;         /* 主文字 */
  --txt2:#a8907a;        /* 次文字 */
  --txt3:#6a5040;        /* 弱文字 */
  --txt4:#4a3a2a;        /* 最弱 */
  
  /* 其他 */
  --blue:#4a9eff;
  --purple:#b07eff;
  
  /* 字体 */
  --serif:'STSong','SimSun','Songti SC','Source Han Serif SC','serif';
  --sans:'Microsoft YaHei','PingFang SC','Hiragino Sans GB','sans-serif';
  --mono:'Consolas','SF Mono','Courier New','monospace';
  
  /* 圆角 */
  --r-sm:4px;
  --r-md:6px;
  --r-lg:10px;
  
  /* 阴影 */
  --shadow-sm:0 1px 3px rgba(0,0,0,.3);
  --shadow-md:0 4px 12px rgba(0,0,0,.4);
  --shadow-lg:0 8px 28px rgba(0,0,0,.5);
  --shadow-glow:0 0 16px rgba(255,106,26,.35);
}

/* ===== 重置 ===== */
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%}
body{
  font-family:var(--sans);
  background:
    radial-gradient(ellipse 80% 60% at 50% 0%,#2a1014 0%,transparent 60%),
    radial-gradient(ellipse 60% 40% at 20% 100%,#1e0a0d 0%,transparent 50%),
    var(--bg);
  color:var(--txt);
  font-size:13px;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
button{cursor:pointer;font-family:inherit;border:none;outline:none;background:none}
input,select{font-family:inherit;outline:none}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line2);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--orange)}
.mono{font-family:var(--mono)}

/* 买卖点推荐 */
.rec-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;padding:8px;overflow-y:auto;max-height:160px}
.rec-card{background:var(--bg2);border:1px solid var(--line);border-radius:var(--r-sm);padding:6px 8px;cursor:pointer;transition:border-color .2s}
.rec-card:hover{border-color:var(--gold2)}
.rec-card.buy{border-left:3px solid var(--red2)}
.rec-card.sell{border-left:3px solid var(--green2)}
.rc-hd{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.rc-name{font-size:12px;font-weight:700;color:var(--txt)}
.rc-code{font-size:9px;color:var(--txt3);font-family:var(--mono)}
.rc-dir{font-size:9px;padding:1px 4px;border-radius:2px;margin-left:auto}
.rc-dir.up{color:var(--green2);background:rgba(0,200,150,.1)}
.rc-dir.down{color:var(--red2);background:rgba(232,56,56,.1)}
.rc-body{display:flex;align-items:center;justify-content:space-between;gap:6px}
.rc-price{font-size:14px;font-weight:700;color:var(--gold2);font-family:var(--mono)}
.rc-sig{display:flex;align-items:center;gap:4px;font-size:10px}
.rc-sig.buy .rc-sig-type{color:var(--red2);font-weight:600}
.rc-sig.sell .rc-sig-type{color:var(--green2);font-weight:600}
.rc-sig-price{color:var(--txt2);font-family:var(--mono);font-size:9px}
.rc-sig-diff{font-size:9px;color:var(--txt3)}
.rc-foot{display:flex;align-items:center;gap:6px;margin-top:3px;font-size:9px}
.rc-conf{color:var(--gold2)}
.rc-div{color:#ffd966;background:rgba(255,217,102,.1);padding:0 3px;border-radius:2px}
.rc-pending{color:#e0b840}
.rc-cat{margin-left:auto;color:var(--txt3);font-size:8px}

/* 免责弹窗 */
.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.75);z-index:9999;display:flex;align-items:center;justify-content:center}
.modal-box{background:var(--bg-panel);border:1px solid var(--gold2);border-radius:8px;max-width:500px;width:90%;max-height:80vh;overflow-y:auto}
.modal-hd{font-size:16px;font-weight:700;color:var(--gold2);padding:16px 20px;border-bottom:1px solid var(--line)}
.modal-bd{padding:16px 20px;font-size:13px;color:var(--txt2);line-height:1.8}
.modal-bd p{margin-bottom:8px}
.modal-bd ul{margin:4px 0 8px 20px}
.modal-bd li{font-size:12px;color:var(--txt3);margin-bottom:4px}
.modal-bd b{color:var(--red2)}
.modal-ft{padding:12px 20px;border-top:1px solid var(--line);text-align:center}
.btn-pri{padding:8px 32px;border-radius:var(--r-sm);font-size:14px;font-weight:600;cursor:pointer;border:none;background:var(--gold2);color:#000}
.btn-pri:hover{opacity:.85}

/* ==================================================================
   顶部导航 - 双行布局
   ================================================================== */
.nav{
  position:sticky;top:0;z-index:100;
  background:linear-gradient(180deg,#1e0d10 0%,#180a0d 100%);
  border-bottom:1px solid var(--line);
  box-shadow:0 2px 20px rgba(0,0,0,.5);
}
.nav-row{
  display:flex;align-items:center;gap:14px;padding:0 16px;
}
.nav-row-1{height:48px;border-bottom:1px solid var(--line3)}
.nav-row-2{height:40px;background:rgba(15,6,8,.5)}

/* 品牌 */
.brand{display:flex;align-items:center;gap:9px;min-width:130px}
.brand-mark{
  width:34px;height:34px;border-radius:9px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--orange) 0%,var(--gold) 100%);
  box-shadow:0 0 16px rgba(255,106,26,.4),inset 0 1px 0 rgba(255,255,255,.25);
  position:relative;
}
.brand-mark::after{
  content:'';position:absolute;inset:-1px;border-radius:10px;
  background:linear-gradient(135deg,rgba(255,212,128,.3),transparent);
  pointer-events:none;
}
.brand-mark span{font-family:var(--serif);font-size:20px;font-weight:900;color:#14080a;position:relative;z-index:1}
.brand-name{font-family:var(--serif);font-size:16px;font-weight:700;color:var(--gold2);letter-spacing:3px;line-height:1.1}
.brand-sub{font-size:8px;color:var(--txt3);letter-spacing:3px;font-weight:500;margin-top:1px}

/* 指数滚动条 */
.ticker-scroll{
  flex:1;overflow:hidden;font-size:11px;font-family:var(--mono);
  display:flex;align-items:center;gap:0;
  white-space:nowrap;min-width:0;
}
.ticker-loading{color:var(--txt3)}
.ticker-item{
  display:inline-flex;align-items:baseline;gap:4px;
  padding:0 12px;border-right:1px solid var(--line3);
}
.ticker-item:last-child{border-right:none}
.ticker-item .ti-name{color:var(--txt2);font-size:10px}
.ticker-item .ti-price{font-weight:700}
.ticker-item .ti-chg{font-size:10px;font-weight:600}
.ticker-item .ti-chg.up{color:var(--red2)}
.ticker-item .ti-chg.dn{color:var(--green2)}

/* 右侧操作区 */
.nav-actions{display:flex;align-items:center;gap:8px}
.qi-group{display:flex;gap:3px}
.qi-btn{
  padding:5px 10px;background:var(--bg-card);
  color:var(--txt2);border:1px solid var(--line);
  border-radius:var(--r-sm);font-size:11px;
  transition:all .2s;
}
.qi-btn:hover{color:var(--gold);border-color:var(--gold);background:var(--bg-elevated)}

/* 搜索 */
.search-wrap{position:relative}
#searchInput{
  width:130px;padding:6px 10px;background:var(--bg-card);
  border:1px solid var(--line);color:var(--txt);
  border-radius:var(--r-sm);font-size:12px;
  transition:all .2s;
}
#searchInput:focus{border-color:var(--orange);box-shadow:0 0 0 2px rgba(255,106,26,.15)}
.search-dd{
  position:absolute;top:36px;left:0;right:0;
  background:var(--bg2);border:1px solid var(--line2);
  border-radius:var(--r-md);max-height:260px;overflow-y:auto;
  z-index:200;display:none;
  box-shadow:var(--shadow-md);
}
.search-dd .dd-item{
  padding:7px 10px;cursor:pointer;
  display:flex;justify-content:space-between;
  border-bottom:1px solid var(--line);
  transition:background .15s;
}
.search-dd .dd-item:hover{background:var(--bg3)}
.search-dd .dd-item:last-child{border-bottom:none}

/* 数据徽章 */
.data-badge{
  font-size:10px;font-family:var(--mono);
  color:var(--txt3);padding:3px 8px;
  border-radius:10px;background:var(--bg-card);
  border:1px solid var(--line);white-space:nowrap;
}
.data-badge.live{color:var(--green2);border-color:rgba(0,200,150,.3)}
.data-badge.mock{color:var(--gold);border-color:rgba(240,192,64,.3)}

/* 第二行：当前标的 + 工具栏 */
.current-stock{
  display:flex;align-items:baseline;gap:8px;
  padding-right:16px;border-right:1px solid var(--line);
  margin-right:auto;
}
.hl-name{font-family:var(--serif);font-size:15px;font-weight:700;color:var(--gold2)}
.hl-code{font-size:10px;color:var(--txt3);font-family:var(--mono)}
.hl-price{font-size:18px;font-weight:700;font-family:var(--mono);color:var(--red2)}
.hl-chg{font-size:12px;font-family:var(--mono);color:var(--red2);font-weight:600}
.hl-chg.dn{color:var(--green2)}

.toolbar-group{display:flex;align-items:center;gap:12px}
.period-group{
  display:flex;gap:1px;
  background:var(--bg);border-radius:var(--r-md);padding:2px;
  border:1px solid var(--line3);
}
.pd{
  padding:5px 10px;background:transparent;color:var(--txt2);
  border-radius:var(--r-sm);font-size:11px;
  transition:all .2s;
}
.pd:hover{color:var(--orange2)}
.pd.active{
  background:linear-gradient(135deg,var(--orange),var(--orange2));
  color:#14080a;font-weight:700;
  box-shadow:0 2px 8px rgba(255,106,26,.3);
}
.layer-group{display:flex;gap:3px}
.lg{
  padding:4px 8px;background:var(--bg-card);
  color:var(--txt3);border:1px solid var(--line);
  border-radius:var(--r-sm);font-size:10px;
  transition:all .2s;
}
.lg.active{
  background:var(--line);color:var(--gold2);
  border-color:var(--gold-dim);
}

/* 免责 */
.disclaimer{
  background:linear-gradient(90deg,rgba(42,31,8,.6),rgba(42,31,8,.9),rgba(42,31,8,.6));
  color:var(--gold2);padding:4px 16px;
  font-size:10px;text-align:center;
  border-bottom:1px solid #3d2d08;
  letter-spacing:1px;
}

/* ==================================================================
   主体三栏布局
   ================================================================== */
.layout{
  display:flex;
  height:calc(100vh - 88px - 22px - 180px);
  min-height:440px;
  gap:1px;
  background:var(--line);
  overflow:hidden;
}
.col-left,.col-right{
  background:var(--bg2);
  display:flex;flex-direction:column;
  overflow-y:auto;
}
.col-left{width:160px;min-width:130px}
.col-right{width:280px;min-width:240px}
.col-center{
  flex:1;background:var(--bg);
  display:flex;flex-direction:column;
  min-width:0;
}

/* 卡片通用 */
.card{
  border-bottom:1px solid var(--line);
  display:flex;flex-direction:column;
  min-height:0;
  flex-shrink:0;
  background:var(--bg2);
}
.card.flex-fill{flex:1;min-height:120px}
.card-hd{
  padding:10px 14px;font-size:11px;font-weight:700;
  color:var(--gold);background:var(--bg3);
  border-bottom:1px solid var(--line);
  letter-spacing:1.5px;
  display:flex;justify-content:space-between;align-items:center;
}
.card-hd.accent{border-left:3px solid var(--orange)}
.card-bd{padding:10px 12px;overflow-y:auto;flex:1}
.hint{color:var(--txt3);font-size:12px;padding:14px 8px;text-align:center}
.badge{
  background:var(--orange);color:#14080a;
  font-size:9px;padding:1px 7px;border-radius:10px;
  font-weight:700;
}

/* 查询记录/自选股 */
.q-item,.w-item{
  padding:6px 9px;border-bottom:1px solid var(--line3);
  display:flex;justify-content:space-between;align-items:center;
  cursor:pointer;transition:background .15s;
}
.q-item:hover,.w-item:hover{background:var(--bg3)}
.w-item .n{color:var(--txt);font-size:12px}
.w-item .c{color:var(--txt3);font-size:10px;font-family:var(--mono)}
.w-item .x{color:var(--txt3);font-size:14px;padding:0 4px}
.w-item .x:hover{color:var(--red)}

/* 信号提醒 */
.sig-msg{
  padding:10px;margin-bottom:6px;
  background:var(--bg-card);border-radius:var(--r-md);
  border-left:3px solid var(--orange);
  font-size:12px;transition:transform .15s;
}
.sig-msg:hover{transform:translateX(2px)}
.sig-msg.buy{border-left-color:var(--red2)}
.sig-msg.sell{border-left-color:var(--green2)}
.sig-msg .t{font-weight:700;font-size:13px}
.sig-msg .d{color:var(--txt2);margin-top:4px;font-size:11px}
.sig-msg .tm{color:var(--txt3);font-size:10px;margin-top:3px;font-family:var(--mono)}

/* ==================================================================
   图表区
   ================================================================== */
.chart-bar{
  padding:6px 14px;background:var(--bg3);
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:14px;
  min-height:32px;
}
.ct-title{
  font-family:var(--serif);font-size:14px;
  font-weight:700;color:var(--gold2);
  letter-spacing:1px;cursor:pointer;user-select:none;
  padding:3px 6px;margin-left:-6px;border-radius:4px;
  transition:color .15s ease,background .15s ease,box-shadow .15s ease;
}
.ct-title:hover,.ct-title:focus-visible{
  color:#fff3bd;background:rgba(212,160,23,.12);
  box-shadow:0 0 0 1px rgba(212,160,23,.35);
  outline:none;
}
.ct-stats{
  margin-left:auto;display:flex;gap:12px;
  font-size:11px;font-family:var(--mono);color:var(--txt2);
}
.ct-stats span b{color:var(--txt)}
.chart-main{flex:1;min-height:260px;width:100%}
.chart-macd{height:100px;width:100%;border-top:1px solid var(--line)}

/* ==================================================================
   右栏 - 分析卡片
   ================================================================== */
/* ===== 右栏 - 分析卡片 ===== */
.a-block{margin-bottom:14px}
.a-block:last-child{margin-bottom:0}
.a-label{
  font-size:10px;color:var(--txt3);
  margin-bottom:5px;padding-left:10px;
  border-left:2px solid var(--orange);
  letter-spacing:1.5px;text-transform:uppercase;
  font-weight:600;
}
.a-val{
  font-size:13px;color:var(--txt);
  padding:4px 10px;line-height:1.7;
}
.a-val.up{color:var(--red2)}
.a-val.dn{color:var(--green2)}

/* 方向预判条 */
.pred{display:flex;flex-direction:column;gap:6px;padding:6px 10px}
.pred-r{display:flex;align-items:center;gap:8px;font-size:12px}
.pred-n{width:20px;color:var(--txt2);font-weight:700;font-size:12px}
.pred-t{
  flex:1;height:12px;background:var(--bg);
  border-radius:6px;overflow:hidden;
  border:1px solid var(--line3);
}
.pred-f{height:100%;border-radius:6px;transition:width .6s cubic-bezier(.4,0,.2,1)}
.pred-f.up{background:linear-gradient(90deg,var(--red),var(--orange))}
.pred-f.dn{background:linear-gradient(90deg,var(--green),#2a8)}
.pred-f.flat{background:linear-gradient(90deg,#666,var(--txt3))}
.pred-v{width:42px;text-align:right;font-family:var(--mono);color:var(--txt);font-size:12px;font-weight:600}
.a-reason{font-size:11px;color:var(--txt3);padding:6px 10px;line-height:1.6;margin-top:4px}

/* 买卖点卡片 */
.sig-card{
  padding:9px 11px;margin-bottom:5px;
  background:var(--bg-card);border-radius:var(--r-md);
  border-left:3px solid var(--orange);
  font-size:12px;display:flex;justify-content:space-between;align-items:center;
  transition:background .15s;
}
.sig-card:hover{background:var(--bg3)}
.sig-card.buy{border-left-color:var(--red2)}
.sig-card.sell{border-left-color:var(--green2)}
.sig-card .s-type{font-weight:700;font-size:13px}
.sig-card.buy .s-type{color:var(--red2)}
.sig-card.sell .s-type{color:var(--green2)}
.sig-card .s-price{font-family:var(--mono);color:var(--gold2);font-size:12px}
.sig-card .s-conf{color:var(--txt3);font-size:11px}

/* 中枢列表 */
.pv-card{
  padding:9px 11px;margin-bottom:5px;
  background:var(--bg-card);border-radius:var(--r-md);
  font-size:12px;
}
.pv-card .pv-range{color:var(--gold2);font-family:var(--mono);font-size:12px;font-weight:600}
.pv-card .pv-zd{color:var(--green2)}
.pv-card .pv-zg{color:var(--red2)}
.pv-card .pv-info{color:var(--txt3);font-size:11px;margin-top:4px}

/* 预测信号卡片 */
.pred-card{
  padding:9px 11px;margin-bottom:5px;
  background:var(--bg-card);border-radius:var(--r-md);
  border-left:3px solid var(--orange);
  font-size:12px;
}
.pred-card.buy{border-left-color:var(--red2);background:linear-gradient(135deg,rgba(232,56,56,.08),var(--bg-card))}
.pred-card.sell{border-left-color:var(--green2);background:linear-gradient(135deg,rgba(0,200,150,.08),var(--bg-card))}
.pred-card.monitor{border-left-color:var(--gold-dim);background:var(--bg-card)}
.pred-card .pred-hd{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.pred-card .pred-type{font-weight:700;font-size:13px}
.pred-card.buy .pred-type{color:var(--red2)}
.pred-card.sell .pred-type{color:var(--green2)}
.pred-card.monitor .pred-type{color:var(--gold2)}
.pred-tag{
  font-size:9px;padding:1px 6px;border-radius:3px;
  background:var(--orange);color:#14080a;font-weight:700;
}
.pred-tag.mon{background:var(--txt3);color:var(--bg)}
.pred-card .pred-conf{margin-left:auto;font-family:var(--mono);color:var(--txt2);font-size:11px}
.pred-card .pred-desc{color:var(--txt2);font-size:11px;line-height:1.5}

/* ==================================================================
   预警卡片（多级别联动 + 盘整背驰）
   ================================================================== */
/* ===== 预警卡片（多级别联动 + 盘整背驰） ===== */
.alert-card{
  border-left:3px solid var(--orange);
  background:linear-gradient(135deg,var(--bg2) 0%,var(--bg-card) 100%);
  flex-shrink:0;
  max-height:220px;
}
.alert-card .card-hd{
  background:linear-gradient(90deg,rgba(255,106,26,.1),transparent);
  padding:10px 14px;
}
.alert-hd{
  display:flex;align-items:center;gap:9px;
}
.alert-hd .hd-icon{
  font-size:12px;color:var(--orange);
  text-shadow:0 0 8px rgba(255,106,26,.6);
}
.alert-hd .hd-text{flex:1;color:var(--gold2);font-size:12px;font-weight:700;letter-spacing:1px}
.alert-card .card-bd{padding:10px 12px;overflow-y:auto}

.btn-xs{
  padding:4px 10px;font-size:11px;
  background:var(--bg-card);color:var(--txt2);
  border:1px solid var(--line);border-radius:var(--r-sm);
  transition:all .2s;
}
.btn-xs:hover{color:var(--gold);border-color:var(--gold)}

/* 联动预警结果 */
.ml-alert{
  padding:10px 12px;border-radius:var(--r-md);
  margin-bottom:8px;font-size:12px;
  transition:transform .15s;
}
.ml-alert:hover{transform:translateX(2px)}
.ml-alert.high{background:var(--red-dim);border:1px solid var(--red2);color:var(--red2)}
.ml-alert.medium{background:rgba(255,170,0,.12);border:1px solid var(--orange);color:var(--orange)}
.ml-alert.low{background:var(--bg3);border:1px solid var(--line);color:var(--txt2)}
.ml-alert.none{background:var(--bg3);color:var(--txt3)}
.ml-alert .ml-title{font-weight:700;margin-bottom:4px;font-size:13px}
.ml-alert .ml-desc{font-size:11px;opacity:.9;line-height:1.5}
.ml-alert .ml-action{
  display:inline-block;padding:2px 8px;
  border-radius:4px;font-weight:700;
  margin-left:6px;font-size:11px;
}
.ml-alert .ml-action.买入{background:var(--red2);color:#fff}
.ml-alert .ml-action.卖出{background:var(--green2);color:#fff}
.ml-alert .ml-action.观望{background:var(--txt3);color:#fff}

.ml-levels{display:flex;gap:6px;margin-top:8px}
.ml-level{
  flex:1;background:var(--bg3);
  border-radius:var(--r-md);padding:8px 7px;
  font-size:11px;border-top:3px solid var(--txt3);
  transition:transform .15s;
}
.ml-level:hover{transform:translateY(-2px)}
.ml-level.up{border-top-color:var(--red2)}
.ml-level.down{border-top-color:var(--green2)}
.ml-level .ml-lv-name{font-weight:700;color:var(--gold2);margin-bottom:4px;font-size:12px}
.ml-level .ml-lv-dir{font-size:10px;font-weight:600}
.ml-level .ml-lv-dir.up{color:var(--red2)}
.ml-level .ml-lv-dir.down{color:var(--green2)}
.ml-level .ml-lv-sig{font-size:10px;color:var(--txt2);margin-top:3px}
.ml-level .ml-lv-sig.buy{color:var(--red2)}
.ml-level .ml-lv-sig.sell{color:var(--green2)}

/* 盘整背驰预警 */
.da-alert{
  padding:10px 12px;border-radius:var(--r-md);
  font-size:12px;transition:transform .15s;
}
.da-alert:hover{transform:translateX(2px)}
.da-alert.bottom{background:var(--red-dim);border:1px solid var(--red2);color:var(--red2)}
.da-alert.top{background:var(--green-dim);border:1px solid var(--green2);color:var(--green2)}
.da-alert.none{background:var(--bg3);color:var(--txt3)}
.da-alert .da-title{font-weight:700;margin-bottom:4px;font-size:13px}
.da-alert .da-desc{font-size:11px;opacity:.9;line-height:1.5}
.da-alert .da-macd{font-family:var(--mono);font-size:11px;margin-top:5px;opacity:.85}
.badge-live{
  font-size:10px;padding:2px 8px;border-radius:4px;
  background:var(--bg3);color:var(--txt3);font-weight:600;
}
.badge-live.bottom{background:var(--red2);color:#fff}
.badge-live.top{background:var(--green2);color:#fff}

/* ===== 市场情绪 & 资金流向 ===== */
.sent-temp{margin-bottom:8px}
.sent-temp-bar{
  position:relative;height:8px;border-radius:4px;
  margin-bottom:4px;opacity:.8;
}
.sent-temp-marker{
  position:absolute;top:-2px;width:3px;height:12px;
  background:#fff;border-radius:1px;
  box-shadow:0 0 4px rgba(255,255,255,.6);
  transform:translateX(-50%);
}
.sent-temp-val{font-size:14px;font-weight:700;text-align:center;font-family:var(--mono)}
.sent-bar{
  display:flex;height:22px;border-radius:4px;
  overflow:hidden;margin-bottom:6px;font-size:10px;
}
.sent-up{background:var(--red-dim);color:var(--red2);display:flex;align-items:center;justify-content:center;gap:3px;min-width:20px;overflow:hidden}
.sent-dn{background:var(--green-dim);color:var(--green2);display:flex;align-items:center;justify-content:center;gap:3px;min-width:20px;overflow:hidden}
.sent-stats{
  display:flex;justify-content:space-around;
  font-size:11px;color:var(--txt2);
  padding:6px 0;border-bottom:1px solid var(--line3);
  margin-bottom:6px;
}
.sent-stats b{font-size:13px;margin-left:3px}
.sent-sub-hd{
  font-size:10px;color:var(--gold);font-weight:600;
  margin:6px 0 3px;letter-spacing:1px;
}
.sent-stock{
  display:flex;align-items:center;gap:6px;
  padding:4px 6px;border-radius:var(--r-sm);
  font-size:11px;cursor:pointer;
  transition:background .15s;
}
.sent-stock:hover{background:var(--bg3)}
.sent-stock .ss-name{flex:1;color:var(--txt)}
.sent-stock .ss-hy{color:var(--txt3);font-size:9px}
.sent-stock .ss-pct{font-family:var(--mono);font-weight:600}
.sent-stock .ss-pct.up{color:var(--red2)}
.sent-stock .ss-pct.dn{color:var(--green2)}
.sent-lbc{
  font-size:9px;padding:1px 5px;border-radius:3px;
  background:var(--orange);color:#14080a;font-weight:700;
}

/* 资金流向 */
.cap-block{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:6px 0;border-bottom:1px solid var(--line3);
}
.cap-label{font-size:11px;color:var(--txt2)}
.cap-val{font-size:14px;font-weight:700;font-family:var(--mono)}
.cap-detail{
  display:flex;justify-content:space-between;
  font-size:11px;color:var(--txt3);
  padding:4px 0;
}
.cap-detail b{font-family:var(--mono);margin-left:4px;font-size:11px}
.cap-trend{
  display:flex;align-items:flex-end;gap:4px;
  height:24px;margin-top:6px;padding:2px 0;
}
.cap-bar{
  width:100%;border-radius:2px 2px 0 0;
  min-height:3px;
}

/* ==================================================================
   底部 Tab 面板
   ================================================================== */
.bottom{
  height:280px;display:flex;flex-direction:column;
  background:var(--bg2);border-top:1px solid var(--line);
}
.bb-tabs{
  display:flex;gap:2px;padding:0 12px;
  background:var(--bg3);border-bottom:1px solid var(--line);
  height:34px;align-items:flex-end;
}
.bb-tab{
  padding:7px 16px;background:var(--bg-card);
  color:var(--txt2);border:1px solid var(--line);
  border-bottom:none;border-radius:var(--r-md) var(--r-md) 0 0;
  font-size:12px;transition:all .2s;
  position:relative;top:1px;
}
.bb-tab:hover{color:var(--gold2);background:var(--bg-elevated)}
.bb-tab.active{
  background:var(--bg2);color:var(--gold);
  border-color:var(--orange);border-bottom:1px solid var(--bg2);
  font-weight:600;
}
.bb-content{flex:1;overflow:hidden;position:relative}
.bb-pane{display:none;height:100%;flex-direction:column}
.bb-pane.active{display:flex}

/* 市场情绪面板 */
.sent-wrap{
  flex:1;display:flex;gap:1px;background:var(--line);
  overflow:hidden;
}
.sent-left,.sent-right{
  flex:1;overflow-y:auto;background:var(--bg2);padding:10px;
}
.sent-card{
  margin-bottom:8px;
}
.sent-card-hd{
  font-size:11px;font-weight:700;color:var(--gold);
  letter-spacing:1.5px;margin-bottom:8px;
  padding-bottom:5px;border-bottom:1px solid var(--line);
}

.scan-toolbar{
  display:flex;align-items:center;gap:8px;
  padding:7px 12px;background:var(--bg3);
  border-bottom:1px solid var(--line);min-height:36px;
}
.scan-toolbar select{
  padding:5px 9px;background:var(--bg-card);
  border:1px solid var(--line);color:var(--txt);
  border-radius:var(--r-sm);font-size:12px;
}
.scan-summary{
  margin-left:auto;font-size:11px;color:var(--txt2);
  font-family:var(--mono);
}
.scan-summary b{color:var(--gold2)}
.scan-grid{
  flex:1;overflow-y:auto;padding:7px;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(225px,1fr));
  gap:6px;align-content:start;
}
.pos-list,.order-list{flex:1;overflow-y:auto;padding:7px}

/* 扫描卡片 */
.sc-card{
  background:var(--bg-card);border-radius:var(--r-md);
  padding:8px 10px;border:1px solid var(--line);
  border-left:3px solid var(--txt3);
  cursor:pointer;transition:all .15s;position:relative;
}
.sc-card:hover{
  background:var(--bg3);border-color:var(--orange);
  transform:translateY(-1px);box-shadow:var(--shadow-sm);
}
.sc-card.buy{border-left-color:var(--red2)}
.sc-card.sell{border-left-color:var(--green2)}
.sc-card.neutral{border-left-color:var(--gold)}
.sc-card .sc-hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}
.sc-card .sc-name{font-size:12px;font-weight:700;color:var(--txt)}
.sc-card .sc-price{font-family:var(--mono);font-size:12px;font-weight:700}
.sc-card .sc-price.up{color:var(--red2)}
.sc-card .sc-price.dn{color:var(--green2)}
.sc-card .sc-sig{
  font-size:10px;padding:2px 6px;border-radius:3px;
  font-weight:700;display:inline-block;
}
.sc-card .sc-sig.buy{background:var(--red-dim);color:var(--red2)}
.sc-card .sc-sig.sell{background:var(--green-dim);color:var(--green2)}
.sc-card .sc-sig.none{background:var(--line);color:var(--txt3)}
.sc-pred-sig{
  font-size:9px;padding:2px 6px;border-radius:3px;margin:2px 0;
  display:inline-block;font-weight:600;
}
.sc-pred-sig.forming{background:rgba(255,106,26,.15);color:var(--orange2);border:1px solid rgba(255,106,26,.3)}
.sc-pred-sig.monitor{background:rgba(240,192,64,.1);color:var(--gold-dim);border:1px solid rgba(240,192,64,.2)}
.sc-card .sc-info{font-size:10px;color:var(--txt3);margin-top:4px;display:flex;justify-content:space-between}
.sc-card .sc-pred{height:3px;border-radius:2px;margin-top:5px;overflow:hidden;display:flex}
.sc-card .sc-pred .u{background:var(--red)}
.sc-card .sc-pred .d{background:var(--green)}
.sc-card .sc-pred .f{background:var(--txt3)}

/* 持仓卡片 */
.pos-card{
  background:var(--bg-card);border-radius:var(--r-md);
  padding:9px 11px;border:1px solid var(--line);
  border-left:3px solid var(--orange);
  margin-bottom:6px;transition:all .15s;
}
.pos-card:hover{box-shadow:var(--shadow-sm)}
.pos-card.alert{
  border-left-color:var(--red2);
  background:linear-gradient(135deg,rgba(232,56,56,.05),var(--bg-card));
}
.pos-card .pos-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.pos-card .pos-name{font-size:13px;font-weight:700;color:var(--txt)}
.pos-card .pos-name .pos-code{font-size:10px;color:var(--txt3);font-family:var(--mono);margin-left:6px}
.pos-card .pos-x{color:var(--txt3);cursor:pointer;font-size:14px;padding:0 4px}
.pos-card .pos-x:hover{color:var(--red)}
.pos-card .pos-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:6px;font-size:11px}
.pos-card .pos-grid .pl{color:var(--txt3);font-size:9px;letter-spacing:.5px}
.pos-card .pos-grid .pv{font-family:var(--mono);color:var(--txt);font-size:11px}
.pos-card .pos-grid .pv.pf{color:var(--red2)}
.pos-card .pos-grid .pv.ls{color:var(--green2)}
.pos-card .pos-advice{
  margin-top:6px;padding:5px 8px;border-radius:var(--r-sm);
  font-size:11px;background:var(--red-dim);
  color:var(--red2);font-weight:600;
  border:1px solid rgba(232,56,56,.3);
}
.pos-card .pos-advice.safe{
  background:var(--green-dim);color:var(--green2);
  border-color:rgba(0,200,150,.2);
}
.pos-card .pos-advice.stale{
  background:rgba(255,200,50,.08);color:#e0b840;
  border-color:rgba(255,200,50,.2);
}
.pos-card .pos-advice.buy{
  background:rgba(232,56,56,.08);color:var(--red2);
  border-color:rgba(232,56,56,.25);
}
.pos-card.stale{
  border-left-color:#e0b840;
  background:linear-gradient(135deg,rgba(255,200,50,.03),var(--bg-card));
}
.pos-card.buy{
  border-left-color:var(--red2);
  background:linear-gradient(135deg,rgba(232,56,56,.03),var(--bg-card));
}
.pos-card .pos-strategy{
  font-size:10px;padding:2px 7px;border-radius:3px;
  background:var(--line);color:var(--gold2);
}

/* 按钮 */
.btn-pri{
  padding:5px 12px;
  background:linear-gradient(135deg,var(--orange),var(--orange2));
  color:#14080a;border-radius:var(--r-sm);
  font-weight:700;font-size:11px;
  transition:all .2s;
}
.btn-pri:hover{box-shadow:var(--shadow-glow);transform:translateY(-1px)}
.btn-sec{
  padding:5px 11px;background:var(--bg-card);
  color:var(--txt2);border:1px solid var(--line);
  border-radius:var(--r-sm);font-size:11px;
  transition:all .2s;
}
.btn-sec:hover{color:var(--gold);border-color:var(--gold)}

/* 账户卡片 */
.acc-wrap{display:flex;gap:6px;padding:7px;flex-wrap:wrap}
.acc-card{
  flex:1;min-width:200px;
  background:var(--bg-card);border-radius:var(--r-md);
  padding:8px;border:1px solid var(--line);
}
.acc-card .ac-n{
  font-family:var(--serif);font-size:12px;
  font-weight:700;color:var(--gold2);margin-bottom:5px;
}
.acc-card .ac-r{display:flex;justify-content:space-between;font-size:10px;padding:1px 0}
.acc-card .ac-l{color:var(--txt3)}
.acc-card .ac-v{font-family:var(--mono);color:var(--txt)}
.acc-card .ac-v.pf{color:var(--red2)}
.acc-card .ac-v.ls{color:var(--green2)}
.acc-card .ac-strat{font-size:9px;color:var(--txt3);font-weight:400;margin-left:4px}
.acc-card .ac-positions{margin-top:4px;display:flex;flex-wrap:wrap;gap:4px}
.acc-card .ac-pos{font-size:9px;padding:2px 5px;border-radius:3px;background:var(--line);color:var(--txt2)}
.acc-card .ac-pos.none{color:var(--txt3);opacity:.6}

/* 多级别策略 */
.t-tier{font-size:9px;padding:2px 6px;border-radius:3px;margin-left:6px;font-weight:400}
.t-tier.tier-swing{background:rgba(232,56,56,.15);color:var(--red2)}
.t-tier.tier-t{background:rgba(255,200,50,.15);color:#e0b840}
.t-tier.tier-wait{background:rgba(100,100,100,.15);color:var(--txt3)}
.t-act-align{font-size:10px;color:var(--txt3);margin-top:3px}

.t-level{border-left:3px solid var(--line)}
.t-level .t-lv-role{font-size:9px;color:var(--txt3);font-weight:400;margin-left:2px}
.t-lv-dir{font-size:11px;font-weight:600;margin-left:auto}
.t-lv-dir.green{color:var(--green2)}
.t-lv-dir.red{color:var(--red2)}
.t-lv-count{font-size:9px;color:var(--txt3)}

.t-lv-sig{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:3px;font-size:10px;margin-top:3px}
.t-lv-sig.buy{background:rgba(232,56,56,.06);border-left:2px solid var(--red2)}
.t-lv-sig.sell{background:rgba(0,200,150,.06);border-left:2px solid var(--green2)}
.t-lv-sig-type{font-weight:600;color:var(--txt)}
.t-lv-sig.buy .t-lv-sig-type{color:var(--red2)}
.t-lv-sig.sell .t-lv-sig-type{color:var(--green2)}
.t-lv-sig-price{color:var(--txt2);font-family:var(--mono)}
.t-lv-sig-conf{font-size:9px;color:var(--gold2)}

.t-lv-pending{display:flex;align-items:center;gap:8px;padding:3px 6px;font-size:9px;opacity:.8;margin-top:2px}
.t-lv-pivot{font-size:10px;color:var(--txt3);margin-top:3px}
.t-lv-divs{margin-top:3px}
.t-div-tag{font-size:9px;padding:1px 5px;border-radius:2px;margin-right:4px}
.t-div-tag.bottom{background:rgba(255,217,102,.15);color:#ffd966}
.t-div-tag.top{background:rgba(176,126,255,.15);color:#b07eff}

/* 信号状态标记 */
.sig-status{font-size:9px;padding:1px 4px;border-radius:2px;margin-left:4px;font-weight:400}
.sig-status.confirmed{background:rgba(0,200,150,.15);color:var(--green2)}
.sig-status.pending{background:rgba(255,200,50,.15);color:#e0b840}
.sig-status.stale{background:rgba(100,100,100,.15);color:var(--txt3);text-decoration:line-through}
.sig-msg.pending{opacity:.8}
.sig-msg.stale{opacity:.4}
.sig-msg.stale .t{text-decoration:line-through}

.t-sig.pending{border-left-color:#e0b840!important}
.t-sig.pending .t-sig-type{color:#e0b840}
.t-sig-status{font-size:8px;padding:1px 3px;border-radius:2px}
.t-sig-status.confirmed{background:rgba(0,200,150,.15);color:var(--green2)}
.t-sig-status.pending{background:rgba(255,200,50,.15);color:#e0b840}
.t-sig-status.stale{background:rgba(100,100,100,.15);color:var(--txt3);text-decoration:line-through}
.t-day-sig.stale{opacity:.4}
.t-day-sig.stale .t-ds-type{text-decoration:line-through}
.t-ds-status{font-size:8px;padding:1px 3px;border-radius:2px}
.t-ds-status.confirmed{background:rgba(0,200,150,.15);color:var(--green2)}
.t-ds-status.pending{background:rgba(255,200,50,.15);color:#e0b840}
.t-ds-status.stale{background:rgba(100,100,100,.15);color:var(--txt3);text-decoration:line-through}

/* 自动交易 */
.at-btn-off{background:rgba(232,56,56,.08);border-color:rgba(232,56,56,.25);color:var(--red2)}
.at-btn-off:hover{background:rgba(232,56,56,.15)}
.at-btn-on{background:rgba(0,200,150,.08);border-color:rgba(0,200,150,.25);color:var(--green2);animation:pulse-green 2s ease-in-out infinite}
@keyframes pulse-green{0%,100%{opacity:1}50%{opacity:.7}}
.at-config{padding:6px 8px;border-bottom:1px solid var(--line)}
.at-cfg-grid{display:flex;flex-wrap:wrap;gap:8px;font-size:10px;color:var(--txt3)}
.at-cfg-grid b{color:var(--txt2)}
.at-syms{flex-basis:100%;font-size:9px;opacity:.8}
.at-logs{max-height:120px;overflow-y:auto;border-bottom:1px solid var(--line)}
.at-log{display:grid;grid-template-columns:auto auto auto 1fr;align-items:center;gap:5px;padding:3px 8px;font-size:10px;border-bottom:1px dashed var(--line)}
.at-log:last-child{border-bottom:none}
.at-log.buy .at-l-act{color:var(--red2);font-weight:600}
.at-log.sell .at-l-act{color:var(--green2);font-weight:600}
.at-log.err .at-l-act{color:#ff5050}
.at-log.skip .at-l-act{color:var(--txt3)}
.at-l-time{color:var(--txt3);font-size:9px;font-family:var(--mono)}
.at-l-sym{color:var(--gold2);font-size:9px}
.at-l-msg{color:var(--txt2)}
.at-l-det{grid-column:4;font-size:9px;color:var(--txt3);opacity:.7}
.acc-trades{margin-top:8px}
.acc-tr-hd{font-size:11px;font-weight:600;color:var(--gold2);margin-bottom:4px;padding-left:2px}
.acc-tr{display:grid;grid-template-columns:auto 1fr auto auto auto auto;align-items:center;gap:6px;padding:4px 6px;font-size:10px;border-bottom:1px dashed var(--line)}
.acc-tr:last-child{border-bottom:none}
.acc-tr.buy .atr-act{color:var(--red2);font-weight:600}
.acc-tr.sell .atr-act{color:var(--green2);font-weight:600}
.atr-sym{color:var(--txt2)}
.atr-qty{color:var(--txt3);font-size:9px}
.atr-price{color:var(--txt2);font-family:var(--mono);font-size:9px}
.atr-amt{color:var(--gold2);font-family:var(--mono);font-size:9px}
.atr-time{color:var(--txt3);font-size:9px}
.atr-reason{font-size:9px;color:var(--txt3);grid-column:1/-1;padding-left:0}

/* 做T面板快捷交易 */
.t-trade-bar{display:flex;gap:6px;margin-top:6px;padding:6px 0;border-top:1px solid var(--line)}
.t-btn{padding:5px 12px;border-radius:var(--r-sm);font-size:11px;font-weight:600;cursor:pointer;border:1px solid;transition:all .15s}
.t-btn.buy{background:rgba(232,56,56,.1);border-color:rgba(232,56,56,.3);color:var(--red2)}
.t-btn.buy:hover{background:rgba(232,56,56,.2)}
.t-btn.sell{background:rgba(0,200,150,.1);border-color:rgba(0,200,150,.3);color:var(--green2)}
.t-btn.sell:hover{background:rgba(0,200,150,.2)}
.t-btn.qty{background:var(--bg-card);border-color:var(--line);color:var(--txt2);font-size:10px}
.t-btn.qty.active{background:var(--orange);color:#fff;border-color:var(--orange)}

/* 条件单列表 */
.o-item{
  padding:7px 9px;margin-bottom:5px;
  background:var(--bg-card);border-radius:var(--r-sm);
  border-left:3px solid var(--orange);
  font-size:11px;display:flex;align-items:center;gap:7px;flex-wrap:wrap;
}
.o-item.buy{border-left-color:var(--red2)}
.o-item.sell{border-left-color:var(--green2)}
.o-item.cancelled{opacity:.45}
.o-item.triggered{border-left-color:var(--gold);background:#2a1f08}
.o-sym{font-weight:600;color:var(--txt)}
.o-type{color:var(--gold2);padding:1px 6px;background:var(--line);border-radius:3px;font-size:10px}
.o-act{font-size:10px;font-weight:700}
.o-act.buy{color:var(--red2)}
.o-act.sell{color:var(--green2)}
.o-qty{color:var(--txt2);font-family:var(--mono)}
.o-st{font-size:9px;color:var(--txt3)}
.o-status{font-size:9px;padding:1px 6px;border-radius:3px}
.o-status.待触发{background:#2a1f08;color:var(--gold)}
.o-status.已触发{background:#0a2a1f;color:var(--green2)}
.o-status.已取消{background:#333;color:var(--txt3)}
.o-x{color:var(--txt3);cursor:pointer;margin-left:auto;font-size:14px}
.o-x:hover{color:var(--red)}

/* 做T策略 */
.t-bar{display:flex;align-items:center;gap:8px;padding:6px 8px;border-bottom:1px solid var(--line)}
.t-select{background:var(--bg-card);color:var(--txt);border:1px solid var(--line);border-radius:var(--r-sm);padding:4px 8px;font-size:12px;min-width:140px}
.t-auto-badge{font-size:10px;color:var(--txt3);margin-left:auto}
.t-auto-badge.live{color:var(--green2)}
.t-body{padding:8px;max-height:340px;overflow-y:auto}
.t-legend{display:flex;gap:14px;padding:6px 8px;border-top:1px solid var(--line);font-size:10px;color:var(--txt3)}

.t-section{margin-bottom:8px;padding:8px;border-radius:var(--r-sm);background:var(--bg-card)}
.t-sec-hd{font-size:11px;font-weight:600;color:var(--txt2);margin-bottom:5px;display:flex;align-items:center;gap:5px}
.t-dot{display:inline-block;width:7px;height:7px;border-radius:50%}
.t-dot.green{background:var(--green2)}
.t-dot.red{background:var(--red2)}
.t-dot.yellow{background:#e0b840}

.t-action{text-align:center;padding:12px 8px}
.t-action.red{background:linear-gradient(135deg,rgba(232,56,56,.08),var(--bg-card));border:1px solid rgba(232,56,56,.25)}
.t-action.green{background:linear-gradient(135deg,rgba(0,200,150,.08),var(--bg-card));border:1px solid rgba(0,200,150,.25)}
.t-action.yellow{background:linear-gradient(135deg,rgba(255,200,50,.06),var(--bg-card));border:1px solid rgba(255,200,50,.2)}
.t-act-label{font-size:10px;color:var(--txt3);letter-spacing:1px}
.t-act-main{font-size:20px;font-weight:700;margin:4px 0}
.t-action.red .t-act-main{color:var(--red2)}
.t-action.green .t-act-main{color:var(--green2)}
.t-action.yellow .t-act-main{color:#e0b840}
.t-act-desc{font-size:10px;color:var(--txt3)}

.t-risk-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}
.t-risk-level{padding:3px 10px;border-radius:3px;font-size:11px;font-weight:600}
.t-risk-level.safe{background:var(--green-dim);color:var(--green2)}
.t-risk-level.danger{background:var(--red-dim);color:var(--red2)}
.t-risk-level.caution{background:rgba(255,200,50,.1);color:#e0b840}
.t-risk-dir{font-size:10px;color:var(--txt3)}

.t-day-latest{font-size:10px;color:var(--txt3);margin-top:3px}
.t-day-latest .buy-c{color:var(--red2)}
.t-day-latest .sell-c{color:var(--green2)}
.t-pv-pos.上方{color:var(--red2)}
.t-pv-pos.下方{color:var(--green2)}
.t-pv-pos.内部{color:var(--txt3)}

.t-sig-list{display:flex;flex-direction:column;gap:3px}
.t-sig{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:6px;padding:4px 6px;border-radius:3px;font-size:10px}
.t-sig.buy{background:rgba(232,56,56,.06);border-left:2px solid var(--red2)}
.t-sig.sell{background:rgba(0,200,150,.06);border-left:2px solid var(--green2)}
.t-sig.latest{font-weight:600}
.t-sig.stale{opacity:.5}
.t-sig-type{font-weight:600;color:var(--txt)}
.t-sig.buy .t-sig-type{color:var(--red2)}
.t-sig.sell .t-sig-type{color:var(--green2)}
.t-sig-price{color:var(--txt2);font-family:var(--mono)}
.t-sig-diff{font-size:9px;color:var(--txt3)}
.t-sig-conf{font-size:9px;color:var(--gold2)}

.t-day-list{display:flex;flex-direction:column;gap:2px}
.t-day-sig{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:6px;padding:3px 6px;font-size:10px;border-bottom:1px dashed var(--line)}
.t-day-sig:last-child{border-bottom:none}
.t-day-sig.buy .t-ds-type{color:var(--red2);font-weight:600}
.t-day-sig.sell .t-ds-type{color:var(--green2);font-weight:600}
.t-ds-date{color:var(--txt3);font-size:9px}
.t-ds-price{color:var(--txt2);font-family:var(--mono)}
.t-ds-diff{font-size:9px;color:var(--txt3)}

.t-tips{background:transparent;border:1px dashed var(--line)}
.t-tip{font-size:10px;color:var(--txt3);margin-top:2px}

.t-hold-card{padding:7px 9px;border-radius:var(--r-sm);border:1px solid var(--line);border-left:3px solid var(--orange);margin-bottom:5px;cursor:pointer;transition:all .15s}
.t-hold-card:hover{box-shadow:var(--shadow-sm)}
.t-hold-card.sell{border-left-color:var(--green2)}
.t-hold-card.buy{border-left-color:var(--red2)}
.t-hold-card.stale{border-left-color:#e0b840}
.t-hold-card .t-hd{display:flex;justify-content:space-between;font-size:12px;font-weight:700}
.t-hold-card .t-code{font-size:10px;color:var(--txt3);font-family:var(--mono)}
.t-hold-card .t-hd2{display:flex;gap:10px;font-size:10px;color:var(--txt3);margin-top:3px}
.t-hold-card .t-hd2 .pf{color:var(--red2)}
.t-hold-card .t-hd2 .ls{color:var(--green2)}
.t-hold-card .t-advice{font-size:10px;margin-top:3px;color:var(--txt2)}

/* ==================================================================
   弹窗
   ================================================================== */
.modal{
  position:fixed;inset:0;
  background:rgba(0,0,0,.75);z-index:1000;
  display:none;align-items:center;justify-content:center;
  backdrop-filter:blur(3px);
  animation:fadeIn .2s ease;
}
.modal.show{display:flex}
.modal-box{
  width:440px;max-width:90vw;
  background:var(--bg2);border:1px solid var(--line2);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-lg);
  animation:slideUp .25s cubic-bezier(.4,0,.2,1);
}
.modal-hd{
  padding:14px 18px;background:var(--bg3);
  border-bottom:1px solid var(--line);
  border-radius:var(--r-lg) var(--r-lg) 0 0;
  display:flex;justify-content:space-between;align-items:center;
  font-size:14px;font-weight:600;color:var(--gold);
}
.modal-x{font-size:22px;color:var(--txt2);line-height:1;transition:color .2s}
.modal-x:hover{color:var(--red)}
.modal-bd{padding:16px 18px;max-height:58vh;overflow-y:auto}
.fr{margin-bottom:10px}
.fr label{
  display:block;font-size:10px;color:var(--txt3);
  margin-bottom:4px;letter-spacing:1px;
}
.fr input,.fr select{
  width:100%;padding:7px 9px;
  background:var(--bg-card);border:1px solid var(--line);
  color:var(--txt);border-radius:var(--r-sm);font-size:12px;
  transition:border-color .2s;
}
.fr input:focus,.fr select:focus{border-color:var(--orange)}
.modal-ft{
  padding:12px 18px;border-top:1px solid var(--line);
  display:flex;justify-content:flex-end;gap:8px;
}

/* Toast */
.toasts{
  position:fixed;top:96px;right:16px;z-index:2000;
  display:flex;flex-direction:column;gap:6px;
}
.toast{
  padding:10px 16px;border-radius:var(--r-sm);
  font-size:12px;background:var(--bg2);
  border:1px solid var(--line2);
  box-shadow:var(--shadow-md);
  min-width:200px;animation:slideIn .3s ease;
}
.toast.success{border-left:3px solid var(--green2)}
.toast.error{border-left:3px solid var(--red2)}
.toast.info{border-left:3px solid var(--orange)}

/* 动画 */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes slideIn{from{transform:translateX(110%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes pulse{0%,100%{opacity:.3}50%{opacity:1}}
.loading-dot{
  display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--orange);margin-right:4px;
  animation:pulse 1s ease-in-out infinite;
}

/* ==================================================================
   响应式
   ================================================================== */
@media(max-width:1280px){
  .col-left{width:140px}
  .col-right{width:240px}
  .ticker-scroll{font-size:10px}
  .ticker-item{padding:0 8px}
}
@media(max-width:1024px){
  .nav-row-1{flex-wrap:wrap;height:auto;padding:8px 16px}
  .ticker-scroll{order:3;width:100%;margin-top:4px}
  .qi-group{display:none}
}
@media(max-width:768px){
  .layout{flex-direction:column;height:auto}
  .col-left,.col-right{width:100%;max-height:200px}
  .bottom{height:auto;min-height:200px}
  .nav-actions{flex-wrap:wrap}
}
