/* Home-only density and keyboard controls; shared navigation is unaffected. */
.dashboard-control-toolbar .market-session-pill { max-width: 100%; border-radius: .65rem !important; overflow-wrap: anywhere; }
#dashboardWidgetToggles .dropdown-item { white-space: normal; }
#dashboardWidgetToggles [data-widget-up], #dashboardWidgetToggles [data-widget-down] { min-width: 2.25rem; min-height: 2.25rem; }
#dashboardWidgetToggles button:focus-visible, #dashboardWidgets summary:focus-visible { outline: 3px solid var(--bs-info); outline-offset: 2px; }
#allocContainer th, #allocContainer td { white-space: nowrap; }
#allocContainer .table-responsive { max-width: 100%; }
#dashboardWidgets [data-sector-method] { overflow-wrap: anywhere; }
.dashboard-section-navigation:not([hidden]) { display: flex; flex-wrap: wrap; gap: .4rem; }
.dashboard-section-group > button { min-height: 2.5rem; }
.dashboard-section-menu { width: max-content; max-width: min(22rem, calc(100vw - 2rem)); max-height: 60vh; overflow-y: auto; }
.dashboard-section-navigation .dropdown-item { min-height: 2.5rem; font-size: .8125rem; white-space: normal; overflow-wrap: anywhere; }
.dashboard-section-navigation a:focus-visible { outline: 3px solid var(--bs-info); outline-offset: 2px; }
@media (max-width: 575.98px) {
    .dashboard-section-group > button { font-size: .8125rem; }
    .dashboard-section-group > button .bi { display: none; }
}
#dashboardWidgets .dashboard-widget { scroll-margin-top: 7rem; }
@media (max-width: 575.98px) {
  .dashboard-control-toolbar .dashboard-quick-presets { flex-wrap: wrap; }
  .dashboard-control-toolbar .dashboard-quick-presets .btn { min-height: 2.5rem; }
  #actionNeededContainer .action-needed-row { flex-wrap: wrap; }
  #actionNeededContainer .action-needed-row .min-w-0 { flex-basis: 70%; }
  #portfolioStatsFreshness select { max-width: 100%; }
}

/* Band headings group the widget stream into the order a trader reads it. They are
   rendered by home-dashboard.js from the live widget order, so they never scroll away
   from the widgets they label. */
.dashboard-band-heading { display: flex; align-items: center; gap: .5rem; margin: 0 0 .75rem; padding-bottom: .4rem; border-bottom: 1px solid var(--bs-border-color); scroll-margin-top: 7rem; }
.dashboard-band-heading + .dashboard-widget { margin-top: 0 !important; }
#dashboardWidgets > .dashboard-band-heading:not(:first-child) { margin-top: 1.75rem; }
.dashboard-band-title { display: flex; align-items: center; gap: .45rem; margin: 0; font-size: .8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--bs-secondary-color); }
.dashboard-band-title .bi { font-size: 1rem; letter-spacing: normal; color: var(--bs-info); }
@media (max-width: 575.98px) {
    .dashboard-band-title { font-size: .75rem; letter-spacing: .06em; }
}

/* The one card an anonymous reader sees in place of the personal widgets (home-dashboard.js). */
.home-free-account-card {
    border-color: color-mix(in srgb, var(--bs-success) 35%, var(--bs-border-color));
}
.home-free-account-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
    gap: .35rem 1.25rem;
}
.home-free-account-list .bi { color: var(--bs-info); }
