/* Shared alignment for public portals and service introductions.
   Loaded after page/theme styles; tool workspaces keep their own layouts. */
body.site main.container.lab { max-width: var(--shell-max); }

body.site main :is(.tool-hero, .hub-hero, .lab-hero, .rd-hero, .gx-hub-hero) {
  margin-inline: auto;
  text-align: center;
  min-inline-size: 0;
}
body.site main :is(.tool-hero, .hub-hero, .lab-hero, .rd-hero, .gx-hub-hero) > :is(h1, p, .lead, .hero-subtitle) {
  margin-inline: auto;
  overflow-wrap: anywhere;
}
body.site main :is(.tool-hero, .hub-hero, .lab-hero, .rd-hero, .gx-hub-hero) :is(.tool-facts, .nt-facts, .hub-facts, .btn-row) {
  justify-content: center;
}

/* Source hubs share a centered search and fully visible source choices. */
body.site .hub-hero .hub-search { margin-inline: auto; width: 100%; }
body.site .hub-hero .hub-search__input { text-align: start; }
body.site .hub-hero .hub-ribbon {
  justify-content: center;
  flex-wrap: wrap;
  overflow: visible;
}
body.site .hub-hero .hub-ribbon__label { flex-basis: 100%; }
body.site .hub-pills { flex-wrap: wrap; overflow-x: visible; }

/* Intrinsic widths must not push a form or panel beyond its column. */
body.site main :is(.field-grid, .nt-fields, .lab-grid, .tool-layout) > * { min-inline-size: 0; }
body.site main :is(.panel__head, .btn-row, .lab-actions, .nt-actions) { align-items: center; }
body.site main :is(.tool-hero, .hub-hero, .lab-hero) :is(.eyebrow, .tool-facts li, .nt-facts li, .hub-facts li) {
  max-inline-size: 100%;
  white-space: normal;
}
