Two root causes of tables and panels spilling past the window frame:
1. Global 'table { min-width: 850px }' forced EVERY table (source/score/modal/
backtest) to 850px regardless of container -> now min-width:0 so tables
shrink to 100%; only .factor-table (stock board, inside .table-wrap)
keeps its 850px and scrolls. Small tables get table-layout:fixed +
overflow-wrap on mobile so long content wraps instead of pushing out.
2. Grid/flex tracks lacked minmax(0,1fr) / min-width:0, so wide grid items
(KPI numbers, theme cards) pushed the whole row past the viewport at
768-1040px (doc overflow 208px). Fixed: all grid-template-columns use
minmax(0,1fr); .content is now flex:1 1 auto + min-width:0; KPI/theme/bt
cards get min-width:0 + overflow-wrap.
Verified programmatically in-browser: document overflow = 0 at 320/360/500/
600/720/760/768/820/900/1040/1200/1440px; score-table + source-table over=0
at all widths (incl inside the per-source modal). Board scrolls in .table-wrap
as designed. Backend suite 369 green (CSS-only change).