/* Display geometry lives in 1920 × 1080 design pixels. viewport.js alone fits it
   to the physical viewport; the admin dialogs remain outside this scaled frame. */
.signage-fixed,.signage-fixed body { width:100%; height:100%; overflow:hidden; }
.signage-fixed .signage-viewport { position:fixed; transform-origin:0 0; }
.signage-fixed .signage-stage {
  width:100%; height:100%; min-height:0; padding:4px;
  grid-template-columns:minmax(0,2fr) minmax(0,1fr);
  grid-template-rows:minmax(0,1fr);
}
.signage-fixed .signage-stage.sidebar-left { grid-template-columns:minmax(0,1fr) minmax(0,2fr); }
.signage-fixed .brand-sidebar { min-height:0; grid-template-rows:minmax(0,1fr) auto auto auto; row-gap:12px; }
.signage-fixed .tower-mark { width:248px; max-height:270px; }
.signage-fixed h1 { font-size:calc(27px * var(--directory-type-scale)); }
.floors-container { display:block; perspective:1800px; }
.floor-view { display:grid; grid-template-rows:repeat(3,minmax(min-content,1fr)); gap:16px; height:100%; min-height:0; }
.floor-view[data-floor-view="2"] { --view-density:.78; grid-template-rows:repeat(4,minmax(min-content,1fr)); gap:10px; }
.floor-view[data-floor-view="3"] { grid-template-rows:repeat(2,minmax(min-content,1fr)); gap:24px; }
.floor-flipping { backface-visibility:hidden; will-change:transform,opacity; pointer-events:none; }
.signage-fixed .directory-panel { padding:24px 32px 26px; }
.signage-fixed .directory-header { padding-block-end:22px; }
.signage-fixed .floor-block { padding-block:4px; justify-content:flex-start; min-height:0; }
.signage-fixed .floor-header { margin-block-end:calc(12px * var(--view-density,1)); gap:20px; }
.signage-fixed .floor-title,.signage-fixed .rooftop-title { font-size:calc(36px * var(--font-scale) * var(--directory-type-scale) * var(--directory-fit,1) * var(--view-density,1)); line-height:1.35; font-weight:700; }
.signage-fixed .floor-columns { column-gap:32px; row-gap:4px; }
.signage-fixed .office-list { display:contents; }
.signage-fixed .office-list:first-child .office-row { grid-column:1; }
.signage-fixed .office-list:last-child .office-row { grid-column:2; }
.signage-fixed .office-row { grid-template-columns:calc(104px * var(--view-density,1)) minmax(0,1fr) 72px; column-gap:8px; min-height:calc(64px * var(--view-density,1)); border-radius:0; }
.signage-fixed[dir=ltr] .office-row { grid-template-columns:72px minmax(0,1fr) calc(104px * var(--view-density,1)); }
.signage-fixed .office-name { font-size:calc(25px * var(--font-scale) * var(--directory-type-scale) * var(--directory-fit,1) * var(--view-density,1)); line-height:1.65; padding-inline:4px; font-weight:600; }
.signage-fixed .office-num { font-size:calc(32px * var(--font-scale) * var(--directory-type-scale) * var(--directory-fit,1) * var(--view-density,1)); line-height:1.5; font-weight:700; }
.signage-fixed .office-emblem { width:calc(104px * var(--view-density,1)); height:calc(64px * var(--view-density,1)); }
/* Explicit auto dimensions override the HTML size hints without stretching artwork. */
.office-emblem img { display:block; width:100%; height:100%; object-fit:contain; }
.office-emblem--image { background:var(--text); padding:3px 5px; border-radius:2px; }
.signage-fixed .office-badge { font-size:26px; }
.rooftop-block { display:flex; flex-direction:column; justify-content:flex-start; padding-block:8px; min-width:0; }
.rooftop-title { font-size:28px; font-weight:700; }
.rooftop-status { color:var(--positive); font-size:18px; line-height:1.7; }
.rooftop-details { display:grid; grid-template-columns:104px minmax(0,1fr); align-items:center; gap:24px; margin-block-start:12px; }
.rooftop-details img { width:104px; height:70px; object-fit:contain; }
.rooftop-description { font-size:calc(27px * var(--font-scale) * var(--directory-fit,1)); line-height:1.7; font-weight:600; }
.rooftop-features,.rooftop-contact { font-size:calc(23px * var(--font-scale) * var(--directory-fit,1)); line-height:1.8; color:var(--muted); }
.signage-fixed .ad-player.is-fullscreen-ad { position:absolute; top:4px; left:4px; right:4px; bottom:4px; width:auto; height:auto; margin:0; z-index:8; }
.ad-cycle-active .directory-panel { visibility:hidden; }
.signage-fixed .is-fullscreen-ad .ad-overlay p { font-size:64px; }
.signage-fixed .is-fullscreen-ad #adOverlayPhone { font-size:110px; }
.signage-fixed .ad-player { height:302px; min-height:0; }
.signage-fixed .ad-overlay p { font-size:27px; }

/* Chromium 87 does not understand dvh. Keep vh first as a usable fallback. */
dialog { height:min(900px,calc(100vh - 40px)); height:min(900px,calc(100dvh - 40px)); }
dialog.login-dialog { height:fit-content; max-height:calc(100vh - 32px); max-height:calc(100dvh - 32px); }
/* Controls outside the display frame use the same TV scale, without shrinking on phones. */
.signage-fixed dialog { transform:scale(var(--ui-scale,1)); transform-origin:center; }
.signage-fixed dialog.docked { transform-origin:left center; }
.signage-fixed[dir=ltr] dialog.docked { transform-origin:right center; }
@media (max-width:900px) {
  .signage-stage,.signage-stage.sidebar-left { min-height:100vh; min-height:100dvh; }
  .floor-view { height:auto; grid-template-rows:none; gap:12px; }
  .rooftop-details { grid-template-columns:64px minmax(0,1fr); gap:16px; }
  .rooftop-details img { width:64px; height:56px; }
  .rooftop-block { padding-block:16px; }
  .rooftop-description { font-size:20px; }
  .rooftop-features,.rooftop-contact { font-size:16px; }
}
@media (max-width:600px) {
  dialog,dialog.docked { height:100vh; height:100dvh; max-height:100vh; max-height:100dvh; }
  dialog.login-dialog { height:fit-content; max-height:calc(100vh - 32px); max-height:calc(100dvh - 32px); }
}
:-webkit-full-screen .signage-hud { display:none; }
