/* The native dialog traps focus while its transparent surface keeps the sky visible. */
.screening-room { position: fixed; inset: 0; width: 100%; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: var(--viewer-sky-top, 120px) clamp(16px, 4vw, 70px) 28px; border: 0; color: var(--text); background: transparent; overflow-y: auto; }
.screening-room::backdrop { background: transparent; }
.screening-room[data-phase="opening"], .screening-room[data-phase="closing"] { overflow: hidden; }
.viewer-top { display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 44px; max-width: min(100%, 72dvh, calc(60dvh * var(--film-aspect, 1.777778)), 960px); margin-inline: auto; font-size: 10px; letter-spacing: .06em; }
.viewer-top button { border: 0; background: transparent; color: inherit; min-height: 44px; padding: 8px 0 8px 16px; font-size: 11px; }
.viewer-top button > span { margin-left: 12px; font-size: 23px; vertical-align: middle; }
.viewer-layout { width: min(100%, 72dvh, calc(60dvh * var(--film-aspect, 1.777778)), 960px); margin-inline: auto; }
.viewer-media { position: relative; width: 100%; aspect-ratio: var(--film-aspect, 16 / 9); margin: auto; background: #000; transform-origin: center; box-shadow: 0 20px 70px #0005; }
.viewer-orbit { position: relative; animation: screening-float 9s ease-in-out infinite alternate; animation-play-state: paused; }
.screening-room[data-phase="open"]:not([data-paused]) .viewer-orbit { animation-play-state: running; }
.viewer-media::before { content: ''; position: absolute; inset: -1px; border: 1px solid #9bbaff24; pointer-events: none; }
.viewer-tilt { transform-origin: center; }
.screening-space { position: fixed; opacity: .85; }
.viewer-top, .viewer-layout { position: relative; z-index: 1; }
@keyframes screening-float { to { transform: translateY(-5px); } }
.viewer-media > img, .viewer-media > video { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.viewer-media > p { position: absolute; bottom: 24px; left: 24px; font-size: 11px; padding: 12px; background: #000; }
.viewer-information { display: grid; grid-template-columns: 1.1fr 1fr; gap: 32px; padding: 24px 0; }
.viewer-caption { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding-block: 16px; }
.viewer-caption .eyebrow { font-size: 9px; color: var(--muted); margin: 0 0 6px; }
.viewer-caption h2 { margin: 0; font: 700 clamp(17px, 2vw, 25px)/1.15 Arial, sans-serif; letter-spacing: -.025em; }
.viewer-details { background: var(--background); border: 1px solid var(--line); padding-inline: 16px; }
.viewer-details summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 44px; cursor: pointer; font-size: 10px; letter-spacing: .04em; list-style: none; }
.viewer-details summary::-webkit-details-marker { display: none; }
.viewer-details summary > span { font-size: 20px; transition: transform var(--micro); }
.viewer-details[open] summary > span { transform: rotate(45deg); }
.viewer-information p:not(.eyebrow) { font-size: 12px; line-height: 1.5; margin-block: 8px; }
.viewer-information .eyebrow { color: var(--muted); font-size: 10px; }
.viewer-type, .viewer-credit { color: var(--muted); }
.viewer-directors { margin-block: 24px; }
.viewer-directors a { text-decoration: underline; text-underline-offset: 3px; }
.viewer-information .arrow-link { color: var(--accent); border-color: var(--line); }
.viewer-member-credits { margin-bottom: 22px; }
.viewer-member-credits h3 { font-weight: 400; margin: 0 0 12px; }
.viewer-member-credits dl { margin: 0; display: grid; gap: 8px; }
.viewer-member-credits dt { color: var(--muted); font-size: 10px; }
.viewer-member-credits dd { margin: 0; font-size: 12px; }
.viewer-awards { margin-top: 24px; }
.viewer-awards h3 { font-weight: 400; margin: 0 0 12px; }
.viewer-awards ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 16px; }
.viewer-awards li { display: grid; gap: 5px; font-size: 12px; line-height: 1.5; overflow-wrap: anywhere; }
.viewer-awards a { color: var(--text); text-decoration: underline; text-decoration-color: var(--line); text-underline-offset: 3px; }
.viewer-awards a:hover { color: var(--accent); }
.viewer-award-status { color: var(--accent); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
.viewer-award-organization { color: var(--muted); font-size: 10px; }
.viewer-navigation { display: flex; align-items: center; flex: 0 0 auto; gap: 12px; }
.viewer-navigation button { border: 1px solid var(--line); background: var(--background); color: inherit; width: 44px; height: 44px; padding: 0; font-size: 24px; }
.viewer-navigation button:hover { color: var(--accent); border-color: var(--accent); }
.viewer-navigation > span { font-size: 10px; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.viewer-caption, .viewer-details, .viewer-top > span { transition: opacity 200ms; }
.viewer-top { transition: opacity var(--motion-micro) var(--ease-settle); }
[data-phase="closing"] .viewer-top { opacity: 0; pointer-events: none; }
[data-phase="opening"] .viewer-caption, [data-phase="opening"] .viewer-details, [data-phase="opening"] .viewer-top > span,
[data-phase="closing"] .viewer-caption, [data-phase="closing"] .viewer-details, [data-phase="closing"] .viewer-top > span { opacity: 0; pointer-events: none; }


.screening-room--gallery { background: var(--background); }
.screening-room--gallery::backdrop { background: var(--background); }
.film-origin-hidden { visibility: hidden; }
@media (max-width: 720px), (horizontal-viewport-segments: 2) {
  .viewer-top > span { max-width: 150px; font-size: 9px; line-height: 1.5; }
  .viewer-information { grid-template-columns: 1fr; gap: 12px; }
  .viewer-caption { gap: 12px; align-items: start; flex-wrap: wrap; }
  .viewer-caption h2 { font-size: 17px; }
  .viewer-navigation { gap: 6px; }
}
@media (prefers-reduced-motion: reduce) { .viewer-orbit { animation: none; } }

/* Keep the next poster present until the new decoder produces a frame. */
.viewer-media[data-loading] > video { opacity: 0; }
.viewer-media > video { transition: opacity 100ms; }
@media (max-width: 720px), (pointer: coarse) {
  .screening-room .viewer-orbit { animation: none; }
  .screening-room .viewer-media { box-shadow: 0 10px 28px #0004; }
  .viewer-caption, .viewer-details, .viewer-top > span { transition-duration: 100ms; }
  .is-screening .earth-scene { transform: none; }
  .reel-in-flight:not(.is-screening) .hero-heading { transition-delay: 0ms; }
}
@media (prefers-reduced-motion: reduce) { .viewer-media > video { transition: none; } }
