body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg-primary:#fff;--bg-secondary:#f7f8fa;--bg-surface:#f0f1f3;--bg-hover:#e8eaed;--border:#dde0e4;--border-light:#eaecef;--text-primary:#1a1a1a;--text-secondary:#444;--text-muted:#888;--text-dim:#bbb;--accent-buy:#00883a;--accent-sell:#c20;--accent-buy-bg:#e8f8ee;--accent-sell-bg:#fdf0ee;--font-mono:"Courier New",monospace}.App{align-items:center;background-color:#f7f8fa;background-color:var(--bg-secondary);color:#1a1a1a;color:var(--text-primary);display:flex;flex-direction:column;font-size:14px;min-height:100vh;padding:0;text-align:center}.App,.container{margin:0 auto;width:100%}.container{box-sizing:border-box;padding:0 16px}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{align-items:center;background-color:#f7f8fa;background-color:var(--bg-secondary);color:#1a1a1a;color:var(--text-primary);display:flex;flex-direction:column;font-size:14px;justify-content:center;min-height:10vh}.App-link{color:#06c}.App-header,.about{box-sizing:border-box;margin:0 auto;max-width:900px;padding:0 16px;width:100%}.status-row{align-items:center;display:flex;gap:8px;justify-content:center;margin:8px 0}.status-dot{border-radius:50%;flex-shrink:0;height:8px;transition:background-color .3s;width:8px}.status-dot.connected{background-color:#00883a;background-color:var(--accent-buy)}.status-dot.disconnected{background-color:#c20;background-color:var(--accent-sell)}.status-dot.connecting{background-color:#aaa}.status-text{color:#888;color:var(--text-muted);font-family:Courier New,monospace;font-family:var(--font-mono);font-size:13px}.sse-box{background-color:#fff;background-color:var(--bg-primary);border:1px solid #dde0e4;border:1px solid var(--border);border-radius:4px;max-height:200px;overflow-y:auto;width:100%}.sse-box,.sse-msg{color:#1a1a1a;color:var(--text-primary);font-family:Courier New,monospace;font-family:var(--font-mono);font-size:12px}.sse-msg{animation:popIn .4s ease-out;background:#f0f1f3;background:var(--bg-surface);border-radius:1px;display:flex;gap:12px;margin-bottom:1px;padding:4px 10px;white-space:nowrap}.sse-msg.buy{background:#e8f8ee;background:var(--accent-buy-bg);color:#00883a;color:var(--accent-buy)}.sse-msg.sell{background:#fdf0ee;background:var(--accent-sell-bg);color:#c20;color:var(--accent-sell)}.sse-msg .msg-time{color:#bbb;color:var(--text-dim)}.sse-msg .msg-price{font-weight:700}.disclaimer{color:#888;color:var(--text-muted);font-size:12px;line-height:1.6;margin:0 auto;max-width:800px;padding:16px 0;text-align:justify}.disclaimer h3{color:#444;color:var(--text-secondary);font-size:14px;margin-bottom:8px}.about{align-items:center;display:flex;gap:24px}.about-image{align-self:center;flex-shrink:0;height:auto;width:200px}.about-content{color:#444;color:var(--text-secondary);font-size:13px;line-height:1.6;max-width:600px;text-align:justify}.footer{background-color:#fff;background-color:var(--bg-primary);border-top:1px solid #dde0e4;border-top:1px solid var(--border);box-sizing:border-box;color:#888;color:var(--text-muted);font-size:13px;margin-top:auto;text-align:center;width:100%}.footer-container{box-sizing:border-box;margin:0 auto;max-width:900px;padding:16px}.footer p{margin:0}.footer a{color:#888;color:var(--text-muted);text-decoration:none}.footer a:hover{color:#1a1a1a;color:var(--text-primary);text-decoration:underline}.sidebar{background-color:#fff;background-color:var(--bg-primary);border-right:1px solid #dde0e4;border-right:1px solid var(--border);max-height:100vh;min-width:200px;overflow-y:auto;padding:12px 0;position:-webkit-sticky;position:sticky;top:0;width:200px}.sidebar-header{border-bottom:1px solid #dde0e4;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:8px;margin-bottom:6px;padding:8px 12px}.sidebar-login-btn{background-color:#e8f8ee;border:1px solid #b8dfc8;border-radius:3px;color:#00883a;color:var(--accent-buy);cursor:pointer;font-family:Courier New,monospace;font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;padding:7px 0;transition:background .15s,border-color .15s;width:100%}.sidebar-login-btn:hover{background-color:#d4f0df;border-color:#00883a;border-color:var(--accent-buy)}.sidebar-section-title{font-size:10px;letter-spacing:.1em;text-transform:uppercase}.sidebar-section-title,.sidebar-state{color:#bbb;color:var(--text-dim);font-family:Courier New,monospace;font-family:var(--font-mono)}.sidebar-state{font-size:11px;padding:10px 12px}.sidebar-state.error{color:#c20;color:var(--accent-sell);word-break:break-all}.sidebar-item{border-left:2px solid #ccc;color:#444;color:var(--text-secondary);cursor:pointer;font-family:Courier New,monospace;font-family:var(--font-mono);font-size:11px;overflow:hidden;padding:7px 12px;text-overflow:ellipsis;transition:background .15s;white-space:nowrap}.sidebar-item:hover{background:#e8eaed;background:var(--bg-hover)}.sidebar-item.inactive{border-left-color:#0000;color:#bbb;color:var(--text-dim)}.symbol-select{background-color:#fff;background-color:var(--bg-primary);border:1px solid #dde0e4;border:1px solid var(--border);border-radius:4px;color:#1a1a1a;color:var(--text-primary);cursor:pointer;font-family:Courier New,monospace;font-family:var(--font-mono);font-size:12px;margin:8px 0;padding:8px 12px;transition:border-color .2s}.symbol-select:focus,.symbol-select:hover{border-color:#999;outline:none}.modal-overlay{align-items:center;background-color:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.modal-content{background-color:#fff;background-color:var(--bg-primary);border:1px solid #dde0e4;border:1px solid var(--border);border-radius:6px;box-shadow:0 8px 32px #0000001f;display:flex;flex-direction:column;max-height:80vh;max-width:1100px;overflow:hidden;width:80vw}.modal-header{align-items:center;background-color:#f7f8fa;background-color:var(--bg-secondary);border-bottom:1px solid #dde0e4;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:12px 16px}.modal-title{color:#444;color:var(--text-secondary);font-family:Courier New,monospace;font-family:var(--font-mono);font-size:12px;letter-spacing:.05em}.modal-code{color:#bbb;color:var(--text-dim);margin-left:8px}.modal-close{background:none;border:none;color:#888;color:var(--text-muted);cursor:pointer;font-size:18px;line-height:1;padding:0 4px;transition:color .15s}.modal-close:hover{color:#1a1a1a;color:var(--text-primary)}.modal-body{flex:1 1;overflow-y:auto;padding:8px 0}.modal-state{color:#bbb;color:var(--text-dim);font-family:Courier New,monospace;font-family:var(--font-mono);font-size:11px;padding:16px}.modal-state.error{color:#c20;color:var(--accent-sell)}.modal-table{border-collapse:collapse;font-family:Courier New,monospace;font-family:var(--font-mono);font-size:11px;width:100%}.modal-th{background-color:#f7f8fa;background-color:var(--bg-secondary);border-bottom:1px solid #dde0e4;border-bottom:1px solid var(--border);color:#888;color:var(--text-muted);font-weight:400;letter-spacing:.08em;padding:6px 12px;text-align:left;text-transform:uppercase;white-space:nowrap}.modal-td{border-bottom:1px solid #eaecef;border-bottom:1px solid var(--border-light);color:#444;color:var(--text-secondary);max-width:200px;overflow:hidden;padding:5px 12px;text-overflow:ellipsis;white-space:nowrap}.modal-tr:hover .modal-td{background:#e8eaed;background:var(--bg-hover)}.modal-footer{background-color:#f7f8fa;background-color:var(--bg-secondary);border-top:1px solid #eaecef;border-top:1px solid var(--border-light);color:#bbb;color:var(--text-dim);flex-shrink:0;font-family:Courier New,monospace;font-family:var(--font-mono);font-size:11px;padding:8px 16px}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes popIn{0%{opacity:0;transform:scale(.95)}60%{opacity:1;transform:scale(1.02)}to{transform:scale(1)}}@media (max-width:768px){.about{align-items:center;flex-direction:column;gap:16px;padding-top:16px;text-align:center}.about-image{align-self:center;margin-top:0;width:140px}}@media (max-width:600px){.about-image{width:110px}.App-header,.about,.disclaimer{padding:12px 12px 0;text-align:center}.footer{flex-direction:column;text-align:center}.sidebar{display:none}}
/*# sourceMappingURL=main.a7f16611.css.map*/