:root{--bg-0: #0a0d12;--bg-1: #10141b;--bg-2: #151a23;--bg-3: #1c222c;--bg-hover: #222936;--border: #262e3a;--border-strong: #35404f;--text-0: #e8edf5;--text-1: #a9b4c4;--text-2: #6f7c8f;--accent: #4c9aff;--accent-dim: #2a5c99;--up: #26a269;--up-bg: rgba(38, 162, 105, .12);--down: #e05561;--down-bg: rgba(224, 85, 97, .12);--warn: #e5a13a;--warn-bg: rgba(229, 161, 58, .12);--info: #58a6ff;--neutral-bg: rgba(120, 133, 152, .12);--mono: "JetBrains Mono", "SFMono-Regular", "Menlo", "Consolas", monospace;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--radius: 6px;--radius-lg: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg-0);color:var(--text-0);font-family:var(--sans);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app{display:flex;flex-direction:column;height:100%;min-height:100vh}.app-header{display:flex;align-items:center;gap:18px;padding:10px 18px;background:linear-gradient(180deg,var(--bg-2),var(--bg-1));border-bottom:1px solid var(--border);flex-wrap:wrap;flex:0 0 auto}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{font-size:16px;margin:0;letter-spacing:.4px;font-weight:650}.brand .sub{color:var(--text-2);font-size:11px}.header-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.spacer{flex:1 1 auto}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.tabs{display:flex;align-items:stretch;gap:2px;padding:0 14px;background:var(--bg-1);border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden;flex:0 0 auto;min-height:46px}.tab{appearance:none;border:none;background:transparent;color:var(--text-1);padding:0 16px;min-height:46px;display:inline-flex;align-items:center;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;font-size:13.5px;font-weight:500;line-height:1.2}.tab:hover{color:var(--text-0);background:var(--bg-2)}.tab[aria-selected=true]{color:var(--text-0);border-bottom-color:var(--accent);background:var(--bg-2);font-weight:650}.content{flex:1 1 auto;min-height:0;overflow:auto;padding:16px 18px 40px}.content-inner{max-width:1800px;margin:0 auto}.panel{background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:14px;overflow:hidden}.panel-head{display:flex;align-items:center;gap:10px;padding:9px 14px;background:var(--bg-2);border-bottom:1px solid var(--border)}.panel-head h2{font-size:12.5px;margin:0;font-weight:600;letter-spacing:.5px;text-transform:uppercase;color:var(--text-1)}.panel-head .hint{color:var(--text-2);font-size:11px}.panel-body{padding:14px}.panel-body.flush{padding:0}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.grid.cols-4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.stat{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.stat .label{color:var(--text-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px}.stat .value{font-family:var(--mono);font-size:17px;font-weight:600;margin-top:3px;word-break:break-all}.stat .meta{color:var(--text-2);font-size:11px;margin-top:2px;font-family:var(--mono)}.stat.compact .value{font-size:14px}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:10.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;border:1px solid transparent;white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ok{color:var(--up);background:var(--up-bg);border-color:#26a26959}.badge.bad{color:var(--down);background:var(--down-bg);border-color:#e0556159}.badge.warn{color:var(--warn);background:var(--warn-bg);border-color:#e5a13a59}.badge.neutral{color:var(--text-1);background:var(--neutral-bg);border-color:var(--border-strong)}.badge.info{color:var(--info);background:#58a6ff1f;border-color:#58a6ff59}.badge.live{color:#ff8b8b;background:#e055612e;border-color:var(--down)}.badge.paper{color:var(--info);background:#58a6ff24;border-color:#58a6ff66}.badge.action-enter{color:var(--up);background:var(--up-bg);border-color:#26a26966}.badge.action-exit{color:var(--down);background:var(--down-bg);border-color:#e0556166}.badge.action-hold{color:var(--text-1);background:var(--neutral-bg);border-color:var(--border-strong)}.btn{appearance:none;border:1px solid var(--border-strong);background:var(--bg-3);color:var(--text-0);padding:7px 13px;border-radius:var(--radius);cursor:pointer;font-weight:600;font-size:12.5px;letter-spacing:.3px;transition:background .12s ease,border-color .12s ease}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent-dim)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--up);border-color:var(--up);color:#04120b}.btn.primary:hover:not(:disabled){background:#2fb377;border-color:#2fb377}.btn.stop{background:var(--bg-3);border-color:var(--warn);color:var(--warn)}.btn.stop:hover:not(:disabled){background:var(--warn-bg)}.btn.danger{background:var(--down);border-color:var(--down);color:#2a0509}.btn.danger:hover:not(:disabled){background:#ef6773;border-color:#ef6773}.btn.ghost{background:transparent}.btn.small{padding:4px 9px;font-size:11.5px}.btn.large{padding:10px 18px;font-size:13.5px}table.data{width:100%;border-collapse:collapse;font-size:12px}table.data th{text-align:left;padding:7px 10px;background:var(--bg-2);color:var(--text-2);font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:1;white-space:nowrap}table.data td{padding:6px 10px;border-bottom:1px solid rgba(38,46,58,.6);vertical-align:middle}table.data tbody tr:hover{background:var(--bg-2)}table.data td.num,table.data th.num{text-align:right;font-family:var(--mono);white-space:nowrap}table.data td.mono{font-family:var(--mono)}table.data tr.clickable{cursor:pointer}.scroll-y{max-height:460px;overflow-y:auto}.scroll-y.short{max-height:300px}.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--text-1)}.mono{font-family:var(--mono)}.muted{color:var(--text-2)}.small{font-size:11px}.bold{font-weight:700}.nowrap{white-space:nowrap}.truncate{max-width:340px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gap-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:8px}.quality-flags{display:flex;gap:5px;flex-wrap:wrap}.flag{font-size:10px;padding:1px 6px;border-radius:3px;border:1px solid var(--border-strong);color:var(--text-1)}.flag.ok{color:var(--up);border-color:#26a26966}.flag.bad{color:var(--down);border-color:#e0556166}.flag.warn{color:var(--warn);border-color:#e5a13a66}.bar{height:5px;border-radius:3px;background:var(--bg-3);overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent)}.bar.risk>span{background:var(--warn)}.bar.danger>span{background:var(--down)}.alert{display:flex;align-items:flex-start;gap:10px;padding:10px 13px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-2);margin-bottom:12px}.alert.error{border-color:var(--down);background:var(--down-bg)}.alert.warn{border-color:var(--warn);background:var(--warn-bg)}.alert.info{border-color:var(--accent-dim);background:#4c9aff14}.alert .title{font-weight:700}.alert .body{color:var(--text-1)}.toast{position:fixed;right:18px;bottom:18px;z-index:50;max-width:460px;padding:11px 14px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-3);box-shadow:0 8px 24px #00000080;cursor:pointer}.toast.error{border-color:var(--down)}.toast.success{border-color:var(--up)}.chart{width:100%;display:block}.chart-empty{color:var(--text-2);font-size:11.5px;padding:18px 0;text-align:center}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:5px}.field label{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2)}.field input,.field select{background:var(--bg-0);border:1px solid var(--border-strong);border-radius:var(--radius);padding:7px 9px;font-family:var(--mono)}.field input:focus,.field select:focus{outline:none;border-color:var(--accent)}.field .help{color:var(--text-2);font-size:11px}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:radial-gradient(circle at 50% 0%,#131926 0%,var(--bg-0) 62%)}.login-card{width:100%;max-width:380px;background:var(--bg-1);border:1px solid var(--border);border-radius:var(--radius-lg);padding:26px 24px 24px;display:flex;flex-direction:column;gap:14px}.login-brand{display:flex;flex-direction:column;gap:3px}.login-brand h1{font-size:18px;margin:0;letter-spacing:.4px;font-weight:650}.login-brand .sub{color:var(--text-2);font-size:11px}.login-hint{color:var(--text-1);font-size:12px;margin:0;line-height:1.5}.login-hint code{font-family:var(--mono);font-size:11px;background:var(--bg-3);border:1px solid var(--border);border-radius:3px;padding:0 4px}.login-field{display:flex;flex-direction:column;gap:5px}.login-field span{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-2)}.login-field input{background:var(--bg-0);border:1px solid var(--border-strong);border-radius:var(--radius);padding:9px 10px;font-family:var(--mono);font-size:13px}.login-field input:focus{outline:none;border-color:var(--accent)}.login-error{background:var(--down-bg);border:1px solid rgba(224,85,97,.45);border-radius:var(--radius);color:#ffb3b9;padding:8px 10px;font-size:12px}.login-submit{width:100%;justify-content:center}.symbol-picker{display:flex;flex-wrap:wrap;gap:6px;max-height:190px;overflow-y:auto;padding:4px 0}.symbol-chip{border:1px solid var(--border-strong);background:var(--bg-2);border-radius:999px;padding:4px 11px;cursor:pointer;font-family:var(--mono);font-size:11.5px}.symbol-chip[aria-pressed=true]{background:var(--accent-dim);border-color:var(--accent);color:#fff}.symbol-chip:disabled{opacity:.35;cursor:not-allowed}.kv{display:grid;grid-template-columns:minmax(120px,1fr) auto;gap:5px 12px;font-size:12px}.kv dt{color:var(--text-2)}.kv dd{margin:0;font-family:var(--mono);text-align:right}.journal-entry{display:flex;gap:12px;padding:8px 12px;border-bottom:1px solid rgba(38,46,58,.6)}.journal-entry .time{font-family:var(--mono);color:var(--text-2);min-width:76px}.journal-entry .kind{min-width:74px}.journal-entry .title{font-weight:600}.journal-entry .detail{color:var(--text-1)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--bg-1)}.toolbar .field{flex-direction:row;align-items:center;gap:6px}.toolbar .field label{text-transform:none;letter-spacing:0;font-size:11.5px}.toolbar input,.toolbar select{padding:4px 7px;font-size:11.5px}.candle-tooltip{position:absolute;pointer-events:none;background:var(--bg-3);border:1px solid var(--border-strong);border-radius:4px;padding:6px 9px;font-family:var(--mono);font-size:11px;z-index:20;white-space:pre}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-2);margin:18px 0 8px}.empty{color:var(--text-2);padding:22px;text-align:center;font-size:12.5px}@media (max-width: 900px){.app-header{gap:10px;padding:9px 12px}.content{padding:12px}.truncate{max-width:180px}}
