:root{--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: "SF Mono", "Fira Code", "Consolas", monospace}[data-theme=light]{--bg-page: #f4f4f5;--bg-card: #ffffff;--bg-input: #f0f0f2;--bg-hover: #e8e8eb;--border: #dddde3;--border-focus: #2563eb;--text-primary: #111111;--text-secondary: #52525b;--text-tertiary: #a1a1aa;--accent: #2563eb;--success: #16a34a;--danger: #dc2626;--warning: #d97706}[data-theme=dark]{--bg-page: #141414;--bg-card: #1e1e1e;--bg-input: #252525;--bg-hover: #2a2a2a;--border: #333;--border-focus: #4a9eff;--text-primary: #e4e4e4;--text-secondary: #a0a0a0;--text-tertiary: #666;--accent: #4a9eff;--success: #3fa266;--danger: #d05050;--warning: #e8a030}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:var(--bg-page);color:var(--text-primary);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:var(--font);cursor:pointer;border:none;outline:none}input,select,textarea{font-family:var(--font);font-size:14px;background:var(--bg-input);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;width:100%;outline:none;transition:border-color .15s}input:focus,select:focus,textarea:focus{border-color:var(--border-focus)}input::placeholder{color:var(--text-tertiary)}input[type=checkbox],input[type=radio]{width:auto;padding:0;border:none;background:none}.app-layout{display:flex;flex-direction:column;min-height:100%}.app-main{flex:1;padding:24px;max-width:1600px;margin:0 auto;width:100%}.idle-warning{display:flex;align-items:center;justify-content:center;gap:16px;padding:10px 20px;background:color-mix(in srgb,var(--amber, #f59e0b) 15%,var(--bg-card));border-bottom:1px solid color-mix(in srgb,var(--amber, #f59e0b) 40%,transparent);font-size:13px;color:var(--text-primary);animation:idle-fade-in .2s ease}@keyframes idle-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.idle-warning strong{font-variant-numeric:tabular-nums}.idle-warning-btn{padding:4px 14px;font-size:12px;font-weight:600;border-radius:var(--radius-sm, 4px);border:1px solid color-mix(in srgb,var(--amber, #f59e0b) 60%,transparent);background:var(--bg-card);color:var(--text-primary);cursor:pointer;transition:background .15s}.idle-warning-btn:hover{background:var(--bg-hover)}.nav{display:flex;align-items:center;gap:16px;padding:0 24px;height:52px;border-bottom:1px solid var(--border);background:var(--bg-card);position:sticky;top:0;z-index:100}.nav-brand{font-weight:600;font-size:15px;color:var(--text-primary);letter-spacing:-.02em}.nav-brand span{color:var(--accent)}.nav-links{display:flex;gap:4px}.nav-link{padding:5px 12px;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;transition:background .1s,color .1s}.nav-link:hover{background:var(--bg-hover);color:var(--text-primary);text-decoration:none}.nav-link.active{background:var(--bg-hover);color:var(--text-primary)}.nav-spacer{flex:1}.nav-user{font-size:13px;color:var(--text-secondary)}.btn-ghost{padding:5px 12px;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:13px;transition:background .1s,color .1s}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}.theme-btn{font-size:15px;padding:5px 10px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;transition:opacity .15s,background .15s;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){opacity:.88}.btn-secondary{background:var(--bg-hover);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:#333}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.88}.btn-sm{padding:5px 10px;font-size:12px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card-header{font-size:12px;font-weight:500;color:var(--text-secondary);letter-spacing:.04em;text-transform:uppercase;margin-bottom:12px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}@media (max-width: 700px){.stats-grid{grid-template-columns:repeat(2,1fr)}}.stat-tile{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px}.stat-label{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;display:flex;align-items:center;gap:6px}.stat-refresh{background:none;border:none;padding:0;font-size:12px;color:var(--text-tertiary);cursor:pointer;line-height:1;transition:color .15s}.stat-refresh:hover:not(:disabled){color:var(--accent)}.stat-refresh:disabled{opacity:.4;cursor:default}.stat-value{font-size:22px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:7px;flex-wrap:wrap}.stat-value.up{color:var(--success)}.stat-value.down{color:var(--danger)}.stat-value.neutral{color:var(--text-primary)}.stat-pct{font-size:13px;font-weight:500;opacity:.75;letter-spacing:0}.stat-sub{font-size:12px;color:var(--text-tertiary);margin-top:3px}.stat-sub2{margin-top:1px}.charts-row{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}@media (max-width: 900px){.charts-row{grid-template-columns:1fr}}.chart-caption{font-size:11px;color:var(--text-tertiary);margin-top:8px}.filters-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.btn-ghost{background:none;border:1px solid var(--border);color:var(--text-secondary);border-radius:4px;cursor:pointer;line-height:1;transition:color .15s,border-color .15s}.btn-ghost:hover:not(:disabled){color:var(--text);border-color:var(--text-secondary)}.btn-ghost:disabled{opacity:.4;cursor:default}.filter-pill{padding:4px 10px;border-radius:20px;font-size:12px;font-weight:500;background:var(--bg-input);color:var(--text-secondary);border:1px solid var(--border);transition:background .1s,color .1s,border-color .1s;cursor:pointer}.filter-pill:hover{background:var(--bg-hover);color:var(--text-primary)}.filter-pill.active{background:var(--accent);color:#fff;border-color:var(--accent)}.filter-sep{width:1px;height:20px;background:var(--border);margin:0 4px}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--border)}table{width:100%;border-collapse:collapse;font-size:13px}thead{position:sticky;top:0;background:var(--bg-card);z-index:1}th{padding:10px 12px;text-align:left;font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);white-space:nowrap}th.right,td.right{text-align:right}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text-primary)}th.sorted{color:var(--accent)}.sort-icon{margin-left:4px;font-size:9px;opacity:.5}th.sorted .sort-icon{opacity:1}th.col-status{width:110px}td{padding:9px 12px;border-bottom:1px solid var(--border);color:var(--text-primary);white-space:nowrap;font-variant-numeric:tabular-nums}tr:last-child td{border-bottom:none}tr:hover td{background:var(--bg-hover)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px;flex-shrink:0}.dot-success{background:var(--success)}.dot-danger{background:var(--danger)}.dot-warning{background:var(--warning)}.dot-neutral{background:var(--text-tertiary)}.badge{display:inline-block;padding:2px 7px;border-radius:3px;font-size:11px;font-weight:600}.badge-holding,.badge-exited,.badge-sl{display:inline-block;min-width:58px;width:auto;text-align:center;box-sizing:border-box}.badge-holding{background:#4a9eff26;color:var(--accent)}.badge-exited{background:#a0a0a01f;color:var(--text-secondary)}.badge-sl{background:#d0505026;color:var(--danger)}.badge-real{background:#3fa26626;color:var(--success)}.badge-mock{background:#e8a03026;color:var(--warning)}.badge-suspended{background:#d0505026;color:var(--danger)}.trading-suspended-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;margin-bottom:8px;background:color-mix(in srgb,var(--danger, #d05050) 10%,var(--bg-card));border:1px solid color-mix(in srgb,var(--danger, #d05050) 35%,transparent);border-radius:var(--radius);font-size:13px;color:var(--text-primary);animation:idle-fade-in .2s ease}.trading-suspended-banner strong{color:var(--danger)}.text-up{color:var(--success)}.text-down{color:var(--danger)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-box{width:100%;max-width:400px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px}.auth-title{font-size:20px;font-weight:600;margin-bottom:6px}.auth-sub{font-size:13px;color:var(--text-secondary);margin-bottom:24px}.pending-approval-box{text-align:center;padding:28px 16px 20px;border:1px solid var(--border);border-radius:8px;background:var(--bg-input);margin-bottom:8px}.pending-approval-icon{font-size:32px;margin-bottom:10px}.pending-approval-title{font-size:15px;font-weight:600;margin:0 0 8px}.pending-approval-sub{font-size:13px;color:var(--text-secondary);margin:0;line-height:1.5}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.form-label{font-size:12px;font-weight:500;color:var(--text-secondary)}.form-error{color:var(--danger);font-size:12px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.form-actions{display:flex;gap:10px;align-items:center;margin-top:8px}.settings-section{margin-bottom:32px}.settings-title{font-size:16px;font-weight:600;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--border)}.account-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;display:flex;align-items:center;gap:12px;margin-bottom:8px}.account-info{flex:1}.account-name{font-weight:600;font-size:14px}.account-meta{font-size:12px;color:var(--text-secondary);display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.account-actions{display:flex;gap:8px}.broker-form-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-top:16px}.broker-form-title{font-weight:600;margin-bottom:16px;font-size:14px}.strategy-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.strategy-chip{padding:4px 10px;border-radius:4px;font-size:12px;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--bg-input);color:var(--text-secondary);transition:all .1s}.strategy-chip:hover{border-color:var(--accent);color:var(--accent)}.strategy-chip.real{background:#3fa26626;border-color:var(--success);color:var(--success)}.strategy-chip.mock{background:#e8a03026;border-color:var(--warning);color:var(--warning)}.toggle-row{display:flex;align-items:center;gap:10px}.toggle-label{font-size:13px;color:var(--text-secondary)}.toggle{position:relative;width:36px;height:20px;background:var(--border);border-radius:10px;cursor:pointer;transition:background .2s}.toggle.on{background:var(--accent)}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .2s}.toggle.on:after{transform:translate(16px)}.broker-selector{display:flex;align-items:center;gap:8px}.broker-selector select{flex:1}.empty-state{text-align:center;padding:40px 20px;color:var(--text-secondary)}.empty-state-title{font-size:15px;font-weight:500;margin-bottom:6px;color:var(--text-primary)}.spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto}@keyframes spin{to{transform:rotate(360deg)}}.loading-page{display:flex;align-items:center;justify-content:center;min-height:200px}.error-banner{background:#d050501f;border:1px solid rgba(208,80,80,.3);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;color:var(--danger);margin-bottom:16px}.success-banner{background:#3fa2661f;border:1px solid rgba(63,162,102,.3);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;color:var(--success);margin-bottom:16px}.settings-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:24px;position:sticky;top:52px;z-index:90;background:var(--bg-page)}.settings-tab{padding:8px 16px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:14px;cursor:pointer;margin-bottom:-1px;transition:color .15s,border-color .15s}.settings-tab:hover{color:var(--text-primary)}.settings-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}.strategy-category-tabs{display:inline-flex;gap:2px;padding:3px;background:var(--bg-input);border-radius:calc(var(--radius) + 3px);margin-bottom:18px}.strategy-category-tab{display:flex;align-items:center;gap:7px;padding:7px 16px;background:none;border:none;border-radius:var(--radius);color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,color .15s}.strategy-category-tab:hover{color:var(--text-primary)}.strategy-category-tab.active{background:var(--bg-card);color:var(--accent);box-shadow:0 1px 3px #00000026}.strategy-category-count{font-size:10px;font-weight:600;padding:1px 6px;border-radius:10px;background:var(--border);color:var(--text-secondary)}.strategy-category-tab.active .strategy-category-count{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.settings-subnav-typegroup{border:1px solid var(--border);border-radius:var(--radius);padding:8px;margin-bottom:10px;background:color-mix(in srgb,var(--accent) 3%,transparent)}.settings-subnav-typegroup-label{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);padding:2px 6px 8px}.settings-subnav-typegroup-count{font-size:10px;font-weight:600;padding:1px 6px;border-radius:10px;background:color-mix(in srgb,var(--accent) 15%,transparent)}.settings-split{display:grid;grid-template-columns:220px 1fr;gap:28px;align-items:start}.settings-subnav{display:flex;flex-direction:column;gap:2px}.settings-subnav-item{display:block;width:100%;padding:8px 12px;background:none;border:none;border-left:2px solid transparent;color:var(--text-secondary);font-size:14px;text-align:left;cursor:pointer;border-radius:4px;transition:color .15s,background .15s,border-color .15s}.settings-subnav-item:hover{color:var(--text-primary);background:var(--bg-input)}.settings-subnav-item.active{color:var(--accent);border-left-color:var(--accent);font-weight:500;background:var(--bg-input)}.settings-subtabs{display:flex;gap:2px;border-bottom:1px solid var(--border);margin-bottom:20px;flex-wrap:wrap}.settings-subtab{padding:7px 14px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);font-size:13px;cursor:pointer;margin-bottom:-1px;transition:color .15s,border-color .15s}.settings-subtab:hover{color:var(--text-primary)}.settings-subtab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:500}@media (max-width: 720px){.settings-split{grid-template-columns:1fr;gap:12px}.settings-subnav{flex-direction:row;flex-wrap:wrap}}.settings-section-header{display:flex;justify-content:flex-end;margin-bottom:16px}.strategy-card{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;overflow:hidden}.strategy-card-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg-card)}.strategy-card-name{font-weight:600;font-size:14px;margin-bottom:4px}.strategy-card-meta{display:flex;gap:12px;font-size:12px;color:var(--text-secondary);flex-wrap:wrap}.strategy-form{padding:16px;border-top:1px solid var(--border);background:var(--bg-page)}.strategy-form .form-group .toggle{margin-top:4px}.sfield-hint{margin-left:6px;font-size:11px;color:var(--text-tertiary);font-weight:400}.form-section{background:var(--bg-card);border:1px solid var(--border);border-top:2px solid var(--accent);border-radius:var(--radius);padding:16px 20px;margin-bottom:16px;box-shadow:0 2px 10px #00000012}.form-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:14px}.field-hint{font-size:11px;color:var(--text-tertiary);font-weight:400}.strat-alloc-table{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;font-size:13px}.strat-alloc-head,.strat-alloc-row{display:grid;grid-template-columns:90px 1fr 1fr 1fr;align-items:center;gap:12px;padding:8px 12px}.strat-alloc-head--simple,.strat-alloc-row--simple{grid-template-columns:90px 1fr 1fr}.strat-alloc-head--broker,.strat-alloc-row--broker{grid-template-columns:80px 260px 1fr 110px 1fr}.strat-alloc-total{display:grid;grid-template-columns:80px 260px 1fr 110px 1fr;gap:12px;padding:8px 12px;border-top:2px solid var(--border);background:var(--bg-input);font-size:13px;font-weight:600;color:var(--text-primary)}.strat-alloc-total>span:first-child{grid-column:1 / 5}.strat-alloc-total>span:last-child{font-variant-numeric:tabular-nums}.strat-alloc-head{background:var(--bg-input);font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.strat-alloc-row{border-top:1px solid var(--border)}.strat-alloc-row:not(.active){opacity:.4}.strat-alloc-row:not(.active) .mode-btn{pointer-events:auto}.strat-alloc-name{font-weight:500;color:var(--text-secondary)}.strat-alloc-row.active .strat-alloc-name{color:var(--text-primary)}.strat-mode-cell{display:flex;flex-direction:column;gap:5px;min-width:0}.strat-mode-btns,.real-sub-modes{display:flex;flex-wrap:wrap;gap:4px}.twelve-month-options{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.sub-mode-btn{padding:2px 8px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-tertiary);font-size:11px;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .1s,color .1s,border-color .1s}.sub-mode-btn.active{background:#16a34a1f;border-color:var(--success);color:var(--success)}.sub-mode-btn:disabled{opacity:.45;cursor:not-allowed}.max-defer-row{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-tertiary);white-space:nowrap}.max-defer-input{width:44px;padding:1px 5px;font-size:11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-input);color:var(--text-primary)}.mode-btn{padding:3px 9px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-tertiary);font-size:12px;cursor:pointer;transition:background .1s,color .1s,border-color .1s}.mode-btn.mode-real.selected{background:#16a34a26;border-color:var(--success);color:var(--success)}.mode-btn.mode-mock.selected{background:#d9770626;border-color:var(--warning);color:var(--warning)}.mode-btn.mode-off.selected{background:var(--bg-hover);border-color:var(--border);color:var(--text-secondary)}.mode-btn:hover:not(.selected){background:var(--bg-hover);color:var(--text-primary)}.alloc-input{width:100%;max-width:160px;padding:5px 8px;font-size:12px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary)}.alloc-input:disabled{opacity:.35;cursor:not-allowed;background:var(--bg-input)}.alloc-derived{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.alloc-derived.pos{color:var(--text-primary);font-weight:500}.strat-alloc-table .right{text-align:right}.col-info{display:inline-flex;align-items:center;justify-content:center;font-size:11px;color:var(--text-tertiary);cursor:default;margin-left:4px;vertical-align:middle;-webkit-user-select:none;user-select:none}.col-info:hover{color:var(--text-secondary)}.col-tooltip{position:fixed;width:260px;background:var(--bg-card, #1e1e2e);color:var(--text-primary);border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:12px;font-weight:400;line-height:1.6;text-align:left;white-space:pre-line;pointer-events:none;z-index:9999;box-shadow:0 4px 12px #00000040;animation:fadeIn .12s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.form-hint{font-size:11px;color:var(--text-tertiary);margin-top:6px}.strategy-info{margin:0 0 16px;display:flex;flex-direction:column;gap:12px}.strategy-info-row dt{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);margin-bottom:3px}.strategy-info-row dt.warn{color:#c0392b}.strategy-info-row dd{margin:0;font-size:12px;line-height:1.6;color:var(--text-secondary)}.page-header{margin-bottom:24px}.page-title{font-size:20px;font-weight:600;margin-bottom:4px}.page-sub{font-size:13px;color:var(--text-secondary)}.section-gap{margin-bottom:24px}.table-controls{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.table-count{font-size:13px;color:var(--text-secondary);margin-left:auto}.strategy-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius)}.strategy-bar-label{font-size:11px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;flex-wrap:wrap}.pagination-info{font-size:13px;color:var(--text-secondary)}.pagination-controls{display:flex;align-items:center;gap:4px}.pg-btn{padding:4px 9px;border-radius:var(--radius-sm);background:var(--bg-input);border:1px solid var(--border);color:var(--text-secondary);font-size:13px;cursor:pointer;transition:background .1s}.pg-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.pg-btn:disabled{opacity:.35;cursor:not-allowed}.pg-label{font-size:13px;color:var(--text-secondary);padding:0 8px;white-space:nowrap}.pg-size{width:auto;font-size:12px;padding:4px 8px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary)}.engine-log-card{border-radius:var(--radius);border:1px solid var(--border);overflow:hidden}.engine-log-header{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--bg-card);border-bottom:1px solid var(--border);font-size:13px;font-weight:600;color:var(--text-secondary);-webkit-user-select:none;user-select:none}.engine-log-header-left{display:flex;align-items:center;gap:8px;flex:1}.engine-log-header-right{display:flex;align-items:center;gap:8px}.log-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.log-status-dot.live{background:#3fa266;box-shadow:0 0 0 3px #3fa26640;animation:log-pulse 2s infinite}.log-status-dot.connecting{background:#e8a030}.log-status-dot.disconnected{background:#555}@keyframes log-pulse{0%,to{box-shadow:0 0 #3fa26666}50%{box-shadow:0 0 0 5px #3fa26600}}.log-status-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.log-status-label.live{color:#3fa266}.log-status-label.connecting{color:#e8a030}.log-status-label.disconnected{color:var(--text-tertiary)}.log-line-count{font-size:11px;color:var(--text-tertiary)}.log-btn{padding:3px 10px;font-size:11px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-input);color:var(--text-secondary);cursor:pointer;white-space:nowrap;transition:background .1s,color .1s}.log-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.log-terminal{background:#0d1117;color:#c9d1d9;font-family:var(--mono);font-size:12px;line-height:1.6;padding:12px 16px;height:520px;overflow-y:auto;overflow-x:auto;white-space:pre;scroll-behavior:smooth}.log-line{display:block;white-space:pre}.log-line.log-warn{color:#e3b341}.log-line.log-error{color:#f85149}.log-line.log-system{color:#58a6ff;font-style:italic}.log-line.log-buy{color:#56d364}.log-line.log-sell{color:#ff7b72}.log-line.log-tick{color:#8b949e}.log-empty{color:#484f58;font-style:italic;padding:16px 0;text-align:center}.dash-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}.dash-header .page-header{margin-bottom:0}.broker-tabs{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.dash-typegroup-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:8px}.dash-typegroup-label{font-size:11px;font-weight:600;color:var(--text-secondary);min-width:76px}.dash-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.timeline-bar{font-size:12px;color:var(--text-secondary);margin:0;line-height:1.6}.analytics-toggle{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;font-size:12px;font-weight:500;color:var(--text-secondary);background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s;flex-shrink:0}.analytics-toggle:hover{color:var(--text-primary);border-color:var(--text-secondary)}.dash-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:16px}.dash-tab{display:inline-flex;align-items:center;gap:8px;padding:8px 20px;font-size:13px;font-weight:500;color:var(--text-secondary);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;cursor:pointer;transition:color .15s}.dash-tab:hover{color:var(--text-primary)}.dash-tab.active{color:var(--text-primary);border-bottom-color:var(--accent)}.dash-tab-badge{font-size:11px;font-weight:600;background:var(--bg-input);border:1px solid var(--border);border-radius:10px;padding:1px 7px;color:var(--text-secondary)}.dash-tab.active .dash-tab-badge{color:var(--accent);border-color:var(--accent)}@keyframes tab-live-pulse{0%,to{opacity:1}50%{opacity:.35}}.dash-tab-live{color:var(--success);font-size:10px;animation:tab-live-pulse 2s ease-in-out infinite}.dash-tab-new{background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px;margin-left:4px}@keyframes row-flash{0%{background:#4a9eff38}to{background:transparent}}.row-highlight td{animation:row-flash 4s ease-out forwards}.portfolio-live-badge{font-size:11px;font-weight:600;color:var(--success);letter-spacing:.02em}.portfolio-live-badge.disconnected{color:var(--text-tertiary);font-weight:400}.table-updated{font-size:11px;color:var(--text-tertiary);font-variant-numeric:tabular-nums}.sp-title{font-size:16px;font-weight:600;margin:0;color:var(--text-primary)}.sp-subtitle{font-size:13px;color:var(--text-secondary);margin:4px 0 0}.stat-tile--highlight{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--bg-card))}
