/*
 * Compact laptop scenes. Load after the scene stylesheets.
 * Keep mobile and tall-screen layouts unchanged. Reclaim whitespace before
 * reducing a few whole stages; never scale individual artwork/hit layers.
 * Dialog scrolling stays available for longer copy, text zoom, and short views.
 */
@media (min-width: 900px) and (min-height: 600px) and (max-height: 900px) {
  /* Navigation retains its original type and a comfortable target size. */
  :is(.holy-nav, .bw-nav, .j-nav, .m-nav, .w-nav, .c-nav, .p-nav,
      .r-nav, .o-nav, .c2-nav, .dog-nav, .arm-nav, .caz-nav, .chase-nav,
      .cal-nav, .bus-nav, .bath-nav, .grey-nav, .hat-nav, .store-nav,
      .jack-nav, .balloon-nav, .burger-nav, .pebbles-nav, .footoog-nav,
      .agy-time-nav, .poker-nav, .arsen-nav, .ping-nav, .toe-nav) {
    padding-block: 4px;
  }

  :is(.holy-nav, .bw-nav, .j-nav, .m-nav, .w-nav, .c-nav, .p-nav,
      .r-nav, .o-nav, .c2-nav, .dog-nav, .arm-nav, .caz-nav, .chase-nav,
      .cal-nav, .bus-nav, .bath-nav, .grey-nav, .hat-nav, .store-nav,
      .jack-nav, .balloon-nav, .burger-nav, .pebbles-nav, .footoog-nav,
      .agy-time-nav, .poker-nav, .arsen-nav, .ping-nav, .toe-nav,
      .finale-nav) button {
    min-height: 44px;
    min-width: 44px;
  }

  :is(.holy-content, .bw-content, .j-content, .m-content, .w-content,
      .c-content, .p-content, .r-content, .o-content, .c2-content,
      .dog-content, .arm-content, .caz-content, .chase-content,
      .cal-content, .bus-content, .bath-content, .grey-content,
      .hat-content, .store-content, .jack-content, .balloon-content,
      .burger-content, .pebbles-content, .footoog-content,
      .agy-time-content, .poker-content, .arsen-content,
      .ping-content, .toe-content) {
    padding-block: 8px;
  }

  /* Leave Holy Martyrs' bottom character area reserved, so it cannot cover copy. */
  .holy-content:has(.player-view) { padding-bottom: 62px; }
  .holy-content:has(.friendship) { padding-block: 8px; }

  :is(.school-heading, .bw-heading, .j-heading, .m-heading, .w-heading,
      .c-heading, .p-heading, .r-heading, .o-heading, .c2-heading) {
    margin-bottom: 6px;
  }

  :is(.school-heading, .bw-heading, .j-heading, .m-heading, .w-heading,
      .c-heading, .p-heading, .r-heading, .o-heading, .c2-heading) .eyebrow,
  :is(.dog-content, .arm-content, .caz-content, .chase-content,
      .cal-content, .bus-content, .bath-content, .grey-content,
      .hat-content, .store-content, .jack-content, .balloon-content,
      .burger-content, .pebbles-content, .footoog-content,
      .agy-time-content, .poker-content, .arsen-content,
      .ping-content, .toe-content) > .eyebrow {
    margin-bottom: 4px;
  }

  :is(.school-heading, .dog-content, .arm-content, .caz-content,
      .chase-content, .cal-content, .bus-content, .bath-content,
      .grey-content, .hat-content, .store-content, .jack-content,
      .balloon-content, .burger-content, .pebbles-content,
      .footoog-content, .agy-time-content, .poker-content,
      .arsen-content, .ping-content, .toe-content) > h1 {
    margin-block: 4px 8px;
  }

  /* Story copy keeps the existing font sizes and line heights. */
  :is(.bw-dialogue, .m-banter, .o-banter, .bw-character, .conversation) {
    margin-block: 8px;
  }
  :is(.bw-lines, .m-banter-bubble, .o-bubble) { padding-block: 8px; }
  :is(.m-banter-bubble, .o-bubble) p { margin-top: 6px; }

  :is(.bw-question, .bw-caption, .j-caption, .m-game-hint, .m-action,
      .w-aim-note, .w-message, .c-guide, .c-last, .c-result,
      .p-guide, .p-ending, .r-guide, .r-pause, .r-feedback,
      .o-guide, .o-feedback, .o-status, .c2-guide, .c2-caption,
      .c2-feedback, .dog-guide, .dog-feedback, .arm-guide, .arm-feedback,
      .caz-guide, .caz-feedback, .cal-guide, .cal-feedback,
      .chase-guide, .bus-guide, .bath-guide, .bath-saved,
      .grey-guide, .grey-feedback, .hat-guide, .hat-feedback,
      .store-guide, .store-feedback, .jack-guide, .jack-feedback) {
    margin-block: 6px;
  }
  :is(.c2-story-line, .dog-line, .arm-line, .grey-story, .grey-reveal-line,
      .hat-story, .hat-ending-line, .store-ending-line,
      .jack-story, .jack-ending-line) {
    margin-block: 8px;
  }
  :is(.m-small, .w-small, .c-small, .p-small, .o-small, .c2-small) {
    margin-block: 6px;
  }

  :is(.story-primary, .bw-next, .j-next, .m-start, .m-retry, .m-finish,
      .m-story-next, .m-story-game, .w-next, .p-primary, .p-finish,
      .r-primary, .r-finish, .o-primary, .o-retry, .o-finish, .o-move,
      .c2-primary, .c-form, .w-controls, .c2-controls) {
    margin-top: 8px;
  }
  :is(.m-history-answers, .r-answers, .o-answers, .dog-choices,
      .chase-controls) {
    margin-block: 8px;
  }
  :is(.r-answers, .o-answers) { row-gap: 8px; }
  :is(.m-history-feedback, .bath-count) { margin-block: 6px; }
  :is(.w-count, .m-scoreboard, .o-watchers, .c2-score) { margin-bottom: 6px; }
  .o-progress { margin-top: 8px; }
  .o-game-reset { min-height: 44px; margin-block: 4px; }
  .p-turn { margin-block: 6px; }
  :is(.w-controls, .c2-controls) label { gap: 4px; }
  :is(.w-controls, .c2-controls) input { min-height: 44px; }
  .m-instructions, .w-instructions { margin-top: 8px; }
  .m-instructions p { margin-block: 4px; }
  .bath-dialogue { margin-top: 8px; }

  /*
   * These stacked states still exceed the height budget after spacing changes.
   * Width caps preserve the existing 3:2 stage and every percentage-based layer.
   * Floors preserve useful artwork rather than force every 600px state to fit.
   */
  .m-content:has(.m-banter) .m-stage {
    max-width: calc(max(180px, 100svh - 380px) * 1.5);
  }
  .m-content:has(.m-instructions) .m-stage {
    max-width: calc(max(180px, 100svh - 410px) * 1.5);
  }
  /* Reserve the final keyboard-help line without reducing text or controls. */
  .w-stage {
    max-width: calc(max(200px, 100svh - 424px) * 1.5);
  }
  .p-room.lesson-room {
    max-width: calc(max(130px, 100svh - 440px) * 1.5);
  }
  .r-content:has(.r-answers) .r-stage {
    max-width: calc(max(190px, 100svh - 350px) * 1.5);
  }
  .o-content:has(.o-watchers) .o-stage {
    max-width: calc(max(190px, 100svh - 430px) * 1.5);
  }
  .c2-content:has(.c2-controls) .c2-stage {
    max-width: calc(max(200px, 100svh - 370px) * 1.5);
  }

  /* Six portraits remain a three-column chooser with full-size name badges. */
  .school-layout { grid-template-columns: 180px 1fr; gap: 20px; }
  .children {
    width: min(100%, clamp(384px, calc((100svh - 440px) * 1.5 + 24px), 564px));
    justify-self: center;
    gap: 12px;
  }
  .school-layout > .teacher > p { margin-block: 8px; }
  .save-note { margin-top: 8px; }
  .conversation { grid-template-columns: 200px 1fr; gap: 24px; }
  .speech { padding: 20px; }
  .speech > p { margin-bottom: 12px; }
  #holy .player-speech { padding-right: 50px; }
  #holy .player-speech-dismiss { min-width: 44px; min-height: 44px; }
  .friendship-copy { padding-top: 10px; }
  .friendship-copy .story-primary { margin-top: 8px; }
  .friendship-copy .save-note { margin-top: 8px; }

  /* Existing action targets are kept at least 44px without touching stage overlays. */
  :is(.dog-start, .dog-finish, .arm-next, .arm-refuse, .arm-start,
      .arm-finish, .caz-start, .caz-finish, .caz-toggle,
      .cal-start, .cal-finish, .cal-toggle,
      .chase-primary, .chase-controls button) {
    min-height: 44px;
  }
}
