/* Discovered window art is a fixed scenery plate, beneath every usable control. */
#games-window-background{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;isolation:isolate;contain:strict;background:#141c24}
#games-window-background>img{width:100%;height:100%;object-fit:cover;filter:blur(.45px)}
#games-window-background::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,#070e164d,transparent 35% 65%,#070e164d),linear-gradient(#080d1638,transparent 35%,#080d164d)}
#games-window-background::after{content:'';position:absolute;inset:0;z-index:2;background:url('./hub-atmosphere-r20/film-grain.png') repeat 0 0/128px 128px;opacity:.02}
body[data-library-theme=window] .hub-world{background:transparent}
body[data-library-theme=window] :is(.hub-world-scenery::before,.hub-world-scenery::after,.hub-dust,#hub-scene-atmosphere){display:none}
body[data-library-theme=window] :is(.hub-intro,.hub-toolbar,.hub-library-note){background:#17212be8;border:1px solid #c6ced078;border-radius:18px;padding:22px;box-shadow:0 10px 32px #07101940}
body[data-library-theme=window] .hub-toolbar{margin-bottom:26px;padding:15px}
body[data-library-theme=window] .hub-section-heading{display:inline-flex;background:#17212bee;padding:10px 16px;border:1px solid #c6ced078;border-radius:12px}
body[data-library-theme=window] .hub-footer{position:relative;background:#17212bf0}
#hub-theme-menu button[data-locked=true]{opacity:.46;filter:grayscale(1);cursor:not-allowed}
#hub-theme-menu button[data-locked=true] .hub-theme-check{visibility:visible;font-size:0}
#hub-theme-menu button[data-locked=true] .hub-theme-check::after{content:'🔒';font-size:13px}
#hub-theme-menu button[hidden]{display:none!important}
/* Inherit the exact 44px circular button, 18px outline SVG, colors, hover and
 * focus treatment from hub-sheep.css and the active theme, just like Volume. */
.hub-cameo-controls #games-window-time{flex:none;margin:0;touch-action:manipulation}
#games-window-time svg[hidden]{display:none}
.games-window-atmosphere{position:absolute;inset:-256px 0;opacity:.38;animation:games-window-rain 5s linear infinite;animation-play-state:paused}
#games-window-background[data-weather=rain] .games-window-atmosphere{background:url('./youth-rain-water-r31.svg') repeat 0 0/384px 256px}
#games-window-background[data-weather=snow] .games-window-atmosphere{background-image:radial-gradient(circle at 28px 39px,#f5f8ff9c 0 1.6px,transparent 2.5px),radial-gradient(circle at 138px 141px,#fff8 0 1px,transparent 2px);background-size:192px 256px;animation-duration:20s}
#games-window-background[data-weather=calm] .games-window-atmosphere{background:radial-gradient(ellipse at 28% 30%,#ffdfa219,transparent 55%);animation:games-window-light 13s ease-in-out infinite alternate;animation-play-state:paused}
#games-window-background[data-moving=true] .games-window-atmosphere{animation-play-state:running}
#games-window-background[data-still=true] .games-window-atmosphere{animation:none;opacity:.15}
@keyframes games-window-rain{to{transform:translate3d(0,256px,0)}}
@keyframes games-window-light{to{opacity:.7}}
/* Illustrated clear-water rain: two capped, pre-painted sprite planes. No frame
 * loop, DOM growth, blur filter or canvas redraw. Highlight rims remain soft. */
#hub-youth-rain{overflow:hidden;opacity:.72;contain:strict}
.hub-youth-rain-sheet{position:absolute;inset:-256px -30px;background:url('./youth-rain-water-r31.svg') repeat 0 0/384px 256px;animation:games-window-rain 3.7s linear infinite;animation-play-state:paused}
.hub-youth-rain-sheet-far{background-size:288px 192px;opacity:.42;inset:-384px -10px;animation:games-youth-rain-far 4.8s linear infinite;animation-play-state:paused}
#hub-youth-rain[data-moving=true] .hub-youth-rain-sheet{animation-play-state:running}
#hub-youth-rain[data-static=true] .hub-youth-rain-sheet{animation:none;opacity:.24}
@keyframes games-youth-rain-far{to{transform:translate3d(0,192px,0)}}
@media(prefers-reduced-motion:reduce){.games-window-atmosphere,.hub-youth-rain-sheet{animation:none!important}}
@media(forced-colors:active){#games-window-background,#hub-youth-rain{display:none!important}body[data-library-theme=window] :is(.hub-intro,.hub-toolbar,.hub-library-note,.hub-section-heading){background:Canvas;color:CanvasText;border-color:CanvasText}#hub-theme-menu button[data-locked=true]{opacity:1;color:GrayText}}
@media(max-width:700px){body[data-library-theme=window] .hub-intro{padding:20px}body[data-library-theme=window] .hub-toolbar{padding:12px}}

/* Exact Agandar upload with its dedicated source-space renderer. */
#games-window-background[data-agandar=true]>img{filter:none}
#games-window-background[data-agandar=true] .games-window-atmosphere{display:none}
.games-agandar-atmosphere{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.games-agandar-atmosphere[hidden]{display:none}
@media(prefers-reduced-motion:reduce),(forced-colors:active){.games-agandar-atmosphere{display:none!important}}

/* Preserve one ordered control row at narrow/intermediate widths. */
body[data-library-theme=window] .hub-cameo-controls{flex-shrink:0}
@media(max-width:850px){body[data-library-theme=window] .hub-toolbar{flex-wrap:wrap}body[data-library-theme=window] .hub-count{flex-basis:100%}}

/* r42 page themes use the actual outdoor plates, never a cropped room/window.
   The existing reading veil, panels, fonts and controls remain unchanged. */
#games-window-background:is([data-exterior=default],[data-exterior=solomon])>img{filter:none;object-position:50% 50%}
#games-window-background[data-exterior=default] .games-window-atmosphere{inset:0;background:radial-gradient(ellipse at 50% 68%,#b3c3d709,transparent 60%);opacity:1;animation:none}
#games-window-background[data-exterior=solomon] .games-window-atmosphere{display:none}
.games-snowy-atmosphere42{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%;pointer-events:none;z-index:0}
.games-snowy-atmosphere42[hidden]{display:none}
@media(max-aspect-ratio:1/1){
 #games-window-background:is([data-exterior=default],[data-exterior=solomon])>img,
 .games-snowy-atmosphere42{object-position:70% 50%}
}
@media(forced-colors:active){.games-snowy-atmosphere42{display:none!important}}
