* { box-sizing: border-box; } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background: #0b1020; color: #e5e7eb; } .topbar, .controls, .panel { background: #121933; border: 1px solid #24304f; border-radius: 14px; } .topbar { margin: 16px; padding: 20px; display: flex; justify-content: space-between; align-items: center; } .topbar h1 { margin: 0 0 6px; font-size: 24px; } .topbar p { margin: 0; color: #93a4c3; } .topbar-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; justify-content: flex-end; } .nav-link { display: inline-flex; align-items: center; min-height: 40px; padding: 0 12px; border: 1px solid #31436c; border-radius: 8px; color: #dbeafe; text-decoration: none; background: #0f1530; } .language-switcher { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 10px; border: 1px solid #31436c; border-radius: 8px; background: #0f1530; color: #c7d2fe; font-size: 13px; } .language-switcher select { min-width: 92px; padding: 6px 8px; border: 1px solid #31436c; border-radius: 8px; background: #0d1430; color: #fff; } .health-card { padding: 12px 16px; min-width: 220px; text-align: right; background: #0f1530; border-radius: 10px; } .controls { margin: 0 16px 12px; padding: 16px; display: flex; gap: 12px; flex-wrap: wrap; align-items: center; } .filters-bar { margin: 0 16px 16px; padding: 10px 14px; background: #121933; border: 1px solid #24304f; border-radius: 14px; } .controls label { display: flex; flex-direction: column; gap: 6px; color: #9db0d3; font-size: 13px; } .controls input, .controls select { min-width: 110px; padding: 10px 12px; border-radius: 8px; border: 1px solid #31436c; background: #0d1430; color: #fff; } .controls button { margin-top: 20px; padding: 10px 16px; border: 0; border-radius: 8px; background: #4f7cff; color: white; cursor: pointer; } .last-updated { margin-top: 20px; color: #9db0d3; font-size: 13px; } .workbench-layout { display: grid; grid-template-columns: 248px minmax(0, 1fr); gap: 16px; margin: 0 16px 16px; align-items: start; } .workbench-sidebar { position: sticky; top: 16px; max-height: calc(100vh - 128px); overflow: auto; padding: 14px; border: 1px solid #24304f; border-radius: 14px; background: #121933; } .workbench-sidebar-header { padding: 4px 4px 12px; border-bottom: 1px solid #24304f; margin-bottom: 12px; } .workbench-view-label { margin-top: 4px; color: #e5e7eb; font-size: 16px; font-weight: 700; } .workbench-nav { display: grid; gap: 6px; } .workbench-nav button, .workbench-nav-link { display: flex; align-items: center; width: 100%; min-height: 38px; padding: 8px 10px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: #aabbe0; font: inherit; font-size: 13px; text-align: left; text-decoration: none; cursor: pointer; } .workbench-nav button:hover, .workbench-nav-link:hover { border-color: #31436c; background: #0f1530; color: #e5e7eb; } .workbench-nav button.is-active { border-color: #4f7cff; background: rgba(79, 124, 255, 0.18); color: #ffffff; } .workbench-nav-primary { margin-bottom: 8px; border-color: #31436c; background: #0f1530; } .workbench-content { min-width: 0; } body[data-active-workbench-section="trader-mode"] #workbenchContent > .controls, body[data-active-workbench-section="trader-mode"] #workbenchContent > .filters-bar { display: none; } .workbench-content .controls, .workbench-content .filters-bar { margin-left: 0; margin-right: 0; } .workspace-section { display: none; } .workspace-section.is-active { display: block; } .workbench-main .panel h2 + h2 { margin-top: 18px; padding-top: 14px; border-top: 1px solid #24304f; } .status-pill { display: inline-block; padding: 4px 8px; border-radius: 999px; font-size: 12px; font-weight: 600; background: #27324f; } .status-open, .status-awaiting_confirmation, .status-tp1_reached, .status-ok, .status-passed { background: rgba(34, 197, 94, 0.18); color: #86efac; } .status-closed, .status-tp2_closed, .status-breakeven { background: rgba(79, 124, 255, 0.18); color: #93c5fd; } .status-review, .status-stopped_out, .status-expired, .status-invalidated_before_entry, .status-rejected, .status-loss, .status-missed, .status-blocked { background: rgba(239, 68, 68, 0.18); color: #fca5a5; } .status-unknown { background: rgba(148, 163, 184, 0.18); color: #cbd5e1; } .grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; padding: 0 16px 16px; } .grid.workbench-main { grid-template-columns: minmax(0, 1fr); padding: 0 0 16px; } .panel { padding: 16px; overflow: hidden; } .panel-wide { grid-column: span 2; } .workbench-main .panel-wide { grid-column: 1; } .panel h2 { margin: 0 0 12px; font-size: 18px; } .table-wrap { overflow: auto; } table { width: 100%; border-collapse: collapse; font-size: 13px; } th, td { padding: 10px 8px; border-bottom: 1px solid #24304f; text-align: left; vertical-align: top; } thead th { position: sticky; top: 0; background: #121933; z-index: 1; } th { color: #9db0d3; } .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; } .overview-cards { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } .card { padding: 14px; border: 1px solid #2a3657; border-radius: 12px; background: #0f1530; } .card-header { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; } .card-detail { margin-top: 10px; } .metric { font-size: 12px; color: #91a2c2; } .info-grid { display: grid; gap: 8px; } .info-row { display: grid; gap: 4px; } .info-value { color: #e5e7eb; font-size: 13px; word-break: break-word; } .value { font-size: 20px; font-weight: 700; margin-top: 4px; } .value-small { font-size: 16px; font-weight: 700; margin-top: 4px; } .detail-panel { margin: 12px 0 0; padding: 14px; min-height: 180px; overflow: auto; border: 1px solid #2a3657; border-radius: 12px; background: #0f1530; color: #dbe6ff; font-size: 12px; line-height: 1.5; } .assistant-section-title { margin: 16px 0 10px; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #8fb0ff; } .assistant-dense .info-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 7px 9px; } .assistant-dense .info-row { padding: 8px 9px; border: 1px solid #233154; border-radius: 10px; background: #0c132b; } .assistant-dense .cards { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 9px; } .assistant-scan-grid { grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); } .assistant-workspace-rail-grid { grid-template-columns: repeat(auto-fit, minmax(155px, 1fr)); } .assistant-scan-primary { border-color: #4f7cff; background: linear-gradient(180deg, rgba(79, 124, 255, 0.18), rgba(15, 21, 48, 0.95)); } .assistant-scan-warning { border-color: rgba(239, 68, 68, 0.45); background: linear-gradient(180deg, rgba(239, 68, 68, 0.14), rgba(15, 21, 48, 0.95)); } .assistant-scan-action { border-color: rgba(56, 189, 248, 0.4); } .assistant-scan-context { border-color: rgba(148, 163, 184, 0.35); } .assistant-scan-summary { border-color: rgba(250, 204, 21, 0.35); } .assistant-scan-next { box-shadow: inset 0 0 0 1px rgba(56, 189, 248, 0.45), 0 0 0 1px rgba(56, 189, 248, 0.18); } .trader-mode-card { grid-column: 1 / -1; border-width: 2px; background: linear-gradient(180deg, rgba(15, 23, 42, 0.98), rgba(15, 21, 48, 0.98)); } .trader-mode-card .card-header { align-items: flex-start; } .trader-mode-card .value-small { font-size: 18px; } .trader-mode-review { border-color: #38bdf8; box-shadow: inset 0 0 0 1px rgba(56, 189, 248, 0.24), 0 12px 34px rgba(56, 189, 248, 0.12); } .trader-mode-observe { border-color: #f59e0b; box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.24), 0 12px 34px rgba(245, 158, 11, 0.12); } .trader-mode-do-not-use { border-color: #ef4444; box-shadow: inset 0 0 0 1px rgba(239, 68, 68, 0.24), 0 12px 34px rgba(239, 68, 68, 0.12); } .trader-mode-page { background: #090d18; color: #e5ecff; overflow-x: hidden; } .trader-mode-topbar { border-radius: 0; margin: 0; border-width: 0 0 1px; } .trader-mode-controls { margin-top: 12px; display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; align-items: end; } .trader-mode-controls label { min-width: 0; } .trader-mode-controls input, .trader-mode-controls select { width: 100%; min-width: 0; } .trader-mode-shell { display: grid; gap: 12px; padding: 0 16px 16px; min-width: 0; max-width: 100%; } .trader-mode-shell > * { min-width: 0; max-width: 100%; } .trader-mode-workspace-section { min-width: 0; } .trader-mode-workspace-header { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 12px; } .trader-mode-workspace-header h2 { margin: 0 0 6px; } .trader-mode-workspace-header p { margin: 0; color: #93a4c3; } .trader-mode-shell-embedded { padding: 0; } .trader-mode-shell .trader-mode-controls { margin: 0; } .trader-change-alert { padding: 12px 14px; border: 1px solid #38bdf8; border-radius: 8px; background: rgba(56, 189, 248, 0.12); color: #dbeafe; font-weight: 700; overflow-wrap: anywhere; word-break: break-word; } .hidden { display: none; } .trader-status-panel, .trader-mode-band { border: 1px solid #24304f; border-radius: 8px; background: #121933; padding: 16px; } .trader-status-panel { display: grid; grid-template-columns: minmax(170px, 0.7fr) minmax(260px, 2fr) minmax(220px, 1fr); gap: 16px; align-items: stretch; } .trader-status-review { border-color: #38bdf8; } .trader-status-observe { border-color: #f59e0b; } .trader-status-do-not-use { border-color: #ef4444; } .trader-status-label { font-size: 34px; line-height: 1.05; font-weight: 800; } .trader-conclusion, .trader-next-action { font-size: 18px; line-height: 1.35; font-weight: 700; overflow-wrap: anywhere; } .trader-mode-band h2 { margin: 0 0 12px; font-size: 16px; } .trader-readout-band { padding-top: 14px; } .trader-readout-grid { display: grid; grid-template-columns: 1.25fr 1.25fr 1fr 1fr 1fr; gap: 10px; min-width: 0; } .trader-readout-card { min-width: 0; max-width: 100%; min-height: 118px; overflow: hidden; padding: 12px; border: 1px solid #31436c; border-radius: 8px; background: #0f1530; } .trader-readout-focus { border-color: #38bdf8; } .trader-readout-caution { border-color: #f59e0b; } .trader-readout-blocked { border-color: #ef4444; } .trader-readout-muted { opacity: 0.86; } .trader-readout-value { margin-top: 8px; font-size: 15px; line-height: 1.35; font-weight: 700; max-width: 100%; white-space: normal; overflow-wrap: anywhere; word-break: break-word; } .trader-mode-two-col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .trader-metric-grid, .trader-focus-panel { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; } .trader-queue-panel { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; } .trader-queue-item { min-width: 0; padding: 12px; border: 1px solid #24304f; border-radius: 8px; background: #0f1530; } .trader-queue-review, .trader-queue-review-now { border-color: #38bdf8; } .trader-queue-observe, .trader-queue-observe-only { border-color: #f59e0b; } .trader-queue-do-not-use { border-color: #ef4444; } .trader-queue-symbol { font-size: 22px; font-weight: 800; } .trader-queue-status { margin: 4px 0 8px; font-size: 15px; font-weight: 800; } .trader-metric { min-width: 0; padding: 10px; border: 1px solid #24304f; border-radius: 8px; background: #0f1530; } .trader-focus-panel .trader-metric:nth-child(5) { grid-column: 1 / -1; } .trader-focus-pulse .trader-metric { border-color: #38bdf8; } .trader-metric-value { margin-top: 4px; font-size: 17px; font-weight: 700; overflow-wrap: anywhere; word-break: break-word; } .trader-reason-list { margin: 0; padding-left: 20px; } .trader-reason-list li { margin-bottom: 8px; overflow-wrap: anywhere; } .trader-action-bar { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; } .trader-action-bar button { min-height: 40px; } .trader-recovery-panel { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; } .trader-recovery-item { min-width: 0; padding: 10px; border: 1px solid #31436c; border-radius: 8px; background: #0d1430; } .trader-recovery-label { font-weight: 800; color: #e0f2fe; } .trader-recovery-command { display: block; margin-top: 8px; white-space: normal; overflow-wrap: anywhere; color: #c4b5fd; font-size: 12px; } .trader-post-market-draft { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; margin-bottom: 10px; } .trader-draft-section { min-width: 0; padding: 10px; border: 1px solid #24304f; border-radius: 8px; background: #0f1530; } .trader-quick-note { width: 100%; min-height: 76px; padding: 10px; border: 1px solid #31436c; border-radius: 8px; background: #0d1430; color: #fff; resize: vertical; } .trader-boundary-badges { display: flex; flex-wrap: wrap; gap: 8px; } .trader-boundary-badge { padding: 8px 10px; border: 1px solid #31436c; border-radius: 999px; background: #0f1530; color: #dbeafe; font-size: 13px; font-weight: 700; } @media (max-width: 760px) { .topbar, .trader-mode-workspace-header, .trader-status-panel, .trader-mode-two-col { grid-template-columns: 1fr; display: grid; } .topbar-actions { justify-content: flex-start; } .health-card { text-align: left; } .trader-status-label { font-size: 28px; } .trader-mode-shell { padding: 0 10px 12px; } .trader-mode-controls { grid-template-columns: 1fr; } .trader-readout-grid { grid-template-columns: 1fr; } .trader-readout-card { min-height: 106px; padding: 10px; } .trader-readout-value { font-size: 14px; } .trader-action-bar button { flex: 1 1 140px; } } .assistant-tight-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } .assistant-history-grid { grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); } .assistant-history-recommended { border-color: #4f7cff; box-shadow: inset 0 0 0 1px rgba(79, 124, 255, 0.25); } .assistant-archive-panel { display: grid; gap: 10px; margin-bottom: 10px; } .assistant-archive-controls { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; } .assistant-compare-selected { border-color: #fbbf24; box-shadow: inset 0 0 0 1px rgba(251, 191, 36, 0.28); } .assistant-dense .card { padding: 11px; } .assistant-dense .actions { margin-top: 0; margin-bottom: 5px; } .clickable-row { cursor: pointer; } .clickable-row:hover { background: rgba(79, 124, 255, 0.08); } .clickable-row.selected-row { background: rgba(79, 124, 255, 0.16); } .card.clickable-card { cursor: pointer; } .card.clickable-card:hover { border-color: #4f7cff; } .assistant-focus-card { border-color: #4f7cff; box-shadow: inset 0 0 0 1px rgba(79, 124, 255, 0.3); } .assistant-preference-panel { display: grid; gap: 10px; margin-bottom: 10px; } .assistant-preference-fields, .assistant-preference-template-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; } .assistant-preference-field { display: grid; gap: 6px; } .assistant-preference-input { width: 100%; padding: 8px 10px; border: 1px solid #31436c; border-radius: 8px; background: #0d1430; color: #fff; } .assistant-preference-dirty { color: #fcd34d; font-size: 12px; } .actions { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; } .actions button { padding: 10px 12px; border: 0; border-radius: 8px; background: #4f7cff; color: #fff; cursor: pointer; } .detail-panel input, .detail-panel textarea { width: 100%; margin: 0 0 10px; padding: 10px 12px; border: 1px solid #31436c; border-radius: 8px; background: #0d1430; color: #fff; } .detail-panel textarea { min-height: 88px; resize: vertical; } .empty-state { color: #cbd5e1; font-size: 13px; } .error-state { color: #fecaca; } a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #fbbf24; outline-offset: 2px; } .training-nav { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; } .training-nav a { padding: 7px 10px; border: 1px solid #31436c; border-radius: 8px; color: #dbe6ff; text-decoration: none; background: #0f1530; } .training-nav a:hover { border-color: #4f7cff; } .training-transfer { margin-bottom: 14px; } .training-workflow { margin: 0 0 14px; padding: 12px; border: 1px solid #2a3657; border-radius: 8px; background: #0f1530; color: #91a2c2; font-size: 12px; line-height: 1.45; } .training-workflow strong { display: block; margin-bottom: 6px; color: #dbe6ff; font-size: 13px; } .training-workflow ol { display: grid; gap: 4px; margin: 0; padding-left: 18px; } .training-workflow span { color: #e5e7eb; font-weight: 600; } .training-grid { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(260px, 1fr) minmax(260px, 0.8fr); gap: 16px; } .training-panel h3 { margin: 0 0 10px; font-size: 14px; color: #cbd5e1; } .training-toolbar { display: grid; grid-template-columns: minmax(260px, 1fr) auto auto auto; gap: 10px; align-items: end; } .training-field { display: grid; gap: 6px; } .training-field label { color: #cbd5e1; font-size: 13px; font-weight: 600; } .training-help { margin: 0 0 8px; color: #91a2c2; font-size: 12px; line-height: 1.4; } .training-next-step { color: #c7d2fe; } .training-case-list, .training-progress { display: grid; gap: 10px; } .training-case-card, .training-progress-row, .training-detail { padding: 12px; border: 1px solid #2a3657; border-radius: 8px; background: #0f1530; } .training-detail { min-height: 100%; display: grid; align-content: start; gap: 8px; } .training-selected-action { display: grid; gap: 8px; margin-top: 10px; } .training-case-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; align-items: center; } .training-case-card .metric, .training-case-card .status-pill { grid-column: 1; } .training-case-actions { grid-column: 2; grid-row: 1 / span 4; display: grid; gap: 8px; align-content: center; } .training-case-card button { padding: 8px 12px; } .training-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 10px; } .training-actions button, .training-toolbar button, .training-selected-action button, .training-refresh-progress, .training-case-card button { border: 0; border-radius: 8px; background: #4f7cff; color: white; cursor: pointer; } .training-actions button, .training-toolbar button, .training-selected-action button, .training-refresh-progress { padding: 10px 12px; } .training-actions button:disabled, .training-toolbar button:disabled, .training-selected-action button:disabled, .training-refresh-progress:disabled, .training-case-card button:disabled { cursor: not-allowed; opacity: 0.55; } .training-state-error { color: #fecaca; } .training-refresh-progress { margin-bottom: 10px; } .training-empty { padding: 10px 0; } #trainingImportText, #trainingAnnotationText { width: 100%; padding: 10px 12px; border: 1px solid #31436c; border-radius: 8px; background: #0d1430; color: #fff; resize: vertical; } #trainingAnnotationText { min-height: 92px; margin-top: 12px; } #trainingImportText { min-height: 44px; } .training-import { min-width: 0; } .training-error { margin-bottom: 12px; padding: 10px 12px; border: 1px solid rgba(239, 68, 68, 0.45); border-radius: 8px; background: rgba(239, 68, 68, 0.12); color: #fecaca; font-size: 13px; } @media (max-width: 960px) { .workbench-layout { grid-template-columns: 1fr; } .workbench-sidebar { position: static; max-height: none; } .workbench-nav { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); } .grid { grid-template-columns: 1fr; } .panel-wide { grid-column: span 1; } .training-toolbar { grid-template-columns: 1fr; } .training-grid { grid-template-columns: 1fr; } .training-case-card { grid-template-columns: 1fr; } .training-case-actions { grid-column: 1; grid-row: auto; } }