/* Keep the TV display to one viewport: no browser scrolling in fullscreen mode. */
.display-page {
  height: 100vh;
  min-height: 100vh;
  overflow: hidden;
}

.display-page .app-shell {
  height: 100vh;
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.display-page.workout-active .app-shell {
  height: 100vh;
  min-height: 0;
  padding-top: 28px;
  padding-bottom: 28px;
}

.display-page.workout-active .workout-screen {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  margin-top: 0;
}

.display-page.workout-complete .app-shell {
  height: 100vh;
  min-height: 0;
}

.display-page.workout-complete .completion-report {
  max-height: 100%;
  overflow: hidden;
}

/* The pairing screen must fit too, not only the active workout screen. */
.display-page:not(.workout-active) .app-shell {
  justify-content: flex-start;
  padding-top: clamp(18px, 4vh, 34px);
  padding-bottom: clamp(18px, 4vh, 28px);
}

.display-page:not(.workout-active) .compact-hero {
  padding-top: clamp(24px, 5vh, 62px);
  padding-bottom: clamp(18px, 3vh, 38px);
}

.display-page:not(.workout-active) .hero h1 {
  font-size: clamp(42px, 8vh, 82px);
  margin-bottom: clamp(12px, 2vh, 22px);
}

.display-page:not(.workout-active) .intro {
  font-size: clamp(13px, 2vh, 16px);
}

.display-page:not(.workout-active) .pairing-card {
  padding: clamp(22px, 4vh, 39px) clamp(24px, 4vw, 48px);
  gap: clamp(24px, 5vw, 50px);
}

.display-page:not(.workout-active) .pairing-copy h2 {
  font-size: clamp(28px, 5vh, 36px);
}

.display-page:not(.workout-active) .pairing-copy p {
  font-size: clamp(12px, 1.8vh, 14px);
}

.display-page:not(.workout-active) .qr-wrap {
  width: clamp(210px, 28vh, 245px);
  flex-basis: clamp(210px, 28vh, 245px);
  padding: clamp(16px, 2.5vh, 24px);
}

.display-page:not(.workout-active) .qr-wrap #qrcode,
.display-page:not(.workout-active) .qr-wrap img,
.display-page:not(.workout-active) .qr-wrap canvas {
  width: clamp(160px, 24vh, 197px) !important;
  height: clamp(160px, 24vh, 197px) !important;
}

@media (orientation: landscape) and (max-height: 520px) {
  .display-page:not(.workout-active) .app-shell {
    padding: 12px 24px;
  }

  .display-page:not(.workout-active) .compact-hero {
    padding: 8px 0 12px;
  }

  .display-page:not(.workout-active) .hero h1 {
    font-size: clamp(32px, 7vh, 52px);
    line-height: .92;
    margin: 7px 0 9px;
  }

  .display-page:not(.workout-active) .intro {
    max-width: 620px;
    font-size: 12px;
    line-height: 1.35;
  }

  .display-page:not(.workout-active) .pairing-card {
    padding: 16px 26px;
    gap: 30px;
  }

  .display-page:not(.workout-active) .pairing-copy h2 {
    font-size: 28px;
    margin-bottom: 10px;
  }

  .display-page:not(.workout-active) .pairing-copy p {
    font-size: 12px;
    line-height: 1.35;
  }

  .display-page:not(.workout-active) .qr-wrap {
    width: 190px;
    flex-basis: 190px;
    padding: 12px;
  }

  .display-page:not(.workout-active) .qr-wrap #qrcode,
  .display-page:not(.workout-active) .qr-wrap img,
  .display-page:not(.workout-active) .qr-wrap canvas {
    width: 160px !important;
    height: 160px !important;
  }

  .display-page:not(.workout-active) .qr-caption {
    margin-top: 6px;
    font-size: 8px;
  }

  .display-page.workout-active .app-shell {
    padding: 8px 18px;
  }

  .display-page.workout-active .workout-screen {
    padding: 12px 24px 16px;
  }

  .display-page.workout-active .progress-track {
    height: 5px;
    margin: 8px 0 14px;
  }

  .display-page.workout-active .section-badge {
    padding: 7px 12px;
    font-size: 10px;
  }

  .display-page.workout-active .exercise-emoji {
    font-size: 52px;
    margin: 8px 0 5px;
  }

  .display-page.workout-active .exercise-time {
    font-size: 68px;
  }

  .display-page.workout-active .workout-screen h2 {
    font-size: 32px;
    margin: 7px 0 5px;
  }

  .display-page.workout-active .workout-screen p {
    font-size: 12px;
    line-height: 1.3;
  }

  .display-page.workout-active .next-up {
    display: none;
  }
}

/* Scale the large-screen composition by available height, not only width. */
.display-page.workout-active .workout-screen {
  padding: clamp(18px, 4vh, 42px) clamp(24px, 5vw, 60px) clamp(24px, 5vh, 52px);
}

.display-page.workout-active .progress-track {
  margin: clamp(12px, 2.5vh, 20px) 0 clamp(22px, 5vh, 45px);
}

.display-page.workout-active .exercise-emoji {
  font-size: clamp(64px, 13vh, 165px);
  margin: clamp(12px, 3vh, 28px) 0 clamp(8px, 2vh, 15px);
}

.display-page.workout-active .exercise-time {
  font-size: clamp(72px, 14vh, 170px);
}

.display-page.workout-active .workout-screen h2 {
  font-size: clamp(34px, 7vh, 88px);
  margin: clamp(10px, 2.5vh, 24px) 0 clamp(8px, 1.5vh, 14px);
}

.display-page.workout-active .workout-screen p {
  font-size: clamp(13px, 2.2vh, 22px);
}

.display-page.workout-active .next-up {
  margin-top: clamp(16px, 4vh, 42px);
  padding-top: clamp(12px, 2.5vh, 22px);
}

.display-page.workout-complete .completion-report {
  padding: clamp(24px, 5vh, 52px) clamp(22px, 4vw, 42px) clamp(28px, 5vh, 58px);
}

.display-page.workout-complete .report-confetti {
  font-size: clamp(44px, 8vh, 68px);
  margin-bottom: clamp(10px, 2vh, 20px);
}

.display-page.workout-complete .completion-report h2 {
  font-size: clamp(38px, 8vh, 82px);
}

.display-page.workout-complete .report-grid {
  margin-top: clamp(18px, 4vh, 35px);
}
