:root{--bg:#0b0f17;--surface:#121826;--surface-2:#1a2232;--border:#1f2937;--text:#e6edf3;--muted:#8b949e;--primary:#6366f1;--accent:#22d3ee;--green:#10b981;--red:#ef4444;--shadow:0 6px 20px rgba(0,0,0,0.3);--radius:12px;--radius-sm:8px;--tx:0.2s ease}
[data-theme="light"]{--bg:#f8fafc;--surface:#fff;--surface-2:#f1f5f9;--border:#e2e8f0;--text:#0f172a;--muted:#64748b;--shadow:0 2px 12px rgba(15,23,42,0.08)}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px;line-height:1.55}
h1,h2{font-weight:600;margin:0}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:100;backdrop-filter:blur(8px)}
.brand{display:flex;align-items:center;gap:12px}
.logo{font-size:24px;width:40px;height:40px;display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--accent));border-radius:10px;box-shadow:0 4px 12px rgba(99,102,241,0.3)}
.brand h1{font-size:16px;letter-spacing:-0.02em}
.subtitle{color:var(--muted);font-size:12px}
.top-actions{display:flex;gap:10px;align-items:center}
.pulse{display:flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:rgba(16,185,129,0.12);color:var(--green);font-size:12px;font-weight:500}
.pulse .dot{width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.25)}}
.btn-icon{width:34px;height:34px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;display:grid;place-items:center;transition:var(--tx)}
.btn-icon:hover{background:var(--border)}
.btn-logout{padding:7px 13px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);text-decoration:none;font-size:13px;transition:var(--tx)}
.btn-logout:hover{background:var(--red);color:#fff;border-color:var(--red)}
main{max-width:1400px;margin:0 auto;padding:22px;display:flex;flex-direction:column;gap:18px}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;box-shadow:var(--shadow);transition:var(--tx)}
.stat-card:hover{transform:translateY(-2px)}
.stat-label{color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:6px}
.stat-value{font-size:24px;font-weight:700;letter-spacing:-0.02em;font-variant-numeric:tabular-nums}
.stat-value.money.positive{color:var(--green)}
.stat-value.money.negative{color:var(--red)}
.stat-sub{color:var(--muted);font-size:12px;margin-top:4px}
.row{display:grid;grid-template-columns:2fr 1fr;gap:18px}
@media(max-width:900px){.row{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}
.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.panel-head h2{font-size:14px}
.muted{color:var(--muted);font-size:12px}
.big-line{font-size:20px;font-weight:600;letter-spacing:-0.02em;font-variant-numeric:tabular-nums;margin-bottom:6px}
.metrics-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px 16px;font-variant-numeric:tabular-nums}
.metrics-grid>div{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px dashed var(--border);font-size:13px}
.metrics-grid .mk{color:var(--muted)}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border)}
th{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:0.06em;font-weight:600}
tbody tr:hover{background:var(--surface-2)}
td.pos{color:var(--green);font-weight:600}
td.neg{color:var(--red);font-weight:600}
.side-buy{color:var(--green);font-weight:600}
.side-sell{color:var(--red);font-weight:600}
.log{font-family:"JetBrains Mono","Courier New",monospace;font-size:11.5px;background:var(--bg);padding:14px;border-radius:var(--radius-sm);max-height:320px;overflow-y:auto;white-space:pre-wrap;border:1px solid var(--border);color:var(--text);line-height:1.6;margin:0}
footer{max-width:1400px;margin:16px auto;padding:14px 24px;color:var(--muted);font-size:12px;display:flex;gap:12px;justify-content:center;border-top:1px solid var(--border)}
.sep{opacity:.4}
.login-body{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--bg),var(--surface));padding:20px}
.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:40px 32px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,0.3)}
.login-card .brand-logo{font-size:36px;width:64px;height:64px;display:grid;place-items:center;margin:0 auto 14px;background:linear-gradient(135deg,var(--primary),var(--accent));border-radius:14px;box-shadow:0 10px 30px rgba(99,102,241,0.4)}
.login-card h1{margin-bottom:4px;font-size:22px}
.login-card .subtitle{display:block;margin-bottom:22px}
.login-card form{display:flex;flex-direction:column;gap:12px}
.login-card label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:0.06em;text-align:left;font-weight:600}
.login-card input{padding:11px 13px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:14px;transition:var(--tx)}
.login-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(99,102,241,0.15)}
.login-card button{margin-top:6px;padding:12px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:600;cursor:pointer;letter-spacing:0.02em;transition:var(--tx)}
.login-card button:hover{transform:translateY(-1px);box-shadow:0 10px 30px rgba(99,102,241,0.3)}
/* FIX: prevent Chart.js infinite resize loop */
#equity-chart-wrap {
  position: relative;
  height: 420px !important;
  max-height: 420px !important;
  width: 100%;
  overflow: hidden;
}
canvas#equity-chart {
  max-height: 420px !important;
}
