/* Kilumen R5-6 weather lite (Animator package, wired dev/r56-wiring Oct 29 2026). Compositor-only layers: transform/opacity
   animations on cached tiles, no per-frame canvas fill. Paths fixed for the game: this file is src/region56/, art is art/world/weather/r56/.
   Lightning is NOT a CSS loop here: weather_lite.js drives .wx-flash opacity on a 6-14 s timer (max 3 flashes / 10 s, <= 0.55). */
.wx{position:fixed;inset:0;overflow:hidden;pointer-events:none;contain:strict}
.ui-battle > .wx,.wx-stack > .wx{position:absolute}
.wx .mv{position:absolute;will-change:transform}
.wx-rain .ox,.wx-storm .ox{left:0;top:-256px;right:-256px;bottom:0;animation:wxX 4.2667s linear infinite}
.wx-rain .oy,.wx-storm .oy{inset:0;background-size:256px 256px;animation:wxY .36571s linear infinite}
.wx-rain .oy{background-image:url(../../art/world/weather/r56/rain_tile_256_f0.webp)}
.wx-storm .oy{background-image:url(../../art/world/weather/r56/storm_rain_tile_256_f0.webp)}
@keyframes wxX{to{transform:translateX(-256px)}}
@keyframes wxY{to{transform:translateY(256px)}}
/* tint: spec fallback "source-over at 0.22 alpha if multiply is slow" (multiply cost the 1080p PC storm ~24 fps on the box) */
.wx-tint{position:absolute;inset:0;background:rgb(18,24,48);opacity:.22}
.wx-flash{position:absolute;inset:0;opacity:0;will-change:opacity}
.wx-flash .w{position:absolute;inset:0;background:rgb(235,240,255)}
.wx-flash img{position:absolute;left:60%;top:0}
.wx-fog .band{position:absolute;left:0;height:256px;width:calc(100% + 1024px);background-size:512px 256px;background-repeat:repeat-x;opacity:.55}
.wx-fog .a{background-image:url(../../art/world/weather/r56/fog_band_a_512x256.webp);top:calc(55% - 128px);animation:wxFog 42.667s linear infinite}
.wx-fog .b{background-image:url(../../art/world/weather/r56/fog_band_b_512x256.webp);top:calc(62% - 128px);animation:wxFog 25.6s linear infinite}
@keyframes wxFog{from{transform:translateX(0)}to{transform:translateX(-512px)}}
.wx.wx-paused .mv{animation-play-state:paused}
@media (prefers-reduced-motion:reduce){.wx-flash{display:none}}
.wx.reduce-flashing .wx-flash{display:none}
/* layer stack: backdrop canvas -> .wx -> transparent sprite/HUD canvas */
.wx-stack{position:relative;overflow:hidden}
.wx-stack > canvas{position:absolute;inset:0;width:100%;height:100%}
.wx-stack > canvas.wx-top{background:transparent}
/* opening v2 rain wake (Gary fix1): the r56 rain tile is too faint on route1's bright grass. Same compositor-only layer, one
   denser streak tile on top of the storm tile (multiple backgrounds = no extra layer) and a darker sky tint. */
.wx-open2{position:fixed;inset:0;pointer-events:none;contain:strict}
.wx-open2 .wx-rain .oy{background-image:url(../../art/world/weather/r56/open2_rain_tile_256.webp),url(../../art/world/weather/r56/storm_rain_tile_256_f0.webp);background-size:256px 256px,256px 256px}
.wx-open2 > .o2-tint{position:absolute;inset:0;background:rgb(18,24,48);opacity:.3}
