/* V226 adaptive quality layer: keeps premium look while reducing repaint cost on weak devices. */
html.quality-medium,
html.quality-low{--ese-fx-scale:.65;--ese-blur:5px;--ese-shadow-alpha:.58;}
html.quality-low{--ese-fx-scale:.35;--ese-blur:2px;--ese-shadow-alpha:.38;}

html.quality-medium .router-premium-bg,
html.quality-low .router-premium-bg{filter:blur(6px)!important;opacity:.72!important;}
html.quality-low .router-premium-bg{filter:none!important;opacity:.55!important;}

html.quality-medium .router-surface,
html.quality-medium .slot-frame,
html.quality-medium .cockpit-display,
html.quality-medium .lux-card,
html.quality-medium .jackpot-widget,
html.quality-medium .glass,
html.quality-medium [class*="glass"]{backdrop-filter:blur(var(--ese-blur))!important;-webkit-backdrop-filter:blur(var(--ese-blur))!important;}

html.quality-low .router-surface,
html.quality-low .slot-frame,
html.quality-low .cockpit-display,
html.quality-low .lux-card,
html.quality-low .jackpot-widget,
html.quality-low .glass,
html.quality-low [class*="glass"]{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}

html.quality-low .slot-fx-canvas,
html.quality-low .slot-fx-pro::before,
html.quality-low .slot-fx-pro::after,
html.quality-low .v69-coin-canvas,
html.quality-low #paylineCanvas,
html.quality-low .particle,
html.quality-low .confetti,
html.quality-low .spark,
html.quality-low [data-heavy-fx="1"]{display:none!important;}

html.quality-medium .v69-coin-canvas{opacity:.55!important;}
html.quality-medium #paylineCanvas{opacity:.65!important;}

html.quality-low .reel-inner.animating .symbol img,
html.quality-low .reel-inner.animating .symbol .symbol-img{filter:none!important;}
html.quality-low .symbol img,
html.quality-low .symbol .symbol-img{image-rendering:auto!important;transform:translateZ(0) scale(1.06)!important;}
html.quality-low .reel.reel-flow-down .symbol img,
html.quality-low .reel.reel-flow-down .symbol .symbol-img{transform:scaleY(-1) translateZ(0) scale(1.06)!important;}

html.quality-medium .bigwin::before,
html.quality-medium .nice-win-banner::before,
html.quality-medium .big-win-banner::before{filter:blur(6px)!important;animation-duration:1.8s!important;}
html.quality-low .bigwin::before,
html.quality-low .nice-win-banner::before,
html.quality-low .big-win-banner::before{filter:none!important;animation:none!important;opacity:.72!important;}
html.quality-low .bigwin .shine,
html.quality-low .nice-win-banner .shine,
html.quality-low .big-win-banner .shine{display:none!important;}

html.quality-low *,
html.quality-medium *{scroll-behavior:auto!important;}
html.quality-low .reel-inner,
html.quality-low .symbol,
html.quality-low .spin-btn,
html.quality-low #spinBtn{will-change:auto;}
html.quality-low .reel-inner.animating{will-change:transform;contain:layout paint style;}

html.quality-low body.slot-fx-spinning .topbar,
html.quality-low body.slot-fx-spinning .dock,
html.quality-low body.slot-fx-spinning .meters{box-shadow:0 8px 20px rgba(0,0,0,.28)!important;}

@media (max-width:760px){
  html.quality-medium body{--ese-mobile-fx:0.65;}
  html.quality-low body{--ese-mobile-fx:0.35;}
  html.quality-low .router-feature-card__glow,
  html.quality-low .router-feature-card::before{opacity:.35!important;filter:none!important;}
  html.quality-low #loadingOverlay .lux-rays,
  html.quality-low #loadingOverlay .lux-grid{display:none!important;}
  html.quality-low #loadingOverlay .lux-bg{filter:none!important;transform:none!important;}
}

@media (prefers-reduced-motion:reduce){
  .slot-fx-canvas,.v69-coin-canvas,#paylineCanvas{display:none!important;}
  .reel-inner,.symbol,.spin-btn,#spinBtn{transition-duration:.12s!important;}
}

/* V279 runtime paint budget layer: reduces mobile GPU/repaint cost without changing game math. */
html.ese-fx-light{--ese-blur:2px;--ese-shadow-alpha:.34;--ese-fx-scale:.45;}
html.ese-page-hidden *,
html.ese-resizing *{animation-play-state:paused!important;transition-duration:.001s!important;}
html.ese-page-hidden .reel-inner.animating{animation-play-state:running!important;}

/* V280 dock safety: do not apply CSS contain to viewport/layout wrappers.
   iOS Safari treats contained ancestors as a containing block for fixed dock,
   which moves the bottom dock into the control panel area. */
.slot-area,.slot-frame,.cockpit-display,.reels-container,#reelsContainer{contain:layout paint style;}
.premium-slot-ui .bottom-bar.cockpit-bottom{contain:none!important;will-change:auto!important;}
.reel,.symbol{contain:paint;backface-visibility:hidden;}
.symbol-img,.symbol img{backface-visibility:hidden;transform:translateZ(0);}
.reel-inner.animating{will-change:transform;}
body:not(.ese-spin-active) .reel-inner{will-change:auto;}

@media (max-width:760px){
  #loadingOverlay{--loader-bg:url('images/cover-mobile.webp')!important;}
  html.quality-medium .slot-game,
  html.quality-low .slot-game{--ese-shadow-alpha:.34;}
  html.ese-fx-light .premium-top-row,
  html.ese-fx-light .status-box,
  html.ese-fx-light .slot-frame,
  html.ese-fx-light .cockpit-display,
  html.ese-fx-light .slot-area,
  html.ese-fx-light .jackpot-widget,
  html.ese-fx-light .router-bottom-nav,
  html.ese-fx-light .game-card,
  html.ese-fx-light .router-search,
  html.ese-fx-light .router-filter-tab{box-shadow:0 10px 24px rgba(0,0,0,.32)!important;}
  html.ese-fx-light .lux-rays,
  html.ese-fx-light .lux-grid,
  html.ese-fx-light .slot-fx-canvas,
  html.ese-fx-light .slot-fx-pro:before,
  html.ese-fx-light .slot-fx-pro:after{display:none!important;}
  html.ese-fx-light .live-winners__track{animation-duration:42s!important;}
  .game-card{content-visibility:auto;contain-intrinsic-size:260px 220px;}
}

@media (max-width:430px){
  html.ese-fx-light body{background-attachment:scroll!important;}
  html.ese-fx-light .loader__orb,
  html.ese-fx-light .loader__coins,
  html.ese-fx-light .loader__floor,
  html.ese-fx-light .loader__scan{display:none!important;}
  html.ese-fx-light .loader--brand{box-shadow:0 22px 70px rgba(0,0,0,.54)!important;}
}

