/* Phase 22: logical pixels, no browser zoom or scaled control surfaces. */
html { text-size-adjust:100%; -webkit-text-size-adjust:100%; }
body { min-inline-size:0; }
main:not(.guard-shell),.dashboard-workspace,.gp-panel { container-type:inline-size; min-inline-size:0; }
main:not(.guard-shell) { inline-size:100%; }
.dashboard-workspace :is(.grid,.gp-overview,.gp-metrics), main :is(.overflow-x-auto,.gp-table-scroll) { min-inline-size:0; }
:is(.gp-table-scroll,.overflow-x-auto) { max-inline-size:100%; overscroll-behavior-inline:contain; }
:is(.live-chart-shell,.terminal-chart-area,.provider-terminal) { min-inline-size:0; max-inline-size:100%; }
:is(.terminal-chart-area,.provider-terminal) iframe { inline-size:100%; max-inline-size:100%; block-size:100%; }
.gp-curve svg { block-size:clamp(180px,28dvh,260px); }
.tradingview-widget-container { height:clamp(200px,65dvh,760px); min-height:min(200px,60dvh); max-inline-size:100%; }
.graphite-portal :is(.gp-metric span,.gp-recent,.gp-curve-caption,.gallery-meta,.gallery-note) { font-size:12px; }
@container (max-width:850px) {
  .gp-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .gp-date { grid-column:1/-1; }
  .gp-overview { grid-template-columns:minmax(0,1fr); }
}
@container (max-width:520px) {
  .gallery-card-grid { grid-template-columns:minmax(0,1fr); }
  .gp-panel>header { flex-wrap:wrap; }
}
@media(max-height:720px) {
  .graphite-portal .dashboard-workspace { padding:12px; }
  .graphite-portal #tab-execution .guard-launch-buttons>:is(button,a) { min-height:112px; padding-top:58px; padding-bottom:12px; }
  .gp-metric { padding:10px; }
}
@media(max-width:1100px) {
  .graphite-portal .terminal-sidebar { width:174px; }
  .graphite-portal .gp-recent { font-size:12px; }
}
@media(max-width:900px) { .graphite-portal .terminal-sidebar { width:220px; } }
@media(prefers-reduced-motion:reduce) { .guard-shell *, .tw-floating-checklist { transition:none!important; } }
[aria-label="Financial and process equity chart"] { height:clamp(220px,42dvh,360px); min-inline-size:0; }
#loginOverlay { overflow-y:auto; align-items:safe center; }
#loginOverlay>div { flex-shrink:0; max-inline-size:100%; }
#loginOverlay :is(button,input) { font-size: max(12px,.875rem); min-height:32px; }
/* The accepted LIVE shell predates Graphite's compact header. Keep every
   existing control reachable when logical width shrinks under Windows DPI. */
@media(max-width:1100px) {
  body:not(.graphite-portal)>header { flex-wrap:wrap; gap:8px; padding-inline:12px; }
  body:not(.graphite-portal)>header>div { min-inline-size:0; max-inline-size:100%; flex-wrap:wrap; }
}
