/* The native trees and atmosphere use the same measured camera as the two
   full-resolution forest layers. Keep static trees until a frame is painted. */
.mobile-ambient-native{display:none;pointer-events:none}
.mobile-portrait .mobile-ambient-native[data-active="true"]{display:block;position:absolute;inset:auto;left:var(--mobile-forest-left);top:var(--mobile-forest-top);width:var(--mobile-forest-width);height:var(--mobile-forest-height);object-fit:fill;object-position:center top;z-index:0}
.mobile-portrait #mobile-shell:is(.mobile-free,.mobile-room,.mobile-bonus-cinematic,.mobile-bonus-portrait,[data-phase="brain"],:has(#start-screen:not([hidden]):not(.revealing-game)),:has(.floor-comic:not([hidden])),:has(#pick-rewards:not([hidden])),:has(#free-spin-total:not([hidden])),:has(.floor-entry-canvas:not([hidden])),:has(#pick-jumpscare[data-scare-stage="monster"]),:has(#pick-jumpscare[data-scare-stage="eyes"]),:has(dialog[open])) .mobile-ambient-native{display:none}
body:has(#game.reduced-motion) .mobile-ambient-native{display:none!important}
/* The game resolves the OS default and the player's explicit setting. Using
   a second OS media gate here would hide this layer even after the player
   enables motion in Settings. Loading keeps the static art until painted. */
.mobile-portrait #mobile-shell:has(>.mobile-ambient-native[data-active="true"][data-native-state="rendered"]):not(.mobile-free,.mobile-room,.mobile-bonus-cinematic,.mobile-bonus-portrait,[data-phase="brain"],:has(#game.reduced-motion),:has(#start-screen:not([hidden]):not(.revealing-game)),:has(.floor-comic:not([hidden])),:has(#pick-rewards:not([hidden])),:has(#free-spin-total:not([hidden])),:has(.floor-entry-canvas:not([hidden])),:has(#pick-jumpscare[data-scare-stage="monster"]),:has(#pick-jumpscare[data-scare-stage="eyes"]),:has(dialog[open])){--mobile-forest-trees:none}
