/* Full portrait playback; cover cropping applies only to the poster cards. */
body { font-size: 17px; line-height: 1.8; }
.hero-copy,.section-heading p,.timeline-header>p,.movie-info p,.timeline-item p,.systems-footnote,.movie-note,.universe-bottom-note { font-size: 17px; line-height: 1.85; }
#detailCopy { font-size: 18px; line-height: 1.85; color: #52685b; }
#detailTitle { font-size: 25px; line-height: 1.4; }
.filter-chip { font-size: 14px; min-height: 44px; color: #4d6657; }
.hive-name { font-size: 16px; line-height: 1.4; max-width: 136px; }
.hive-tile { aspect-ratio: 1 / 1.1; padding: 26px 14px 24px; }
.hive-badge { position: static; align-self: center; flex-shrink: 0; white-space: nowrap; font-size: 11px; }
.detail-tag { font-size: 14px; }
.detail-visual img { width: 100%; height: auto; max-height: 560px; aspect-ratio: auto; object-fit: contain; }
.detail-visual figcaption { font-size: 14px; line-height: 1.7; color: #53695c; }
#detailImageLink { display: grid; place-items: center; background: #edf1e6; }
#detailImageLink:focus-visible { outline: 3px solid #d3a84f; outline-offset: -3px; }
.universe-card { min-height: 112px; align-items: flex-start; }
.universe-card,.universe-card-text { overflow-wrap: normal; word-break: normal; hyphens: none; }
#universeGrid .universe-card { display: grid; grid-template-columns: 38px minmax(0,1fr); align-content: start; }
.universe-soon { grid-column: 2; justify-self: start; margin-top: 4px; max-width: 100%; }
.universe-card-text b { font-size: 16px; line-height: 1.55; }
.universe-card-text small { font-size: 14px; line-height: 1.65; color: #607365; }
.timeline-item h3 { font-size: 19px; }
.timeline-date,.timeline-status,.detail-footer,.detail-topline,.fx-credit,.control-label { font-size: 14px; }
.movie-info h3 { font-size: 20px; }
@media(max-width:760px) {
  .hero-copy,.section-heading p,.timeline-header>p,.movie-info p,.timeline-item p,.systems-footnote,.movie-note { font-size: 17px; }
  .hive-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
  .hive-tile { width: min(100%,190px); min-height: 210px; aspect-ratio: auto; padding: 28px 14px; }
  .hive-name { font-size: 16px; max-width: 138px; }
  .hive-icon { width: 40px; height: 40px; font-size: 24px; }
  .filter-chip { padding: 9px 14px; font-size: 14px; }
  .universe-card { padding: 13px; gap: 8px; min-height: 126px; }
  #universeGrid .universe-card { grid-template-columns: 30px minmax(0,1fr); }
  .universe-grid { grid-template-columns: 1fr; }
  .universe-card-text b { font-size: 15px; }
  .universe-card-text small { font-size: 13px; }
  .universe-icon { width: 30px; height: 30px; min-width: 30px; font-size: 20px; }
  .detail-visual img { max-height: 550px; }
  .timeline-item h3 { font-size: 19px; }
  .timeline-date { font-size: 14px; }
  .brand b { font-size: 13px; }
}
.movie-grid { align-items: start; }
.movie-screen:has(video) { aspect-ratio: 9 / 16; }
.movie-screen video { object-fit: contain; background: #19332f; }
.hero-still { display: none; position: absolute; inset: 0; z-index: -3; width: 100%; height: 100%; object-fit: cover; object-position: center 52%; opacity: .58; filter: saturate(.8); }
.rally-trail { display: none; position: fixed; right: 7px; top: 18vh; width: 30px; height: 65vh; z-index: 4; pointer-events: none; opacity: .28; }
.rally-trail svg { width: 100%; height: 100%; overflow: visible; }
.rally-trail path { fill: none; stroke: #d2ab64; stroke-width: 1.5; stroke-dasharray: 3 7; }
.rally-trail span { position: absolute; top: 0; left: 2px; font-size: 24px; }
@supports (animation-timeline: scroll()) {
  .rally-trail { display: block; }
  .rally-trail span { animation: rally-progress linear both; animation-timeline: scroll(root block); }
  .hero-film { animation: hero-parallax linear both; animation-timeline: view(block); animation-range: exit 0% exit 100%; }
}
@keyframes rally-progress { from { transform: translateY(0) rotate(-20deg); } to { transform: translateY(calc(65vh - 36px)) rotate(20deg); } }
@keyframes hero-parallax { from { transform: translateY(0) scale(1); } to { transform: translateY(18vh) scale(1.04); } }
.nojs-systems { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; list-style: none; padding: 0; }
.nojs-systems li { padding: 16px; border: 1px solid #e7ddcd; border-radius: 18px; background: #fffdf7; line-height: 1.7; }
.nojs-systems strong { display: block; color: #36584d; }
.nojs-note { line-height: 1.8; }
#fxStage[role=button] { cursor: pointer; }
#fxStage:focus-visible { outline: 3px solid #ffcc65; outline-offset: 5px; }
html[data-reduced-motion=true] .hero-film,html[data-reduced-motion=true] .sound-toggle { display: none; }
html[data-reduced-motion=true] .hero-still { display: block; }
html[data-reduced-motion=true] #fxCanvas { visibility: hidden; }
html[data-reduced-motion=true] .reveal { opacity: 1; transform: none; }
.brand-mark { object-fit: contain; padding: 0; background: transparent; }
html[data-reduced-motion=true] .rally-trail { display: none; }
html[data-reduced-motion=true] .hero-film { animation: none !important; transform: none !important; }
html[data-reduced-motion=true] *,html[data-reduced-motion=true] *::before,html[data-reduced-motion=true] *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
@media(max-width:600px) { .nojs-systems { grid-template-columns: 1fr; } .rally-trail { right: 1px; width: 18px; opacity: .16; } .rally-trail span { font-size: 17px; } }
@media(prefers-reduced-motion:reduce) {
  .hero-film,.sound-toggle { display: none; }
  .hero-still { display: block; }
  #fxCanvas { visibility: hidden; }
  .reveal { opacity: 1; transform: none; }
  .rally-trail { display: none; }
  .hero-film { animation: none !important; transform: none !important; }
}
