/* Opt-in frame for existing tables. No row replacement, paging or input changes. */
.portal-table-frame {
  max-width: 100%;
  max-height: calc(100dvh - 180px);
  overflow: auto;
  scrollbar-gutter: stable;
  scrollbar-width: auto;
  scrollbar-color: #648798 #101b27;
  border: 1px solid rgba(130, 175, 195, .25);
  border-radius: 10px;
}
.portal-table-frame > .master-table,
.portal-table-frame > .data-table {
  display: table;
  width: 100%;
  min-width: 760px;
  margin-bottom: 0;
}
/* Stick the complete header group: multiple rows must not share top:0 individually. */
.portal-table-frame > table > thead {
  position: sticky;
  top: 0 !important;
  z-index: 3;
  background: #101b27;
}
.portal-table-frame > table > thead > tr > th {
  position: static !important;
  background: #101b27;
  white-space: nowrap;
}
.portal-table-frame::-webkit-scrollbar { width: 12px; height: 12px; }
.portal-table-frame::-webkit-scrollbar-thumb { background: #648798; border: 2px solid #101b27; border-radius: 8px; }
.portal-table-frame::-webkit-scrollbar-track,
.portal-table-frame::-webkit-scrollbar-corner { background: #101b27; }
/* Read-only reference rows: retain the category rowspan and full legal labels. */
#usefulLifeTable { min-width: 960px; }
#usefulLifeTable td { white-space: nowrap; height: 48px; font-variant-numeric: tabular-nums; }

/* Avoid collapsed-border gaps while the whole header group is sticky. */
.portal-table-frame > table { border-collapse:separate; border-spacing:0; }
.portal-table-frame > table > thead > tr { position:static !important; background:#101b27; }
