:root{
  --bg:#0b1220; --panel:#121b2e; --panel2:#16223a; --line:#23314d;
  --txt:#e6edf7; --muted:#8aa0c0; --accent:#3b82f6;
  --up:#ff4d4f; --down:#1bbf72; --flat:#8aa0c0;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{
  margin:0; padding:0; background:var(--bg); color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:960px; margin:0 auto; min-height:100vh;}
button{font-family:inherit; cursor:pointer;}

/* ---------- 登录 ---------- */
.login{display:flex; align-items:center; justify-content:center; min-height:100vh; padding:20px;}
.login-card{
  background:var(--panel); border:1px solid var(--line); border-radius:16px;
  padding:30px 22px; width:100%; max-width:360px; text-align:center;
}
.brand .logo{width:56px; height:56px;}
.brand h1{font-size:20px; margin:12px 0 4px;}
.brand .sub{color:var(--muted); font-size:12px; margin:0 0 20px; line-height:1.5;}
.login-card input{
  width:100%; padding:12px 14px; border-radius:10px; border:1px solid var(--line);
  background:var(--panel2); color:var(--txt); font-size:15px; margin-bottom:12px; outline:none;
}
.login-card input:focus{border-color:var(--accent);}
.login-card button{
  width:100%; padding:12px; border:0; border-radius:10px; background:var(--accent);
  color:#fff; font-size:15px; font-weight:600;
}
.login-card button:disabled{opacity:.6;}
.err{color:#ff7875; font-size:13px; margin-top:10px;}

/* 登录：密码/验证码切换 + 短信行 */
.login-tabs{display:flex; gap:8px; margin:0 0 14px;}
.login-tabs button{flex:1; background:var(--panel2); border:1px solid var(--line); color:var(--muted); border-radius:10px; padding:9px; font-size:14px;}
.login-tabs button.on{background:var(--accent); color:#fff; border-color:var(--accent);}
.sms-row{display:flex; gap:8px;}
.sms-row input{flex:1; margin-bottom:0;}
.code-btn{width:auto !important; white-space:nowrap; background:var(--panel2); border:1px solid var(--line) !important; color:var(--txt); font-weight:500;}
.code-btn:disabled{opacity:.6;}

/* ---------- 顶栏 ---------- */
.topbar{
  display:flex; justify-content:space-between; align-items:center;
  padding:12px 14px; position:sticky; top:0; background:var(--bg);
  z-index:5; border-bottom:1px solid var(--line);
}
.t-left{display:flex; align-items:center; gap:8px; font-size:14px;}
.t-left .dot{width:8px; height:8px; border-radius:50%; background:#555;}
.t-left .dot.live{background:var(--down); box-shadow:0 0 8px var(--down);}
.upd{color:var(--muted); font-size:12px;}
.t-right{display:flex;}
.ghost{
  background:transparent; border:1px solid var(--line); color:var(--txt);
  border-radius:8px; padding:6px 10px; font-size:13px; margin-left:6px;
}

/* ---------- 标签页 ---------- */
.tabs{display:flex; gap:6px; padding:10px 14px 0;}
.tabs button{
  flex:1; background:var(--panel); border:1px solid var(--line); color:var(--muted);
  padding:10px; border-radius:10px 10px 0 0; font-size:14px;
}
.tabs button.on{background:var(--panel2); color:var(--txt); border-bottom-color:var(--accent);}

/* ---------- 行情分组 ---------- */
.group{padding:12px 14px;}
.group h2{font-size:15px; margin:6px 0 10px; display:flex; align-items:center; gap:8px;}
.cnt{color:var(--muted); font-size:12px; font-weight:400;}
.cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(158px,1fr)); gap:10px;}
.card{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:12px;}
.c-top{display:flex; justify-content:space-between; align-items:baseline; gap:6px;}
.c-name{font-size:14px; font-weight:600; line-height:1.2;}
.c-name small{display:block; color:var(--muted); font-size:11px; font-weight:400; margin-top:2px;}
.c-price{font-size:18px; font-weight:700; white-space:nowrap;}
.c-mid{display:flex; gap:6px; margin:8px 0 4px; flex-wrap:wrap;}
.chip{font-size:12px; padding:2px 8px; border-radius:999px; border:1px solid var(--line); white-space:nowrap;}
.c-bot{color:var(--muted); font-size:12px;}
.up{color:var(--up);}
.down{color:var(--down);}
.flat{color:var(--flat);}

/* ---------- 信号 ---------- */
.hint,.banner{color:var(--muted); font-size:12px; padding:0 14px; line-height:1.5;}
.banner.err{color:#ff7875;}
.sig-list{padding:10px 14px; display:flex; flex-direction:column; gap:8px;}
.sig{border-left:4px solid var(--flat); background:var(--panel); border-radius:8px; padding:10px 12px;}
.sig.lv-strong{border-left-color:var(--up);}
.sig.lv-buy{border-left-color:#ff7a45;}
.sig.lv-over{border-left-color:#ffc53d;}
.sig.lv-watch{border-left-color:var(--accent);}
.sig-head{display:flex; justify-content:space-between; font-size:13px; gap:8px;}
.sig-type{font-weight:600;}
.sig-code{color:var(--muted);}
.sig-lvl{font-size:11px; color:var(--muted); text-transform:uppercase;}
.sig-note{font-size:13px; margin:4px 0; line-height:1.5;}
.sig-meta{color:var(--muted); font-size:11px;}

/* ---------- 指数 ---------- */
.idx-list{padding:10px 14px; display:flex; flex-direction:column; gap:8px;}
.idx{
  display:flex; justify-content:space-between; align-items:center; gap:8px;
  background:var(--panel); border:1px solid var(--line); border-radius:8px; padding:10px 12px;
}
.idx-name{font-size:14px;}
.idx-val{font-size:16px; font-weight:700;}
.idx-ts{color:var(--muted); font-size:11px;}

.empty{color:var(--muted); font-size:13px; text-align:center; padding:14px;}
.foot{color:var(--muted); font-size:11px; text-align:center; padding:18px 14px 30px; line-height:1.6;}

/* ===== 我的实盘（只读回显） ===== */
.acct-banner{display:flex; align-items:center; gap:8px; flex-wrap:wrap; background:rgba(56,189,248,.12);
  border:1px solid rgba(56,189,248,.35); border-radius:12px; padding:10px 12px; margin:4px 0 12px; font-size:13px;}
.acct-banner.off{background:rgba(248,113,113,.1); border-color:rgba(248,113,113,.35);}
.acct-banner .src{font-weight:700; padding:2px 8px; border-radius:8px; font-size:12px;}
.acct-banner .src.sim{background:#1f6feb; color:#fff;}
.acct-banner .src.live{background:#e0531f; color:#fff;}
.acct-banner .bl{font-weight:600; color:var(--text);}
.acct-banner .st{color:var(--muted);}
.acct-banner .st:before{content:"·"; margin:0 4px;}
.acct-banner .upd{margin-left:auto; color:var(--muted); font-size:11px;}
.acct-asset{display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin-bottom:14px;}
.asset-card{background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px;}
.asset-card .a-label{color:var(--muted); font-size:12px; margin-bottom:6px;}
.asset-card .a-val{font-size:18px; font-weight:700; color:var(--text);}
.acct-pos{display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px;}
.pos-card{background:var(--card); border:1px solid var(--border); border-radius:12px; padding:12px;}
.pos-card .p-top{display:flex; justify-content:space-between; align-items:center; margin-bottom:8px;}
.pos-card .p-inst{font-weight:700; font-size:15px; color:var(--text);}
.pos-card .p-dir{font-size:11px; padding:1px 7px; border-radius:6px; background:var(--muted); color:#fff;}
.pos-card .p-dir.long{background:#e0531f;}
.pos-card .p-dir.short{background:#2b8a3e;}
.pos-card .p-dir.net{background:#1f6feb;}
.pos-card .p-row{display:flex; justify-content:space-between; font-size:13px; padding:3px 0; color:var(--muted);}
.pos-card .p-row b{color:var(--text); font-weight:600;}

/* ---------- 修改密码模态框 ---------- */
.modal-mask{position:fixed; inset:0; background:rgba(0,0,0,.6); display:flex; align-items:center; justify-content:center; padding:20px; z-index:20;}
.modal{background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:22px; width:100%; max-width:360px;}
.modal h3{margin:0 0 6px; font-size:17px;}
.modal .hint{margin:0 0 14px; padding:0;}
.modal input{width:100%; padding:11px 13px; border-radius:10px; border:1px solid var(--line); background:var(--panel2); color:var(--txt); font-size:15px; margin-bottom:10px; outline:none;}
.modal input:focus{border-color:var(--accent);}
.modal-actions{display:flex; gap:10px; margin-top:6px;}
.modal-actions button{flex:1; padding:11px; border-radius:10px; font-size:14px; font-weight:600; border:1px solid var(--line); background:var(--panel2); color:var(--txt);}
.modal-actions button:last-child{background:var(--accent); border-color:var(--accent); color:#fff;}
.modal-actions button:disabled{opacity:.6;}
.modal .err{margin:0 0 10px; padding:0;}

/* ===== 策略研究 ===== */
.bt-h{display:flex; align-items:center;}
.bt-h .ghost{margin-left:auto; font-size:12px; padding:5px 10px;}
.bt-table{margin:0 14px 10px; border:1px solid var(--line); border-radius:10px; overflow:hidden;}
.bt-table .bt-head, .bt-table .bt-row{display:grid; grid-template-columns:1.1fr 1fr 1.5fr .6fr 1fr 1fr .9fr .9fr .8fr; gap:4px; padding:9px 10px; font-size:12px; align-items:center;}
.bt-table .bt-head{background:var(--panel2); color:var(--muted); font-weight:600;}
.bt-table .bt-row{background:var(--panel); border-top:1px solid var(--line);}
.bt-table .bt-row span{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.bt-table .bt-range{font-size:11px; color:var(--muted);}
