/* Shared mobile staging: dialogue sits above the portrait, never over its face. */
@media (max-width: 960px) and (max-height: 520px) and (orientation: landscape) and (pointer: coarse) {
  body .panorama-character-dialogue,
  body.has-school-story-dialogue .panorama-character-dialogue,
  body.has-library-story-dialogue .panorama-character-dialogue,
  body.has-market-story-dialogue .panorama-character-dialogue,
  body .park-yuting-foreground { right: 0; bottom: 0; width: 48vw; height: 88dvh; overflow: hidden; }
  body .panorama-character-dialogue .panorama-character-portrait,
  body .park-yuting-foreground img { top: 0; bottom: auto; right: 0; width: 100%; height: 100%; max-height: none; object-fit: contain; object-position: right bottom; transform: none; }
  body .school-story-dialogue,
  body .library-story-dialogue,
  body .market-story-dialogue,
  body .park-yuting-dialogue { top: auto; bottom: 8dvh; left: 14px; right: 50vw; max-height: 82dvh; }
  body .school-story-dialogue__advance,
  body .library-story-dialogue__advance,
  body .market-story-dialogue__advance,
  body .park-yuting-dialogue-card { min-height: 0; padding: 0; }
  body .school-story-dialogue .story-dialogue-lines,
  body .library-story-dialogue .story-dialogue-lines,
  body .market-story-dialogue .story-dialogue-lines,
  body .park-yuting-dialogue-lines { min-height: 0; max-height: 70dvh; overflow-y: auto; scrollbar-width: none; justify-content: safe flex-end; }
}
@media (max-width: 760px) and (orientation: portrait) {
  body { --mobile-portrait-height: 60dvh; }
  body .panorama-character-dialogue,
  body.has-school-story-dialogue .panorama-character-dialogue,
  body.has-library-story-dialogue .panorama-character-dialogue,
  body.has-market-story-dialogue .panorama-character-dialogue {
    right: 0; bottom: 0; width: 100vw;
    height: var(--mobile-portrait-height); overflow: hidden;
  }
  body .panorama-character-dialogue .panorama-character-portrait {
    top: 0; bottom: auto; right: 50%;
    width: auto; height: var(--mobile-image-height, 100%); max-height: none; max-width: none;
    object-fit: contain; object-position: center top; transform: translateX(50%);
  }
  body.has-library-story-dialogue { --mobile-image-height: 135%; }
  body.has-market-story-dialogue { --mobile-image-height: 110%; }
  body .school-story-dialogue,
  body .library-story-dialogue,
  body .market-story-dialogue,
  body .park-yuting-dialogue {
    top: auto; bottom: calc(var(--mobile-portrait-height) + 12px);
    left: max(12px, env(safe-area-inset-left));
    right: max(12px, env(safe-area-inset-right));
    max-height: calc(100dvh - var(--mobile-portrait-height) - 28px - env(safe-area-inset-top));
  }
  body .park-yuting-foreground {
    right: 0; bottom: 0; width: 100vw; height: var(--mobile-portrait-height);
  }
  body .park-yuting-foreground img {
    width: 100%; height: 100%; object-fit: contain; object-position: right bottom;
  }
  body .school-story-dialogue__advance,
  body .library-story-dialogue__advance,
  body .market-story-dialogue__advance,
  body .park-yuting-dialogue-card { min-height: 0; padding: 0; }
  body .school-story-dialogue .story-dialogue-lines,
  body .library-story-dialogue .story-dialogue-lines,
  body .market-story-dialogue .story-dialogue-lines,
  body .park-yuting-dialogue-lines {
    min-height: 0;
    max-height: calc(100dvh - var(--mobile-portrait-height) - 56px - env(safe-area-inset-top));
    overflow-y: auto; overscroll-behavior: contain; scrollbar-width: none;
    justify-content: safe flex-end;
    font-size: clamp(18px, 4.8vw, 23px); line-height: 1.46;
  }
  body .park-yuting-dialogue-line { font-size: inherit; line-height: inherit; }
  body .school-story-dialogue .story-dialogue-lines::-webkit-scrollbar,
  body .library-story-dialogue .story-dialogue-lines::-webkit-scrollbar,
  body .market-story-dialogue .story-dialogue-lines::-webkit-scrollbar,
  body .park-yuting-dialogue-lines::-webkit-scrollbar { display: none; }
  body .school-story-dialogue__advance small,
  body .library-story-dialogue__advance small,
  body .market-story-dialogue__advance small,
  body .park-yuting-dialogue-card small { margin-top: 6px; }
}
