:root{
  --bg:#0f1419; --panel:#1a2230; --panel2:#222c3c; --line:#2c3950;
  --text:#e6edf3; --sub:#9fb0c3; --accent:#3b82f6; --accent2:#22d3ee;
  --up:#ef4444; --down:#22c55e; --warn:#f59e0b;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--text);font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;font-size:14px}
.hidden{display:none!important}
button{cursor:pointer;border:none;border-radius:6px;padding:8px 14px;font-size:14px;background:var(--panel2);color:var(--text)}
button.primary{background:var(--accent);color:#fff;font-weight:600}
button.ghost{background:transparent;border:1px solid var(--line);color:var(--sub)}
button:hover{filter:brightness(1.1)}
input,select{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:8px 10px;font-size:14px}
.up{color:var(--up)} .down{color:var(--down)}

/* 登录 */
.login-wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg)}
.login-box{background:var(--panel);padding:32px;border-radius:12px;width:320px;text-align:center;border:1px solid var(--line)}
.login-box h1{font-size:20px;margin-bottom:6px}
.login-box .sub{color:var(--sub);font-size:12px;margin-bottom:18px}
.login-box input{width:100%;margin-bottom:12px}
.login-box button{width:100%}
.err{color:var(--up);font-size:12px;min-height:16px;margin-top:8px}

/* 顶栏 */
.topbar{display:flex;align-items:center;gap:16px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
.brand{font-weight:700;font-size:16px}
.status{display:flex;align-items:center;gap:6px;color:var(--sub);font-size:13px}
.dot{width:9px;height:9px;border-radius:50%;background:#555;display:inline-block}
.dot.open{background:var(--down);box-shadow:0 0 8px var(--down)}
.clock{font-variant-numeric:tabular-nums}
.tabs{display:flex;gap:6px;margin-left:auto}
.tabs button{background:transparent;color:var(--sub)}
.tabs button.active{background:var(--accent);color:#fff}

/* 面板 */
.tab-panel{padding:16px}
.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.toolbar .hint{color:var(--sub);font-size:12px}
.toolbar label{color:var(--sub);font-size:13px;display:flex;gap:6px;align-items:center}

/* 表格 */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;background:var(--panel);border-radius:8px;overflow:hidden}
th,td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--line);white-space:nowrap}
th{background:var(--panel2);color:var(--sub);font-weight:600;font-size:13px}
tr:hover td{background:var(--panel2)}
.row-actions button{padding:4px 8px;font-size:12px;margin-right:4px}

/* 状态徽章 */
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:12px;font-weight:600}
.badge-strongbuy{background:var(--up);color:#fff}
.badge-weakbuy{background:#b45309;color:#fff}
.badge-strongsell{background:#7f1d1d;color:#fff}
.badge-weaksell{background:#9a3412;color:#fff}
.badge-hold{background:#1e3a5f;color:#bfe}
.badge-watch{background:var(--panel2);color:var(--sub)}

/* 弹窗 */
.modal,.alert-modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:50}
.modal-box,.alert-box{background:var(--panel);padding:24px;border-radius:12px;width:420px;max-width:92vw;border:1px solid var(--line)}
.modal-box h3{margin-bottom:14px}
.modal-box label{display:block;color:var(--sub);font-size:13px;margin:10px 0 4px}
.modal-box input,.modal-box select{width:100%}
.modal-box .row{display:flex;gap:10px;margin-top:16px}
.modal-box .row button{flex:1}
.reasons{background:var(--panel2);border-radius:8px;padding:12px;margin-top:10px;font-size:13px;line-height:1.7}
.reasons li{margin-left:18px;color:var(--accent2)}

/* 强信号告警 */
.alert-box{border:2px solid var(--up);box-shadow:0 0 30px rgba(239,68,68,.4)}
.alert-head{color:var(--up);font-weight:700;font-size:18px;margin-bottom:12px;text-align:center}
.alert-box .alert-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line)}
.alert-box button{width:100%;margin-top:16px}

/* 弱信号轻提示 */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--panel2);border:1px solid var(--warn);color:var(--text);padding:10px 16px;border-radius:8px;font-size:13px;z-index:45;max-width:90vw;box-shadow:0 4px 20px rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .3s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toast.show{opacity:1;pointer-events:auto}
.toast b{color:var(--warn)}

/* 配置 */
.cfg{max-width:640px}
.cfg-row{display:flex;gap:10px;align-items:center;margin:10px 0;flex-wrap:wrap}
.cfg label{display:flex;flex-direction:column;gap:4px;color:var(--sub);font-size:12px;width:180px}
.cfg input,.cfg select{width:100%}
hr{border:none;border-top:1px solid var(--line);margin:18px 0}
h3{margin:14px 0 8px;font-size:15px}

/* 移动端 */
@media(max-width:640px){
  .topbar{gap:8px}
  .tabs{margin-left:0;order:3;width:100%}
  th,td{padding:8px 8px;font-size:13px}
  .brand{font-size:14px}
}
