/* Data-backed surfaces must have a footprint before the first response. */
.tg-data-region{--tg-data-fade:220ms}
.tg-data-region > *{transition:opacity var(--tg-data-fade) ease}
.tg-data-region[data-tg-loading="true"] > *{opacity:0}
.tg-data-region[data-tg-loading="true"]{pointer-events:none}
/* Leave established card chrome, titles and controls visible on data-only loads. */
.tg-data-region[data-tg-shell="true"][data-tg-loading="true"] > *{opacity:1!important}
.tg-data-region[data-tg-shell="true"]{pointer-events:auto}
@media(prefers-reduced-motion:reduce){.tg-data-region > *{transition:none!important}}
/* Rankings are ordinary long pages. Lists grow in the document flow and
   the browser scrolls them; no separate eight-row scrolling window. */
.rankings-board-viewport{
  height:auto;min-height:0;overflow:visible
}
.rankings-board-viewport > section:not([hidden]){
  display:block;height:auto;min-height:0
}
.rankings-board-viewport .rankings-combined-board{
  display:block;height:auto;min-height:0
}
.rankings-board-viewport .rankings-combined-list{
  display:block;height:auto;max-height:none;min-height:0;
  overflow:visible;scrollbar-width:none
}
.rankings-board-viewport .rankings-board-summary{min-height:1.5em}


/* The home panel and signed-in stats render their panels before fetching. */
.home-progress{min-height:435px}
.home-progress .home-progress-metrics .home-metric{min-height:90px}
.home-progress .home-progress-metrics[data-tg-loading="true"] .home-metric strong{opacity:0}
.home-progress .home-progress-metrics .home-metric strong{transition:opacity 220ms ease}
.home-progress .home-latest-game{min-height:58px}
/* Progress chrome and metrics keep their place even before account hydration. */
.home-progress .home-progress-state{min-height:140px}
.page-stats .stats-core{min-height:0}
.page-stats .player-stat-card{min-height:170px}
.page-stats #player-stats-data[data-tg-loading="true"] .player-stat-card > strong{opacity:0}
.page-stats .player-stat-card > strong{transition:opacity 220ms ease}
.page-stats .player-ranking-stat [role="tabpanel"]{min-height:98px}
.page-stats .player-ranking-stat [role="tabpanel"] > :is(strong,span){transition:opacity 220ms ease}
.page-stats .player-ranking-stat [role="tabpanel"][data-tg-loading="true"] > :is(strong,span){opacity:0}
.page-stats .stats-top-games-list{
  height:104px;min-height:0;overflow:auto;scrollbar-width:thin
}
.page-stats .stats-history-body{
  height:auto;min-height:0;max-height:none;overflow:visible;scrollbar-width:none
}
.page-stats .stats-history-body[data-tg-loading="true"]{min-height:120px}
.page-stats .stats-top-games-head{min-height:30px}
@media(max-width:900px){
 .page-stats .stats-top-games-list{height:clamp(220px,31dvh,310px)}
}
@media(max-width:560px){
 .page-stats .stats-core{min-height:0}
 .page-stats .player-stat-card{min-height:146px}
 .home-progress{min-height:415px}
}

/* Administrative data regions retain their table/chart/list dimensions. */
#admin-workspace [data-admin-panel="overview"] .admin-kpis>button{min-height:135px}
#admin-workspace [data-admin-panel="overview"] .admin-dashboard-grid{min-height:270px}
#admin-workspace :is(.admin-metrics,#ad-overview-details,#ad-diagnostics){min-height:160px}
#admin-workspace .admin-table-wrap{
  height:clamp(320px,48dvh,540px);overflow:auto;scrollbar-width:thin
}
#admin-workspace :is(tbody,#ad-games,.admin-kpis strong,#ad-pageviews){transition:opacity 220ms ease}
#admin-workspace [data-admin-panel="overview"][data-tg-loading="true"] :is(.admin-kpis strong,#ad-pageviews){opacity:0}
#admin-workspace #ad-games{
  height:clamp(310px,50dvh,550px);min-height:0;overflow:auto;
  align-content:start;scrollbar-width:thin
}
#admin-workspace #ad-overview-details{
  height:clamp(250px,38dvh,425px);overflow:auto;scrollbar-width:thin
}
#admin-workspace #ad-diagnostics{
  height:clamp(230px,35dvh,380px);overflow:auto;scrollbar-width:thin
}
#admin-workspace :is(#ad-clerk-status,#ad-testing-replays){min-height:48px}
.page[data-page="admin"]{min-height:830px}
#admin-workspace .admin-mini-chart{min-height:120px}
#admin-workspace [data-admin-panel="tools"] #ad-sample-status{min-height:3em}
#admin-workspace [data-admin-panel="players"] .admin-pagination{min-height:43px}
#admin-workspace [data-admin-panel="overview"] :is(#ad-overview-details,#ad-pageview-chart),
#admin-workspace [data-admin-panel="tools"] #ad-diagnostics{transition:opacity 220ms ease}
#admin-workspace [data-admin-panel][data-tg-loading="true"] :is(#ad-overview-details,#ad-pageview-chart,#ad-diagnostics,#ad-games,tbody){opacity:0}
#admin-message[hidden]{display:block!important;visibility:hidden}
