:root{--bg:#0c0f10;--panel:#111516;--line:#2a2f30;--line2:#202526;--text:#e6ebea;--muted:#7e8787;--green:#68d9ad;--red:#e2727c;--amber:#d9b45f;--white:#f3f6f5;font-family:Inter,Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{font-size:13px}.topbar{height:76px;display:grid;grid-template-columns:190px auto minmax(290px,400px) 1fr auto;align-items:center;gap:24px;padding:0 18px;border-bottom:1px solid var(--line);background:#101314;position:sticky;top:0;z-index:10}.wordmark{display:flex;align-items:center;gap:12px;color:var(--white);text-decoration:none;font-size:20px;font-weight:700}.logo-mark{width:38px;height:38px;border:1px solid #aeb6b5;display:grid;place-items:center;font:600 11px 'IBM Plex Mono';letter-spacing:1px}.global-search{position:relative;height:42px;border:1px solid var(--line);display:flex;align-items:center;padding:0 12px;gap:10px;background:#0d1011;border-radius:5px}.global-search>span{font:500 8px 'IBM Plex Mono';color:#50595a}.global-search input{border:0;outline:0;background:transparent;color:var(--text);width:100%;font:12px 'IBM Plex Mono'}.global-search input::placeholder{color:#6d7575}.global-search kbd{border:1px solid var(--line);color:var(--muted);padding:3px 7px;font:10px 'IBM Plex Mono';border-radius:3px}.primary-nav{display:flex;justify-content:center;gap:12px}.nav-link{background:transparent;border:0;color:#8d9595;padding:28px 14px 25px;font-weight:600;position:relative}.nav-link.active,.nav-link:hover{color:var(--white)}.nav-link.active:after{content:"";position:absolute;bottom:0;height:2px;background:var(--white);left:14px;right:14px}.account{display:flex;align-items:center;gap:8px}.alert-button,.user-button{height:42px;border:1px solid var(--line);background:#111516;color:var(--muted);border-radius:4px}.alert-button{font:9px 'IBM Plex Mono';padding:0 12px;position:relative}.notification-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--green);right:7px;top:7px}.user-button{display:flex;align-items:center;gap:9px;padding:0 9px;text-align:left}.avatar{width:28px;height:28px;background:#dce2e0;color:#111;display:grid;place-items:center;font:600 9px 'IBM Plex Mono'}.user-button b,.user-button small{display:block}.user-button b{font-size:11px;color:var(--text)}.user-button small{font:8px 'IBM Plex Mono';color:var(--muted)}.chevron{margin-left:8px}.search-results{position:absolute;left:0;top:46px;width:100%;border:1px solid var(--line);background:#111516;box-shadow:0 16px 40px #0008;display:none;z-index:20}.search-results.show{display:block}.search-item{display:flex;justify-content:space-between;padding:12px;border-bottom:1px solid var(--line2);cursor:pointer}.search-item:hover{background:#171c1d}.search-item b{font:600 11px 'IBM Plex Mono'}.search-item span{color:var(--muted);font-size:10px}.terminal{display:grid;grid-template-columns:minmax(700px,2.45fr) minmax(330px,1fr);gap:12px;padding:12px;max-width:1820px;margin:auto}.left-stack,.right-stack{display:flex;flex-direction:column;gap:12px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:5px;overflow:hidden}.panel-toolbar,.panel-head{height:54px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 16px}.panel-toolbar{justify-content:space-between;gap:14px}.company-id{display:flex;align-items:center;gap:9px;min-width:205px}.country-code{width:32px;height:32px;border:1px solid #42494a;display:grid;place-items:center;font:600 9px 'IBM Plex Mono'}.company-id b,.company-id small{display:block}.company-id b{font:600 13px 'IBM Plex Mono'}.company-id small{font:8px 'IBM Plex Mono';color:var(--muted);margin-top:3px}.toolbar-tabs,.range-tabs,.micro-tabs{display:flex;align-items:center}.toolbar-tabs{border-left:1px solid var(--line);border-right:1px solid var(--line);padding:0 14px}.tool-tab,.range-tabs button,.micro-tabs button{border:0;background:transparent;color:var(--muted);font:500 9px 'IBM Plex Mono';height:30px;padding:0 10px}.tool-tab.active,.tool-tab:hover,.range-tabs button.active,.range-tabs button:hover,.micro-tabs button.active,.micro-tabs button:hover{color:var(--white)}.range-tabs{border:1px solid var(--line);border-radius:4px;padding:2px}.range-tabs button{height:27px;padding:0 9px}.range-tabs button.active{border:1px solid #778080;border-radius:3px;background:#181c1d}.range-tabs.small button{height:24px;padding:0 8px}.chart-summary{height:54px;display:flex;align-items:center;gap:28px;padding:0 16px;border-bottom:1px solid var(--line2)}.chart-summary span small,.chart-summary span b{display:block}.chart-summary small,.role-stats small,.flow-kpis small,.signal-top small{font:7px 'IBM Plex Mono';color:var(--muted);letter-spacing:.7px}.chart-summary b{font:600 11px 'IBM Plex Mono';margin-top:4px}.legend{margin-left:auto;color:var(--muted);font:8px 'IBM Plex Mono'}.legend-buy{display:inline-block;width:7px;height:7px;background:var(--green);border-radius:50%;margin-right:6px}.chart-image{height:340px;padding:8px 12px 10px}.chart-image img,.module-chart{width:100%;height:100%;object-fit:fill;display:block}.two-column{display:grid;grid-template-columns:1.18fr .92fr;gap:12px}.lower-row{grid-template-columns:1fr 1fr}.compact-panel{height:280px}.lower-row .compact-panel{height:290px}.panel-head{justify-content:space-between;height:48px}.panel-head h2{font:600 12px 'IBM Plex Mono';margin:0}.module-chart{height:174px;padding:9px 14px 0;object-fit:fill}.roles-chart{height:137px}.module-foot{height:36px;border-top:1px solid var(--line2);display:flex;align-items:center;justify-content:space-around;color:var(--muted);font:8px 'IBM Plex Mono'}.role-stats{display:grid;grid-template-columns:1fr 1fr 1fr;padding:13px 16px 0}.role-stats span{border-right:1px solid var(--line);padding-left:12px}.role-stats span:first-child{padding-left:0}.role-stats span:last-child{border:0}.role-stats b{font:500 23px 'IBM Plex Mono';display:block;margin-top:4px}.flow-kpis{display:grid;grid-template-columns:repeat(4,1fr);padding:12px 16px 0}.flow-kpis span{border-right:1px solid var(--line);padding-left:12px}.flow-kpis span:first-child{padding-left:0}.flow-kpis span:last-child{border:0}.flow-kpis b{font:500 14px 'IBM Plex Mono';display:block;margin-top:5px}.lower-chart{height:166px;padding-top:4px}.edge-meta{display:flex;justify-content:space-between;align-items:center;padding:11px 16px 0;color:var(--muted);font:8px 'IBM Plex Mono'}.edge-meta b{color:var(--green)}.right-stack .panel{flex-shrink:0}.score-panel{min-height:388px}.live-label{font:8px 'IBM Plex Mono';color:var(--muted)}.live-label i{display:inline-block;width:5px;height:5px;background:var(--green);border-radius:50%;margin-right:6px}.signal-top{display:flex;align-items:flex-end;justify-content:space-between;padding:17px 16px 14px}.signal-top strong{font:500 38px 'IBM Plex Mono';line-height:1}.signal-top>div>span{color:var(--muted);font:10px 'IBM Plex Mono'}.signal-status{border:1px solid #6e6142;background:#201e17;color:var(--amber);padding:7px 9px;font:600 8px 'IBM Plex Mono'}.signal-grid{display:grid;grid-template-columns:1fr 1fr;margin:0 16px;border:1px solid var(--line)}.signal-grid div{padding:10px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);position:relative}.signal-grid div:nth-child(even){border-right:0}.signal-grid div:nth-child(n+3){border-bottom:0}.signal-grid small{font:7px 'IBM Plex Mono';color:var(--muted)}.signal-grid b{display:block;margin-top:3px;font:500 16px 'IBM Plex Mono'}.signal-grid i{position:absolute;left:10px;right:10px;bottom:6px;height:2px;background:linear-gradient(to right,var(--green) var(--fill),var(--line) var(--fill))}.signal-grid i.watch{background:linear-gradient(to right,var(--amber) var(--fill),var(--line) var(--fill))}.event-facts{display:grid;grid-template-columns:1fr 1fr;margin:14px 16px 0}.event-facts div{padding:8px 0;border-top:1px solid var(--line2)}.event-facts div:nth-child(even){padding-left:14px;border-left:1px solid var(--line2)}.event-facts span,.event-facts b{display:block}.event-facts span{font:7px 'IBM Plex Mono';color:var(--muted)}.event-facts b{font:500 10px 'IBM Plex Mono';margin-top:4px}.source-button{margin:4px 16px 14px;width:calc(100% - 32px);height:34px;background:#171b1c;border:1px solid var(--line);color:var(--text);display:flex;justify-content:space-between;align-items:center;padding:0 10px;font:500 8px 'IBM Plex Mono'}.source-button span{color:var(--muted)}.dilution-panel{height:275px}.donut-layout{display:grid;grid-template-columns:44% 56%;align-items:center;height:225px;padding:6px 12px}.donut-layout>img{width:100%;height:190px;object-fit:contain}.donut-legend{padding-right:8px}.donut-legend span{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:7px;padding:8px 0;border-bottom:1px solid var(--line2)}.donut-legend i{width:7px;height:7px;background:var(--white)}.donut-legend i.mid{background:#777e7f}.donut-legend i.dark{background:#414748}.donut-legend i.outline{background:transparent;border:1px solid #767e7e}.donut-legend b{font:500 8px 'IBM Plex Mono'}.donut-legend em{font:normal 8px 'IBM Plex Mono';color:var(--muted)}.assistant-panel{min-height:430px;display:flex;flex-direction:column}.ai-state{font:7px 'IBM Plex Mono';color:var(--muted)}.chat-thread{padding:14px 16px;flex:1}.question{margin-left:17%;padding:11px;background:#2a2e2f;font:500 10px 'IBM Plex Mono';line-height:1.5}.question small{display:block;text-align:right;color:var(--muted);font-size:7px}.answer{margin-top:12px;background:#e3e8e6;color:#121616;padding:13px;font-size:10px;line-height:1.5}.answer>b{font:600 9px 'IBM Plex Mono';text-transform:uppercase}.answer p{margin:8px 0}.answer p strong{font-weight:700}.answer span{display:block;border-top:1px solid #bac1bf;padding-top:8px;font:600 8px 'IBM Plex Mono'}.ai-input{height:50px;border-top:1px solid var(--line);display:flex;padding:8px}.ai-input input{flex:1;border:0;background:transparent;color:var(--text);outline:0;padding:0 8px;font:10px 'IBM Plex Mono'}.ai-input button{border:1px solid var(--line);background:#1b2021;color:var(--text);font:8px 'IBM Plex Mono';padding:0 12px}.positive{color:var(--green)!important}.negative{color:var(--red)!important}.view-placeholder{min-height:calc(100vh - 76px);display:grid;place-content:center;text-align:center;background:var(--bg)}.view-placeholder>span{font:8px 'IBM Plex Mono';color:var(--green);letter-spacing:2px}.view-placeholder h1{font-size:42px;margin:12px}.view-placeholder p{color:var(--muted);max-width:500px}.view-placeholder button{justify-self:center;margin-top:14px;border:1px solid var(--line);background:#171b1c;color:var(--text);padding:12px 18px;font:9px 'IBM Plex Mono'}.toast{position:fixed;bottom:18px;left:50%;transform:translate(-50%,20px);background:#e3e8e6;color:#121616;padding:10px 14px;font:9px 'IBM Plex Mono';opacity:0;pointer-events:none;transition:.2s;z-index:30}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1180px){.topbar{grid-template-columns:175px auto 1fr auto}.primary-nav{display:none}.terminal{grid-template-columns:1fr}.right-stack{display:grid;grid-template-columns:1fr 1fr}.assistant-panel{grid-column:1/-1}.chart-image{height:310px}}@media(max-width:760px){.mode-badge{display:none}.topbar{height:auto;grid-template-columns:1fr auto;padding:12px}.global-search{grid-column:1/-1;grid-row:2}.account .alert-button,.user-button>span:not(.avatar){display:none}.terminal{padding:8px}.two-column,.lower-row,.right-stack{display:block}.panel{margin-bottom:8px}.panel-toolbar{height:auto;min-height:54px;flex-wrap:wrap;padding:8px}.toolbar-tabs{display:none}.chart-summary{overflow:auto}.chart-image{height:260px}.compact-panel,.lower-row .compact-panel{height:270px}.score-panel,.dilution-panel,.assistant-panel{height:auto;min-height:0}.search-results{left:0;right:0;top:46px;width:auto}}
/* --- live data mode --- */
.mode-badge{margin-left:16px;padding:5px 11px;border:1px solid var(--line);border-radius:999px;font:600 9px 'IBM Plex Mono';letter-spacing:.9px;color:var(--muted);display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.mode-badge::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.mode-badge.live{color:var(--green);border-color:#245a44}
.mode-badge.demo{color:var(--amber);border-color:#5e4d28}
.signals-view{min-height:calc(100vh - 76px);padding:18px;background:var(--bg)}
.signals-view .view-head{display:flex;justify-content:space-between;align-items:baseline;max-width:1500px;margin:0 auto 14px}
.signals-view h1{font:600 20px 'IBM Plex Mono';margin:0}
.signals-view .view-head small{font:9px 'IBM Plex Mono';color:var(--muted)}
.table-wrap{max-width:1500px;margin:0 auto;border:1px solid var(--line);border-radius:6px;overflow:auto;max-height:calc(100vh - 170px);background:var(--panel)}
.signals-table{width:100%;border-collapse:collapse;font:11px 'IBM Plex Mono'}
.signals-table th{position:sticky;top:0;background:#151a1b;color:var(--muted);text-transform:uppercase;font-size:8px;letter-spacing:1px;padding:11px 13px;text-align:left;border-bottom:1px solid var(--line);z-index:2}
.signals-table td{padding:10px 13px;border-bottom:1px solid var(--line2);white-space:nowrap;color:var(--text)}
.signals-table tbody tr:hover td{background:#171c1d}
.sig-type{font-weight:700}.sig-type.BUY{color:var(--green)}.sig-type.SELL{color:var(--red)}.sig-type.OPTION,.sig-type.AWARD{color:var(--amber)}
.sig-score{font-weight:700}.sig-score.hot{color:var(--green)}.sig-score.warm{color:var(--amber)}
.src-link{color:#7ba7c9;text-decoration:none;border-bottom:1px dotted #3d5568}
.empty-note{padding:40px;text-align:center;color:var(--muted);font:10px 'IBM Plex Mono'}

/* --- market selector bar + live canvases ---------------------------------- */
.market-bar{display:flex;align-items:center;gap:18px;padding:8px 22px;border-bottom:1px solid var(--line,#232a36);background:rgba(10,14,20,.55);backdrop-filter:blur(6px);flex-wrap:wrap}
.market-tabs{display:flex;gap:2px}
.market-tabs button{background:transparent;border:1px solid transparent;color:var(--muted,#8b96a8);font:600 10px/1 ui-monospace,monospace;letter-spacing:.08em;padding:7px 12px;border-radius:3px;cursor:pointer;transition:all .15s}
.market-tabs button:hover{color:var(--text,#e8ecf2)}
.market-tabs button.active{color:var(--text,#e8ecf2);border-color:var(--line,#2c3546);background:rgba(46,204,113,.08)}
.market-note{font:500 9px/1.5 ui-monospace,monospace;letter-spacing:.06em;color:var(--muted,#8b96a8)}
.market-note b{color:var(--green,#2ecc71)}
.market-note i{font-style:normal;color:var(--amber,#f5a623)}
#priceChart{width:100%;height:100%;display:block}
#sentimentChart{width:100%;height:74px;display:block}
.chart-image{position:relative}
@media(max-width:760px){.market-note{display:none}}
.signals-table tbody tr{cursor:pointer}
.signals-table tbody tr:hover{background:rgba(46,204,113,.06)}
.signals-table tbody tr.selected{background:rgba(245,166,35,.10);outline:1px solid rgba(245,166,35,.35)}
