/* v20.2.6 Layout stability: reserve the rendered geometry before asynchronous data arrives.
   Does not animate layout properties or change playback controls. */
html { scrollbar-gutter: stable; }
img { height: auto; }
/* The homepage header keeps its measured width when visit counts populate. */
#promoter-header { box-sizing: border-box; }
#promoter-header .header-title-box { min-width:0; }
#promoter-header .bw-header-actions { min-width:0; }
#promoter-header .visitor-pill, #bw-task-visitors { font-variant-numeric: tabular-nums; }
#promoter-header .visitor-pill { min-width: 114px; justify-content: center; white-space:nowrap; }
#bw-visits-value, [data-bws-visits] { display: inline-block; min-width: 6ch; text-align: right; font-variant-numeric: tabular-nums; }
#clock-time { display:block; min-width: 11ch; text-align:right; font-variant-numeric:tabular-nums; }
#bw-task-date { display:block; min-height: 12px; min-width: 7ch; text-align:right; }
/* The footer is in document flow, but its text is replaced asynchronously. */
.bws-homebar-footer .bws-footer-clock { min-height: 32px; }
.bws-homebar-footer [data-bws-clock] { display:inline-block; min-width: 11ch; text-align:right; font-variant-numeric:tabular-nums; }
.bws-homebar-footer [data-bws-date] { display:inline-block; min-width: 7ch; text-align:center; }
.bws-homebar-footer .bws-footer-status { flex:0 0 auto; }
/* Keep the hero image region fixed as its high priority artwork decodes. */
#desktop-area .v10-hero-art { min-width:0; overflow:hidden; }
#desktop-area .v10-hero-art picture { display:block; width:100%;height:100%; }
#desktop-area .v10-hero-art img { display:block;width:100%;height:100%;object-fit:cover; }
#desktop-area .v10-hero-content { min-width:0; }
#desktop-area .v10-hero { overflow:hidden; }
/* On Air: artwork and timing updates must not stretch the now-playing console. */
.cdj-track { min-width:0; }
.cdj-track #cdjCover { width:clamp(64px,8vw,108px);height:clamp(64px,8vw,108px);aspect-ratio:1;flex:0 0 auto;object-fit:cover; }
.cdj-track .cdj-ident { min-width:0; }
.cdj-track #cdjTitle { overflow-wrap:anywhere; }
.cdj-time, .cdj-time-row, #cdjElapsed, #cdjRemaining, #cdjDuration, #cdjTime { font-variant-numeric: tabular-nums; }
#playlist { overflow-anchor:none; }
#playlist li[data-track] { box-sizing:border-box; min-height:56px; }
#playlist img.track-art { width:42px; height:42px; aspect-ratio:1;object-fit:cover;flex:0 0 42px; }
.cdj-console>.setlist { min-width:0; }
/* Embedded tools keep the original window geometry and do not acquire a footer. */
html.bw-embedded body, html.bw-tool-embedded body { min-height:0; }
@media(max-width:700px){
 #promoter-header .visitor-pill { min-width:92px; }
 #desktop-area .v10-hero-art { min-height:0; aspect-ratio:16/8; }
 #desktop-area .v10-hero-art picture { position:absolute; inset:0; }
 .cdj-track #cdjCover { width:64px;height:64px; }
}
@media(max-width:420px){
 #promoter-header .visitor-pill{min-width:81px;}
 .bws-homebar-footer .bws-footer-status{flex:1 1 100%;justify-content:flex-end;}
}
