/* Scenery only: game layout, typography and input remain untouched. */
.lab-laser-cinematic #labLaserDepth,.lab-laser-cinematic .lab-scene-lasers{display:none!important}
.lab-laser-cinematic .lab-scenery[data-scene="lasers"] .lab-scene-image{background-image:url('../images/backgrounds/lasers-clean-v1.webp');filter:brightness(.72)}
.scenery-laser-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen}
.scenery-laser-corner{position:fixed;inset:0;width:100%;height:100%;z-index:4;pointer-events:none;mix-blend-mode:screen}
.scenery-gold-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.gold-effects-ready .lab-scene-visual{visibility:hidden;animation:none!important;transform:none!important}
.gold-effects-ready .lab-gold-field{display:none}
.gold-effects-ready .lab-scene-gold{z-index:1;pointer-events:none}
.scenery-fire-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.fire-effects-ready .lab-scene-visual{visibility:hidden}
.fire-effects-ready :is(.lab-scene-haze,.lab-scene-firelight){display:none!important}
/* Firelight from below. The corner that faces each fire catches it: the edge itself lights up brightest right
   on that corner and fades along the bottom and up the side, over a soft warm wash on the face beside it. */
.scenery-fire-reflection{position:absolute!important;inset:0;z-index:8!important;pointer-events:none;border-radius:inherit;mix-blend-mode:screen;opacity:0;will-change:opacity;
  background:radial-gradient(ellipse 30% 85% at 0% 100%,rgba(255,168,76,.26),rgba(255,118,40,.08) 50%,transparent 74%),radial-gradient(ellipse 70% 150% at 0% 100%,rgba(255,140,56,.08),transparent 70%)}
.scenery-fire-reflection.fire-right{background:radial-gradient(ellipse 30% 85% at 100% 100%,rgba(255,168,76,.26),rgba(255,118,40,.08) 50%,transparent 74%),radial-gradient(ellipse 70% 150% at 100% 100%,rgba(255,140,56,.08),transparent 70%)}
.scenery-fire-reflection::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:1.5px;
  background:radial-gradient(ellipse 60% 140% at 0% 100%,#fff0c8,rgba(255,190,100,.85) 18%,rgba(255,130,48,.35) 45%,transparent 72%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
.scenery-fire-reflection.fire-right::before{background:radial-gradient(ellipse 60% 140% at 100% 100%,#fff0c8,rgba(255,190,100,.85) 18%,rgba(255,130,48,.35) 45%,transparent 72%)}
/* Glints flare one after the other on that edge, one along the bottom and one up the side, as the flames' light dances on it. */
.scenery-fire-glint{position:absolute;pointer-events:none;opacity:0;will-change:opacity}
.scenery-fire-glint.g0{left:9%;bottom:0;width:26%;height:5px;background:radial-gradient(ellipse 50% 60% at 50% 100%,rgba(255,250,226,1),rgba(255,196,116,.4) 45%,transparent 75%)}
.scenery-fire-glint.g1{left:0;bottom:12px;width:5px;height:40%;max-height:60px;background:radial-gradient(ellipse 60% 50% at 0% 50%,rgba(255,244,210,.9),rgba(255,190,110,.3) 45%,transparent 75%)}
.fire-right>.scenery-fire-glint.g0{left:auto;right:9%}
.fire-right>.scenery-fire-glint.g1{left:auto;right:0;background:radial-gradient(ellipse 60% 50% at 100% 50%,rgba(255,244,210,.9),rgba(255,190,110,.3) 45%,transparent 75%)}
/* The safe is tall and framed in thick metal: a broader edge, lit lower down. */
.scenery-fire-vault{position:fixed;z-index:4;pointer-events:none;overflow:hidden;border-radius:32px}
.scenery-fire-vault>.scenery-fire-reflection{background:radial-gradient(ellipse 26% 22% at 0% 100%,rgba(255,168,76,.3),rgba(255,118,40,.1) 50%,transparent 74%),radial-gradient(ellipse 70% 38% at 0% 100%,rgba(255,140,56,.12),transparent 72%)}
.scenery-fire-vault>.scenery-fire-reflection.fire-right{background:radial-gradient(ellipse 26% 22% at 100% 100%,rgba(255,168,76,.3),rgba(255,118,40,.1) 50%,transparent 74%),radial-gradient(ellipse 70% 38% at 100% 100%,rgba(255,140,56,.12),transparent 72%)}
.scenery-fire-vault>.scenery-fire-reflection::before{padding:2.5px;background:radial-gradient(ellipse 60% 42% at 0% 100%,#fff0c8,rgba(255,190,100,.85) 18%,rgba(255,130,48,.35) 45%,transparent 72%)}
.scenery-fire-vault>.scenery-fire-reflection.fire-right::before{background:radial-gradient(ellipse 60% 42% at 100% 100%,#fff0c8,rgba(255,190,100,.85) 18%,rgba(255,130,48,.35) 45%,transparent 72%)}
.scenery-fire-vault .scenery-fire-glint.g0{height:7px}
.scenery-fire-vault .scenery-fire-glint.g1{width:7px;height:16%;max-height:none;bottom:22px}
body.lab-modal-open .scenery-fire-reflection,body:not([data-background="smoke"]) .scenery-fire-reflection{visibility:hidden}
.lab-scenery[data-scene="drowned"] .lab-scene-image{filter:none;background-position:50% 100%}
.dv-water{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.drowned-effects-ready .lab-scene-image{visibility:hidden}
.scene-effects-paused .dv-atmosphere *{animation-play-state:paused!important}
.dv-atmosphere{display:none}
.dv-ready.study-cinematic .lab-scene-image{visibility:hidden}
.dv-atmosphere{overflow:hidden;pointer-events:none}
.dv-bubble{position:absolute;left:var(--x);top:110%;width:var(--s);height:calc(var(--s)*1.12);border:1px solid #b8fff87a;border-radius:50%;box-shadow:inset 1px 1px 1px #e8fffa70,0 0 4px #70dde222;background:radial-gradient(ellipse at 35% 25%,#eaffff70,transparent 33%,transparent 55%,#83bfc22a);opacity:0;animation:dv-bubble-rise var(--duration) linear var(--delay) infinite}
.dv-dust{position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);border-radius:50%;background:#b5e8da;opacity:0;box-shadow:0 0 3px #a6ecea80;animation:dv-silt var(--duration) ease-in-out var(--delay) infinite}
@keyframes dv-bubble-rise{0%{transform:translate3d(0,0,0) scale(.55);opacity:0}10%{opacity:.42}50%{transform:translate3d(18px,-65vh,0) scale(.86);opacity:.26}90%{opacity:.16}100%{transform:translate3d(-12px,-140vh,0) scale(1.15);opacity:0}}
@keyframes dv-silt{0%,100%{transform:translate3d(-14px,12px,0);opacity:.02}45%{opacity:.4}75%{transform:translate3d(19px,-28px,0);opacity:.18}}

@media(max-width:880px){.lab-scenery[data-scene="drowned"] .lab-scene-image{background-position:80% 100%}.dv-extra{display:none}}
@media(prefers-reduced-motion:reduce){.dv-atmosphere *{animation:none!important}.dv-dust{opacity:.16}.dv-bubble{display:none}}
