/* =====================================================================
   Club Bear - rendimiento (va el último). Ver js/perf.js.
   ===================================================================== */

/* la pantalla de inicio, una vez dentro, deja de existir para el navegador
   (antes seguía encima de todo con opacidad 0 animando su nieve y sus brillos) */
#start.gone { visibility: hidden; transition: opacity .5s, visibility 0s linear .55s; }
#start.gone, #start.gone * { animation-play-state: paused !important; }

/* el fondo oscuro de las ventanas ya no desenfoca toda la pantalla en cada fotograma */
#dim, #dim.on { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
#dim { background: rgba(8, 25, 50, .52); }

/* los osos y sus nombres se mueven con la tarjeta gráfica (transform) en vez de recolocarse */
.actor, .label { left: 0; top: 0; will-change: transform; }

/* lo que brilla o flota con filtros va en su propia capa (no obliga a repintar lo de alrededor) */
.actor .sprite svg.gsk, .obra-drop, .candy-drop, .wood-drop, .critter, .life-critter { will-change: transform; }
.actor .sprite svg.gsk { will-change: filter, transform; }

/* inventario: las miniaturas son imágenes (js/perf.js · InvThumbs) */
#inventory .inv-art .inv-img { width: 100%; height: 100%; object-fit: contain; display: block; pointer-events: none; }
#inventory .inv-art .inv-wait { display: block; width: 100%; height: 100%; border-radius: 14px; background: radial-gradient(circle at 50% 45%, rgba(255,255,255,.9) 0 18%, transparent 19%); opacity: .6; }
/* el panel se abre con un fundido (antes animaba su anchura y recolocaba todos los objetos en cada fotograma) */
#inventory { transition: opacity .2s, transform .2s !important; transform: translateX(-24px); }
#inventory.open { transform: none; }
#inventory .inv-grid { contain: layout paint; }

/* inventario: los objetos se ven quietos hasta que te los pones */
#inventory .inv-art *, #inventory .inv-art svg, .of-bear *, .of-bear svg, .of-now *, .of-now svg { animation: none !important; transition: none !important; }
#inventory .inv-art svg, .of-bear svg, .of-now svg { filter: none !important; }

/* mientras juegas un minijuego (pantalla completa), la sala de detrás no se dibuja */
#stage.in-game #room, #stage.in-game #roomFx, #stage.in-game #actors, #stage.in-game #labels, #stage.in-game #weatherFx, #stage.in-game #nightFx { visibility: hidden !important; }
#stage.in-game #room *, #stage.in-game #actors *, #stage.in-game #labels * { animation-play-state: paused !important; }

/* luces de neón: solo parpadean (el giro de color con filtro era carísimo) */
.room-light.neon { animation: lightNeon 1.6s steps(1) infinite !important; }

/* las ventanas cerradas desaparecen de verdad (antes solo eran transparentes y se seguían procesando) */
.panel { transition: opacity .18s, transform .18s, visibility 0s linear .18s; }
.panel:not(.open) { visibility: hidden; }
.panel.open { visibility: visible; transition-delay: 0s; }
.panel:not(.open) *, .panel:not(.open) { animation-play-state: paused !important; }
