body { --bg: #070e19; --panel: #111d2e; --ink: #e7effa; --muted: #a0b1c8; --line: #2a3b53; --blue: #497cf7; background: radial-gradient(ellipse at top right, #192c49 0, #070e19 65%); color: var(--ink); }
header { background: rgba(8, 17, 30, .96); border-color: var(--line); }
header nav a, button.secondary { background: #17263c; color: #e7effa; }
.panel, .toolbar, .metric { background: var(--panel); border-color: var(--line); }
input, select, textarea { background: #0c1728; color: #e7effa; border-color: var(--line); }
.toolbar input, .toolbar select { background: #0c1728; color: #e7effa; }
.market-tabs button, .quick-symbols button { background: #17263c; color: #dce8fa; }
.market-tabs button.active, .quick-symbols button.active { background: #2c55b0; color: white; }
.watchlist-items button { background: #172b44; color: #d9e8fb; border-color: #3c5878; }
.signal-card { background: #16263b; border-color: #36506d; color: #e1ebf8; }
.signal-card-grid span { color: #bacce2; }
.signal-output { background: #091321; color: #c9daee; border-color: #30425c; max-height: 330px; }
.status.ok { color: #8cf0c1; background: #153329; }
.status.warn { color: #ffe0a4; background: #3c301b; }
.status.error { color: #ffb6c4; background: #3d202b; }
.desk-hero { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 25px; padding: 30px; margin-bottom: 18px; border: 1px solid #345172; border-radius: 18px; background: linear-gradient(125deg, #162941, #101c2c); }
.desk-eyebrow { color: #8ddbd2; text-transform: uppercase; font-size: .72rem; letter-spacing: .2em; font-weight: 800; }
.desk-hero h2 { font-size: clamp(1.6rem, 3vw, 2.7rem); letter-spacing: -.045em; margin: 10px 0; }
.desk-hero p { color: #b6c8df; max-width: 650px; line-height: 1.6; }
.desk-chips { display: flex; gap: 9px; flex-wrap: wrap; }
.desk-chip { font-size: .75rem; border: 1px solid #416080; padding: 7px 10px; border-radius: 20px; color: #c7daef; }
.desk-bot { width: 130px; height: 130px; border-radius: 30px; background: linear-gradient(145deg, #3c536e, #14263c); box-shadow: inset 0 2px 0 #7b94af, 0 15px 25px #040a12; position: relative; display: grid; place-items: center; border: 1px solid #6683a0; }
.desk-bot::before { content: ''; width: 87px; height: 58px; background: #07101e; border: 1px solid #3b5f7b; border-radius: 15px; box-shadow: inset 0 3px 8px #000; }
.desk-bot::after { content: '••'; letter-spacing: 13px; padding-left: 13px; font-size: 38px; color: #81cbd3; position: absolute; top: 33px; }
.desk-bot.busy::after { animation: desk-pulse 1.2s ease-in-out infinite; color: #65ffd0; }
@keyframes desk-pulse { 50% { opacity: .35; text-shadow: 0 0 16px #45ffc8; } }
.desk-console { margin: 18px 0; }
.desk-console-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; }
.desk-console-head h2 { margin: 0; }
.desk-status { color: #a9c9ee; font-size: .9rem; }
.desk-pipeline { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 18px 0; }
.desk-step { border: 1px solid #334961; border-radius: 10px; padding: 14px; background: #0b1728; }
.desk-step small { display: block; color: #9eb1ca; margin-bottom: 9px; }
.desk-step strong { font-size: .85rem; }
.desk-step[data-state="active"] { border-color: #67b9ee; box-shadow: inset 0 0 12px #183e5b; }
.desk-step[data-state="done"] strong { color: #8be9be; }
.desk-step[data-state="missing"] strong { color: #ffce86; }
.desk-evidence-grid, .desk-signal-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.desk-evidence-grid article { padding: 12px; background: #17283d; border-radius: 8px; min-width: 0; }
.desk-evidence-grid small, .desk-signal-grid small { color: #a8bdd8; display: block; margin-bottom: 7px; }
.desk-evidence-grid strong { font-size: .95rem; overflow-wrap: anywhere; }
.desk-source { font-size: .8rem; color: #a7bbd4; overflow-wrap: anywhere; line-height: 1.7; }
.desk-source a, .desk-tool a { color: #96c8ff; text-decoration: underline; }
.desk-signal { border: 1px solid #52708b; border-radius: 14px; padding: 19px; margin: 15px 0; background: linear-gradient(140deg, #152940, #101a2a); }
.desk-signal[data-direction="BUY"] { border-color: #4db893; }
.desk-signal[data-direction="SELL"] { border-color: #df708a; }
.desk-signal header { position: static; background: none; padding: 0 0 15px; border: 0; }
.desk-direction { font-size: 1.5rem; font-weight: 900; color: #f5ca86; }
.desk-signal[data-direction="BUY"] .desk-direction { color: #73e2b6; }
.desk-signal[data-direction="SELL"] .desk-direction { color: #ffa1b5; }
.desk-signal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.desk-signal-grid strong { font-size: .98rem; overflow-wrap: anywhere; }
.desk-signal p, .desk-signal li { color: #c0d0e3; font-size: .86rem; line-height: 1.6; }
.desk-tool-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin: 18px 0; }
.desk-tool-tabs button { background: #172b44; color: #d9e8fb; border: 1px solid #355070; font-size: .83rem; font-weight: 700; }
.desk-tool-tabs button[aria-pressed="true"] { background: #315bb3; border-color: #83adff; }
.desk-tool { border: 1px solid #344c68; border-radius: 12px; padding: 22px; background: #0d1a2b; }
.desk-tool h3 { font-size: 1.4rem; margin-top: 0; }
.desk-tool p, .desk-tool li { line-height: 1.75; color: #bacce2; }
.desk-tool form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; margin-top: 20px; }
.desk-tool label { display: grid; gap: 8px; color: #c1d3e9; font-size: .86rem; }
.desk-tool input, .desk-tool select, .desk-tool textarea { width: 100%; min-width: 0; padding: 10px; border: 1px solid #4c6583; border-radius: 7px; }
.desk-tool textarea { min-height: 120px; }
.desk-tool .desk-full { grid-column: 1 / -1; }
.desk-tool input[type="checkbox"] { width: auto; }
.desk-tool .desk-check { display: flex; gap: 12px; align-items: start; padding: 10px 0; }
.desk-result { white-space: pre-line; border-left: 3px solid #83c5e5; padding: 12px 15px; background: #132b40; }
.desk-journal { max-height: 300px; overflow: auto; }
.desk-journal article { padding: 12px; border-bottom: 1px solid #34506e; }
.desk-level-map { position: relative; height: 290px; border: 1px solid #405877; border-radius: 8px; margin-top: 12px; background: repeating-linear-gradient(#0d1b2d 0 48px, #23364c 49px 50px); }
.desk-level-map .chart-line-label, .desk-level-map .chart-zone-label { font-size: .7rem; }
@media(max-width: 850px) { .desk-evidence-grid, .desk-pipeline { grid-template-columns: repeat(2, minmax(0, 1fr)); } .desk-tool form { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media(max-width: 550px) { .desk-hero { padding: 20px; grid-template-columns: 1fr; } .desk-bot { display: none; } .desk-tool { padding: 15px; } .desk-tool form { grid-template-columns: 1fr; } .desk-tool-tabs { flex-wrap: nowrap; overflow: auto; padding-bottom: 10px; } .desk-tool-tabs button { flex-shrink: 0; } }
@media(prefers-reduced-motion: reduce) { .desk-bot.busy::after { animation: none; } }
/* Daily opportunity cards keep provenance and missing checks beside each outlook. */
.opportunity-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 16px; margin-top: 20px; }
.opportunity-card { min-width: 0; padding: 20px; border: 1px solid #456079; border-radius: 14px; background: rgba(16,32,54,.5); overflow-wrap: anywhere; }
.opportunity-card h3 { margin-bottom: 12px; }
.opportunity-card p { margin-block: 12px; line-height: 1.65; }
.opportunity-card small { display: block; line-height: 1.6; }
.opportunity-card ul { padding-left: 20px; margin-block: 12px; }
.opportunity-card a { color: #8dcaff; text-underline-offset: 3px; }
#opportunityStatus { margin-block: 16px; }
.opportunity-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; }
.opportunity-heading h3 { margin: 0; font-size: 1.15rem; letter-spacing: .03em; }
.opportunity-badge { padding: 5px 10px; border: 1px solid #62768e; border-radius: 999px; font-size: .75rem; color: #e0e9f5; background: #23344c; }
.opportunity-card .opportunity-outlook { font-size: 1.05rem; font-weight: 600; color: #d2e8ff; }
.opportunity-checks { margin-block: 16px; border-block: 1px solid #3a4d65; padding-block: 12px; }
.opportunity-checks summary { cursor: pointer; color: #d2e8ff; }
.opportunity-checks summary:focus-visible { outline: 2px solid #8dcaff; outline-offset: 4px; }
.opportunity-levels { display: grid; gap: 10px; margin-block: 16px; }
.opportunity-levels > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 12px; }
.opportunity-levels dt { color: #b4c5da; font-size: .85rem; }
.opportunity-levels dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }

.broker-connections{scroll-margin-top:100px}.broker-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.broker-heading h2{margin:9px 0}.broker-heading p,.broker-footnote{color:#738a9b;font-size:12px;line-height:1.8}.broker-connection-state{font-size:11px;color:#9bb3c3;border:1px solid #385366;border-radius:18px;padding:7px 12px;white-space:nowrap}.broker-toolbar{display:flex;gap:15px;margin:22px 0}.broker-toolbar label{display:grid;gap:7px;font-size:12px;color:#a4b9c7}.broker-toolbar label:first-child{flex:1}.broker-toolbar input,.broker-toolbar select{width:100%}.broker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.broker-card{min-width:0;padding:21px;background:#102b3b;border:1px solid #29495a;border-radius:12px}.broker-card-heading{display:flex;align-items:center;gap:12px}.broker-card-heading h3{font-size:17px;color:#e8f1f5;margin:0}.broker-monogram{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#294959;color:#dac08b;font-weight:700;font-size:17px}.broker-meta{color:#94adbc;font-size:11px;min-height:20px;line-height:1.7;margin:14px 0}.broker-card-status{display:inline-block;font-size:10px;color:#bfa779;background:#302f27;border-radius:12px;padding:5px 8px}.broker-actions{display:flex;flex-wrap:wrap;align-items:center;gap:13px;margin-top:21px}.broker-actions a{color:#dfc48a;text-underline-offset:4px;font-size:12px}.broker-actions button{font-size:11px;padding:8px 10px}.broker-footnote{margin:20px 0 0}.broker-empty{padding:25px;color:#a5bbc9;text-align:center}.broker-dialog{box-sizing:border-box;max-width:560px;width:calc(100% - 32px);background:#102b3b;color:#d5e3ec;border:1px solid #49616d;border-radius:14px;padding:26px}.broker-dialog::backdrop{background:#04101bd9}.broker-dialog h2{margin:15px 0}.broker-dialog p{font-size:13px;line-height:1.8;overflow-wrap:anywhere}.broker-dialog form{display:flex;justify-content:flex-end;margin-bottom:15px}.broker-dialog-status{padding:14px;background:#203b48;border-radius:8px;color:#bdced8}.broker-connections :focus-visible{outline:2px solid #d3b276;outline-offset:3px}
@media(max-width:1100px){.broker-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.broker-grid{grid-template-columns:1fr}.broker-heading{align-items:start;flex-direction:column;gap:8px}.broker-toolbar{flex-direction:column}.broker-card{padding:18px}.broker-dialog{padding:20px}}

@media(max-width:620px){.broker-connections{scroll-margin-top:180px}}
