:root{--bg-void:#070b14;--bg-surface:#0d1420;--bg-elevated:#141e2e;--bg-hover:#1a2640;--border-subtle:#1e2d45;--border-active:#2d4a6b;--accent-primary:#00d4ff;--accent-secondary:#7b4fff;--accent-danger:#f36;--accent-success:#0f8;--accent-warning:#ffb800;--text-primary:#e8f4ff;--text-secondary:#7a9cc0;--text-muted:#3d5a7a;--glow-primary:0 0 20px #00d4ff26;--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--r:3px;--t-fast:.15s;--t-med:.3s;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg-void:#f0f4fa;--bg-surface:#fff;--bg-elevated:#f8faff;--bg-hover:#eef2fa;--border-subtle:#d0dcf0;--border-active:#6b9fd4;--accent-primary:#08c;--accent-secondary:#6b3fd4;--accent-danger:#c14;--accent-success:#074;--accent-warning:#c80;--text-primary:#0a1628;--text-secondary:#3d5a7a;--text-muted:#8aa0bc;--glow-primary:0 0 12px #0088cc1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg-void);color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased;transition:background var(--t-fast) ease, color var(--t-fast) ease;margin:0;font-size:13px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:.02em;margin:0;font-weight:600}a{color:var(--accent-primary);text-decoration:none}button,input,select,textarea{font-family:inherit;font-size:inherit}*{scrollbar-width:thin;scrollbar-color:var(--border-active) transparent}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-active);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--accent-primary)}@keyframes scanline{0%{opacity:0;transform:translateY(-2px)}10%{opacity:1}90%{opacity:1}to{transform:translateY(var(--scan-distance,200px));opacity:0}}@keyframes panel-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes data-flash{0%{background-color:#00d4ff38}to{background-color:#0000}}@keyframes dot-drift{0%{background-position:0 0,0 0}to{background-position:60px 60px,30px 30px}}@keyframes pulse-ring{0%{opacity:.7;box-shadow:0 0}to{opacity:1;box-shadow:0 0 0 6px #0000}}.panel-in{animation:panel-in var(--t-fast) ease-out both}.flash{animation:data-flash var(--t-med) ease-out}.scan{pointer-events:none;position:absolute;inset:0;overflow:hidden}.scan:after{content:"";background:linear-gradient(90deg, transparent, var(--accent-primary), transparent);height:2px;box-shadow:var(--glow-primary);animation:1.1s linear infinite scanline;position:absolute;left:0;right:0}.scan-inline{background:var(--border-subtle);width:100%;height:2px;position:relative;overflow:hidden}.scan-inline:after{content:"";background:linear-gradient(90deg, transparent, var(--accent-primary), transparent);width:40%;height:2px;animation:1.1s linear infinite scan-x;position:absolute;top:0;left:-40%}@keyframes scan-x{to{left:100%}}.panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r);flex-direction:column;min-height:0;display:flex;position:relative}.panel--active{border-color:var(--border-active);box-shadow:var(--glow-primary)}.panel__head{border-bottom:1px solid var(--border-subtle);flex:none;align-items:center;gap:8px;padding:8px 12px;display:flex}.panel__title{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);font-size:11px;font-weight:600}.panel__actions{align-items:center;gap:6px;margin-left:auto;display:flex}.panel__body{flex:auto;min-height:0;padding:12px;overflow:auto}.panel__body--flush{padding:0}.btn{border-radius:var(--r);border:1px solid var(--border-active);color:var(--text-primary);letter-spacing:.04em;cursor:pointer;transition:all var(--t-fast) ease;white-space:nowrap;background:0 0;justify-content:center;align-items:center;gap:6px;padding:6px 12px;font-size:12px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--accent-primary);color:var(--accent-primary);box-shadow:var(--glow-primary)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn--primary{background:var(--accent-primary);border-color:var(--accent-primary);color:var(--bg-void);font-weight:600}.btn--primary:hover:not(:disabled){filter:brightness(1.15);color:var(--bg-void)}.btn--danger{border-color:var(--accent-danger);color:var(--accent-danger)}.btn--danger:hover:not(:disabled){border-color:var(--accent-danger);color:var(--accent-danger);background:#ff336614}.btn--ghost{color:var(--text-secondary);border-color:#0000}.btn--ghost:hover:not(:disabled){border-color:var(--border-subtle);box-shadow:none}.btn--sm{padding:3px 8px;font-size:11px}.btn--icon{padding:5px}.field{flex-direction:column;gap:4px;display:flex}.field__label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);font-size:10px;font-weight:600}.input{background:var(--bg-void);border:1px solid var(--border-subtle);border-radius:var(--r);width:100%;color:var(--text-primary);transition:all var(--t-fast) ease;outline:none;padding:7px 10px}.input:focus{border-color:var(--accent-primary);box-shadow:var(--glow-primary)}.input::placeholder{color:var(--text-muted)}.input--mono{font-family:var(--font-mono)}select.input{cursor:pointer}textarea.input{resize:vertical;min-height:60px;font-family:inherit}.badge{border-radius:var(--r);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:600;font-family:var(--font-mono);border:1px solid;align-items:center;gap:4px;padding:1px 6px;display:inline-flex}.badge--buy{color:var(--accent-success)}.badge--sell{color:var(--accent-danger)}.badge--info{color:var(--accent-primary)}.badge--warn{color:var(--accent-warning)}.badge--muted{color:var(--text-muted)}.badge--violet{color:var(--accent-secondary)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.pnl{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500}.pnl--pos{color:var(--accent-success)}.pnl--neg{color:var(--accent-danger)}.pnl--flat{color:var(--text-secondary)}.table{border-collapse:collapse;width:100%;font-size:12px}.table thead th{z-index:1;background:var(--bg-surface);text-align:left;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);white-space:nowrap;-webkit-user-select:none;user-select:none;padding:7px 10px;font-size:10px;font-weight:600;position:sticky;top:0}.table thead th.sortable{cursor:pointer}.table thead th.sortable:hover{color:var(--accent-primary)}.table tbody td{border-bottom:1px solid var(--border-subtle);white-space:nowrap;padding:6px 10px}.table tbody tr{transition:background var(--t-fast) ease}.table tbody tr:hover{background:var(--bg-hover)}.table tbody tr.clickable{cursor:pointer}.table__empty{text-align:center;color:var(--text-muted);padding:28px}.shell{grid-template-columns:auto 1fr;height:100vh;display:grid;overflow:hidden}.sidebar{background:var(--bg-surface);border-right:1px solid var(--border-subtle);width:208px;transition:width var(--t-fast) ease;flex-direction:column;display:flex;overflow:hidden}.sidebar--collapsed{width:52px}.sidebar__brand{border-bottom:1px solid var(--border-subtle);align-items:center;gap:9px;min-height:52px;padding:14px;display:flex}.sidebar__mark{font-family:var(--font-display);color:var(--accent-primary);letter-spacing:.08em;flex:none;font-size:15px;font-weight:700}.sidebar__wordmark{font-family:var(--font-display);letter-spacing:.14em;color:var(--text-secondary);white-space:nowrap;font-size:11px}.sidebar__nav{flex-direction:column;flex:1;gap:2px;padding:8px 6px;display:flex;overflow-y:auto}.navlink{border-radius:var(--r);color:var(--text-secondary);transition:all var(--t-fast) ease;white-space:nowrap;border:1px solid #0000;align-items:center;gap:10px;padding:7px 9px;font-size:12px;display:flex}.navlink:hover{background:var(--bg-hover);color:var(--text-primary)}.navlink--active{color:var(--accent-primary);border-color:var(--border-active);background:var(--bg-hover);box-shadow:var(--glow-primary)}.navlink svg{flex:none}.sidebar__foot{border-top:1px solid var(--border-subtle);padding:8px}.main{flex-direction:column;min-width:0;display:flex;overflow:hidden}.topbar{border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);flex:none;align-items:center;gap:12px;min-height:52px;padding:0 16px;display:flex}.topbar__title{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;font-size:14px}.topbar__spacer{margin-left:auto}.topbar__user{flex-direction:column;align-items:flex-end;line-height:1.25;display:flex}.topbar__user-name{font-size:12px;font-weight:600}.topbar__user-role{color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase;font-size:10px}.page{flex:auto;min-height:0;padding:16px;overflow:auto}.page__head{align-items:center;gap:12px;margin-bottom:14px;display:flex}.page__title{letter-spacing:.06em;font-size:18px}.page__sub{color:var(--text-secondary);font-size:12px}.page__actions{align-items:center;gap:8px;margin-left:auto;display:flex}.dot{border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.dot--ok{background:var(--accent-success);color:var(--accent-success)}.dot--bad{background:var(--accent-danger);color:var(--accent-danger)}.dot--warn{background:var(--accent-warning);color:var(--accent-warning)}.dot--pulse{animation:1.6s ease-out infinite pulse-ring}.login{background:var(--bg-void);place-items:center;min-height:100vh;display:grid;position:relative;overflow:hidden}.login__grid{background-image:radial-gradient(circle, var(--border-active) 1px, transparent 1px), radial-gradient(circle, var(--border-subtle) 1px, transparent 1px);opacity:.5;pointer-events:none;background-position:0 0,15px 15px;background-size:60px 60px,30px 30px;animation:30s linear infinite dot-drift;position:absolute;inset:-60px}.login__card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r);width:360px;max-width:calc(100vw - 32px);padding:30px 28px;position:relative}.login__mark{font-family:var(--font-display);color:var(--accent-primary);letter-spacing:.08em;text-align:center;text-shadow:var(--glow-primary);font-size:42px;font-weight:700;line-height:1}.login__title{font-family:var(--font-display);letter-spacing:.15em;text-align:center;color:var(--text-secondary);text-transform:uppercase;margin:10px 0 22px;font-size:13px}.login__error{border:1px solid var(--accent-danger);border-radius:var(--r);color:var(--accent-danger);margin-top:10px;padding:7px 10px;font-size:12px}.login__foot{text-align:center;color:var(--text-muted);letter-spacing:.1em;margin-top:18px;font-size:10px}.modal__backdrop{z-index:60;animation:panel-in var(--t-fast) ease-out both;background:#03060cb8;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--bg-elevated);border:1px solid var(--border-active);border-radius:var(--r);box-shadow:var(--glow-primary);flex-direction:column;width:100%;max-height:calc(100vh - 48px);display:flex}.modal__head{border-bottom:1px solid var(--border-subtle);align-items:center;padding:12px 14px;display:flex}.modal__title{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;font-size:12px}.modal__body{padding:14px;overflow:auto}.modal__foot{border-top:1px solid var(--border-subtle);justify-content:flex-end;gap:8px;padding:12px 14px;display:flex}@keyframes drawer-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.drawer{z-index:55;background:var(--bg-elevated);border-left:1px solid var(--border-active);width:520px;max-width:100vw;animation:drawer-in var(--t-fast) ease-out both;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.toasts{z-index:80;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--bg-elevated);border:1px solid var(--border-active);border-radius:var(--r);min-width:240px;max-width:380px;animation:panel-in var(--t-fast) ease-out both;border-left-width:2px;align-items:flex-start;gap:8px;padding:9px 12px;font-size:12px;display:flex}.toast--success{border-left-color:var(--accent-success)}.toast--error{border-left-color:var(--accent-danger)}.toast--info{border-left-color:var(--accent-primary)}.tabs{border-bottom:1px solid var(--border-subtle);gap:2px;margin-bottom:14px;display:flex}.tab{color:var(--text-secondary);cursor:pointer;letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:600;font-family:var(--font-display);transition:all var(--t-fast) ease;background:0 0;border:1px solid #0000;border-bottom:none;padding:7px 14px}.tab:hover{color:var(--text-primary)}.tab--active{color:var(--accent-primary);border-color:var(--border-subtle);background:var(--bg-surface);border-bottom:1px solid var(--bg-surface);margin-bottom:-1px}.row{align-items:center;gap:8px;display:flex}.col{flex-direction:column;gap:8px;display:flex}.grow{flex:auto;min-width:0}.muted{color:var(--text-secondary)}.dim{color:var(--text-muted)}.small{font-size:11px}.tiny{letter-spacing:.08em;text-transform:uppercase;font-size:10px}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.center{place-items:center;display:grid}.stat__value{font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:22px;font-weight:600}.stat__label{letter-spacing:.12em;text-transform:uppercase;color:var(--text-secondary);font-size:10px}.divider{background:var(--border-subtle);height:1px;margin:10px 0}.kv{grid-template-columns:130px 1fr;gap:6px 10px;font-size:12px;display:grid}.kv__k{color:var(--text-secondary)}.chip{border:1px solid var(--border-subtle);border-radius:var(--r);color:var(--text-secondary);cursor:pointer;transition:all var(--t-fast) ease;letter-spacing:.06em;background:0 0;padding:2px 7px;font-size:10px}.chip:hover{border-color:var(--border-active);color:var(--text-primary)}.chip--on{color:var(--accent-primary);border-color:var(--accent-primary);box-shadow:var(--glow-primary)}.react-grid-item.react-grid-placeholder{border-radius:var(--r);background:var(--accent-primary)!important;opacity:.12!important}.react-grid-item>.react-resizable-handle{width:14px;height:14px;bottom:1px;right:1px}.react-grid-item>.react-resizable-handle:after{content:"";border-right:2px solid var(--border-active);border-bottom:2px solid var(--border-active);width:6px;height:6px;position:absolute;bottom:3px;right:3px}.widget-drag{cursor:move}.widget-drag:active{cursor:grabbing}.react-grid-item .panel__head{padding-right:30px}
