:root{--bg: #0a0d12;--panel: #10141c;--panel-alt: #151a24;--border: #232a38;--text: #d8dee9;--text-dim: #6b7688;--accent: #e8b339;--buy: #2fbf71;--sell: #e0524d;--mono: "IBM Plex Mono", "SF Mono", Consolas, monospace;--sans: "Inter", "Segoe UI", system-ui, sans-serif}[data-theme=light]{--bg: #f4f5f7;--panel: #ffffff;--panel-alt: #f0f1f4;--border: #dde1e8;--text: #1a1f29;--text-dim: #6b7688}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}button{font-family:var(--sans);cursor:pointer}input{font-family:var(--mono)}.login-screen{height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 30% 20%,#141a24 0%,var(--bg) 70%)}.login-card{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:40px;width:320px;display:flex;flex-direction:column;gap:14px}.login-card h1{font-family:var(--mono);letter-spacing:.08em;color:var(--accent);margin:0}.login-card .subtitle{color:var(--text-dim);margin:-10px 0 10px;font-size:13px}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-dim)}.login-card input{background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:8px 10px;color:var(--text)}.login-card button{margin-top:8px;background:var(--accent);border:none;border-radius:4px;padding:10px;font-weight:600;color:#1a1200}.error{color:var(--sell);font-size:13px}.loading-screen{height:100vh;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-family:var(--mono)}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);background:var(--panel)}.app-header h1{font-family:var(--mono);letter-spacing:.1em;color:var(--accent);font-size:18px;margin:0}.header-actions{display:flex;align-items:center;gap:8px}.header-clock{font-family:var(--mono);font-size:12.5px;color:var(--text-dim);margin-right:4px}.feed-lag{font-family:var(--mono);font-size:12px;padding:3px 8px;border-radius:4px;border:1px solid var(--border);font-variant-numeric:tabular-nums}.feed-lag.good{color:var(--buy);border-color:var(--buy)}.feed-lag.warn{color:var(--accent);border-color:var(--accent)}.feed-lag.bad{color:var(--sell);border-color:var(--sell)}.header-actions button{background:var(--panel-alt);border:1px solid var(--border);color:var(--text);border-radius:4px;padding:6px 12px;font-size:13px}.broker-row{display:flex;gap:12px;padding:14px 20px;flex-wrap:wrap}.broker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;padding:14px 20px}.broker-card{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:12px 16px;min-width:260px;flex:1}.broker-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.broker-name{font-family:var(--mono);font-weight:600;letter-spacing:.03em}.dot{width:9px;height:9px;border-radius:50%;display:inline-block}.dot.green{background:var(--buy);box-shadow:0 0 6px var(--buy)}.dot.red{background:var(--sell);box-shadow:0 0 6px var(--sell)}.mode-toggle{display:flex;gap:4px;margin-bottom:10px}.mode-toggle button{flex:1;background:var(--panel-alt);border:1px solid var(--border);color:var(--text-dim);border-radius:4px;padding:6px 0;font-size:12px;font-family:var(--mono)}.mode-toggle button.active{background:var(--accent);color:#1a1200;border-color:var(--accent);font-weight:700}.live-confirm{background:#e0524d1f;border:1px solid var(--sell);border-radius:4px;padding:8px;font-size:12px;display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.live-confirm .confirm-yes{background:var(--sell);color:#fff;border:none;border-radius:3px;padding:6px}.live-confirm button:not(.confirm-yes){background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:3px;padding:6px}.auto-trade-row{display:flex;align-items:center;gap:8px;font-size:13px;margin-bottom:10px;color:var(--text-dim)}.broker-stats{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-dim)}.reenable{background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:4px;padding:4px 8px;font-size:11px}.app-main{flex:1;display:flex;flex-direction:column;gap:16px;padding:0 20px 20px}.symbol-table-wrap{background:var(--panel);border:1px solid var(--border);border-radius:6px;overflow-x:auto;overflow-y:visible;outline:none}.commodities-section{margin-bottom:16px;border-color:#e8b339}.commodities-section .table-toolbar{background:#e8b33914}.section-title{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#e8b339}.table-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--panel-alt)}.table-toolbar input{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:6px 10px;color:var(--text);width:220px;font-size:13px}.table-toolbar-right{display:flex;align-items:center;gap:8px}.bulk-auto-btn{background:var(--panel-alt);border:1px solid var(--border);color:var(--buy);border-radius:4px;padding:5px 10px;font-size:11px}.bulk-auto-btn.off{color:var(--sell)}.row-count{color:var(--text-dim);font-size:12px;font-family:var(--mono)}.auto-cell{text-align:center!important}.auto-cell input{cursor:pointer}.symbol-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12.5px}.symbol-table th,.symbol-table td{padding:6px 10px;text-align:right;white-space:nowrap}.symbol-table th:first-child,.symbol-table td:first-child{text-align:left}.symbol-table thead tr:first-child th{border-bottom:1px solid var(--border);color:var(--text-dim);font-weight:600;text-transform:uppercase;font-size:10.5px;letter-spacing:.05em}.symbol-table thead tr.subheader th{color:var(--text-dim);font-size:10.5px;padding-top:0;padding-bottom:6px;border-bottom:1px solid var(--border)}.symbol-table tbody tr{border-bottom:1px solid rgba(255,255,255,.03)}.symbol-table tbody tr:hover{background:var(--panel-alt)}.symbol-table td.sym{font-weight:600;text-align:left}.symbol-table td.diff{color:var(--accent);font-size:.85em;line-height:1.3;padding-top:4px;padding-bottom:4px}.symbol-table td.diff .diff-buy,.symbol-table td.diff .diff-sell{white-space:nowrap}.signal-row{background:#e8b33914}.jump-target{animation:jump-flash 1.2s ease-out}@keyframes jump-flash{0%{background-color:#60a5fa8c}to{background-color:transparent}}.signal-buy{color:var(--buy);font-weight:700}.signal-sell{color:var(--sell);font-weight:700}.empty{text-align:center!important;color:var(--text-dim);padding:30px!important}.price-cell{transition:background-color .5s ease-out}.price-cell.flash-up{background-color:#3b82f680}.price-cell.flash-down{background-color:#ef444480}.side-panels{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.side-panels>*{flex:1;min-width:320px}.settings-panel,.trade-log{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:14px 16px}.settings-panel-group{display:flex;flex-direction:column;gap:12px}.settings-panel h3,.trade-log h3{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim)}.settings-panel label{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;margin-bottom:8px;gap:8px}.settings-panel input{width:110px;background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:5px 8px;color:var(--text);text-align:right}.settings-panel button{width:100%;margin-top:6px;background:var(--accent);border:none;border-radius:4px;padding:8px;font-weight:600;color:#1a1200}.saved-check{display:block;text-align:center;color:var(--buy);font-size:12px;margin-top:6px}.trade-log table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11.5px}.trade-log th,.trade-log td{padding:5px 4px;text-align:left}.trade-log thead th{color:var(--text-dim);border-bottom:1px solid var(--border);font-weight:600}.trade-log tr.ok td:last-child{color:var(--buy)}.trade-log tr.blocked td:last-child{color:var(--text-dim)}.acct-sub{color:var(--text-dim)}.broker-connect-row{margin-bottom:10px}.status-ok{color:var(--buy);font-size:13px;font-weight:600;margin-right:10px}.connect-btn{width:100%;background:var(--accent);border:none;border-radius:4px;padding:8px;font-weight:600;color:#1a1200;font-size:13px}.disconnect-btn{background:transparent;border:1px solid var(--border);color:var(--sell);border-radius:4px;padding:5px 10px;font-size:12px}.remembered-tag{background:transparent;border:1px solid var(--border);color:var(--accent);border-radius:4px;padding:5px 8px;font-size:11px;cursor:pointer}.positions-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:4px;padding:5px 10px;font-size:12px}.voice-on{color:var(--accent);border-color:var(--accent)!important}.modal-remember{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);flex-direction:row!important}.field-hint{font-weight:400;color:var(--text-dim);font-size:11px}.modal-remember input{width:auto}.remember-note{font-size:11px;color:var(--text-dim);line-height:1.4;margin:-4px 0 0}.positions-card{width:420px}.odin-stop-card{width:380px;border:1px solid var(--sell)}.odin-stop-card h2{color:var(--sell);font-size:16px;margin:0 0 10px}.odin-stop-card p{font-size:13px;color:var(--text);line-height:1.5;margin:0 0 8px}.odin-stop-hint{color:var(--text-dim)!important;font-size:12px!important}.enable-trade-btn{background:var(--buy)!important}.positions-note{font-size:12.5px;color:var(--text-dim);line-height:1.5}.positions-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12px}.positions-table th,.positions-table td{padding:6px 4px;text-align:left;border-bottom:1px solid var(--border)}.close-position-btn{background:transparent;border:1px solid var(--sell);color:var(--sell);border-radius:4px;padding:3px 8px;font-size:11px}.close-position-btn:disabled{opacity:.5;cursor:default}.executed-at{color:var(--text-dim);font-size:.9em;white-space:nowrap}.modal-card.positions-panel{width:92vw;max-width:1000px}.close-all-btn{background:transparent;border:1px solid var(--sell);color:var(--sell);border-radius:4px;padding:6px 12px;font-size:12px;font-weight:600}.close-all-btn:disabled{opacity:.4;cursor:default}.close-all-confirm{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-dim)}.close-all-confirm-yes{background:var(--sell);color:#fff;border:none;border-radius:4px;padding:6px 10px;font-size:12px;font-weight:600}.positions-summary-table td,.positions-summary-table th{text-align:right}.positions-summary-table td:first-child,.positions-summary-table th:first-child,.positions-summary-table td:nth-child(2),.positions-summary-table th:nth-child(2){text-align:left}.sl-chip{font-size:10px;font-weight:600;color:var(--sell);border:1px solid var(--sell);border-radius:3px;padding:1px 6px;margin-left:6px;vertical-align:middle}.positions-panel-foot{display:flex;align-items:center;justify-content:space-between;padding:10px 4px 0;font-size:12px;color:var(--text-dim)}.modal-card.stop-loss-panel{width:560px;max-width:90vw}.stop-loss-master-row{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--panel-alt);border:1px solid var(--border);border-radius:6px;margin-bottom:12px}.stop-loss-master-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}.stop-loss-master-label input{width:auto}.stop-loss-broker-picker{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;margin-bottom:10px;gap:8px}.stop-loss-broker-picker select{background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:5px 8px;color:var(--text)}.stop-loss-table-wrap{max-height:260px;overflow-y:auto}.stop-loss-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:12.5px}.stop-loss-table th{text-align:left;color:var(--text-dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;padding:0 0 6px;position:sticky;top:0;background:var(--panel)}.stop-loss-table td{padding:5px 0;border-bottom:1px solid var(--border)}.rupee-input-form{display:inline-flex;align-items:center;gap:6px}.rupee-input{display:flex;align-items:center;background:var(--bg);border:1px solid var(--border);border-radius:4px;overflow:hidden;width:110px}.rupee-input span{font-family:var(--sans);font-size:11px;color:var(--text-dim);padding:0 6px;border-right:1px solid var(--border);background:var(--panel-alt);align-self:stretch;display:flex;align-items:center}.rupee-input input{width:100%;background:transparent;border:none;color:var(--text);font-family:var(--mono);font-size:12.5px;padding:5px 6px 5px 4px;text-align:right}.rupee-input input:focus{outline:none}.rupee-input-form button{background:var(--panel-alt);border:1px solid var(--border);color:var(--text-dim);border-radius:4px;padding:5px 8px;font-size:11px}.rupee-input-form button:disabled{opacity:.5;cursor:default}.stop-loss-bulk-row{display:flex;align-items:center;gap:10px;padding:10px;background:var(--panel-alt);border:1px solid var(--accent);border-radius:6px;margin-bottom:6px;flex-wrap:wrap}.stop-loss-bulk-row .rupee-input-form button{background:var(--accent);color:#1a1200;font-weight:600;border:none}.stop-loss-bulk-row .rupee-input-form button:disabled{opacity:.5}.stop-loss-clear-all-btn{background:transparent;border:1px solid var(--sell);color:var(--sell);border-radius:4px;padding:6px 10px;font-size:11px}.stop-loss-clear-all-btn:disabled{opacity:.5;cursor:default}.stop-loss-bulk-hint{margin:0 0 12px}.system-events{display:flex;flex-direction:column;gap:4px;padding:0 20px;margin-top:8px}.system-event{font-size:12.5px;padding:6px 12px;border-radius:4px;border:1px solid var(--border);font-family:var(--mono);animation:fade-in .2s ease}.system-event.warn{background:#e0524d1a;color:var(--sell);border-color:var(--sell)}.system-event.info{background:#e8b33914;color:var(--accent);border-color:var(--accent)}@keyframes fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.broker-card2{position:relative;background:var(--panel);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:6px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-height:150px}.broker-card2-head{display:flex;flex-direction:column;gap:2px;padding-right:16px}.broker-card2-label{font-size:10px;letter-spacing:.08em;color:var(--text-dim);text-transform:uppercase}.broker-card2-name{font-size:18px;font-weight:700;font-family:var(--mono)}.broker-card2-sub{font-size:11.5px;color:var(--text-dim)}.corner-dot{position:absolute;top:14px;right:14px;width:8px;height:8px;border-radius:50%}.corner-dot.green{background:var(--buy);box-shadow:0 0 6px var(--buy)}.corner-dot.red{background:var(--sell)}.not-wired-badge{align-self:flex-start;background:var(--panel-alt);border:1px solid var(--border);color:var(--text-dim);font-size:10.5px;padding:3px 8px;border-radius:10px}.account-lot{width:40px;background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:2px 4px;font-size:11px;color:var(--text);text-align:center}.accounts-list{display:flex;flex-direction:column;gap:6px;max-height:160px;overflow-y:auto}.account-row{display:flex;align-items:center;gap:6px;background:var(--panel-alt);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-family:var(--mono);font-size:11.5px}.account-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.account-dot.green{background:var(--buy)}.account-id{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-weight:600}.account-auto{display:flex;align-items:center;gap:4px;font-size:10.5px;color:var(--buy);background:#2fbf711a;border:1px solid var(--buy);border-radius:10px;padding:2px 6px;cursor:pointer}.account-auto input{margin:0;width:11px;height:11px}.account-nse{display:flex;align-items:center;gap:4px;font-size:10.5px;color:#4a9eff;background:#4a9eff1a;border:1px solid #4a9eff;border-radius:10px;padding:2px 6px;cursor:pointer}.account-nse input{margin:0;width:11px;height:11px}.account-mcx{display:flex;align-items:center;gap:4px;font-size:10.5px;color:#e8b339;background:#e8b3391a;border:1px solid #e8b339;border-radius:10px;padding:2px 6px;cursor:pointer}.account-mcx input{margin:0;width:11px;height:11px}.account-icon-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:4px;width:22px;height:22px;font-size:11px;padding:0;cursor:pointer}.account-icon-btn.danger{color:var(--sell);border-color:var(--sell)}.add-account-btn{background:var(--panel-alt);border:1px dashed var(--border);color:var(--text-dim);border-radius:6px;padding:8px;font-size:12.5px}.mode-toggle.small button{padding:4px 0;font-size:10.5px}.broker-card2-footer{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--text-dim);margin-top:auto}.modal-card.history-card{width:80vw;max-width:80vw;max-height:92vh;display:flex;flex-direction:column}.history-header{display:flex;align-items:center;justify-content:space-between}.history-header h2{margin:0;font-size:16px}.modal-close-x{background:transparent;border:none;color:var(--text-dim);font-size:16px;cursor:pointer;padding:4px 8px}.history-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--border);margin-bottom:8px}.history-filters input,.history-filters select{background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:6px 8px;color:var(--text);font-size:12px}.history-filters label{display:flex;align-items:center;gap:4px;font-size:11.5px;color:var(--text-dim)}.history-count{font-size:11.5px;color:var(--text-dim);font-family:var(--mono);margin-left:auto}.export-btn{background:var(--panel-alt);border:1px solid var(--accent);color:var(--accent);border-radius:4px;padding:6px 12px;font-size:11.5px;font-weight:600}.history-table-wrap{overflow-y:auto;flex:1}.history-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11.5px}.history-table th,.history-table td{padding:6px 8px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.history-table thead th{color:var(--text-dim);position:sticky;top:0;background:var(--panel)}.broker-chip{background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-size:10.5px;font-weight:700}.source-chip{color:var(--accent);font-size:10.5px}.side-buy{color:var(--buy);font-weight:700}.side-sell{color:var(--sell);font-weight:700}.status-ok2,.history-table .status-ok{color:var(--buy)}.status-err{color:var(--sell)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100}.modal-card{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:24px;width:300px;display:flex;flex-direction:column;gap:12px}.modal-card h2{margin:0 0 4px;font-size:16px}.modal-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-dim)}.modal-card input{background:var(--panel-alt);border:1px solid var(--border);border-radius:4px;padding:8px 10px;color:var(--text)}.modal-actions{display:flex;gap:8px;margin-top:6px}.modal-actions button{flex:1;padding:8px;border-radius:4px;font-size:13px}.modal-cancel{background:transparent;border:1px solid var(--border);color:var(--text-dim)}.modal-ok{background:var(--accent);border:none;color:#1a1200;font-weight:600}@media (max-width: 900px){.side-panels>*{min-width:100%}}.api-terminal-toggle{position:fixed;bottom:16px;right:16px;z-index:50;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:8px 14px;font-family:var(--mono);font-size:12px;color:var(--text-dim);box-shadow:0 2px 12px #0006}.api-terminal-toggle:hover{color:var(--accent);border-color:var(--accent)}.api-terminal-badge{background:var(--accent);color:#1a1200;border-radius:10px;padding:1px 6px;margin-left:6px;font-weight:600}.api-terminal{position:fixed;bottom:0;left:0;right:0;z-index:49;height:320px;background:#0a0d13;border-top:1px solid var(--border);box-shadow:0 -4px 20px #00000080;display:flex;flex-direction:column}.api-terminal-header{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:12px;color:var(--text-dim)}.api-terminal-header-actions{display:flex;gap:8px}.api-terminal-header-actions button{background:transparent;border:1px solid var(--border);color:var(--text-dim);border-radius:4px;padding:3px 10px;font-size:11px}.api-terminal-header-actions button:hover{color:var(--accent);border-color:var(--accent)}.api-terminal-log{flex:1;overflow-y:auto;padding:6px 14px;font-family:var(--mono);font-size:11.5px;line-height:1.7}.api-terminal-empty{color:var(--text-dim);padding:20px 0;text-align:center}.api-terminal-line{display:flex;gap:8px;align-items:baseline;white-space:pre;overflow:hidden;border-bottom:1px solid rgba(255,255,255,.03);padding:2px 0}.api-terminal-line:hover{white-space:pre-wrap;word-break:break-all;background:#ffffff05}.api-terminal-ts{color:var(--text-dim);flex-shrink:0}.api-terminal-broker{color:#7dd3fc;flex-shrink:0;font-weight:600}.api-terminal-arrow{flex-shrink:0}.api-terminal-request .api-terminal-arrow{color:#7dd3fc}.api-terminal-response .api-terminal-arrow{color:#4ade80}.api-terminal-error .api-terminal-arrow{color:#f87171}.api-terminal-method{color:var(--accent);flex-shrink:0}.api-terminal-path{color:var(--text);flex-shrink:0}.api-terminal-status{flex-shrink:0;font-weight:600}.api-terminal-status.ok{color:#4ade80}.api-terminal-status.err{color:#f87171}.api-terminal-latency{color:var(--text-dim);flex-shrink:0}.api-terminal-body{color:var(--text-dim);overflow:hidden;text-overflow:ellipsis}.api-terminal-line:hover .api-terminal-body{text-overflow:clip}
