/* Shared interaction polish: contain components, not the whole page. */
:root { --header-height: 76px; }
[hidden] { display: none !important; }
html { scroll-padding-top: calc(var(--header-height) + 24px); }
main [id] { scroll-margin-top: calc(var(--header-height) + 24px); }
fieldset, .setup-main, .setup-rail, .scenario-layout > div { min-width: 0; }
.card-actions { flex-wrap: wrap; }
.card-actions > form { min-width: 0; max-width: 100%; }
.card-actions .button { max-width: 100%; overflow-wrap: anywhere; }
.results-heading { flex-wrap: wrap; gap: 12px; }
.results-heading > div { flex-wrap: wrap; min-width: 0; }
.results-heading h2 { margin: 0; }
:is(.passport-scroll,.metro-table-wrap,.comparison-wrap,.table-scroll,.ranking-table-wrap,.peer-table-wrap,.climate-plot-scroll,.market-map-stage) {
  max-width: 100%; min-width: 0; overscroll-behavior-x: contain;
  scrollbar-width: auto; scrollbar-color: #759d94 #edf4f0;
}
.scroll-hint { font-size: .78rem; color: var(--muted); margin: 8px 0; }
:is(button,a,input,select,textarea,summary,[tabindex]):focus-visible { outline: 3px solid #b88a32; outline-offset: 3px; }
.filter-actions { position: sticky; bottom: -24px; padding: 16px 0 8px; background: var(--cream); border-top: 1px solid var(--line); z-index: 2; }
.filter-actions .clear-link { display: block; text-align: center; padding: 10px; }
.filter-status { font-size: .78rem; line-height: 1.45; margin: 6px 0; min-height: 2.9em; }
.filter-status:empty { margin: 0; }
.filter-actions [data-filter-recovery] { font-size: .8rem; display: block; padding: 8px 0; }
.is-updating .results-heading::after { content: 'Updating…'; font-size: .8rem; color: var(--muted); }
[data-explore-results], .filter-panel { overflow-anchor: none; }
.setup-actions { position: sticky; bottom: 0; z-index: 5; background: #fff; padding: 14px 0; box-shadow: 0 -8px 18px #ffffffed; }
.setup-form .errorlist { overflow-wrap: anywhere; }
.setup-exit-note { font-size: .75rem; display: block; margin-top: 7px; color: var(--muted); }
.section-nav { top: var(--header-height); }
@media(min-width:981px) {
  .filter-panel,.scenario-layout>.planner-form,.planner-layout>.planner-form,.tracker-add,.account-card,.setup-rail,.finance-assumptions,.metro-filter {
    top: calc(var(--header-height) + 20px); max-height: calc(100dvh - var(--header-height) - 40px);
    overflow-y: auto; scrollbar-gutter: stable; overscroll-behavior-y: auto;
  }
}
@media(max-width:1080px) {
  .site-nav { overscroll-behavior-y: contain; }
  .nav-group > div { position: static; width: 100%; }
}
@media(max-width:760px) {
  input:not([type=checkbox]):not([type=radio]),select,textarea { font-size: 16px; }
  .filter-actions { position: static; }
  .setup-actions { gap: 8px; padding-bottom: max(12px,env(safe-area-inset-bottom)); }
  .setup-actions .button { flex: 1 1 120px; min-height: 44px; }
  .setup-rail nav { scrollbar-width: auto; overscroll-behavior-x: contain; padding-bottom: 10px; }
  .card-actions > form { flex: 1 1 180px; }
  .card-actions > form .button { width: 100%; }
  .student-tour { max-height: calc(100dvh - 40px); overflow-y: auto; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior: auto; }
  *,*::before,*::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
