:root{--bg: #0b0f17;--panel: #121826;--panel2: #0e1422;--line: #1f2a3c;--txt: #e6edf6;--muted: #8aa0bd;--green: #37d399;--red: #ff6b6b;--amber: #f5b942;--cyan: #39c6e0;--blue: #5b8def;--gray: #6b7a90;--sidebar-w: 200px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--txt);font:13px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.pos{color:var(--green)}.neg{color:var(--red)}.mut{color:var(--muted)}.amber{color:var(--amber)}.cyan{color:var(--cyan)}.appshell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;align-self:flex-start;height:100vh;width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:#0a0e16;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:4px;padding:12px 10px}.sidebar .brand{display:flex;align-items:center;gap:9px;padding:4px 6px 12px;border-bottom:1px solid var(--line);margin-bottom:8px;font-weight:700;letter-spacing:.02em}.sidebar a{display:block;padding:7px 10px;border-radius:6px;color:var(--muted);text-decoration:none}.sidebar a:hover{background:var(--panel);color:var(--txt)}.sidebar a.active{background:var(--panel);color:var(--txt);box-shadow:inset 2px 0 0 var(--cyan)}.content{flex:1 1 auto;min-width:0;padding:16px 18px 40px}.topbar{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}.topbar .ttl{font-size:16px;font-weight:700}.kpibar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px;min-width:116px}.kpi .k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.kpi .v{font-size:16px;font-weight:700;margin-top:2px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:14px}.panel>h2{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px;align-items:start}@media(max-width:1080px){.split{grid-template-columns:minmax(0,1fr)}}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line);white-space:nowrap}th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}tbody tr:hover{background:var(--panel2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}td.wrap{white-space:normal;min-width:200px}.badge{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600;border:1px solid var(--line);background:var(--panel2);color:var(--muted)}.badge.live{color:var(--green);border-color:#37d39966}.badge.idle{color:var(--gray)}.badge.book{color:var(--cyan);border-color:#39c6e066}.badge.delta{color:var(--blue);border-color:#5b8def66}.badge.trade{color:var(--amber);border-color:#f5b94266}.badge.bba{color:var(--muted)}.badge.user{color:var(--amber);border-color:#f5b9428c;background:#f5b94214}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}button,select,input[type=text],input[type=datetime-local]{background:var(--panel2);color:var(--txt);border:1px solid var(--line);border-radius:6px;padding:5px 9px;font:inherit}button{cursor:pointer}button:hover:not(:disabled){border-color:var(--blue)}button:disabled{opacity:.45;cursor:default}label.check{display:inline-flex;align-items:center;gap:5px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}label.check input{accent-color:var(--cyan)}input[type=range]{width:100%;accent-color:var(--cyan)}.timeline{max-height:62vh;overflow-y:auto;border:1px solid var(--line);border-radius:8px}.timeline table{border-collapse:separate;border-spacing:0}.timeline thead th{position:sticky;top:0;background:var(--panel);z-index:1}.timeline tbody tr{cursor:pointer}.timeline tbody tr.user-row{background:#f5b94212}.timeline tbody tr.selected{background:#39c6e024}.book{display:grid;grid-template-columns:1fr 1fr;gap:12px}.book .side h3{margin:0 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.book .depth{position:relative}.book .depth span{position:relative;z-index:1}.book .bar{position:absolute;top:1px;bottom:1px;right:0;border-radius:3px;opacity:.16}.book .bids .bar{background:var(--green)}.book .asks .bar{background:var(--red)}.book .bids td.price{color:var(--green)}.book .asks td.price{color:var(--red)}.book tr.mine{background:#5b8def1a;box-shadow:inset 2px 0 0 var(--blue)}.book td.own{color:var(--blue);font-weight:700;white-space:nowrap}.ownlist{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}.ownlist .k{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;margin-right:2px}.ownlist .own{border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:12px;font-variant-numeric:tabular-nums}.ownlist .own.buy{color:var(--green);border-color:#37d39966}.ownlist .own.sell{color:var(--red);border-color:#ff6b6b66}.flash{animation:flash-bg .7s ease-out;border-radius:4px}.flash.up{animation-name:flash-up}.flash.down{animation-name:flash-down}@keyframes flash-bg{0%{background-color:#8aa0bd61}to{background-color:transparent}}@keyframes flash-up{0%{background-color:#37d39961}to{background-color:transparent}}@keyframes flash-down{0%{background-color:#ff6b6b61}to{background-color:transparent}}@media(prefers-reduced-motion:reduce){.flash,.flash.up,.flash.down{animation:none}}.empty{color:var(--muted);padding:18px 4px;text-align:center}.error{color:var(--red);border:1px solid rgba(255,107,107,.35);background:#ff6b6b12;border-radius:8px;padding:8px 12px;margin-bottom:12px}.hint{color:var(--muted);font-size:11px;margin-top:6px}
