:root{color-scheme:dark;--bg: #081019;--panel: #101a2a;--panel-hi: #152238;--line: #26344c;--text: #edf3fb;--muted: #93a7c7;--accent: #35d39c;--danger: #ff6f7d;--mono: "IBM Plex Mono", ui-monospace, monospace;--sans: "Space Grotesk", ui-sans-serif, system-ui}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);background:radial-gradient(800px 500px at 10% -10%,rgba(53,211,156,.14),transparent 60%),radial-gradient(900px 500px at 100% 0%,rgba(71,130,255,.16),transparent 60%),var(--bg);color:var(--text)}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.tiny{font-size:12px}.eyebrow{color:#8ec5ff;letter-spacing:.08em;text-transform:uppercase;font-size:11px}.login-shell{min-height:100%;display:grid;place-items:center;position:relative;overflow:hidden;padding:24px}.orb{position:absolute;filter:blur(30px);opacity:.4;border-radius:999px}.orb-a{width:360px;height:360px;background:#1e8fff;left:-120px;top:-80px}.orb-b{width:420px;height:420px;background:#22c58b;right:-140px;bottom:-120px}.login-card{position:relative;width:min(460px,100%);background:#101a2aeb;border:1px solid var(--line);border-radius:18px;padding:24px;box-shadow:0 20px 80px #00000073;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-card h1{margin:6px 0;font-size:28px}.login-card p{margin:0 0 18px}.login-card label{display:block;margin:10px 0;font-size:14px;color:var(--muted)}.login-card input{width:100%;margin-top:6px;padding:12px;border-radius:10px;border:1px solid var(--line);background:#0d1522;color:var(--text)}.primary-btn{margin-top:12px;width:100%;border:none;padding:12px;border-radius:10px;background:linear-gradient(90deg,#25d59f,#65e1c9);color:#07251b;font-weight:700;cursor:pointer}.error{margin-top:10px;min-height:18px;color:var(--danger);font-size:13px}.app-shell{min-height:100%}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line);background:#081019e0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10}.topbar h1{margin:2px 0 0;font-size:22px}.topbar-actions{display:flex;align-items:center;gap:10px}.topbar-actions button{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:8px 12px;border-radius:10px;cursor:pointer}.topbar-actions select{border:1px solid var(--line);background:var(--panel);color:var(--text);padding:8px 12px;border-radius:10px;font-family:var(--mono)}.soft-green{border-color:#1f6e53!important;background:#10261f!important;color:#9cf0d1!important}.soft-red{border-color:#7a2c33!important;background:#2a1216!important;color:#ffb0b7!important}.soft-blue{border-color:#284e7a!important;background:#101e31!important;color:#b9d6ff!important}.soft-yellow{border-color:#8f7426!important;background:#2c240f!important;color:#ffdc73!important}.ghost-danger{background:transparent!important}.topbar-actions button:disabled{opacity:.6;cursor:default}.chip{border:1px solid #1f6e53;background:#0f241d;color:#8af0cc;border-radius:999px;padding:5px 10px;font-size:12px}.layout-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px;padding:14px}.panel{background:linear-gradient(180deg,#101a2af2,#0d1422f2);border:1px solid var(--line);border-radius:14px;padding:14px}.panel h3{margin:0 0 10px;font-size:15px}.panel pre{margin:0;max-height:280px;overflow:auto;font-family:var(--mono);font-size:12px;background:#070a108c;border:1px solid #1c2638;border-radius:10px;padding:10px;color:#c8d8ef}.control-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.control-field{display:grid;gap:6px;font-size:12px;color:var(--muted)}.control-field input{width:100%;border:1px solid var(--line);background:#0d1522;color:var(--text);border-radius:10px;padding:10px;font-family:var(--mono)}.number-field-shell{display:grid;grid-template-columns:minmax(0,1fr) 26px;width:100%}.number-field-input{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.number-field-spin{display:grid;grid-template-rows:1fr 1fr}.number-field-spin-btn{border:1px solid var(--line);border-left:0;background:#111d2d;color:#d4e6ff;font-family:var(--mono);font-size:10px;line-height:1;padding:0;cursor:pointer;-webkit-user-select:none;user-select:none}.number-field-spin-btn:first-child{border-top-right-radius:10px}.number-field-spin-btn:last-child{border-top:0;border-bottom-right-radius:10px}.number-field-spin-btn:hover:not(:disabled){background:#18304a}.number-field-spin-btn:disabled{cursor:not-allowed;opacity:.45}.control-field input[readonly]{background:#142135b3;color:#c0d6f4;border-color:#2e4d79}.control-field select{width:100%;border:1px solid var(--line);background:#0d1522;color:var(--text);border-radius:10px;padding:10px;font-family:var(--mono)}.status-tile{border:1px solid var(--line);border-radius:10px;padding:10px;background:#0d1522}.status-ok{border-color:#1f6e53;background:#10261fa6}.status-bad{border-color:#7a2c33;background:#2a1216a6}.status-label{color:var(--muted);font-size:11px;margin-bottom:4px}.status-value{font-family:var(--mono);font-size:13px}.status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.runtime-meta{margin-top:10px;display:grid;gap:4px;color:var(--muted)}.error-inline{border:1px solid #7a2c33;background:#7a2c3324;color:#ffc2c8;border-radius:10px;padding:10px;font-size:13px}.panel-title-row{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}.span-4{grid-column:span 4}.span-6{grid-column:span 6}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.open-positions-panel{order:-55}.spread-history-panel{order:-50}.symbol-strategy-panel{order:-40}.trading-control-panel{order:-35}.op-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),560px));justify-content:center;gap:16px}.opportunity-filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin-bottom:10px;align-items:end}.opportunity-filters .toggle-field{min-height:40px}.op-card{background:linear-gradient(180deg,#132238,#101a2b 72%);border:1px solid #36557f;border-radius:14px;width:min(560px,100%);padding:14px 14px 12px;box-shadow:inset 0 0 0 1px #7aabec0a}.op-card-watched{border-color:#2f7d60;box-shadow:inset 0 0 0 1px #60dcb029}.op-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.op-star-btn{margin-left:auto;width:30px;height:30px;border-radius:999px;border:1px solid #36557f;background:#0a121eb3;color:#6d86ac;font-size:16px;line-height:1;display:grid;place-items:center;cursor:pointer}.op-star-btn:hover{border-color:#5a77a3;color:#9eb8de}.op-star-btn:disabled{opacity:.6;cursor:default}.op-star-btn-on{border-color:#9d7f2e;background:#3c3010b8;color:#ffd85a;box-shadow:0 0 10px #ffd85a38}.op-rank{border:1px solid #34639a;border-radius:999px;min-width:34px;text-align:center;font-size:11px;color:#9bc8ff;padding:3px 6px;background:#19304d99}.op-symbol{font-weight:700;letter-spacing:.02em;font-size:clamp(24px,1.2vw,34px);line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.edge-pill{border-radius:999px;padding:4px 8px;font-size:11px;border:1px solid #2c3d56}.edge-pos{color:#9df5d8;background:#1e5e4747;border-color:#266f55}.edge-neutral{color:#c7d3e7;background:#2530424d}.op-meta-tags{display:flex;flex-wrap:wrap;gap:6px;margin:-2px 0 8px}.op-tag{border:1px solid #35557d;border-radius:999px;padding:2px 7px;font-size:10px;letter-spacing:.03em;color:#c7dbfa}.op-tag-watch{border-color:#2f7d60;color:#9ff0d1;background:#2f7d6033}.op-tag-trade{border-color:#2e5c87;color:#aaceff;background:#2e5c8738}.op-tag-muted{border-color:#3e4b63;color:#9aa9c4}.op-tag-route{border-color:#365983;background:#1221378c}.op-tag-direction{border-color:#4b5f7f;background:#141c2b94}.op-venue{font-weight:700;letter-spacing:.02em}.op-venue-sep,.op-dir-divider{color:#6e81a2;margin:0 3px}.op-dir-label{color:#8ea0bd;margin-right:4px;text-transform:uppercase;font-size:9px}.op-venue-binance{color:#f3d36b}.op-venue-okx{color:#88f0c7}.op-venue-mexc{color:#7fd3ff}.op-venue--{color:#9aa9c4}.op-prices{display:grid;gap:6px;margin-bottom:8px;padding:8px 10px;border:1px solid #264062;border-radius:9px;background:#080e1770}.legend-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:#dbe7f7}.legend-row .mono{margin-left:auto;font-size:11px;color:#c3d5ef}.op-binance{color:#b8ddff}.op-okx,.op-mexc{color:#c4ffed}.op-leg-row{border:1px solid #274061;border-radius:8px;padding:5px 7px;background:#0a111c9e}.op-leg-row-short{border-color:#5a3340;background:linear-gradient(90deg,#3e182073,#0a111c9e)}.op-leg-row-long{border-color:#2d5f4f;background:linear-gradient(90deg,#13352973,#0a111c9e)}.op-dir-arrow{display:inline-flex;width:14px;justify-content:center;font-size:13px;font-weight:700}.op-dir-arrow-short{color:#ff7f89}.op-dir-arrow-long{color:#63f5d0}.op-leg-exchange{font-weight:700;color:#dbe7f7}.op-leg-side{border:1px solid #2c476d;border-radius:999px;padding:1px 6px;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#9bb8dd}.legend-dot{width:8px;height:8px;border-radius:999px;display:inline-block;margin-right:6px}.dot-binance{background:#63b3ff;box-shadow:0 0 8px #63b3ff8c}.dot-mexc{background:#5cf0c6;box-shadow:0 0 8px #5cf0c68c}.price-chart{width:100%;height:196px;background:linear-gradient(180deg,#060b12ad,#080c1485),radial-gradient(180px 80px at 10% 5%,rgba(83,139,207,.12),transparent 75%);border-radius:10px;border:1px solid #284368;display:block}.chart-frame-bg{fill:#070d16a6}.chart-axis-bg{fill:#080e18e6}.history-edge-chart{background:#070a106b;border:1px solid #20314c;border-radius:10px;display:block}.history-edge-chart.is-draggable{cursor:grab}.history-edge-chart.is-dragging{cursor:grabbing}.history-chart-y-label{fill:#9eb7de;font-size:14px;font-weight:700;font-family:var(--mono);stroke:#060c16e6;stroke-width:2px;paint-order:stroke fill}.chart-grid{stroke:#1d3250;stroke-width:.8;opacity:.82}.chart-grid-v{opacity:.55}.chart-grid-static{stroke:#1a2b44;stroke-width:1;opacity:.52}.chart-zero-line{stroke:#2f6eb0;stroke-width:1.2;stroke-dasharray:4 4}.line-binance{stroke:#75c0ff;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 2px rgba(117,192,255,.42))}.line-mexc{stroke:#63f5d0;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 2px rgba(99,245,208,.38))}.line-history-min{stroke:#ff9f5a;filter:drop-shadow(0 0 4px rgba(255,159,90,.45))}.line-history-max{stroke:#63b3ff;filter:drop-shadow(0 0 4px rgba(99,179,255,.55))}.line-history-reco-entry{stroke:#5cf0c6;stroke-width:1.2;stroke-dasharray:6 4;opacity:.92}.line-history-reco-exit{stroke:#ffc86d;stroke-width:1.2;stroke-dasharray:6 4;opacity:.92}.chart-hover-line{stroke:#9fcaff;stroke-width:1;stroke-dasharray:4 3;opacity:.9}.chart-hover-vline{stroke:#8eb9ea;stroke-width:1;stroke-dasharray:3 3;opacity:.92}.chart-hover-dot{fill:#cbe3ff;stroke:#214a76;stroke-width:1}.chart-tooltip-box{fill:#070d16f2;stroke:#2b4f7f;stroke-width:1}.chart-tooltip-text{fill:#d6e8ff;font-size:12px;font-family:var(--mono)}.spread-area{opacity:.96}.chart-y-label{fill:#7f96bb;font-size:6.5px;font-weight:600;font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0;text-rendering:optimizeLegibility}.spark-placeholder{height:196px;border-radius:10px;border:1px dashed #284368;background:#070d1766}.op-spread-meter{margin-top:8px;display:grid;gap:5px}.op-spread-label{font-size:11px;color:#a8c5ea}.op-meter-track{width:100%;height:6px;border-radius:999px;background:#102036;border:1px solid #233a5a;overflow:hidden}.op-meter-fill{height:100%;background:linear-gradient(90deg,#3f84ff,#52e6c2)}.op-meta{display:flex;justify-content:space-between;margin-top:8px;color:var(--muted);font-size:11px;gap:10px;flex-wrap:wrap}.op-actions{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}.op-action{border:1px solid #33507a;background:#0c1725c7;color:#bdd9ff;border-radius:999px;padding:5px 10px;font-size:11px;cursor:pointer;font-family:var(--mono)}.op-action:disabled{opacity:.6;cursor:default}.op-action-active{border-color:#1f6e53;background:#123428b3;color:#a4f4d7}.history-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#03080eb8;display:grid;place-items:center;z-index:60;padding:18px}.history-modal{width:min(1600px,96vw);max-height:92vh;overflow:hidden;background:linear-gradient(180deg,#101a2afa,#0b121ffa);border:1px solid #2e486f;border-radius:14px;padding:14px;display:flex;flex-direction:column}.history-modal-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;margin-bottom:8px}.history-modal-head h3{margin:4px 0 0}.history-chart-scroll{overflow:hidden;padding-bottom:0;border:1px solid #20314c;border-radius:10px;background:#080d1699;flex:1 1 auto;height:clamp(420px,72vh,860px)}.history-chart-scroll .history-edge-chart{width:100%;height:100%;border:0;border-radius:0;touch-action:none}.history-rows-table{margin-top:10px;max-height:320px;overflow:auto;display:grid;gap:6px}.history-row{display:grid;grid-template-columns:110px minmax(230px,1fr) minmax(230px,1fr) minmax(180px,1fr) minmax(240px,1fr);gap:8px;border:1px solid #24364f;border-radius:8px;background:#090e1880;padding:7px 8px;white-space:nowrap}.trades-history-meta{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:10px;color:#a7bedf}.trades-history-table{border:1px solid #24364f;border-radius:10px;background:#090e1870;overflow:auto;max-height:72vh}.trades-history-head,.trades-history-row{display:grid;grid-template-columns:170px 110px minmax(180px,1fr) 130px 120px 130px minmax(260px,1fr);gap:8px;align-items:center;white-space:nowrap;padding:8px 10px}.trades-history-head{position:sticky;top:0;z-index:2;background:#121e31;border-bottom:1px solid #304763;color:#a8c9f7}.trades-history-row{border-bottom:1px solid rgba(43,62,88,.7)}.trades-history-row:last-child{border-bottom:0}.cards-page-panel .op-grid{margin-top:8px}.cards-search-field input{text-transform:uppercase}@media (max-width: 900px){.op-grid{grid-template-columns:1fr}.op-card{width:100%}}.positions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:12px}.position-card{background:linear-gradient(180deg,#15243a,#101a2a);border:1px solid #2d4465;border-radius:12px;padding:12px}.position-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}.position-symbol{font-weight:700;letter-spacing:.02em;font-size:16px}.position-legs{display:grid;grid-template-columns:1fr 1fr;gap:10px}.leg-block{border:1px solid #274164;border-radius:10px;padding:8px;background:#09101b73}.leg-title{font-size:12px;color:#a8c9ff;margin-bottom:4px}.position-meta{margin-top:10px;display:flex;justify-content:space-between;gap:10px;align-items:center}.pnl-pos{color:#80f1c8}.pnl-neg{color:#ff9da8}.events-list{display:grid;gap:8px}.symbol-strategy-grid{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:stretch;gap:12px;max-width:none;margin:0}.symbol-strategy-card{border:1px solid #324e75;background:radial-gradient(160px 70px at 95% -5%,rgba(105,179,255,.14),transparent 70%),linear-gradient(180deg,#15233b,#101a2b);border-radius:12px;padding:10px;width:min(620px,100%);max-width:620px;margin:0}.symbol-strategy-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.symbol-strategy-head-main{display:grid;gap:6px;min-width:0}.symbol-strategy-symbol-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.symbol-strategy-symbol{font-size:24px;font-weight:700;letter-spacing:.02em}.symbol-route-chip{border:1px solid #33507a;border-radius:999px;padding:3px 8px;font-size:11px;line-height:1.2;font-family:var(--mono)}.symbol-route-chip-short{border-color:#7a3744;color:#ffb2b9;background:#4a182080}.symbol-route-chip-long{border-color:#2a7058;color:#9ef0d4;background:#12342880}.symbol-strategy-tags{display:flex;gap:6px;flex-wrap:wrap}.symbol-strategy-tags span{border:1px solid #33507a;border-radius:999px;padding:2px 6px;background:#10203680}.symbol-strategy-tags button{border-radius:999px!important;padding:4px 8px!important}.symbol-strategy-live{display:flex;gap:8px;color:#bdd3f1;flex-wrap:wrap;font-size:11px}.symbol-route-bounds span{border:1px solid #2b4468;border-radius:8px;padding:2px 7px;background:#0b162585}.symbol-route-status{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.route-status-chip{border:1px solid #2f4d75;border-radius:999px;padding:2px 7px;background:#0c18288f}.route-status-ok{border-color:#2c775f;color:#9cf0d1;background:#143a2d75}.route-status-bad{border-color:#8b3a47;color:#ffc0c8;background:#44171f80}.route-status-info{border-color:#365c8d;color:#bdd8ff}.route-status-block{color:#ffb9c3}.route-status-pass{color:#95e8c5}.symbol-position-inline{margin-top:6px;display:flex;gap:8px;flex-wrap:wrap;color:#c8daf4;min-height:18px;font-size:11px}.symbol-position-inline.is-empty{visibility:hidden}.symbol-market-grid{margin-top:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.symbol-market-leg{border:1px solid #2b4366;border-radius:10px;background:#080e1894;padding:9px 10px;display:grid;gap:6px}.symbol-market-leg-short{border-color:#6f3342}.symbol-market-leg-long{border-color:#2b7159}.symbol-market-leg-stats{border-color:#3b5a84;grid-column:1 / -1}.symbol-market-leg-title{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#9dc6ff}.symbol-market-leg-row{display:flex;justify-content:space-between;gap:10px}.symbol-market-leg-row span{color:#8fa9cc}.symbol-market-leg-row strong{color:#e7f0ff}.symbol-strategy-columns{margin-top:8px;display:grid;grid-template-columns:1fr;gap:8px}.symbol-strategy-col{border:1px solid #2a4265;border-radius:10px;background:#090e1873;padding:8px;display:grid;gap:8px}.symbol-strategy-subtitle{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#8eb7ea}.toggle-field{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:11px}.symbol-strategy-actions{display:flex;gap:6px;flex-wrap:wrap}.symbol-strategy-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px}.symbol-strategy-card .control-field{gap:4px;font-size:11px}.symbol-strategy-card .control-field input{padding:7px 8px;border-radius:8px;font-size:12px}.star-spread-chart{width:100%;height:268px;margin-top:8px;border:1px solid #264062;border-radius:10px;background:#070d1694;display:block}.star-spread-chart-empty{margin-top:8px;height:268px;border:1px dashed #2a456b;border-radius:10px;display:grid;place-items:center;color:#9ab3d5;font-size:12px;background:#080e187a}.star-line-spread{stroke:#7bc5ff;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 2px rgba(123,197,255,.42))}.star-line-entry{stroke:#4f8de8;stroke-width:1.1;stroke-dasharray:6 4}.star-line-exit{stroke:#5ce8c4;stroke-width:1.1;stroke-dasharray:6 4}.star-line-open{stroke:#f5c45f;stroke-width:1.1;stroke-dasharray:4 3}.star-line-current{stroke:#b8d8ff;stroke-width:1;stroke-dasharray:2 3}.star-line-hover{stroke:#abd6ffc7;stroke-width:1.1;stroke-dasharray:3 4}.star-hover-point{fill:#9ed2ff;stroke:#00182f;stroke-width:1}.star-hover-label-bg{fill:#091422e0;stroke:#80b8f3c7;stroke-width:1}.star-hover-label-text{fill:#d8ebff;font-size:13px;font-family:var(--mono);letter-spacing:.01em}.star-chart-value-label{fill:#f7fbff;font-size:26px;font-weight:800;font-family:var(--sans);letter-spacing:.01em;stroke:#07101df2;stroke-width:4px;paint-order:stroke fill}.event-row{display:grid;grid-template-columns:90px 110px 140px 120px 1fr;gap:8px;align-items:center;border:1px solid #23334d;border-radius:10px;padding:8px 10px;background:#090e1880}.event-kind{font-size:11px;border-radius:999px;padding:4px 8px;border:1px solid #3a4d6c;text-transform:uppercase;letter-spacing:.03em;width:fit-content}.event-kind.warn{color:#ffd596;border-color:#7c5a20;background:#7c5a2033}.event-kind.ok{color:#9cf0d1;border-color:#1f6e53;background:#1f6e5333}.event-kind.error{color:#ffb0b7;border-color:#7a2c33;background:#7a2c3338}.event-kind.critical{color:#ff8f9b;border-color:#932532;background:#93253247}@media (max-width: 1000px){.span-4,.span-6,.span-8{grid-column:span 12}.event-row{grid-template-columns:1fr;gap:6px}.symbol-strategy-field-grid{grid-template-columns:1fr}.symbol-strategy-grid{gap:10px}.symbol-market-grid,.symbol-strategy-columns{grid-template-columns:1fr}.history-modal{width:98vw;max-height:94vh;padding:10px;overflow:auto}.history-modal-head{align-items:flex-start;flex-direction:column}.history-row,.trades-history-head,.trades-history-row{grid-template-columns:1fr;white-space:normal}}
