:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--text-primary: #e6edf3;--text-secondary: #8b949e;--border: #30363d;--accent: #58a6ff;--accent-hover: #79c0ff;--success: #3fb950;--danger: #f85149;--warning: #d29922}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;background-color:var(--bg-primary);color:var(--text-primary);line-height:1.5}.container{max-width:1200px;margin:0 auto;padding:1rem}.header{display:flex;justify-content:space-between;align-items:center;padding:1rem;background-color:var(--bg-secondary);border-bottom:1px solid var(--border);margin-bottom:1.5rem}.header h1{font-size:1.25rem;font-weight:600}button{cursor:pointer;padding:.5rem 1rem;border:1px solid var(--border);border-radius:6px;font-size:.875rem;font-weight:500;transition:background-color .15s}button.primary{background-color:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background-color:var(--accent-hover)}button.primary:disabled{opacity:.5;cursor:not-allowed}button.secondary{background-color:var(--bg-tertiary);color:var(--text-primary)}button.secondary:hover{background-color:var(--border)}input,textarea{width:100%;padding:.5rem .75rem;background-color:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;font-size:.875rem;font-family:inherit}input:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #58a6ff26}textarea{min-height:120px;resize:vertical;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.8125rem}.login-page{display:flex;justify-content:center;align-items:center;min-height:100vh}.login-form{background-color:var(--bg-secondary);padding:2rem;border-radius:8px;border:1px solid var(--border);width:100%;max-width:360px}.login-form h2{margin-bottom:1.5rem;text-align:center}.login-form .field{margin-bottom:1rem}.login-form button{width:100%;margin-top:.5rem}.signal-form{background-color:var(--bg-secondary);padding:1rem;border-radius:8px;border:1px solid var(--border);margin-bottom:1.5rem}.signal-form h3{margin-bottom:.75rem;font-size:1rem}.signal-form button{margin-top:.75rem}.feedback{margin-top:.75rem;padding:.5rem .75rem;border-radius:6px;font-size:.8125rem}.feedback.success{background-color:#3fb9501a;border:1px solid var(--success);color:var(--success)}.feedback.error{background-color:#f851491a;border:1px solid var(--danger);color:var(--danger)}.trade-table-wrapper{overflow-x:auto}.trade-table-wrapper h3{margin-bottom:.75rem;font-size:1rem}table{width:100%;border-collapse:collapse;font-size:.8125rem}thead{background-color:var(--bg-secondary)}th{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--border);color:var(--text-secondary);font-weight:600;white-space:nowrap}td{padding:.5rem .75rem;border-bottom:1px solid var(--border);white-space:nowrap}tr:hover{background-color:var(--bg-secondary)}.header-controls{display:flex;align-items:center;gap:1rem}.connection-status{display:flex;align-items:center;gap:.5rem;font-size:.8125rem}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.status-dot.connected{background-color:var(--success);box-shadow:0 0 4px var(--success)}.status-dot.disconnected{background-color:var(--danger);box-shadow:0 0 4px var(--danger)}.status-label{color:var(--text-secondary)}.reconnect-btn{padding:.25rem .75rem;font-size:.75rem;background-color:var(--warning);color:#000;border-color:var(--warning);border-radius:4px}.reconnect-btn:hover{opacity:.9}.reconnect-btn:disabled{opacity:.5;cursor:not-allowed}.reconnect-msg{font-size:.75rem}.reconnect-msg.success{color:var(--success)}.reconnect-msg.error{color:var(--danger)}.flex-sync-label{font-size:.75rem;color:var(--text-secondary);font-variant-numeric:tabular-nums}.feedback.warning{background-color:#d299221a;border:1px solid var(--warning);color:var(--warning)}.feedback .reconnect-link{color:var(--warning);text-decoration:underline;cursor:pointer;background:none;border:none;font-size:inherit;padding:0}.config-section{background-color:var(--bg-secondary);padding:1rem;border-radius:8px;border:1px solid var(--border);margin-bottom:1rem}.config-section h3{margin-bottom:.75rem;font-size:1rem}.radio-group{display:flex;gap:1.5rem}.radio-label,.checkbox-label{display:flex;align-items:center;gap:.375rem;font-size:.875rem;cursor:pointer}.checkbox-grid{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem}.config-table{width:100%;border-collapse:collapse;font-size:.8125rem;margin-bottom:.75rem}.config-table th{text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--border);color:var(--text-secondary);font-weight:600}.config-table td{padding:.5rem .75rem;border-bottom:1px solid var(--border)}.risk-key{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.8125rem}.risk-input{width:80px;padding:.25rem .5rem;font-size:.8125rem}.add-rule-form{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}.add-rule-form h4{font-size:.875rem;margin-bottom:.5rem;color:var(--text-secondary)}.add-rule-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.rule-select{padding:.25rem .5rem;background-color:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;font-size:.8125rem}.inline-label{display:flex;align-items:center;gap:.25rem;font-size:.8125rem;color:var(--text-secondary)}.btn-sm{padding:.25rem .5rem;font-size:.75rem}.config-actions{display:flex;gap:.75rem;margin-top:1rem;margin-bottom:2rem}.nav-link{color:var(--accent);text-decoration:none;font-size:.875rem;font-weight:500}.nav-link:hover{color:var(--accent-hover);text-decoration:underline}.restart-apply-btn{display:inline;padding:.125rem .5rem;margin-left:.5rem;font-size:.8125rem;background-color:var(--warning);color:#000;border-color:var(--warning);border-radius:4px}.restart-apply-btn:hover{opacity:.9}.pnl-card{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem;margin-bottom:1rem;border-radius:6px;background:var(--bg-secondary);border:1px solid var(--border);font-size:.9rem}.pnl-card.positive{border-color:var(--success);background:#4caf501a}.pnl-card.negative{border-color:var(--danger);background:#f443361a}.pnl-label{font-weight:600}.pnl-separator{opacity:.5}.status-submitted{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background-color:var(--bg-tertiary);color:var(--text-secondary)}.status-filled{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background-color:#3fb95026;color:var(--success)}.status-closed{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background-color:#58a6ff26;color:var(--accent)}.status-cancelled,.status-expired{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background-color:#f8514926;color:var(--danger)}.status-not-filled{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500;background-color:#8b949e26;color:var(--text-secondary)}.pnl-positive{color:var(--success)}.pnl-negative{color:var(--danger)}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}.filter-bar select,.filter-bar input[type=text],.filter-bar input[type=date]{padding:.375rem .5rem;border:1px solid var(--border);border-radius:4px;background:var(--bg-secondary);color:inherit;font-size:.8125rem}.filter-bar .ticker-input{width:80px}.export-error{color:var(--danger);font-size:.8125rem}.pagination{display:flex;align-items:center;gap:.75rem;margin-top:.75rem;font-size:.875rem}.pagination button{padding:.25rem .75rem;font-size:.8125rem}.empty-state{color:var(--text-secondary);padding:1rem 0}.trade-detail-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:1000}.trade-detail-panel{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:90vw;background:var(--bg-secondary);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;animation:slide-in-right .2s ease-out}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}.trade-detail-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--border)}.trade-detail-header h3{margin:0;font-size:1rem}.trade-detail-close{background:none;border:none;color:var(--text-secondary);font-size:1.5rem;cursor:pointer;padding:0 .25rem;line-height:1}.trade-detail-close:hover{color:var(--text-primary)}.trade-detail-body{padding:1rem;flex:1}.ib-order-section{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.ib-order-section:last-child{border-bottom:none}.ib-order-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.ib-order-role{font-weight:600;font-size:.875rem;text-transform:uppercase}.ib-order-status{display:inline-block;padding:.125rem .5rem;border-radius:999px;font-size:.75rem;font-weight:500}.ib-order-status.filled{background-color:#3fb95026;color:var(--success)}.ib-order-status.submitted{background-color:#d2992226;color:var(--warning)}.ib-order-status.cancelled{background-color:#f8514926;color:var(--danger)}.ib-order-details{font-size:.8125rem;display:grid;grid-template-columns:1fr 1fr;gap:.25rem}.ib-fills{margin-top:.75rem}.ib-fills h5{margin:0 0 .375rem;font-size:.8125rem}.ib-fills-table{width:100%;font-size:.75rem}.ib-fills-table th,.ib-fills-table td{padding:.25rem .375rem;text-align:left}.ib-log{margin-top:.5rem}.ib-log-toggle{font-size:.75rem;padding:.125rem .5rem}.ib-log-list{list-style:none;padding:0;margin:.375rem 0 0;font-size:.75rem}.ib-log-list li{padding:.125rem 0}.ib-log-time{color:var(--text-secondary)}table tbody tr{cursor:pointer}table tbody tr:hover{background-color:#58a6ff0d}
