:root{
  --bg:#0b0e14; --panel:#11151f; --panel2:#161b27; --line:#1f2633;
  --txt:#c7d0dd; --muted:#6b7686; --accent:#4aa3ff;
  --up:#26a69a; --down:#ef5350; --entry:#4caf50; --stop:#ef5350; --target:#42a5f5;
  --gold:#e3b341;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--txt);font:13px/1.4 -apple-system,Segoe UI,Roboto,sans-serif}
.mono,.kv b,.clock{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.muted{color:var(--muted);font-weight:400}
.hidden{display:none!important}

#topbar{display:flex;align-items:center;justify-content:space-between;
  padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{font-weight:700;letter-spacing:.5px;color:#fff}
.brand .tag{color:var(--muted);font-weight:400;font-size:11px}
.top-meta{display:flex;gap:10px;align-items:center}
.badge{background:var(--panel2);border:1px solid var(--line);border-radius:5px;
  padding:3px 8px;font-size:11px;text-transform:uppercase;letter-spacing:.4px}
.badge.live{color:var(--gold);border-color:#3a3320}
.clock{color:var(--muted);font-size:12px}

#layout{display:grid;grid-template-columns:325px 1fr 320px;height:calc(100vh - 41px)}
aside,section{overflow:auto}
#scanner{border-right:1px solid var(--line);background:var(--panel)}
#intel{border-left:1px solid var(--line);background:var(--panel);padding-bottom:30px}
.panel-title{padding:9px 12px;font-size:11px;text-transform:uppercase;letter-spacing:.6px;
  color:var(--muted);background:var(--panel2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:2}
.panel-title.collapsible{cursor:pointer;user-select:none}
.panel-title.collapsible:hover{color:#fff}
.panel-title .chev{float:right;transition:transform .15s;opacity:.7}
.panel-title.collapsed .chev{transform:rotate(-90deg)}
.section-collapsed{display:none!important}

/* scanner controls */
#scanControls{padding:8px 8px 2px}
.add-line{display:flex;gap:5px;margin-bottom:5px}
.add-line input{flex:1;min-width:0;background:var(--panel2);color:var(--txt);
  border:1px solid var(--line);border-radius:5px;padding:5px 8px;font-size:12px}
.add-line input:focus{border-color:var(--accent);outline:none}
.ctl-btn.primary{background:#16263a;border-color:var(--accent);color:#fff}
.add-msg{font-size:10px;min-height:12px;margin:-2px 0 5px;padding-left:2px}
.add-msg.ok{color:var(--up)} .add-msg.err{color:var(--down)} .add-msg{color:var(--muted)}
.scan-count{margin-left:auto;color:var(--muted);font-size:11px;font-family:ui-monospace,Menlo,monospace}
.ctl-line{display:flex;gap:5px;align-items:center;margin-bottom:5px}
.ctl-lbl{color:var(--muted);font-size:11px;width:30px;flex-shrink:0}
#scanControls select{flex:1;min-width:0;background:var(--panel2);color:var(--txt);
  border:1px solid var(--line);border-radius:5px;padding:4px 6px;font-size:11px}
.ctl-btn{background:var(--panel2);border:1px solid var(--line);border-radius:5px;
  color:var(--txt);cursor:pointer;font-size:11px;padding:4px 9px;white-space:nowrap}
.ctl-btn:hover{color:#fff;border-color:var(--accent)}
.ctl-btn.on{color:#fff;border-color:var(--accent);background:#16263a}
.ctl-btn.icon{color:var(--muted);padding:4px 7px}

/* in-app name / confirm prompt */
#namePrompt{margin:2px 8px 6px;padding:8px;background:#16263a;border:1px solid var(--accent);border-radius:7px}
.np-label{font-size:11px;color:var(--txt);margin-bottom:6px}
.np-row{display:flex;gap:5px}
.np-row input{flex:1;min-width:0;background:var(--panel);color:var(--txt);
  border:1px solid var(--line);border-radius:5px;padding:5px 7px;font-size:12px}
.np-row button{background:var(--panel2);border:1px solid var(--line);border-radius:5px;
  color:var(--txt);cursor:pointer;font-size:11px;padding:5px 10px}
.np-row button.primary{background:#16263a;border-color:var(--accent);color:#fff}
.np-row button.danger{background:#2a1416;border-color:#4a1f23;color:#ff6b6b}
.np-row button.icon{padding:5px 8px;color:var(--muted)}
#filterPanel{padding:8px;margin:4px 8px;background:var(--panel2);border:1px solid var(--line);border-radius:7px}
.fp-row{display:flex;align-items:center;gap:6px;margin-bottom:7px;font-size:11px}
.fp-row label{color:var(--muted);width:64px;flex-shrink:0}
.fp-row input[type=number]{width:56px;background:var(--panel);color:var(--txt);
  border:1px solid var(--line);border-radius:4px;padding:2px 5px;font-size:11px}
.fp-row select{flex:1;background:var(--panel);color:var(--txt);border:1px solid var(--line);border-radius:4px;padding:2px 5px;font-size:11px}
.chip{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:2px 8px;font-size:10px;cursor:pointer;color:var(--muted)}
.chip.on{color:#fff;border-color:var(--accent);background:#16263a}
.fp-actions{display:flex;gap:5px;margin-top:6px}
.fp-actions button{flex:1;background:var(--panel);border:1px solid var(--line);border-radius:5px;
  color:var(--txt);cursor:pointer;font-size:11px;padding:5px}
.fp-actions button.primary{border-color:var(--accent);background:#16263a;color:#fff}
.fp-actions button.danger{border-color:#4a1f23;background:#2a1416;color:#ff6b6b}

/* scanner */
.tabs{display:flex;flex-wrap:wrap;gap:4px;padding:8px}
.tab{background:var(--panel2);color:var(--muted);border:1px solid var(--line);
  border-radius:5px;padding:3px 8px;font-size:11px;cursor:pointer}
.tab.active{color:#fff;border-color:var(--accent);background:#16263a}
#scanTable{width:100%;border-collapse:collapse;font-size:12px}
#scanTable th{position:sticky;top:34px;text-align:left;color:var(--muted);font-weight:500;
  padding:6px 8px;border-bottom:1px solid var(--line);cursor:pointer;background:var(--panel);font-size:11px}
#scanTable td{padding:6px 5px;border-bottom:1px solid #161b27;white-space:nowrap}
#scanTable td.symcell{white-space:nowrap}
#scanTable td.symcell .sdot{margin-right:5px}
#scanTable td.symcell b{font-size:12px}
#scanTable th{padding:6px 5px}
#scanTable tbody tr{cursor:pointer}
#scanTable tbody tr:hover{background:#16202f}
#scanTable tbody tr.sel{background:#16263a}
.trend-Up{color:var(--up)} .trend-Down{color:var(--down)} .trend-Sideways{color:var(--muted)}
.dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px}
.hint{padding:8px 12px;color:var(--muted);font-size:11px}

/* chart */
#chartZone{display:flex;flex-direction:column;background:var(--bg)}
#chartToolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;
  padding:7px 12px;border-bottom:1px solid var(--line);background:var(--panel)}
#chartToolbar button{background:var(--panel2);color:var(--muted);border:1px solid var(--line);
  border-radius:5px;padding:3px 8px;font-size:11px;cursor:pointer}
#chartToolbar button.active{color:#fff;border-color:var(--accent);background:#16263a}
#chartToolbar button.disabled{opacity:.4;cursor:not-allowed}
.tf-group,.style-group,.ind-group{display:flex;gap:3px}
.ind-group{flex-wrap:wrap}
#fsBtn{margin-left:auto;font-size:14px}
#chartTitle{padding:6px 12px;font-size:12px;display:flex;gap:10px;align-items:center}
#ctSym{font-weight:700;font-size:14px;color:#fff}
.pill{padding:2px 8px;border-radius:10px;font-size:11px;border:1px solid var(--line)}
#mainChart{flex:1;min-height:340px}
#oscChart{height:140px;border-top:1px solid var(--line)}

/* intelligence */
.meter-row{display:flex;align-items:center;gap:8px;padding:10px 12px}
.meter{flex:1;height:8px;background:var(--panel2);border-radius:5px;overflow:hidden}
.meter-fill{height:100%;width:0;background:linear-gradient(90deg,#ef5350,#e3b341,#26a69a);transition:width .4s}
.kv{padding:4px 12px 10px}
.kv div{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px solid #141a25}
.kv span{color:var(--muted)} .kv b{color:var(--txt);font-weight:600}
.kv .stop-calc{display:block;color:#7d8799;font-family:ui-monospace,Menlo,monospace;font-size:11px;
  padding:6px 0 2px;border-bottom:none;text-align:right}
.good{color:var(--up)!important} .bad{color:var(--down)!important} .warn{color:var(--gold)!important}

#optionsBox{padding:8px 12px}
.opt-card{background:var(--panel2);border:1px solid var(--line);border-radius:6px;padding:8px;margin-bottom:8px}
.opt-card h4{margin:0 0 5px;font-size:12px;color:#fff;display:flex;justify-content:space-between}
.opt-card .row{display:flex;justify-content:space-between;font-size:11px;padding:1px 0}
.opt-card .row span{color:var(--muted)}
.refuse{color:var(--gold);font-size:11px}

.status-badge{margin:10px 12px;padding:8px;border-radius:6px;text-align:center;
  font-weight:700;letter-spacing:1px;text-transform:uppercase;border:1px solid var(--line)}
.st-Valid{background:#11291f;color:#36d399;border-color:#1d4733}
.st-Waiting{background:#2a2410;color:#e3b341;border-color:#48400f}
.st-Chasing{background:#2d1a10;color:#ff9d4d;border-color:#4a2c14}
.st-Broken{background:#2a1416;color:#ff6b6b;border-color:#4a1f23}
#warnBox{padding:0 12px}
.warn-item{background:#241a10;border-left:3px solid var(--gold);color:#f0c46a;
  padding:6px 8px;margin-bottom:6px;border-radius:0 4px 4px 0;font-size:11px}

/* top nav */
#viewNav{display:flex;gap:4px;margin-left:18px}
.navbtn{background:transparent;color:var(--muted);border:1px solid var(--line);
  border-radius:6px;padding:4px 14px;font-size:12px;cursor:pointer}
.navbtn.active{color:#fff;border-color:var(--accent);background:#16263a}

/* portfolio view */
#portfolioView,#journalView,#opportunitiesView{height:calc(100vh - 41px);overflow:auto;padding:14px}

/* Best Opportunities board */
.opp-title{font-size:18px;font-weight:800;letter-spacing:.4px;color:#fff;margin-bottom:4px}
.opp-meta{display:flex;gap:10px;align-items:center;font-size:12px;flex-wrap:wrap;margin-bottom:14px}
.opp-counts{margin-left:auto}.opp-counts b{font-family:ui-monospace,Menlo,monospace}
.opp-row{display:grid;grid-template-columns:34px 90px 130px 130px 1fr 120px;align-items:center;gap:10px;
  background:var(--panel);border:1px solid var(--line);border-left-width:3px;border-radius:8px;
  padding:10px 12px;margin-bottom:7px;cursor:pointer;font-size:13px}
.opp-row:hover{background:#16202f}
.opp-row.opp-buy{border-left-color:#36d399} .opp-row.opp-wait{border-left-color:#e3b341}
.opp-row.opp-aside{border-left-color:#9aa4b2} .opp-row.opp-broken{border-left-color:#ef5350}
.opp-rank{font-family:ui-monospace,Menlo,monospace;color:var(--muted);font-size:16px;text-align:center}
.opp-sym b{font-size:16px;color:#fff;display:block}
.opp-sym .opp-conf{font-size:10px;color:var(--muted)}
.opp-state{font-weight:700;font-size:12px;white-space:nowrap}
.opp-buy .opp-state{color:#36d399} .opp-wait .opp-state{color:#e3b341}
.opp-aside .opp-state{color:#9aa4b2} .opp-broken .opp-state{color:#ff6b6b}
.opp-expr{color:var(--accent);font-size:12px;white-space:nowrap}
.opp-reason{color:#b9c2d0;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opp-price{text-align:right;font-family:ui-monospace,Menlo,monospace;font-size:13px}

/* journal */
.jf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:8px}
.jf-grid label,.jf-full{display:flex;flex-direction:column;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.jf-full{margin-bottom:8px}
.jf-grid input,.jf-full input{margin-top:3px;background:var(--panel);color:var(--txt);border:1px solid var(--line);
  border-radius:5px;padding:5px 7px;font-size:12px;text-transform:none;letter-spacing:0}
.jf-grid input:focus,.jf-full input:focus{border-color:var(--accent);outline:none}
.jf-mistakes{display:flex;flex-wrap:wrap;gap:5px;align-items:center;font-size:11px;color:var(--muted);margin-bottom:8px}
#jrForm{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:12px}
.mtag{display:inline-block;background:#2a1416;color:#ff8a8a;border-radius:4px;padding:1px 6px;font-size:10px;margin:0 3px 2px 0}
.jr-edit,.jr-del{cursor:pointer;color:var(--muted);padding:0 3px}
.jr-edit:hover{color:var(--accent)} .jr-del:hover{color:var(--down)}
.pf-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px}
.acct-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.acct-tab{background:var(--panel2);border:1px solid var(--line);border-radius:7px;
  padding:6px 12px;font-size:12px;color:var(--txt);cursor:pointer}
.acct-tab.active{border-color:var(--accent);background:#16263a}
.acct-tab .muted{font-size:11px}
.broker-bar{background:var(--panel);border:1px solid var(--line);border-radius:8px;
  padding:8px 12px;margin-bottom:10px;font-size:12px}
.broker-bar.on{border-color:#1d4733;background:#0e1f18}
.pf-empty{color:var(--muted);font-size:12px;padding:14px;text-align:center}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.kpi .lbl{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.kpi .val{font-size:20px;font-weight:700;margin-top:3px;font-family:ui-monospace,Menlo,monospace}
.kpi .sub{font-size:11px;color:var(--muted);margin-top:2px}
.budget{height:6px;border-radius:4px;background:var(--panel2);margin-top:6px;overflow:hidden}
.budget > div{height:100%}
.pf-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pf-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px}
.pf-card.pf-wide{grid-column:1 / -1}
.pf-card-t{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:10px}
.pf-table{width:100%;border-collapse:collapse;font-size:12px}
.pf-table th{text-align:right;color:var(--muted);font-weight:500;padding:5px 8px;border-bottom:1px solid var(--line);font-size:11px}
.pf-table th:first-child,.pf-table td:first-child{text-align:left}
.pf-table td{text-align:right;padding:6px 8px;border-bottom:1px solid #141a25;font-family:ui-monospace,Menlo,monospace}
.heatmap{display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start}
.heat-tile{border-radius:6px;padding:8px;min-width:80px;color:#fff;display:flex;flex-direction:column;justify-content:space-between}
.heat-tile b{font-size:14px}.heat-tile span{font-size:11px;opacity:.9}
.bar-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;font-size:12px}
.bar-row .nm{width:120px;color:var(--txt)}
.bar-track{flex:1;height:14px;background:var(--panel2);border-radius:4px;overflow:hidden}
.bar-fill{height:100%;background:var(--accent)}
.bar-row .pc{width:46px;text-align:right;color:var(--muted);font-family:ui-monospace,Menlo,monospace}
.corr-item{display:flex;justify-content:space-between;padding:6px 8px;background:var(--panel2);
  border-radius:5px;margin-bottom:6px;font-size:12px}
.corr-item b{color:var(--gold);font-family:ui-monospace,Menlo,monospace}
.perf-row{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:12px}
.perf-row .pi{font-size:12px}.perf-row .pi b{display:block;font-size:18px;font-family:ui-monospace,Menlo,monospace}
.pos{color:var(--up)} .neg{color:var(--down)}

.mkt{font-size:10px;font-weight:600;letter-spacing:.4px;padding:2px 7px;border-radius:10px;
  border:1px solid var(--line);float:right;text-transform:none}
.mkt-live{color:#36d399;border-color:#1d4733;background:#11291f}
.mkt-closed{color:#9aa4b2;border-color:#2a3340;background:#1a1f29}
.mkt-mock{color:#e3b341;border-color:#48400f;background:#2a2410}
.mkt-ext{color:#a78bfa;border-color:#3a2f5c;background:#1c1830}

/* market phase bar */
#phaseBar{display:flex;align-items:center;gap:12px;padding:6px 14px;height:32px;font-size:12px;
  background:var(--panel);border-bottom:1px solid var(--line)}
#phaseBar .ph-label{font-weight:800;letter-spacing:.5px;white-space:nowrap}
#phaseBar .ph-count{font-family:ui-monospace,Menlo,monospace;color:var(--txt);white-space:nowrap}
#phaseBar .ph-note{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
#phaseBar .ph-cfg{background:var(--panel2);border:1px solid var(--line);border-radius:5px;color:var(--muted);
  cursor:pointer;font-size:11px;padding:3px 9px;white-space:nowrap}
#phaseBar .ph-cfg:hover{color:#fff;border-color:var(--accent)}
#phaseBar.ph-pre{box-shadow:inset 3px 0 0 #e3b341} #phaseBar.ph-pre .ph-label{color:#e3b341}
#phaseBar.ph-open{box-shadow:inset 3px 0 0 #36d399} #phaseBar.ph-open .ph-label{color:#36d399}
#phaseBar.ph-mid{box-shadow:inset 3px 0 0 #e3b341} #phaseBar.ph-mid .ph-label{color:#e3b341}
#phaseBar.ph-power{box-shadow:inset 3px 0 0 #ff6b6b} #phaseBar.ph-power .ph-label{color:#ff6b6b}
#phaseBar.ph-night{box-shadow:inset 3px 0 0 #6b7686} #phaseBar.ph-night .ph-label{color:#9aa4b2}
#phaseCfgPanel{background:var(--panel2);border-bottom:1px solid var(--line);padding:10px 14px;font-size:12px}
.cfg-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cfg-row label{display:flex;align-items:center;gap:6px;color:var(--txt)}
.cfg-row input[type=number]{background:var(--panel);color:var(--txt);border:1px solid var(--line);border-radius:4px;padding:3px 5px}
.cfg-note{color:var(--muted);font-size:11px;margin-top:6px}

/* market bar */
#marketBar{display:flex;gap:0;align-items:center;background:var(--panel);
  border-bottom:1px solid var(--line);padding:0 8px;height:30px;overflow-x:auto;font-size:12px}
.mkt-item{display:flex;align-items:center;gap:6px;padding:0 14px;white-space:nowrap;border-right:1px solid #141a25}
.mkt-item .s{color:var(--muted);font-weight:600}
.mkt-item .p{font-family:ui-monospace,Menlo,monospace}
.mkt-item .c{font-family:ui-monospace,Menlo,monospace;font-size:11px}
.mkt-item .breadth-bar{width:46px;height:7px;background:var(--panel2);border-radius:4px;overflow:hidden}
.mkt-item .breadth-bar>div{height:100%;background:#26a69a}

/* action panel */
#actionPanel{margin:10px 12px 4px;border-radius:8px;border:1px solid var(--line);overflow:hidden}
.act-head{padding:10px 12px;font-size:18px;font-weight:800;letter-spacing:.5px;display:flex;align-items:center;gap:8px}
.act-body{padding:8px 12px;font-size:12px;background:var(--panel)}
.act-body div{display:flex;justify-content:space-between;padding:2px 0}
.act-body span{color:var(--muted)} .act-body b{font-family:ui-monospace,Menlo,monospace}
.act-buy .act-head{background:#11291f;color:#36d399} .act-buy{border-color:#1d4733}
.act-wait .act-head{background:#2a2410;color:#e3b341} .act-wait{border-color:#48400f}
.act-aside .act-head{background:#2a1416;color:#ff6b6b} .act-aside{border-color:#4a1f23}
.act-broken .act-head{background:#1f1012;color:#ff5252} .act-broken{border-color:#3a1418}
.dec-reason{display:block!important;padding-bottom:6px;color:var(--txt)}
.dec-change{display:block!important;margin-top:6px;padding-top:6px;border-top:1px solid var(--line)}
.dec-change>span{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px}
.dec-change>div{color:#c7d0dd;font-size:11px;margin-top:2px}
.dec-factors{display:block!important;margin-top:8px;border-top:1px solid var(--line);padding-top:6px}
.dfac{display:flex!important;align-items:center;gap:6px;padding:2px 0;font-size:11px;justify-content:flex-start!important}
.dfac .fdot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:#6b7686}
.dfac.s-good .fdot{background:#26a69a} .dfac.s-warn .fdot{background:#e3b341} .dfac.s-bad .fdot{background:#ef5350}
.dfac .flab{color:var(--muted);width:88px;flex-shrink:0}
.dfac b{color:var(--txt);font-weight:600}

/* news & events panel */
#newsPanel{padding:8px 12px}
.evt{font-size:11px;padding:5px 8px;border-radius:5px;margin-bottom:7px}
.evt-ok{background:#11291f;color:#7fd1b0} .evt-warn{background:#2a2410;color:#e3b341} .evt-bad{background:#2a1416;color:#ff8a8a}
.news-label{font-size:11px;color:var(--muted);margin-bottom:6px}
.news-label b.good{color:#36d399} .news-label b.bad{color:#ff6b6b}
.news-note{font-size:11px;color:var(--muted);padding:4px 0}
.news-item{display:block;font-size:11px;color:#b9c2d0;text-decoration:none;padding:5px 0;border-bottom:1px solid #141a25;line-height:1.35}
.news-item:hover{color:#fff}
.news-item.pos{border-left:2px solid #26a69a;padding-left:7px}
.news-item.neg{border-left:2px solid #ef5350;padding-left:7px}
.news-pub{display:block;color:var(--muted);font-size:10px;margin-top:1px}

/* insider activity */
#insiderPanel{padding:8px 12px}
.ins-tot{font-size:12px;margin-bottom:8px;font-family:ui-monospace,Menlo,monospace}
.ins-row{font-size:11px;color:#b9c2d0;padding:4px 0;border-bottom:1px solid #141a25;line-height:1.4}
.ins-amt{display:block;color:var(--muted);font-family:ui-monospace,Menlo,monospace}
.ins-dt{color:var(--muted);font-size:10px}
.ins-act{display:inline-block;border-radius:3px;padding:0 5px;font-size:10px;font-weight:700;text-transform:uppercase}
.ins-buy{background:#11291f;color:#36d399} .ins-sell{background:#2a1416;color:#ff8a8a}
.ins-exercise,.ins-tax,.ins-grant,.ins-gift{background:#1c2230;color:#9aa4b2}

/* trend banner */
#trendBanner{margin:6px 12px 8px;padding:9px 12px;border-radius:8px;font-weight:800;
  font-size:15px;letter-spacing:.5px;text-align:center;border:1px solid var(--line)}
.tb-bull{background:#11291f;color:#36d399;border-color:#1d4733}
.tb-bear{background:#2a1416;color:#ff6b6b;border-color:#4a1f23}
.tb-side{background:#1c2230;color:#9aa4b2}

/* confluence */
#confluenceBox{padding:6px 12px 10px}
.conf-label{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-bottom:4px}
.conf-row{display:flex;align-items:baseline;gap:8px;margin-bottom:6px}
.conf-score{font-size:26px;font-weight:800;font-family:ui-monospace,Menlo,monospace}
.conf-max{color:var(--muted);font-size:13px}
.conf-verdict{margin-left:auto;font-weight:700;font-size:13px;padding:2px 10px;border-radius:10px}
.cv-pass{background:#11291f;color:#36d399} .cv-fail{background:#2a1416;color:#ff6b6b}
.conf-track{height:8px;background:var(--panel2);border-radius:5px;overflow:hidden}
.conf-fill{height:100%;background:linear-gradient(90deg,#ef5350,#e3b341,#26a69a)}

/* why checklist */
#whyBox{padding:0 12px 8px}
.why-item{display:flex;gap:7px;align-items:flex-start;padding:3px 0;font-size:12px}
.why-item .ic{font-weight:700;width:13px}
.why-ok .ic{color:var(--up)} .why-no .ic{color:var(--down)}
.why-no{color:#b9c0cc}

/* scanner cues */
#scanTable th.star-col,#scanTable td.star{width:18px;text-align:center;padding:6px 2px;cursor:pointer}
td.star{color:#3a4250} td.star.on{color:var(--gold)}
/* pinned + drag-to-reorder cues */
#scanBody tr{cursor:pointer}
#scanBody tr.dragging{opacity:.4}
#scanBody tr.drop-target td{box-shadow:inset 0 2px 0 0 var(--gold)}
#scanBody tr.pinned td.symcell b{color:var(--gold)}
#scanBody tr.pinned{background:rgba(227,179,65,.05)}
td.rm{width:16px;text-align:center;color:transparent;cursor:pointer;font-size:11px}
#scanTable tbody tr:hover td.rm{color:#5a6472}
td.rm:hover{color:var(--down)!important}
.sdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:middle}

/* options refusal */
.opt-refuse{padding:2px 0}
.opt-refuse .nt{color:var(--down);font-weight:700;font-size:12px;margin-bottom:4px}
.opt-refuse .lab{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px;margin-top:5px}
.opt-refuse .txt{font-size:12px}

/* R/R box overlay */
#mainChart{position:relative}
#rrBox{position:absolute;inset:0;pointer-events:none;z-index:2}
#rrBox .rr-reward{position:absolute;left:0;right:58px;background:rgba(38,166,154,0.10);border-top:1px dashed rgba(66,165,245,.4)}
#rrBox .rr-risk{position:absolute;left:0;right:58px;background:rgba(239,83,80,0.10);border-bottom:1px dashed rgba(239,83,80,.5)}

/* ---- PIN login gate ---- */
.pin-gate{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;
  background:#0b0e14;}
.pin-gate.hidden{display:none;}
.pin-card{display:flex;flex-direction:column;align-items:center;gap:14px;padding:40px 44px;
  background:#11161f;border:1px solid #1f2633;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.pin-logo{font-size:26px;font-weight:700;letter-spacing:.5px;color:#e6edf3;}
.pin-sub{color:#7d8799;font-size:14px;margin-bottom:4px;}
.pin-input{width:220px;text-align:center;font-size:30px;letter-spacing:10px;padding:12px 14px;
  background:#0b0e14;border:2px solid #1f2633;border-radius:10px;color:#e6edf3;outline:none;}
.pin-input:focus{border-color:#e3b341;}
.pin-btn{width:100%;padding:12px;font-size:16px;font-weight:600;border:none;border-radius:10px;
  background:#e3b341;color:#0b0e14;cursor:pointer;}
.pin-btn:hover{background:#f0c14b;}
.pin-err{color:#ef5350;font-size:13px;min-height:16px;}

/* ---------- mobile / narrow screens ---------- */
@media (max-width: 820px) {
  html, body { height: auto; }
  body { overflow-y: auto; -webkit-text-size-adjust: 100%; }

  /* top bar wraps instead of overflowing off-screen */
  #topbar { flex-wrap: wrap; height: auto; gap: 6px; padding: 6px 10px; }
  #viewNav { margin-left: 0; flex-wrap: wrap; }
  .top-meta { flex-wrap: wrap; gap: 6px; }
  #marketBar { overflow-x: auto; }

  /* stack the 3-column terminal into one scrolling column */
  #layout { grid-template-columns: 1fr; height: auto; }
  aside, section { overflow: visible; }
  #scanner { border-right: none; border-bottom: 1px solid var(--line);
             max-height: 50vh; overflow-y: auto; }
  #intel   { border-left: none; border-top: 1px solid var(--line); }

  /* the chart needs an explicit height once stacking removes the fixed parent height */
  #chartZone { height: 72vh; }
  #mainChart { min-height: 300px; }

  /* full-height secondary views scroll with the page on mobile */
  #portfolioView, #journalView, #opportunitiesView { height: auto; }

  /* bigger touch targets */
  .tf, .style-group button, .ind-group button, .navbtn { padding: 6px 10px; }

  /* PIN card fits a phone */
  .pin-card { padding: 32px 26px; }
  .pin-input { width: 200px; }
}

/* ---- plain-English decision + options ---- */
.dec-todo{font-size:15px;font-weight:700;margin:2px 0 8px;line-height:1.3}
.dec-reason{font-size:13px;color:#c9d3df;line-height:1.5;margin-bottom:8px}
.dec-change{font-size:12px;color:#8b95a3;margin-bottom:8px}
.dec-change span{color:#6b7686;text-transform:uppercase;font-size:10px;letter-spacing:.5px}
.dec-play{background:#0e1a12;border:1px solid #1f3a28;border-radius:8px;padding:10px 12px;margin:8px 0}
.dec-play-h{font-weight:700;color:#36d399;font-size:12px;margin-bottom:5px}
.dec-play-b{font-size:13px;color:#dfe7f0;line-height:1.55}
.dec-play-b b{color:#fff}
.dec-play-risk{font-size:12px;color:#9fb0c0;margin-top:6px;padding-top:6px;border-top:1px solid #1f3a28}
.dec-why-h{color:#6b7686;text-transform:uppercase;font-size:10px;letter-spacing:.5px;margin:10px 0 4px}
.opt-plain{font-size:12.5px;color:#dfe7f0;line-height:1.5;background:var(--panel2);border-radius:6px;padding:8px 10px;margin-bottom:8px}
.opt-plain b{color:#fff}
.dec-play-plan{background:#1a160e;border-color:#3a3220}
.dec-play-plan .dec-play-h{color:#e3b341}

/* ---- IV context + macro banner ---- */
.iv-note{font-size:12px;line-height:1.45;border-radius:6px;padding:7px 9px;margin:6px 0}
.iv-expensive{background:#241a0e;color:#e3b341;border:1px solid #3a3220}
.iv-cheap{background:#0e1a12;color:#36d399;border:1px solid #1f3a28}
.iv-fair{background:var(--panel2);color:#9fb0c0}
.dec-macro{font-size:12.5px;line-height:1.4;border-radius:6px;padding:8px 10px;margin:2px 0 8px}
.dec-macro-hot{background:#2a1416;color:#ff8a8a;border:1px solid #4a2226}
.dec-macro-warm{background:#241a0e;color:#e3b341;border:1px solid #3a3220}


/* ---- live verdict badge, drawn ON the chart ---- */
#chartZone { position: relative; }
#chartBadge {
  position: absolute; top: 58px; left: 12px; z-index: 60;   /* above level tags (50) */
  background: #0d1117; border: 1px solid #30363d; border-left-width: 4px;
  border-radius: 8px; padding: 8px 12px; pointer-events: auto; cursor: grab;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; min-width: 250px;
  max-width: 300px;
}
#chartBadge .cb-act { font-size: 20px; font-weight: 800; letter-spacing: .5px; line-height: 1.1; }
#chartBadge .cb-sub { font-size: 11px; color: #8b949e; margin-top: 2px; }
#chartBadge .cb-nums { display: grid; grid-template-columns: auto auto; gap: 1px 10px; margin-top: 6px; font-size: 12px; }
#chartBadge .cb-nums span { color: #8b949e; }
#chartBadge .cb-nums b { color: #e6edf3; text-align: right; }
#chartBadge.buy   { border-left-color: #3fb950; } #chartBadge.buy   .cb-act { color: #3fb950; }
#chartBadge.wait  { border-left-color: #e3b341; } #chartBadge.wait  .cb-act { color: #e3b341; }
#chartBadge.aside { border-left-color: #8b949e; } #chartBadge.aside .cb-act { color: #8b949e; }
#chartBadge.exit  { border-left-color: #f85149; } #chartBadge.exit  .cb-act { color: #f85149; }

#chartBadge .cb-edge { margin-top: 7px; padding-top: 6px; border-top: 1px solid #30363d;
  font-size: 11px; color: #c9d1d9; line-height: 1.5; }
#chartBadge .cb-edge i { color: #8b949e; font-style: normal; }

/* ---- live signal feed ---- */
#signalFeed { max-height: 230px; overflow-y: auto; margin-bottom: 10px; }
.sig { border-left: 3px solid #30363d; background: #0d1117; border-radius: 6px;
  padding: 6px 9px; margin-bottom: 5px; cursor: pointer; }
.sig:hover { background: #161b22; }
.sig-head { display: flex; justify-content: space-between; font-size: 12px; }
.sig-det { font-size: 11px; color: #8b949e; margin-top: 2px; }
.sig-good { border-left-color: #3fb950; } .sig-good .sig-head b { color: #3fb950; }
.sig-bad  { border-left-color: #f85149; } .sig-bad  .sig-head b { color: #f85149; }
.sig-muted{ border-left-color: #8b949e; }

/* ---- decision-card text blocks must FLOW as text, not become flex rows ----
   `.act-body div{display:flex;justify-content:space-between}` is intended for
   key/value rows, but it matches every nested div, so explanatory paragraphs were
   being turned into flex containers and mashing together. Reset them explicitly. */
.dec-change > div,
.dec-why-h,
.dec-play-b,
.dec-play-risk,
.dec-macro {
  display: block !important;
  justify-content: flex-start !important;
  line-height: 1.5;
}
.dec-change > div { margin-top: 3px; }
.dec-why-h { margin: 10px 0 5px !important; }

#chartBadge .cb-sub{white-space:normal;overflow-wrap:anywhere}

/* ---- badge: draggable + collapsible ---- */
#chartBadge.dragging { cursor: grabbing; opacity: .92; box-shadow: 0 8px 24px rgba(0,0,0,.5); }
#chartBadge .cb-toggle {
  position: absolute; top: 5px; right: 6px; width: 18px; height: 18px; line-height: 1;
  background: transparent; color: #8b949e; border: 1px solid #30363d; border-radius: 4px;
  font-size: 12px; cursor: pointer; padding: 0; display: flex; align-items: center; justify-content: center;
}
#chartBadge .cb-toggle:hover { color: #e6edf3; border-color: #6b7686; }
#chartBadge.collapsed { min-width: 0; max-width: 200px; }
#chartBadge.collapsed .cb-body, #chartBadge.collapsed .cb-sub { display: none; }
#chartBadge.collapsed .cb-act { font-size: 15px; }

/* ---- support/resistance labels drawn ON their lines (not on the price axis) ---- */
#levelTags { position: absolute; inset: 0; pointer-events: none; z-index: 50; }
.lvl-tag { position: absolute; left: 8px; font: 10px ui-monospace, SFMono-Regular, Menlo, monospace;
  padding: 1px 5px; border-radius: 3px; white-space: nowrap; opacity: .95; }
.lvl-sup { background: rgba(46,160,67,.18); color: #56d364; border: 1px solid rgba(46,160,67,.5); }
.lvl-res { background: rgba(218,54,51,.18); color: #ff7b72; border: 1px solid rgba(218,54,51,.5); }

/* ---- per-strategy floating boxes (Safer / Balanced / Aggressive) ---- */
.strat-box {
  position: absolute; z-index: 55; min-width: 210px; max-width: 240px;
  background: #0d1117; border: 1px solid #30363d; border-top-width: 3px;
  border-radius: 8px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  cursor: grab; user-select: none; box-shadow: 0 4px 14px rgba(0,0,0,.45);
}
.strat-box.dragging { cursor: grabbing; opacity: .95; }
.strat-safe       { border-top-color: #3fb950; }
.strat-balanced   { border-top-color: #e3b341; }
.strat-aggressive { border-top-color: #f85149; }
.sb-head { display: flex; align-items: center; gap: 6px; padding: 6px 8px;
  border-bottom: 1px solid #21262d; }
.sb-title { font-weight: 800; font-size: 13px; }
.strat-safe .sb-title { color: #3fb950; }
.strat-balanced .sb-title { color: #e3b341; }
.strat-aggressive .sb-title { color: #f85149; }
.sb-tag { font-size: 9px; text-transform: uppercase; letter-spacing: .4px; color: #8b949e;
  border: 1px solid #30363d; border-radius: 3px; padding: 1px 4px; }
.sb-head .cb-toggle { margin-left: auto; background: none; border: 1px solid #30363d;
  color: #8b949e; border-radius: 4px; width: 18px; height: 18px; line-height: 1; cursor: pointer; }
.sb-body { padding: 7px 9px; }
.strat-box.collapsed .sb-body { display: none; }
.sb-row { display: flex; justify-content: space-between; font-size: 12px; padding: 1px 0; }
.sb-row span { color: #8b949e; } .sb-row b { color: #e6edf3; }
.sb-row b.good { color: #3fb950; } .sb-row b.bad { color: #f85149; }
.sb-none { font-size: 12px; color: #8b949e; padding: 4px 0; }
.sb-blurb { font-size: 10px; color: #6e7681; margin-top: 6px; line-height: 1.45; }

/* per-box verdict banner */
.sb-action { font-weight: 800; font-size: 12px; letter-spacing: .3px; text-align: center;
  padding: 4px 6px; border-bottom: 1px solid #21262d; }
.sb-act-buy   { color: #04160b; background: #3fb950; }
.sb-act-wait  { color: #1a1503; background: #e3b341; }
.sb-act-exit  { color: #fff;    background: #f85149; }
.sb-act-aside { color: #c9d1d9; background: #21262d; }
.strat-box.collapsed .sb-action { display: none; }

/* --- Calucci Limited attribution --- */
.pin-byline{color:var(--muted);font-size:11px;letter-spacing:.6px;
  text-transform:uppercase;margin:2px 0 10px;}
.site-footer{display:flex;align-items:center;justify-content:center;gap:8px;
  padding:18px 14px 22px;margin-top:8px;border-top:1px solid var(--line);
  color:var(--muted);font-size:11px;letter-spacing:.5px;text-transform:uppercase;}
.site-footer .sf-brand{color:#8b95a5;font-weight:700;}
.site-footer .sf-sep{opacity:.5;}
