/* ============================================
   PERF.CSS — JLCASINO
   Performance fallbacks for devices without HW acceleration.

   Activated automatically when ANY of these is true:
     - User OS sets prefers-reduced-motion / -transparency / -data
     - navigator.deviceMemory <= 2 or hardwareConcurrency <= 2
     - Save-Data header is set
     - JS measures sustained <30fps after load (perf-mode.js)
     - localStorage jl_lite=1 (manual opt-in)

   Also always-on (no visual change): pause every animation when the
   tab is hidden, and pause offscreen heavy animations via JS.
   ============================================ */

/* === Always on — invisible CPU savings === */

/* Pause every animation while the tab is hidden (visibility API toggles it) */
html.anim-paused *,
html.anim-paused *::before,
html.anim-paused *::after {
    animation-play-state: paused !important;
}

/* JS marks offscreen heavy elements with this class via IntersectionObserver */
.jl-anim-paused,
.jl-anim-paused::before,
.jl-anim-paused::after {
    animation-play-state: paused !important;
}

/* === Honour OS-level user preferences automatically === */

@media (prefers-reduced-motion: reduce) {
    .nav-live-status.is-live,
    .nav-live-status.is-live .live-dot,
    .nav-user-badge,
    .nav-bell-badge,
    .orb,
    .floating-slot,
    .particle {
        animation: none !important;
    }
    .hover-lift:hover { transform: none; }
}

@media (prefers-reduced-transparency: reduce) {
    .navbar-blur-bg,
    .nav-bell-dropdown,
    .nav-user-dropdown,
    .nav-menu-overlay {
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    /* Náhrada za ztracený blur PATŘÍ na kapsli (.navbar-blur-bg), ne na host .navbar —
       jinak se objeví celoplošný černý pruh kolem plovoucí kapsle. Host zůstává průhledný. */
    .navbar-blur-bg          { background: var(--head); }
    .navbar.scrolled .navbar-blur-bg { background: rgba(7, 9, 10, 1); }
    .nav-bell-dropdown   { background: var(--head); }
    .nav-user-dropdown   { background: var(--head); }
}

/* === Low-perf mode (auto-detected or opt-in) ===
   Goal: same layout, same colours, no GPU-bound effects. */

html[data-perf="low"] .navbar-blur-bg,
html[data-perf="low"] .nav-bell-dropdown,
html[data-perf="low"] .nav-user-dropdown,
html[data-perf="low"] .nav-menu-overlay {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}
/* .jl-stat z obou seznamů vypadl: buňka pásu tvrdých čísel žádný
   backdrop-filter nemá, sklo bylo na staré hero-pilulce, která odešla. */

/* Solid backgrounds compensate for the lost blur — na KAPSLI, ne na host .navbar
   (host musí zůstat průhledný, jinak je kolem kapsle celoplošný černý pruh) */
html[data-perf="low"] .navbar-blur-bg          { background: var(--head); }
html[data-perf="low"] .navbar.scrolled .navbar-blur-bg { background: rgba(7, 9, 10, 1); }
html[data-perf="low"] .nav-bell-dropdown   { background: var(--head); }
html[data-perf="low"] .nav-user-dropdown   { background: var(--head); }

/* Kill the most expensive decorative layers: huge blurred orbs and stacked drop-shadows */
html[data-perf="low"] .orb {
    filter: none !important;
    opacity: 0.10;
}
html[data-perf="low"] .floating-slot {
    filter: none !important;
}

/* Stop infinite background animations (badge pulses, shimmer borders, live status) */
html[data-perf="low"] .orb,
html[data-perf="low"] .floating-slot,
html[data-perf="low"] .particle,
html[data-perf="low"] .nav-live-status.is-live,
html[data-perf="low"] .nav-live-status.is-live .live-dot,
html[data-perf="low"] .nav-user-badge,
html[data-perf="low"] .nav-bell-badge {
    animation: none !important;
}

/* Trim wide-radius neon glows that force large repainted areas */
html[data-perf="low"] .nav-live-status.is-live .live-dot { box-shadow: 0 0 6px var(--kt-live); }
html[data-perf="low"] .nav-coins-icon { filter: none; }
html[data-perf="low"] .hamburger::before,
html[data-perf="low"] .hamburger::after,
html[data-perf="low"] .hamburger-mid { box-shadow: none; }

/* Shorten transitions so hover/click feels snappier on slow paint pipelines */
html[data-perf="low"] * {
    transition-duration: 0.15s !important;
}

/* Úsporný režim srážel trvání přechodů na 0,15 s pravidlem nad tímhle
   blokem. Má stejnou specifičnost jako `* { transition-duration: .001ms }`
   z bloku pro omezený pohyb výš v souboru, ale stálo POZDĚJI, takže
   vyhrávalo — a komu z pohybu bývá špatně, tomu se v úsporném režimu
   animace vracely. Na celém webu, ne jen tady.

   Proto tenhle blok stojí úplně na konci: preference člověka je vždycky
   nad výkonovou heuristikou. Kdyby do souboru přibylo další pravidlo,
   musí jít NAD něj. */
@media (prefers-reduced-motion: reduce) {
    html[data-perf="low"] *,
    html[data-perf="low"] *::before,
    html[data-perf="low"] *::after {
        transition-duration: .001ms !important;
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
    }
}
