*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#fff;--bg2:#f5f5f3;--bg3:#ebebea;
  --text:#1a1a1a;--text2:#666;--text3:#999;
  --border:rgba(0,0,0,0.12);--border2:rgba(0,0,0,0.22);
  --green-bg:#EAF3DE;--green-t:#3B6D11;
  --amber-bg:#FAEEDA;--amber-t:#854F0B;
  --red-bg:#FCEBEB;--red-t:#A32D2D;
  --blue-bg:#E6F1FB;--blue-t:#185FA5;
  --r:8px;--rl:12px;
}
@media(prefers-color-scheme:dark){:root{
  --bg:#1e1e1c;--bg2:#2a2a28;--bg3:#323230;
  --text:#f0ede8;--text2:#aaa;--text3:#666;
  --border:rgba(255,255,255,0.1);--border2:rgba(255,255,255,0.2);
  --green-bg:#173404;--green-t:#97C459;
  --amber-bg:#412402;--amber-t:#FAC775;
  --red-bg:#501313;--red-t:#F09595;
  --blue-bg:#042C53;--blue-t:#85B7EB;
}}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg3);color:var(--text);font-size:15px;line-height:1.5}
.app{max-width:1000px;margin:0 auto;padding:2rem 1.5rem}
/* On wider screens, expand the layout for all tabs. Used to be restricted
   to AI Analysis only via the .wide-mode class, but feedback showed the
   Screener / Portfolio / Watchlist also benefit from the extra horizontal
   real estate. The .wide-mode class still works (no JS changes required)
   but the breakpoints are now applied to plain .app too. */
@media (min-width:1280px){
  .app{max-width:1500px}
  .app.wide-mode{max-width:1700px}
}
@media (min-width:1700px){
  .app{max-width:1700px}
  .app.wide-mode{max-width:1900px}
}
h1{font-size:22px;font-weight:500;margin-bottom:.2rem}
.subtitle{font-size:13px;color:var(--text2);margin-bottom:1.5rem}
.live-badge{display:inline-block;background:var(--green-bg);color:var(--green-t);font-size:11px;padding:2px 8px;border-radius:99px;margin-left:8px;font-weight:500}
.tabs{display:flex;gap:2px;margin-bottom:1.5rem;background:var(--bg2);border-radius:var(--r);padding:4px}
.tab{flex:1;padding:9px;font-size:14px;cursor:pointer;border:none;background:none;color:var(--text2);border-radius:6px;transition:all .15s}
.tab.active{background:var(--bg);color:var(--text);font-weight:500;box-shadow:0 1px 3px rgba(0,0,0,.1)}
@media (max-width: 680px) {
  .tabs{overflow-x:auto;scrollbar-width:none}
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto;min-width:76px;padding:9px 10px}
}
.section{display:none}.section.active{display:block}
/* v45.6: Home tab market dashboard — stacked rows, each with chart left + news right */
.home-stack{display:flex;flex-direction:column;gap:14px}
.home-row{transition:border-color .15s}
.home-row:hover{border-color:var(--text3) !important}
/* Two-column body inside each row: chart 60%, news 40%, side-by-side on desktop */
.home-row-body{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:14px}
.home-row-chart{min-width:0}
.home-row-news{min-width:0;max-height:300px;overflow-y:auto}
/* Mobile (<800px): stack chart above news */
@media (max-width: 800px) {
  .home-row-body{grid-template-columns:1fr}
  .home-row-news{max-height:none}
}
.home-shell{display:flex;flex-direction:column;gap:16px}
.home-topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:2px 0 4px}
.home-kicker{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:0;font-weight:600}
.home-title{font-size:20px;line-height:1.2;font-weight:600;color:var(--text);margin:2px 0 0}
.home-top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.home-updated{font-size:11px;color:var(--text3)}
.home-refresh{height:32px;font-size:12px;padding:0 12px}
.market-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:9px}
.market-tile{min-height:94px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--bg) 86%,#000 14%);color:var(--text);cursor:pointer;text-align:left;display:flex;flex-direction:column;justify-content:space-between;gap:7px;position:relative;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.08);transition:border-color .15s,background .15s,transform .15s,box-shadow .15s}
.market-tile::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(180deg,rgba(255,255,255,.055),transparent 48%);opacity:.65;pointer-events:none}
.market-tile::after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:2px;background:var(--border2);border-radius:99px;opacity:.38}
.market-tile:hover{border-color:var(--border2);background:var(--bg2);transform:translateY(-2px);box-shadow:0 16px 38px rgba(0,0,0,.12)}
.market-tile.active{border-color:var(--green-t);background:color-mix(in srgb,var(--bg) 82%,var(--green-bg) 18%);box-shadow:0 18px 44px rgba(59,109,17,.14)}
.market-tile.trend-positive::after{background:var(--green-t);opacity:.9}
.market-tile.trend-negative::after{background:var(--red-t);opacity:.9}
.market-tile.trend-neutral::after{background:var(--border2);opacity:.45}
.market-tile-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;position:relative;z-index:1}
.market-tile-top span{display:flex;flex-direction:column;gap:3px;min-width:0}
.market-tile-top b{font-size:12px;font-weight:700;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.market-tile-top small{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:0}
.market-tile-top i{font-style:normal;font-size:8px;line-height:1;padding:3px 5px;border-radius:99px;background:var(--bg2);border:1px solid var(--border);color:var(--text3);text-transform:uppercase}
.market-tile.active .market-tile-top i{background:var(--green-bg);color:var(--green-t);border-color:transparent}
.market-tile-price{position:relative;z-index:1;font-family:var(--mono);font-size:18px;font-weight:800;line-height:1;letter-spacing:0}
.market-tile-metrics{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:8px}
.market-tile-metrics span{display:inline-flex;align-items:center;justify-content:space-between;gap:5px;min-width:0;background:transparent;border:0;border-radius:0;padding:0}
.market-tile-metrics em{font-style:normal;font-size:8px;color:var(--text3);font-weight:700}
.market-tile-metrics strong{font-family:var(--mono);font-size:10px;font-weight:800;white-space:nowrap}
.positive{color:var(--green-t)}
.negative{color:var(--red-t)}
.mixed{color:var(--amber-t)}
.neutral{color:var(--text2)}
.home-main-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(360px,.85fr);gap:14px;align-items:stretch}
.home-market-panel,.home-intel-panel,.home-mini-panel,.home-empty-panel{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);padding:14px;box-shadow:0 14px 34px rgba(0,0,0,.06)}
.home-market-panel{padding:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 92%,#000 8%),var(--bg))}
.home-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px}
.home-panel-head.compact{margin-bottom:12px}
.home-market-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:16px;margin-bottom:14px}
.home-market-kicker{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:5px}
.home-market-kicker::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green-t);box-shadow:0 0 0 4px color-mix(in srgb,var(--green-t) 16%,transparent)}
.home-market-name{font-size:18px;font-weight:700;line-height:1.2}
.home-market-meta,.home-panel-sub{font-size:11px;color:var(--text3);margin-top:3px}
.home-market-price{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end;text-align:right}
.home-market-price strong{font-family:var(--mono);font-size:34px;line-height:1;font-weight:850;letter-spacing:0}
.home-market-moves{display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.home-market-moves span{font-family:var(--mono);font-size:12px;white-space:nowrap}
.home-fullchart-btn{height:32px;padding:0 12px;font-size:12px;background:var(--bg2)}
.home-chart-wrap{height:392px;background:#0c111b;border:1px solid rgba(255,255,255,.08);border-radius:var(--r);overflow:hidden;position:relative;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03),0 16px 40px rgba(0,0,0,.12)}
.home-tv-widget{width:100%;height:100%}
.home-local-chart{position:relative;width:100%;height:100%;padding:0;background:linear-gradient(180deg,#101724,#0b1019)}
.home-local-chart svg{position:absolute;inset:0;width:100%;height:100%}
.home-local-chart .chart-axis{stroke:rgba(255,255,255,.16);stroke-width:1}
.home-local-chart .chart-grid{stroke:rgba(255,255,255,.10);stroke-width:1}
.home-local-chart .chart-grid.soft{stroke:rgba(255,255,255,.06)}
.home-local-chart .chart-line{filter:drop-shadow(0 0 8px rgba(151,196,89,.22))}
.home-local-chart.down .chart-line{filter:drop-shadow(0 0 8px rgba(240,149,149,.22))}
.chart-end-guide{stroke:rgba(255,255,255,.12);stroke-width:1;stroke-dasharray:4 8}
.chart-end-halo{opacity:.16}
.chart-end-dot{stroke:#0c111b;stroke-width:4}
.chart-end-text{fill:#aab3c2;font-family:var(--mono);font-size:11px;font-weight:700}
.home-chart-hud{position:absolute;top:16px;left:18px;z-index:2;display:grid;grid-template-columns:auto auto;gap:3px 9px;align-items:baseline;background:rgba(7,11,18,.72);border:1px solid rgba(255,255,255,.09);border-radius:var(--r);padding:9px 11px;backdrop-filter:blur(10px)}
.home-chart-hud span{font-size:10px;color:#a6afbd;text-transform:uppercase;font-weight:800}
.home-chart-hud strong{font-family:var(--mono);font-size:17px;line-height:1}
.home-chart-hud em{grid-column:1/-1;color:#737d8f;font-size:10px;font-style:normal}
.home-chart-stats{position:absolute;left:18px;right:18px;bottom:14px;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.home-chart-stats span{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;background:rgba(7,11,18,.58);border:1px solid rgba(255,255,255,.08);border-radius:6px;padding:7px 9px;backdrop-filter:blur(10px)}
.home-chart-stats em{font-size:10px;color:#737d8f;font-style:normal;text-transform:uppercase;font-weight:800}
.home-chart-stats b{font-family:var(--mono);font-size:11px;color:#dce5f2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-chart-empty{height:100%;display:flex;align-items:center;justify-content:center;color:#8a93a3;font-size:13px}
.home-panel-label{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:0;font-weight:700}
.home-headline-feed{display:flex;flex-direction:column;gap:10px;max-height:448px;overflow:auto;padding-right:3px}
.home-headline{display:grid;grid-template-columns:26px minmax(0,1fr);gap:10px;padding:10px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg2);transition:border-color .15s,transform .15s,background .15s}
.home-headline:hover{border-color:var(--border2);background:var(--bg);transform:translateY(-1px)}
.home-headline.positive{box-shadow:inset 3px 0 0 var(--green-t)}
.home-headline.negative{box-shadow:inset 3px 0 0 var(--red-t)}
.home-headline.mixed{box-shadow:inset 3px 0 0 var(--amber-t)}
.home-headline-rank{width:24px;height:24px;border-radius:50%;background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text2);font-family:var(--mono)}
.home-headline-body{min-width:0}
.home-headline-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:4px}
.home-headline-tags span{font-size:10px;padding:2px 6px;border-radius:4px;background:var(--bg2);color:var(--text2);border:1px solid var(--border)}
.home-headline.positive .home-headline-tags span:last-child{background:var(--green-bg);color:var(--green-t);border-color:transparent}
.home-headline.negative .home-headline-tags span:last-child{background:var(--red-bg);color:var(--red-t);border-color:transparent}
.home-headline.mixed .home-headline-tags span:last-child{background:var(--amber-bg);color:var(--amber-t);border-color:transparent}
.home-headline a,.home-headline strong{display:block;color:var(--text);text-decoration:none;font-size:13px;line-height:1.35;font-weight:600;overflow-wrap:anywhere}
.home-headline a:hover{text-decoration:underline}
.home-headline-meta{font-size:10px;color:var(--text3);margin-top:4px}
.home-watch-impact{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.home-watch-impact-label{font-size:9px;color:var(--text3);text-transform:uppercase;letter-spacing:0;font-weight:700}
.home-impact-list{display:flex;flex-wrap:wrap;gap:6px}
.home-impact-pill{display:grid;grid-template-columns:auto auto;align-items:center;gap:2px 6px;max-width:100%;padding:6px 7px;border-radius:var(--r);border:1px solid var(--border);background:var(--bg);font-size:10px;line-height:1.15}
.home-impact-pill b{font-family:var(--mono);font-size:11px}
.home-impact-pill span{font-weight:700}
.home-impact-strength{color:var(--text2)}
.home-impact-tone{border-radius:99px;padding:2px 6px;background:var(--bg2);color:var(--text2)}
.home-impact-pill em{grid-column:1/-1;color:var(--text2);font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-impact-pill.strength-high{border-color:var(--border2);box-shadow:inset 0 0 0 1px var(--border)}
.home-impact-pill.strength-med{border-color:var(--border)}
.home-impact-pill.strength-low{opacity:.88}
.home-impact-pill.tone-positive .home-impact-tone{background:var(--green-bg);color:var(--green-t)}
.home-impact-pill.tone-negative .home-impact-tone{background:var(--red-bg);color:var(--red-t)}
.home-impact-pill.tone-mixed .home-impact-tone{background:var(--amber-bg);color:var(--amber-t)}
.home-impact-pill.tone-neutral .home-impact-tone{background:var(--blue-bg);color:var(--blue-t)}
.home-secondary-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(280px,1fr) minmax(220px,.72fr);gap:12px}
.home-mini-panel{min-height:184px;display:flex;flex-direction:column;gap:10px}
.home-pulse-result{flex:1}
.home-pulse-loading,.home-muted,.home-empty-feed{font-size:12px;color:var(--text2);line-height:1.45}
.home-error{padding:12px 14px;background:var(--red-bg);color:var(--red-t);border-left:3px solid var(--red-t);border-radius:var(--r);font-size:13px}
.home-pulse-card{font-size:12px;line-height:1.5;color:var(--text2)}
.home-pulse-card p{margin:6px 0;color:var(--text)}
.home-pulse-card ul{margin:6px 0 0;padding-left:18px}
.home-pulse-meta{display:flex;gap:8px;flex-wrap:wrap}
.home-pulse-meta span{font-size:11px;padding:2px 7px;border-radius:99px;background:var(--bg2);border:1px solid var(--border)}
.home-relevance-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.home-relevance-stats div{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px}
.home-relevance-stats strong{display:block;font-size:22px;line-height:1;font-family:var(--mono)}
.home-relevance-stats span{display:block;font-size:11px;color:var(--text2);margin-top:5px}
.home-chip-row{display:flex;flex-wrap:wrap;gap:6px}
.home-chip-row.compact{gap:5px}
.home-chip-row span{font-size:11px;padding:3px 7px;border-radius:99px;background:var(--bg2);border:1px solid var(--border);color:var(--text2)}
.home-chip-row em{font-size:12px;color:var(--text3);font-style:normal}
.home-impact-panel{position:relative;overflow:hidden}
.home-impact-summary{display:flex;flex-direction:column;gap:7px}
.home-impact-summary-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg2)}
.home-impact-summary-row.tone-positive{box-shadow:inset 3px 0 0 var(--green-t)}
.home-impact-summary-row.tone-negative{box-shadow:inset 3px 0 0 var(--red-t)}
.home-impact-summary-row.tone-mixed{box-shadow:inset 3px 0 0 var(--amber-t)}
.home-impact-summary-row.tone-neutral{box-shadow:inset 3px 0 0 var(--blue-t)}
.home-impact-symbol{font-family:var(--mono);font-size:12px;font-weight:800;color:var(--text)}
.home-impact-copy{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-impact-copy small{font-size:10px;color:var(--text3)}
.home-impact-summary-row b{font-size:10px;padding:3px 6px;border-radius:99px;font-weight:800;background:var(--bg);border:1px solid var(--border);color:var(--text2);white-space:nowrap}
.home-impact-summary-row.strength-high b{color:var(--text);border-color:var(--border2)}
.home-impact-summary-row.strength-low b{opacity:.8}
.home-impact-empty{font-size:12px;color:var(--text2);line-height:1.45;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px}
.home-impact-foot{margin-top:auto;font-size:10px;color:var(--text3)}
.home-drivers-panel{gap:11px}
.home-driver-read{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;padding:10px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg2)}
.home-driver-read span{font-size:11px;color:var(--text2);font-weight:700;text-transform:uppercase;letter-spacing:0}
.home-driver-read strong{font-size:18px;line-height:1;color:var(--text);text-align:right}
.home-driver-read.positive{box-shadow:inset 3px 0 0 var(--green-t)}
.home-driver-read.negative{box-shadow:inset 3px 0 0 var(--red-t)}
.home-driver-read.mixed{box-shadow:inset 3px 0 0 var(--amber-t)}
.home-driver-read.neutral{box-shadow:inset 3px 0 0 var(--blue-t)}
.home-driver-copy{font-size:12px;line-height:1.45;color:var(--text2)}
.home-driver-list{display:flex;flex-direction:column;gap:6px}
.home-driver-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;font-size:12px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:7px 9px}
.home-driver-row span{font-weight:650;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-driver-row em{font-size:10px;color:var(--text3);font-style:normal;white-space:nowrap}
.home-driver-row b{font-size:10px;border-radius:99px;padding:2px 6px;background:var(--bg);border:1px solid var(--border);white-space:nowrap}
.home-driver-row.positive b{background:var(--green-bg);color:var(--green-t);border-color:transparent}
.home-driver-row.negative b{background:var(--red-bg);color:var(--red-t);border-color:transparent}
.home-driver-row.mixed b{background:var(--amber-bg);color:var(--amber-t);border-color:transparent}
.home-driver-row.neutral b{background:var(--blue-bg);color:var(--blue-t);border-color:transparent}
.home-setup-score{font-size:20px;font-weight:700;line-height:1}
.home-setup-list{display:flex;flex-direction:column;gap:6px}
.home-setup-row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:7px 9px}
.home-setup-row b{font-family:var(--mono)}
.home-empty-panel{text-align:center;padding:28px 18px;color:var(--text2)}
.home-empty-panel h3{font-size:16px;color:var(--text);margin-bottom:6px}
.skeleton-tile,.skeleton-block{background:var(--bg2);opacity:.6;min-height:110px}
.skeleton-block{min-height:360px}
@media (max-width: 980px) {
  .home-main-grid,.home-secondary-grid{grid-template-columns:1fr}
  .home-chart-wrap{height:330px}
  .home-headline-feed{max-height:none}
}
@media (max-width: 620px) {
  .home-title{font-size:17px}
  .market-strip{grid-template-columns:1fr 1fr}
  .market-tile{min-height:92px;padding:9px}
  .market-tile-price{font-size:16px}
  .market-tile-top i{display:none}
  .market-tile-metrics{flex-direction:column;align-items:flex-start;gap:3px}
  .market-tile-metrics span{padding:0}
  .home-market-hero{grid-template-columns:1fr}
  .home-market-price{justify-content:flex-start;text-align:left}
  .home-market-moves{align-items:flex-start}
  .home-market-price strong{font-size:24px}
  .home-chart-wrap{height:320px}
  .home-chart-stats{grid-template-columns:1fr;bottom:10px}
  .home-chart-stats span{padding:5px 7px}
}
.card{background:var(--bg);border:.5px solid var(--border);border-radius:var(--rl);padding:1rem 1.25rem;margin-bottom:1rem}
.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end;margin-bottom:1rem}
.field{display:flex;flex-direction:column;gap:4px}
label{font-size:12px;color:var(--text2)}
select,input[type=text],input[type=number]{height:36px;border:.5px solid var(--border2);border-radius:var(--r);padding:0 10px;font-size:14px;background:var(--bg);color:var(--text);outline:none}
.btn{height:36px;padding:0 16px;border:.5px solid var(--border2);border-radius:var(--r);cursor:pointer;font-size:14px;background:var(--bg);color:var(--text);white-space:nowrap;transition:all .15s}
.btn:hover{background:var(--bg2)}.btn-primary{background:var(--text);color:var(--bg);border-color:var(--text)}.btn-primary:hover{opacity:.82}
.filter-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:1rem}
.filter-chip{padding:4px 12px;border:.5px solid var(--border2);border-radius:99px;font-size:13px;cursor:pointer;background:none;color:var(--text2);transition:all .15s}
.filter-chip.on{background:var(--text);color:var(--bg);border-color:var(--text)}
.badge{display:inline-block;padding:2px 9px;border-radius:99px;font-size:12px;font-weight:500}
.high{background:var(--green-bg);color:var(--green-t)}
.med{background:var(--amber-bg);color:var(--amber-t)}
.attractive{background:var(--blue-bg);color:var(--blue-t)}
.watch{background:var(--amber-bg);color:var(--amber-t)}
.low{background:var(--red-bg);color:var(--red-t)}
.info{background:var(--blue-bg);color:var(--blue-t)}
.stock-row{display:flex;align-items:flex-start;justify-content:space-between;padding:12px 0;border-bottom:.5px solid var(--border);gap:12px}
.stock-row:last-child{border-bottom:none}
.tag{display:inline-block;font-size:11px;padding:2px 6px;border-radius:4px;background:var(--bg2);color:var(--text2);margin-left:4px}
.meta{display:flex;gap:12px;font-size:12px;color:var(--text2);flex-wrap:wrap;margin-top:4px}
.meta b{color:var(--text);font-weight:500}
.thesis{font-size:12px;color:var(--text2);margin-top:5px}
.factors{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.factor-tag{font-size:11px;padding:2px 7px;border-radius:4px;background:var(--green-bg);color:var(--green-t)}
/* Warning factors — flagged with ⚠️ at start. Used for ROE buyback distortion etc. */
.factor-tag.warn{background:rgba(186,117,23,0.15);color:#BA7517}
.factor-tag.risk{background:rgba(216,90,48,0.13);color:#D85A30}
.data-confidence{font-size:11px}
.score-breakdown{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px;margin-top:8px;max-width:760px}
.score-mini{display:grid;grid-template-columns:minmax(58px,76px) 1fr 28px;align-items:center;gap:6px;font-size:10px;color:var(--text2);background:var(--bg2);border:.5px solid var(--border);border-radius:6px;padding:5px 6px}
.score-mini span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.score-mini b{font-weight:500;color:var(--text);text-align:right}
.score-track{height:5px;border-radius:99px;background:var(--bg3);overflow:hidden}
.score-track i{display:block;height:100%;border-radius:99px}
.score-track i.high{background:var(--green-t)}
.score-track i.med{background:var(--amber-t)}
.score-track i.low{background:var(--red-t)}
.red-flags{margin-top:6px}
.add-btn{height:28px;padding:0 10px;font-size:12px;border:.5px solid var(--border2);border-radius:var(--r);cursor:pointer;background:none;color:var(--text);white-space:nowrap;transition:all .15s}
.add-btn.added{background:var(--bg2);color:var(--text2);cursor:default}
.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-bottom:1rem}
.metric{background:var(--bg2);border-radius:var(--r);padding:10px 12px}
.metric-label{font-size:11px;color:var(--text2);margin-bottom:4px}
.metric-val{font-size:18px;font-weight:500}

/* Roomier variant for the Fundamentals pane on the right panel — bigger
   font, fewer wider columns so the 22 metrics are easy to scan instead of
   shrunk into 8 narrow columns with lots of empty space. */
.metric-grid-lg{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:10px;
}
.metric-grid-lg .metric{padding:12px 14px}
.metric-grid-lg .metric-label{font-size:12px;margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}
.metric-grid-lg .metric-val{font-size:18px;font-weight:600}
.sector-bar{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:1rem;padding:10px 14px;background:var(--bg2);border-radius:var(--r)}
.sector-stat{font-size:12px;color:var(--text2)}
.sector-stat b{color:var(--text)}
.portfolio-setup-card{padding:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#000 6%),var(--bg))}
.portfolio-setup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.portfolio-kicker{font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:3px}
.portfolio-setup-title{font-size:18px;font-weight:700;line-height:1.2}
.portfolio-run-btn{height:36px}
.portfolio-setup-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr);gap:12px}
.portfolio-input-panel,.portfolio-controls-panel{border:1px solid var(--border);border-radius:var(--r);padding:12px;background:color-mix(in srgb,var(--bg2) 58%,transparent);min-width:0}
.portfolio-panel-label{font-size:11px;color:var(--text2);text-transform:uppercase;font-weight:800;margin-bottom:7px}
.portfolio-help{color:var(--text3);cursor:help;font-size:11px}
.portfolio-chips{display:flex;flex-wrap:wrap;gap:6px;min-height:42px;padding:7px;border:.5px solid var(--border);border-radius:var(--r);align-items:center;background:var(--bg)}
.portfolio-manual-row{display:flex;align-items:flex-end;gap:8px;margin-top:10px;flex-wrap:wrap}
.portfolio-manual-field{min-width:220px;flex:1}
.portfolio-control-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.portfolio-rf-row{display:flex;align-items:center;gap:7px}
.portfolio-rf-row input{width:100px}
.portfolio-rf-row span,.portfolio-capm-hint{font-size:11px;color:var(--text3)}
.portfolio-method-box{border-top:1px solid var(--border);padding-top:10px}
.portfolio-method-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.portfolio-method-options label{display:grid;grid-template-columns:auto 1fr;gap:2px 7px;align-items:center;border:1px solid var(--border);border-radius:var(--r);padding:8px;background:var(--bg);cursor:pointer}
.portfolio-method-options input{grid-row:span 2}
.portfolio-method-options span{font-size:13px;font-weight:700}
.portfolio-method-options small{font-size:10px;color:var(--text3)}
.portfolio-advanced{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.portfolio-advanced summary{cursor:pointer;font-size:13px;color:var(--text2);user-select:none}
.portfolio-advanced summary span{color:var(--text3);font-size:11px;margin-left:8px}
.portfolio-advanced-body{margin-top:10px;padding:10px;background:var(--bg2);border-radius:var(--r)}
.portfolio-advanced-note{font-size:12px;color:var(--text2);margin-bottom:10px;line-height:1.5}
.portfolio-caps-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.portfolio-reset-caps{margin-top:10px;font-size:11px;padding:4px 10px;background:transparent;color:var(--text2);border:1px solid var(--border);border-radius:var(--r);cursor:pointer}
.portfolio-footnote{font-size:12px;color:var(--text2);margin-top:10px;margin-bottom:0}
.chip{display:flex;align-items:center;gap:6px;background:var(--bg2);border:.5px solid var(--border2);border-radius:99px;padding:4px 10px;font-size:13px}
.chip-x{cursor:pointer;color:var(--text2);font-size:18px;line-height:1;background:transparent;border:0;padding:0 0 0 2px}.chip-x:hover{color:var(--text)}
.analysis-box{background:var(--bg2);border-radius:var(--r);padding:1rem;font-size:14px;line-height:1.7;margin-bottom:10px}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.detail-card{background:var(--bg2);border-radius:var(--r);padding:10px 14px}
.detail-label{font-size:11px;color:var(--text2);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}
.analysis-decision{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr) auto;gap:12px;align-items:stretch;margin-bottom:10px;padding:12px;border:1px solid var(--border);border-radius:var(--r);background:linear-gradient(180deg,color-mix(in srgb,var(--bg2) 88%,#000 12%),var(--bg2))}
.analysis-kicker{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:6px}
.analysis-view-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:7px}
.analysis-view-row strong{font-size:18px;line-height:1}
.analysis-decision-main p{font-size:12px;line-height:1.5;color:var(--text2);margin:0}
.analysis-decision-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}
.analysis-decision-item{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 9px;min-width:0}
.analysis-decision-item span{display:block;font-size:9px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:4px}
.analysis-decision-item b{display:block;font-size:12px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.analysis-thesis-btn{align-self:center;white-space:nowrap;height:34px;padding:0 12px}
.analysis-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:12px 0 7px}
.analysis-section-head span{font-size:11px;color:var(--text2);text-transform:uppercase;font-weight:800}
.analysis-section-head small{font-size:10px;color:var(--text3)}
.analysis-evidence-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;margin-bottom:10px}
.analysis-evidence-card,.analysis-scenario{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px;border-left:3px solid var(--border2)}
.analysis-evidence-card.positive,.analysis-scenario.positive{border-left-color:var(--green-t)}
.analysis-evidence-card.negative,.analysis-scenario.negative{border-left-color:var(--red-t)}
.analysis-evidence-card.neutral,.analysis-scenario.neutral{border-left-color:var(--blue-t)}
.analysis-evidence-card span,.analysis-scenario span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:5px}
.analysis-evidence-card strong{display:block;font-family:var(--mono);font-size:17px;margin-bottom:5px}
.analysis-evidence-card p,.analysis-scenario p{font-size:12px;line-height:1.45;color:var(--text2);margin:0}
.analysis-scenario-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}
.analysis-trigger-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:7px;margin-bottom:10px}
.analysis-trigger-list div{font-size:12px;line-height:1.45;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:8px 10px;border-left:3px solid var(--amber-t)}
@media (max-width:900px){
  .analysis-decision{grid-template-columns:1fr}
  .analysis-thesis-btn{justify-self:start}
  .analysis-scenario-grid{grid-template-columns:1fr}
}
/* Portfolio result cards. Now supports 3 (Max Sharpe / Min Variance /
   Risk Parity) — auto-fit so we get 3 across on wide screens, 2 on medium,
   1 on narrow. min(330px) keeps each card readable. */
.frontier-card{padding:14px 16px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#185FA5 6%),var(--bg))}
.frontier-head,.portfolio-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.frontier-kicker{font-size:10px;color:var(--blue-t);text-transform:uppercase;font-weight:800;margin-bottom:2px}
.frontier-title{font-size:18px;font-weight:800;line-height:1.1}
.frontier-subtitle,.portfolio-section-subtitle{font-size:11px;color:var(--text2);margin-top:3px}
.frontier-ai-btn{height:34px;font-size:12px;padding:0 12px}
.frontier-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}
.frontier-meta-grid div{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:9px 10px;min-width:0}
.frontier-meta-grid span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:3px}
.frontier-meta-grid b{display:block;font-size:15px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.frontier-meta-grid small{display:block;font-size:10px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.frontier-beta-row{font-size:11px;color:var(--text2);margin:-4px 0 10px}
.frontier-chart-shell{position:relative;height:390px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--bg2) 42%,transparent);padding:8px}
.frontier-legend{display:flex;gap:12px 16px;margin-top:10px;flex-wrap:wrap}
.frontier-legend span{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text2)}
.frontier-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}
.frontier-legend .legend-diamond{border-radius:3px;transform:rotate(45deg)}
.risk-selector-card{padding:13px 16px}
.frontier-slider{width:100%;cursor:pointer;accent-color:var(--blue-t)}
.frontier-slider-labels{display:flex;justify-content:space-between;font-size:10px;color:var(--text2);margin-top:4px}
.slider-portfolio{margin-top:12px}
.slider-portfolio-card{border:1px solid var(--border);border-radius:var(--r);padding:10px;background:var(--bg2)}
.slider-portfolio-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;flex-wrap:wrap}
.slider-portfolio-head > span{background:var(--slider-tone);color:#fff;padding:4px 10px;border-radius:99px;font-size:11px;font-weight:800}
.slider-portfolio-head div{display:flex;align-items:baseline;gap:6px 8px;flex-wrap:wrap;font-size:11px;color:var(--text2)}
.slider-portfolio-head b{font-size:14px;color:var(--text)}
.p-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:12px;margin-bottom:12px}
.p-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r);padding:14px;position:relative;overflow:hidden}
.p-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--card-accent,var(--border2))}
.p-card-green{--card-accent:var(--green-t)}
.p-card-amber{--card-accent:var(--amber-t)}
.p-card-blue{--card-accent:var(--blue-t)}
.p-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.p-card-title{font-size:13px;font-weight:800}
.p-card-subtitle{font-size:11px;color:var(--text3);margin-top:2px;line-height:1.35}
.p-card-sharpe{text-align:right;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:7px 9px;min-width:70px}
.p-card-sharpe span,.portfolio-mini-label{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800}
.p-card-sharpe b{display:block;font-size:18px;line-height:1.1}
.portfolio-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:7px;margin-bottom:10px}
.portfolio-stat{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:8px 9px;min-width:0}
.portfolio-stat span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:3px}
.portfolio-stat b{display:block;font-size:15px;line-height:1.2}
.portfolio-stat small{display:block;font-size:10px;color:var(--text2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.portfolio-stat-good{border-color:rgba(15,110,86,.3);background:color-mix(in srgb,var(--green-bg) 42%,var(--bg2))}
.portfolio-stat-risk{border-color:rgba(163,45,45,.35);background:color-mix(in srgb,var(--red-bg) 42%,var(--bg2))}
.portfolio-mini-label{margin:2px 0 6px}
.portfolio-weight-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(115px,1fr));gap:6px}
.w-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:6px}
.w-item{background:var(--bg);border:.5px solid var(--border);border-radius:var(--r);padding:6px 9px;display:flex;justify-content:space-between;gap:10px;font-size:12px;min-width:0}
.w-item span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.w-item span:last-child{font-weight:800}
.portfolio-note{font-size:11px;line-height:1.4;margin-top:8px;padding:7px 8px;border-radius:var(--r);background:var(--bg2);color:var(--text2);border-left:3px solid var(--border2)}
.portfolio-note-watch{border-left-color:var(--amber-t);color:var(--amber-t)}
.portfolio-section-title{font-size:14px;font-weight:800;line-height:1.2}
.wf-card{margin-top:12px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#000 6%),var(--bg))}
.wf-muted{border-left:3px solid var(--text3)}
.wf-empty{font-size:12px;color:var(--text2);background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px}
.wf-benchmark-chip{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:7px 10px;text-align:right;min-width:210px}
.wf-benchmark-chip span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800}
.wf-benchmark-chip b{font-size:18px;line-height:1.1}
.wf-benchmark-chip small{display:block;font-size:10px;color:var(--text2);margin-top:2px}
.wf-sample-note{font-size:12px;line-height:1.4;margin:-4px 0 10px;padding:8px 10px;border-radius:var(--r);background:color-mix(in srgb,var(--amber-bg) 36%,var(--bg2));border-left:3px solid var(--amber-t);color:var(--amber-t)}
.wf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.wf-strategy{border:1px solid var(--border);border-radius:var(--r);padding:11px;background:var(--bg);position:relative;overflow:hidden}
.wf-strategy::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--wf-accent,var(--border2))}
.wf-accent-green{--wf-accent:var(--green-t)}
.wf-accent-amber{--wf-accent:var(--amber-t)}
.wf-accent-blue{--wf-accent:var(--blue-t)}
.wf-strategy-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.wf-strategy-head span{font-size:13px;font-weight:800}
.wf-pill{font-size:10px;text-transform:uppercase;border-radius:99px;padding:3px 8px;background:var(--bg2);border:1px solid var(--border)}
.wf-good,.wf-text-good{color:var(--green-t)}
.wf-watch,.wf-text-watch{color:var(--amber-t)}
.wf-bad,.wf-text-bad{color:var(--red-t)}
.wf-neutral,.wf-text-neutral{color:var(--text2)}
.wf-pill.wf-good{background:var(--green-bg);border-color:rgba(15,110,86,.28)}
.wf-pill.wf-watch{background:var(--amber-bg);border-color:rgba(186,117,23,.28)}
.wf-pill.wf-bad{background:var(--red-bg);border-color:rgba(160,48,48,.28)}
.wf-score-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.wf-score-pair div,.wf-mini-grid div{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:8px}
.wf-score-pair span,.wf-mini-grid span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800}
.wf-score-pair b{display:block;font-size:20px;line-height:1.1;margin-top:3px}
.wf-ratio-track{height:6px;background:var(--bg3);border-radius:99px;overflow:hidden;margin-bottom:8px}
.wf-ratio-track i{display:block;height:100%;border-radius:inherit}
.wf-ratio-track .wf-good{background:var(--green-t)}
.wf-ratio-track .wf-watch{background:var(--amber-t)}
.wf-ratio-track .wf-bad{background:var(--red-t)}
.wf-ratio-track .wf-neutral{background:var(--border2)}
.wf-mini-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.wf-mini-grid b{display:block;font-size:13px;margin-top:2px}
.wf-verdict{margin-top:10px;border-radius:var(--r);padding:10px 12px;font-size:12px;line-height:1.45;border:1px solid var(--border);background:var(--bg2)}
.wf-verdict.wf-good{border-left:3px solid var(--green-t)}
.wf-verdict.wf-watch{border-left:3px solid var(--amber-t)}
.wf-verdict.wf-bad{border-left:3px solid var(--red-t)}
.diagnostics-card{margin-top:12px;border-left:3px solid #5C6BC0;padding:0;overflow:hidden}
.diagnostics-summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 14px;background:color-mix(in srgb,var(--bg2) 55%,transparent)}
.diagnostics-summary::-webkit-details-marker{display:none}
.diagnostics-summary::after{content:"+";font-size:18px;line-height:1;color:var(--text3);font-weight:700}
.diagnostics-card[open] .diagnostics-summary::after{content:"-"}
.diagnostics-body{padding:12px 14px 14px;border-top:1px solid var(--border)}
.diagnostics-header{margin-bottom:10px}
.analytical-card{margin-top:12px;border-left:3px solid #5C6BC0}
.analytical-badge{display:inline-flex;vertical-align:middle;margin-left:6px;padding:2px 6px;border-radius:99px;background:var(--bg2);border:1px solid var(--border);color:var(--text3);font-size:9px;text-transform:uppercase}
.analytical-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.analytical-tile{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px;min-width:0}
.analytical-tile span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:800;margin-bottom:4px}
.analytical-tile b{display:block;font-size:15px;line-height:1.2}
.analytical-tile em{display:block;font-style:normal;color:var(--text2);font-size:11px;margin-top:3px}
.analytical-tile small{display:block;color:var(--text3);font-size:10px;margin-top:5px;line-height:1.35}
.analytical-explainer{font-size:12px;line-height:1.45;color:var(--text2);margin-top:10px;padding:9px 10px;border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--bg2) 72%,transparent)}
.analytical-verdict{font-size:12px;line-height:1.5;margin-top:10px;padding:9px 10px;background:var(--bg2);border-radius:var(--r)}
.analytical-footnote{font-size:11px;color:var(--text3);margin-top:6px}
.benchmark-card{border-left:3px solid #9C27B0}
.benchmark-grid{margin-bottom:0}
.stock-breakdown-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px}
.stock-breakdown-item{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:9px 10px;min-width:0}
.stock-breakdown-item span{display:block;font-size:11px;color:var(--text3);text-transform:uppercase;font-weight:800}
.stock-breakdown-item b{display:block;font-size:14px;margin-top:2px}
.stock-breakdown-item small{display:block;font-size:10px;color:var(--text2);margin-top:3px;line-height:1.35}
.portfolio-ai-card{margin-bottom:12px;border-left:3px solid #1D9E75;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 92%,#1D9E75 8%),var(--bg))}
.portfolio-ai-title{font-size:13px;font-weight:700;margin-bottom:12px;color:#1D9E75}
.xray-card{margin-top:12px;overflow:hidden}
.xray-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.xray-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px}
.xray-help{color:var(--text3);cursor:help;font-size:11px}
.xray-subtitle{font-size:11px;color:var(--text2);margin-top:2px}
.xray-controls{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.xray-select{min-height:34px;padding:6px 10px;background:var(--bg2);color:var(--text);border:1px solid var(--border);border-radius:var(--r);font-size:12px}
.xray-load{font-size:12px;padding:6px 12px;min-height:34px}
.xray-empty{border:1px dashed var(--border2);border-radius:var(--r);padding:18px;text-align:center;background:color-mix(in srgb,var(--bg2) 78%,transparent)}
.xray-empty-title{font-size:13px;font-weight:700;color:var(--text)}
.xray-empty-text{font-size:12px;color:var(--text2);margin-top:3px}
.xray-loading{border:1px solid var(--border);border-radius:var(--r);padding:16px;text-align:center;background:var(--bg2);font-size:12px}
.xray-loaded{border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;background:color-mix(in srgb,var(--bg2) 62%,transparent)}
.xray-meta-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--text3);margin-bottom:10px}
.xray-meta-row b{color:var(--text2);font-weight:700}
.xray-failed{color:var(--amber-t)}
.xray-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(135px,1fr));gap:8px;margin-bottom:12px}
.xray-summary-item{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:9px 10px;min-width:0}
.xray-summary-item span{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;font-weight:700;margin-bottom:3px}
.xray-summary-item b{display:block;font-size:15px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xray-summary-item small{display:block;font-size:10px;color:var(--text2);margin-top:3px}
.xray-content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.xray-section{border-top:1px solid var(--border);padding-top:10px;min-width:0}
.xray-section-holdings{grid-row:span 2}
.xray-section-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:7px}
.xray-section-head span{font-size:11px;color:var(--text2);text-transform:uppercase;font-weight:800}
.xray-section-head b{font-size:11px;color:var(--text3);font-weight:700;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}
.xray-stackbar{display:flex;height:12px;border-radius:99px;overflow:hidden;background:var(--bg2);border:1px solid var(--border);margin-bottom:8px}
.xray-stack-seg{height:100%;min-width:2px}
.xray-legend{display:flex;flex-wrap:wrap;gap:6px 12px}
.xray-legend-item{display:flex;align-items:center;gap:6px;font-size:11px;min-width:0}
.xray-legend-item i{width:8px;height:8px;border-radius:2px;flex:0 0 auto}
.xray-legend-item span{color:var(--text2);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.xray-legend-item b{font-weight:700;color:var(--text)}
.xray-legend-more,.xray-no-data{font-size:11px;color:var(--text3)}
.xray-holdings{display:flex;flex-direction:column;gap:8px}
.xray-holding-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(80px,.8fr) 46px;gap:10px;align-items:center;font-size:12px}
.xray-holding-name{min-width:0}
.xray-holding-name b{display:block;font-size:12px;line-height:1.2}
.xray-holding-name span{display:block;color:var(--text2);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xray-holding-bar{height:6px;background:var(--bg3);border-radius:99px;overflow:hidden}
.xray-holding-bar i{display:block;height:100%;background:var(--blue-t);border-radius:inherit}
.xray-holding-row strong{text-align:right;font-size:12px}
.xray-flags-wrap{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.xray-flags-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px}
.xray-flag{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;align-items:start;border-radius:var(--r);padding:9px 10px;border:1px solid var(--border);font-size:12px;background:var(--bg2)}
.xray-flag b{font-size:10px;text-transform:uppercase;color:var(--text);padding-top:1px}
.xray-flag span{color:var(--text2);line-height:1.4}
.xray-flag-ok{grid-template-columns:160px minmax(0,1fr);background:rgba(15,110,86,0.08);border-color:rgba(15,110,86,.25)}
.xray-flag-ok b{color:var(--green-t)}
.xray-flag-note{border-left:3px solid var(--amber-t)}
.xray-flag-warning{border-left:3px solid var(--amber-t);background:color-mix(in srgb,var(--amber-bg) 45%,var(--bg2))}
.xray-flag-alert{border-left:3px solid var(--red-t);background:color-mix(in srgb,var(--red-bg) 45%,var(--bg2))}

/* Non-home workspace polish: Screener, Portfolio, Watchlist, Theses */
#tab-screener,#tab-portfolio,#tab-watchlist,#tab-theses{--panel-shadow:0 18px 45px rgba(0,0,0,.10);--panel-glow:inset 0 1px 0 rgba(255,255,255,.055)}
#tab-screener .card,#tab-portfolio .card,#tab-watchlist .card,#tab-theses .card{border-radius:var(--r);border-color:color-mix(in srgb,var(--border) 76%,var(--text3));box-shadow:var(--panel-glow)}
#tab-screener select,#tab-screener input,#tab-watchlist input,#tab-theses select,#tab-portfolio select,#tab-portfolio input{background:color-mix(in srgb,var(--bg2) 82%,transparent);border-color:color-mix(in srgb,var(--border2) 60%,var(--border));min-height:36px}
#tab-screener .btn,#tab-watchlist .btn,#tab-theses .btn,#tab-portfolio .btn{box-shadow:0 1px 0 rgba(255,255,255,.04)}

.screener-control-card,.watchlist-control-card,.thesis-dashboard-card,.portfolio-setup-card{
  position:relative;
  overflow:hidden;
  background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 92%,#185FA5 8%),var(--bg));
  box-shadow:var(--panel-shadow),var(--panel-glow);
}
.screener-control-card::before,.watchlist-control-card::before,.thesis-dashboard-card::before,.portfolio-setup-card::before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;
  height:2px;
  background:linear-gradient(90deg,var(--blue-t),var(--green-t),var(--amber-t));
  opacity:.85;
}
.screener-disclosure{
  margin-bottom:14px;
  padding:10px 12px;
  border:1px solid color-mix(in srgb,var(--blue-t) 24%,transparent);
  border-left:3px solid var(--blue-t);
  border-radius:var(--r);
  background:color-mix(in srgb,var(--blue-bg) 32%,transparent);
  color:var(--text2);
  font-size:12px;
  line-height:1.55;
}
.screener-control-row{align-items:end;margin-bottom:12px}
.screener-control-row .field{min-width:128px}
.screener-control-row .btn-primary{height:38px;padding:0 18px}
.screener-filter-row{margin:2px 0 0;padding-top:10px;border-top:1px solid var(--border)}
.screener-filter-row span{font-size:11px !important;text-transform:uppercase;font-weight:800;letter-spacing:0;color:var(--text3) !important}
#tab-screener .filter-chip{background:var(--bg2);border-color:var(--border);font-size:12px}
#tab-screener .filter-chip:hover{border-color:var(--border2);color:var(--text)}
#tab-screener .filter-chip.on{background:var(--blue-bg);color:var(--blue-t);border-color:color-mix(in srgb,var(--blue-t) 36%,transparent)}
.screener-results-card{padding:14px 16px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#000 6%),var(--bg));box-shadow:var(--panel-shadow),var(--panel-glow)}
.screener-results-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.screener-results-kicker{font-size:10px;text-transform:uppercase;font-weight:900;color:var(--blue-t);letter-spacing:0;margin-bottom:2px}
.screener-results-title{font-size:17px;font-weight:800;line-height:1.2}
.screener-results-title span{font-size:12px;color:var(--text2);font-weight:500;margin-left:6px}
.screener-count-pill{align-self:center;background:var(--bg2);border:1px solid var(--border);border-radius:99px;padding:5px 10px;font-size:12px;font-weight:800;color:var(--text2)}
.screener-peer-warning{font-size:12px;color:var(--amber-t);background:color-mix(in srgb,var(--amber-bg) 34%,transparent);padding:8px 10px;border-left:3px solid var(--amber-t);border-radius:var(--r);margin-bottom:10px}
.screener-empty-card{box-shadow:var(--panel-shadow),var(--panel-glow)}
.screener-empty-state{text-align:center;padding:34px 14px;color:var(--text2)}
.screener-empty-icon{font-size:30px;margin-bottom:8px}
.screener-empty-title{font-size:14px;color:var(--text);font-weight:700}
.screener-empty-copy{font-size:12px;margin-top:6px;color:var(--text3)}
#tab-screener .sector-bar{background:color-mix(in srgb,var(--bg2) 68%,transparent);border:1px solid var(--border);border-radius:var(--r);margin-bottom:10px}
#tab-screener .stock-row{
  gap:16px;
  padding:14px;
  margin-top:9px;
  border:1px solid var(--border);
  border-radius:var(--r);
  background:color-mix(in srgb,var(--bg2) 62%,transparent);
  transition:transform .15s,border-color .15s,background .15s,box-shadow .15s;
}
#tab-screener .stock-row:last-child{border-bottom:1px solid var(--border)}
#tab-screener .stock-row:hover{transform:translateY(-1px);border-color:var(--border2);background:var(--bg2);box-shadow:0 12px 26px rgba(0,0,0,.08)}
.stock-main{flex:1;min-width:0}
.stock-name{font-weight:800;font-size:14px;line-height:1.25;overflow-wrap:anywhere}
#tab-screener .tag{margin-left:0;border:1px solid var(--border)}
#tab-screener .meta{gap:8px 13px;margin-top:7px}
#tab-screener .score-breakdown{max-width:none;margin-top:10px}
#tab-screener .score-mini{background:color-mix(in srgb,var(--bg) 68%,transparent)}
.stock-price-panel{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0;min-width:160px}
.stock-price{font-weight:850;font-size:16px;line-height:1.1}
.stock-change{font-size:12px;font-weight:800}
.stock-cap{font-size:11px;color:var(--text2)}
#tab-screener .add-btn{height:32px;border-radius:var(--r);background:var(--bg);border:1px solid var(--border2)}
#tab-screener .add-btn:hover{transform:translateY(-1px);border-color:var(--text3)}

.watchlist-head,.thesis-dashboard-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.watchlist-title,.thesis-dashboard-title{font-size:17px;font-weight:800;line-height:1.2}
.watchlist-subtitle,.thesis-dashboard-subtitle{font-size:12px;color:var(--text2);margin-top:4px;line-height:1.45}
.watchlist-storage-note{font-size:11px;color:var(--text3);padding:5px 8px;border:1px solid var(--border);border-radius:99px;background:var(--bg2)}
.watchlist-control-row{margin:0;align-items:end}
.watchlist-input-field{flex:1;max-width:320px;min-width:220px}
.watchlist-empty-hint{display:block;font-size:13px;color:var(--text2);padding:8px 0}
#watchlist-tickers{margin-top:12px !important}
#watchlist-output{display:flex;flex-direction:column;gap:12px}
.watch-card{margin-bottom:0 !important;padding:15px 16px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 93%,#1D9E75 7%),var(--bg));box-shadow:var(--panel-shadow),var(--panel-glow)}
.watch-card-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:13px;padding-bottom:12px;border-bottom:1px solid var(--border)}
.watch-card-title{font-size:17px;font-weight:850;line-height:1.25;overflow-wrap:anywhere}
.watch-card-title span{color:var(--text2);font-weight:600;font-size:12px;margin-left:5px}
.watch-card-meta{font-size:12px;color:var(--text2);margin-top:3px}
.watch-price-panel{text-align:right;min-width:112px}
.watch-card-price{font-size:21px;font-weight:900;line-height:1.05}
.watch-card-change{font-size:13px;font-weight:850;margin-top:4px}
.watch-metric-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin-bottom:10px !important}
.watch-metric-grid .metric{border:1px solid var(--border);background:color-mix(in srgb,var(--bg2) 72%,transparent)}
.watch-metric-grid .metric-val{font-weight:850}
.watch-sector-cmp{font-size:10px;margin-left:4px;font-weight:700;white-space:nowrap}
.watch-sector-cmp.neutral{color:var(--text2)}
.watch-median-note{font-size:11px;color:var(--text2);margin-top:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg2)}
.watch-chart-section,.watch-news-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--border)}
.watch-section-title{font-size:13px;font-weight:850;margin-bottom:8px}
.watch-mini-chart{height:240px;background:#0c111b;border:1px solid rgba(255,255,255,.08);border-radius:var(--r);overflow:hidden}
.watch-news-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;flex-wrap:wrap;gap:8px}
.watch-news-count,.watch-news-new{background:#E91E63;color:white;border-radius:99px;font-size:9px;font-weight:800}
.watch-news-count{padding:2px 7px;margin-left:5px}
.watch-news-new{padding:2px 6px;margin-right:5px;vertical-align:middle}
.watch-news-sources{font-size:10px;color:var(--text3)}
.watch-news-empty{font-size:12px;color:var(--text2);font-style:italic;padding:10px;border:1px dashed var(--border);border-radius:var(--r)}
.watch-news-item{padding:9px 0;border-bottom:1px solid var(--border)}
.watch-news-row{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.watch-news-body{flex:1;min-width:0}
.watch-news-title{font-size:13px;line-height:1.45;margin-bottom:5px}
.watch-news-title a{color:var(--text);text-decoration:none}
.watch-news-title a:hover{text-decoration:underline}
.watch-news-meta{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:11px;color:var(--text2)}
.watch-source-badge{background:var(--bg2);color:var(--text2);padding:2px 6px;border-radius:99px;font-size:10px;border:1px solid var(--border)}
.watch-pulse-btn{height:28px;font-size:11px;padding:0 9px;flex-shrink:0}

.thesis-dashboard-card{margin-bottom:12px}
.thesis-dashboard-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.thesis-dashboard-actions label{font-size:11px;color:var(--text2);text-transform:uppercase;font-weight:800}
.thesis-sort-select{padding:5px 8px;background:var(--bg2);color:var(--text);border:1px solid var(--border);border-radius:var(--r);font-size:12px}
.thesis-new-single{margin-left:auto}
.thesis-empty-card{text-align:center;padding:34px 20px;color:var(--text2);box-shadow:var(--panel-shadow),var(--panel-glow)}
.thesis-empty-icon{font-size:30px;margin-bottom:8px}
.thesis-empty-title{font-size:14px;margin-bottom:6px;color:var(--text);font-weight:800}
.thesis-empty-copy{font-size:12px;color:var(--text3);max-width:520px;margin:0 auto;line-height:1.55}
.thesis-card{position:relative;margin-bottom:10px;padding:15px 16px;overflow:hidden;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#BA7517 6%),var(--bg));box-shadow:var(--panel-shadow),var(--panel-glow)}
.thesis-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--amber-t),var(--blue-t))}
.thesis-card-head{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}
.thesis-title-block{flex:1;min-width:220px}
.thesis-badge-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.thesis-ticker{font-size:17px;font-weight:900;letter-spacing:0}
.thesis-date-line{font-size:11px;color:var(--text3);margin-top:5px}
.thesis-card-actions{display:flex;gap:6px}
.thesis-card-actions .btn{height:31px;font-size:12px;padding:0 10px}
.thesis-delete{color:#A03030}
.thesis-case-grid{margin-top:12px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.thesis-case{border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--bg2) 66%,transparent);padding:10px}
.thesis-case-bull{border-left:3px solid var(--green-t)}
.thesis-case-bear{border-left:3px solid var(--red-t)}
.thesis-case-label,.thesis-watch-label{font-size:10px;color:var(--text2);text-transform:uppercase;font-weight:900;letter-spacing:0;margin-bottom:5px}
.thesis-case-copy{font-size:12px;line-height:1.55;color:var(--text)}
.thesis-watch-block{margin-top:11px}
.thesis-metrics-row{display:flex;gap:7px;flex-wrap:wrap}
.thesis-metric-chip{font-size:11px;padding:5px 8px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r)}
.thesis-metric-chip span{color:var(--text2)}
.thesis-metric-chip b{color:var(--text);margin-left:5px}

#tab-portfolio .portfolio-setup-card,.frontier-card,.risk-selector-card,.p-card,.wf-card,.xray-card,.benchmark-card,.stock-breakdown-card,.diagnostics-card,.portfolio-ai-card{
  box-shadow:var(--panel-shadow),var(--panel-glow);
}
#tab-portfolio .portfolio-setup-card{padding:18px}
#tab-portfolio .portfolio-setup-title{font-size:20px}
#tab-portfolio .portfolio-input-panel,#tab-portfolio .portfolio-controls-panel{background:color-mix(in srgb,var(--bg2) 68%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
#tab-portfolio .portfolio-chips{background:color-mix(in srgb,var(--bg) 75%,transparent);min-height:46px}
.frontier-card{padding:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 90%,#185FA5 10%),var(--bg))}
.frontier-title{font-size:22px}
.frontier-meta-grid div{background:color-mix(in srgb,var(--bg2) 72%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.frontier-meta-grid b{font-size:18px}
.frontier-chart-shell{height:430px;background:radial-gradient(circle at 12% 0%,rgba(24,95,165,.12),transparent 26%),color-mix(in srgb,var(--bg2) 46%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.risk-selector-card{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#0F6E56 6%),var(--bg))}
.slider-portfolio-card{border:1px solid var(--border);border-radius:var(--r);background:color-mix(in srgb,var(--bg2) 62%,transparent);padding:10px;margin-top:10px}
.slider-portfolio-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}
.slider-portfolio-head>span{display:inline-flex;align-items:center;height:28px;padding:0 11px;border-radius:99px;background:color-mix(in srgb,var(--slider-tone) 22%,transparent);color:var(--slider-tone);font-size:12px;font-weight:900}
.slider-portfolio-head>div{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.slider-portfolio-head b{font-size:15px}
.slider-portfolio-head small{font-size:10px;color:var(--text2);margin-right:5px}
.p-card{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#000 6%),var(--bg));transition:transform .15s,border-color .15s,box-shadow .15s}
.p-card:hover{transform:translateY(-1px);border-color:var(--border2);box-shadow:0 18px 40px rgba(0,0,0,.12)}
.p-card-title{font-size:15px}
.p-card-sharpe{background:color-mix(in srgb,var(--bg2) 78%,transparent)}
.portfolio-stat{background:color-mix(in srgb,var(--bg2) 70%,transparent);border:1px solid var(--border)}
.w-item{background:color-mix(in srgb,var(--bg2) 58%,transparent)}
.wf-card{padding:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 92%,#BA7517 8%),var(--bg))}
.wf-benchmark-chip{background:color-mix(in srgb,var(--bg2) 70%,transparent);min-width:240px}
.wf-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}
.wf-strategy{padding:13px;background:color-mix(in srgb,var(--bg) 78%,transparent);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
.wf-score-pair div,.wf-mini-grid div{background:color-mix(in srgb,var(--bg2) 72%,transparent)}
.xray-card{padding:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 93%,#1D9E75 7%),var(--bg))}
.xray-title{font-size:16px;font-weight:850}
.xray-loaded{background:color-mix(in srgb,var(--bg2) 58%,transparent);padding:16px}
.xray-summary-item,.stock-breakdown-item,.analytical-tile{background:color-mix(in srgb,var(--bg2) 70%,transparent)}
.xray-stackbar{height:14px}
.xray-flag{background:color-mix(in srgb,var(--bg2) 66%,transparent)}
.stock-breakdown-card{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#D85A30 6%),var(--bg))}
.diagnostics-card{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 94%,#5C6BC0 6%),var(--bg))}
.diagnostics-summary{background:color-mix(in srgb,var(--bg2) 64%,transparent)}
.analytical-grid{gap:12px}

@media(max-width:780px){
  .screener-results-head,.watch-card-head,.thesis-card-head,.watchlist-head,.thesis-dashboard-head{align-items:stretch}
  .stock-price-panel{align-items:flex-start;min-width:100%;padding-top:10px;border-top:1px solid var(--border)}
  #tab-screener .stock-row{flex-direction:column}
  .watch-price-panel{text-align:left}
  .thesis-case-grid{grid-template-columns:1fr}
  .frontier-chart-shell{height:340px}
  .wf-benchmark-chip{width:100%;text-align:left}
}
.loading{display:flex;align-items:center;gap:10px;color:var(--text2);font-size:14px;padding:1.5rem 0}
.spinner{width:16px;height:16px;border:2px solid var(--border2);border-top-color:var(--text);border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.empty{color:var(--text2);font-size:14px;padding:2rem 0;text-align:center}
.error-box{background:var(--red-bg);color:var(--red-t);border-radius:var(--r);padding:10px 14px;font-size:13px}

/* AI Analysis 2-column layout: AI/extra on the left, sticky chart+fundamentals on the right */
.analysis-layout{
  display:grid;
  grid-template-columns:1fr;
  gap:14px;
  align-items:start;
}
.analysis-left{min-width:0}  /* prevent grid blowout from long content */
.analysis-right{min-width:0;display:flex;flex-direction:column;gap:14px}
@media (min-width:1280px){
  /* Two columns: AI text left, tabbed chart/fundamentals right.
     The right column has a fixed-ish height and uses tabs internally,
     so the page itself doesn't need awkward scroll behaviour. */
  .analysis-layout{
    grid-template-columns:minmax(0, 1fr) minmax(560px, 1fr);
  }
  /* Empty/loading state — collapse to single column so the left card uses
     the full width instead of leaving an empty right column. */
  .analysis-layout.fullwidth{
    grid-template-columns:1fr;
  }
  .analysis-right{
    position:sticky;
    top:12px;
  }
}
@media (min-width:1700px){
  /* On wide screens, chart column gets even more breathing room. */
  .analysis-layout{
    grid-template-columns:minmax(0, 1fr) minmax(720px, 1.1fr);
  }
  .analysis-layout.fullwidth{
    grid-template-columns:1fr;
  }
}

/* Right-panel tabs — a compact toggle bar above the chart/fundamentals pane */
.right-tabs{
  display:flex;
  background:var(--bg2);
  border-bottom:1px solid var(--border);
}
.right-tab{
  flex:1;
  padding:10px 14px;
  background:transparent;
  border:none;
  color:var(--text2);
  font-size:12px;
  font-weight:500;
  cursor:pointer;
  transition:all .15s;
  border-bottom:2px solid transparent;
}
.right-tab:hover{color:var(--text)}
.right-tab.active{
  color:var(--text);
  border-bottom-color:var(--green-t);
  background:var(--bg);
}
.right-pane{
  /* Pane height adjusts to viewport. On desktop sticky mode this keeps the
     chart/fundamentals visible without page scroll. */
  height:calc(100vh - 80px);
  min-height:480px;
  max-height:820px;
}
@media (max-width:1279px){
  /* Mobile/tablet: panes have a fixed reasonable height since they're not sticky */
  .right-pane{height:520px;max-height:none}
}
.disclaimer-banner{
  background:rgba(186,117,23,0.10);
  border-left:3px solid #BA7517;
  border-radius:var(--r);
  padding:8px 12px;
  margin:8px 0 16px 0;
  font-size:11.5px;
  color:var(--text2);
  line-height:1.5;
  display:flex;
  align-items:flex-start;
  gap:8px;
}
.disclaimer-icon{font-size:14px;flex-shrink:0;line-height:1.4}
.ai-disclaimer{
  font-size:10px;
  color:var(--text3);
  margin-top:6px;
  padding:6px 10px;
  background:var(--bg2);
  border-radius:6px;
  font-style:italic;
  line-height:1.4;
}
.app-footer{
  margin-top:32px;
  padding:16px 0;
  border-top:1px solid var(--border);
  text-align:center;
  font-size:11px;
  color:var(--text3);
  line-height:1.6;
}
.app-footer a{color:var(--text2);text-decoration:none;border-bottom:1px dotted var(--text3)}
.app-footer a:hover{color:var(--text);border-bottom-color:var(--text2)}
.fl{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.corr-table{width:100%;font-size:12px;border-collapse:collapse;margin-top:10px}
.corr-table th,.corr-table td{padding:5px 8px;text-align:center;border:.5px solid var(--border)}
.corr-table th{background:var(--bg2);font-weight:500}
@media(max-width:700px){
  .portfolio-setup-head{flex-direction:column;align-items:stretch}
  .portfolio-run-btn{width:100%}
  .portfolio-setup-grid,.portfolio-control-grid,.portfolio-method-options,.frontier-meta-grid,.p-results,.detail-grid,.xray-content-grid,.analytical-grid{grid-template-columns:1fr}
  .frontier-chart-shell{height:320px}
  .frontier-slider-labels{font-size:9px}
  .wf-mini-grid{grid-template-columns:1fr}
  .xray-controls{width:100%;margin-left:0}
  .xray-select,.xray-load{flex:1 1 150px}
  .xray-section-holdings{grid-row:auto}
  .xray-holding-row{grid-template-columns:minmax(90px,1fr) 56px 42px}
  .xray-flag,.xray-flag-ok{grid-template-columns:1fr}
}

/* ════════════════════════════════════════════════════════════════════════════
   v45.8: Home tab Full Chart modal
   Fixed-position overlay covering the viewport. Uses high z-index (10000) to
   guarantee it's above all tab content and any inline widgets. Body scroll is
   disabled while the modal is open (managed in JS).
   ════════════════════════════════════════════════════════════════════════════ */
#home-modal-root {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  z-index: 10000;
}
.home-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.78);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 30px;
}
.home-modal-content {
  width: 100%;
  max-width: 1400px;
  height: 100%;
  max-height: 90vh;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--r);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 12px 48px rgba(0, 0, 0, 0.6);
}
.home-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--bg2);
  flex-shrink: 0;
}
.home-modal-title { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.home-modal-title span { font-size:14px;font-weight:600;color:var(--text); }
.home-modal-title small { font-size:11px;color:var(--text3);font-weight:400; }
.home-modal-close {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text2);
  font-size: 20px;
  width: 30px;
  height: 30px;
  border-radius: 4px;
  cursor: pointer;
  line-height: 1;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.home-modal-close:hover { background: var(--bg); color: var(--text); }
.home-modal-chart { flex: 1; min-height: 0; background: #0d0d0d; }
.home-modal-footer {
  padding: 8px 16px;
  border-top: 1px solid var(--border);
  background: var(--bg2);
  flex-shrink: 0;
  text-align: center;
}

/* Mobile: full-screen modal (the chart is too big for 380px viewports
   to render usefully at smaller sizes). */
@media (max-width: 800px) {
  .home-modal-backdrop { padding: 0; }
  .home-modal-content { max-height: 100vh; border-radius: 0; border: 0; }
}
