/* ==========================================================================
   STALZONE — STALKER ATMOSPHERE v1.1 OPTIMIZED
   Лёгкий оверлей поверх style.css. Без data-stalker — только polish.
   data-stalker="zone"|"bunker"|"emission".
   Фикс лагов: убраны тяжёлые filter-анимации, blur снижен, fog 2 слоя вместо 3,
   grain 12s + will-change, scan только transform, contain:paint, GPU layers.
   ========================================================================== */

/* ---------- Мягкий polish — всегда (удали файл — вернётся 1:1 оригинал) ---------- */
.auth-container,
.table-wrapper,
.crate-table-wrapper,
.resell-container {
  transition: transform 0.25s ease, box-shadow 0.25s ease;
  will-change: transform;
}
.auth-container:hover,
.table-wrapper:hover {
  transform: translateY(-1px) translateZ(0);
  box-shadow: 0 10px 35px rgba(0,0,0,0.55), 0 0 0 1px rgba(233,69,96,0.06);
}
.nav-brand { position: relative; letter-spacing: 1.5px; }
.nav-brand::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -6px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
  opacity: 0;
  transform: scaleX(0.6);
  transition: opacity .3s, transform .3s;
}
.nav-brand:hover::after { opacity: 1; transform: scaleX(1); }
.nav-item { transition: color .2s, background .2s; }
.btn { position: relative; overflow: hidden; }
.btn::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,0.07) 45%, transparent 60%);
  transform: translateX(-120%);
  transition: transform 0.6s;
}
.btn:hover::before { transform: translateX(120%); }

/* ---------- Оверлеи — только с data-stalker (contain + GPU) ---------- */
html[data-stalker] body { position: relative; }

html[data-stalker] body::before,
html[data-stalker] body::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  contain: strict;
}
html[data-stalker] body::before {
  /* Лёгкий шум — 100px, 1 октава, без mix-blend (дорого) */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='1'/%3E%3C/filter%3E%3Crect width='100' height='100' filter='url(%23n)' opacity='.85'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 100px 100px;
  opacity: 0;
  will-change: transform;
  transform: translateZ(0);
  animation: stalker-grain 12s steps(8) infinite;
}
html[data-stalker] body::after {
  background:
    radial-gradient(ellipse at 50% 100%, rgba(233,69,96,0.05) 0%, transparent 55%),
    radial-gradient(ellipse at 20% 50%, rgba(120,180,160,0.035) 0%, transparent 58%),
    radial-gradient(ellipse at 50% 50%, transparent 48%, rgba(0,0,0,0.5) 100%);
  will-change: opacity;
}

html[data-stalker] #stalker-scanlines {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 2;
  opacity: 0;
  contain: strict;
  will-change: transform;
  transform: translateZ(0);
  background: repeating-linear-gradient(
    to bottom,
    transparent 0px,
    transparent 2px,
    rgba(255,255,255,0.012) 3px,
    transparent 4px
  );
  animation: stalker-scan 12s linear infinite;
}

/* Туман — 2 слоя вместо 3, blur 12px, только transform */
html[data-stalker] #stalker-fog {
  position: fixed;
  inset: -15%;
  pointer-events: none;
  z-index: 1;
  opacity: 0;
  contain: strict;
  filter: blur(12px);
  will-change: transform, opacity;
  transform: translateZ(0);
}
html[data-stalker] #stalker-fog span {
  position: absolute;
  width: 65vmax; height: 65vmax;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, rgba(180,200,190,0.075) 0%, transparent 62%);
  will-change: transform;
  transform: translateZ(0);
  animation: stalker-fog-drift 42s ease-in-out infinite alternate;
}
html[data-stalker] #stalker-fog span:nth-child(1) { left: -8%; top: 8%; animation-duration: 44s; }
html[data-stalker] #stalker-fog span:nth-child(2) { left: 38%; top: 48%; width: 58vmax; height: 58vmax; background: radial-gradient(circle, rgba(233,69,96,0.045) 0%, transparent 64%); animation-duration: 38s; animation-delay: -6s; }
/* третий span остаётся в DOM но скрыт по умолчанию для экономии — включаем только в zone */
html[data-stalker] #stalker-fog span:nth-child(3) { display: none; }

/* Loader — без второго filter-анимированного слоя */
html[data-stalker] .loader-spinner {
  border-color: rgba(255,255,255,0.07);
  border-top-color: var(--accent);
  border-right-color: rgba(233,69,96,0.35);
  box-shadow: 0 0 16px var(--accent-glow);
  will-change: transform;
  animation: spin 0.7s linear infinite, stalker-geiger 2.2s ease-in-out infinite;
}
html[data-stalker] .loader-text {
  font-family: 'Consolas','Courier New', monospace;
  letter-spacing: 3px;
  text-shadow: 0 0 8px var(--accent-glow);
  animation: stalker-text-flicker 4s infinite;
}

/* Навигация — без filter, только opacity/color */
html[data-stalker] .top-nav {
  border-bottom-color: rgba(233,69,96,0.16);
  box-shadow: 0 1px 0 rgba(233,69,96,0.06), 0 8px 28px rgba(0,0,0,0.4);
}
html[data-stalker] .top-nav::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(233,69,96,0.5), transparent);
  opacity: 0.5;
  will-change: opacity;
  animation: stalker-border-pulse 4s ease-in-out infinite;
}
html[data-stalker] .nav-brand {
  text-shadow: 0 0 14px var(--accent-glow);
  will-change: opacity;
  animation: stalker-brand-breathe 6s ease-in-out infinite;
}

/* Карточки */
html[data-stalker] .auth-container {
  border-color: rgba(233,69,96,0.12);
  box-shadow: 0 10px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(233,69,96,0.05);
}
html[data-stalker] .auth-container::after {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: 12px;
  background: linear-gradient(120deg, transparent 30%, rgba(233,69,96,0.10) 50%, transparent 70%);
  opacity: 0;
  transform: translateX(-16%);
  transition: opacity .4s, transform .6s;
  pointer-events: none;
  will-change: transform, opacity;
}
html[data-stalker] .auth-container:hover::after { opacity: 1; transform: translateX(16%); }
html[data-stalker] .auth-container::before { animation: stalker-top-beam 5s ease-in-out infinite; }

/* Таблицы */
html[data-stalker] .resell-table tbody tr,
html[data-stalker] .arsenal-table tbody tr { transition: background .2s; }
html[data-stalker] .resell-table tbody tr:hover {
  background: linear-gradient(90deg, rgba(233,69,96,0.05), transparent 65%);
}

/* Скролл */
html[data-stalker] ::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, #2a2a2a, #3a1f24);
  border: 1px solid rgba(233,69,96,0.15);
}
html[data-stalker] ::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* Toast */
html[data-stalker] .toast-notification {
  border-color: rgba(233,69,96,0.3);
  box-shadow: 0 10px 40px rgba(0,0,0,0.65), 0 0 18px rgba(233,69,96,0.12);
}

/* ---------- ZONE — зелено-бирюзовая аномалия ---------- */
html[data-stalker="zone"] {
  --accent: #1abc9c; --accent-light: #5eead4; --accent-glow: rgba(26,188,156,0.30);
  --bg-primary: #061412; --bg-secondary: #0a1a16; --bg-card: #0f2420;
  --bg-card-hover: #143129; --border: #1a3a32; --text: #c8f0e6; --text-muted: #7fb8a8;
}
html[data-stalker="zone"] body {
  background-color: #061412;
  background-image:
    radial-gradient(ellipse at 18% 18%, rgba(26,188,156,0.15) 0%, transparent 52%),
    radial-gradient(ellipse at 82% 76%, rgba(45,212,191,0.10) 0%, transparent 56%),
    radial-gradient(ellipse at 50% 100%, rgba(26,188,156,0.06) 0%, transparent 62%);
}
html[data-stalker="zone"] body::before { opacity: 0.045; }
html[data-stalker="zone"] #stalker-scanlines { opacity: 0.14; }
html[data-stalker="zone"] #stalker-fog { opacity: 0.82; }
html[data-stalker="zone"] #stalker-fog span { background: radial-gradient(circle, rgba(26,188,156,0.09) 0%, transparent 62%); }
html[data-stalker="zone"] #stalker-fog span:nth-child(2) { background: radial-gradient(circle, rgba(45,212,191,0.075) 0%, transparent 62%); }
html[data-stalker="zone"] #stalker-fog span:nth-child(3) { display: block; left: 14%; top: 72%; width: 52vmax; height: 52vmax; background: radial-gradient(circle, rgba(16,185,129,0.055) 0%, transparent 60%); }
html[data-stalker="zone"] .top-nav { background: rgba(6,20,18,0.94); border-bottom-color: rgba(26,188,156,0.22); box-shadow: 0 1px 0 rgba(26,188,156,0.08), 0 8px 28px rgba(0,0,0,0.45); }
html[data-stalker="zone"] .top-nav::after { background: linear-gradient(90deg, transparent, rgba(26,188,156,0.55), transparent); }
html[data-stalker="zone"] .nav-brand { text-shadow: 0 0 14px rgba(26,188,156,0.38), 0 0 32px rgba(45,212,191,0.18); }
html[data-stalker="zone"] .loader-spinner { border-top-color: #1abc9c; border-right-color: rgba(26,188,156,0.45); box-shadow: 0 0 16px rgba(26,188,156,0.28); }
html[data-stalker="zone"] .auth-container { border-color: rgba(26,188,156,0.16); }
html[data-stalker="zone"] ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #0f2a24, #1a3a32); border-color: rgba(26,188,156,0.18); }
html[data-stalker="zone"] ::-webkit-scrollbar-thumb:hover { background: #1abc9c; }

/* ---------- BUNKER — без sepia/filter, только цвета ---------- */
html[data-stalker="bunker"] {
  --accent: #ff9f43; --accent-light: #feca57; --accent-glow: rgba(255,159,67,0.28);
  --bg-primary: #0b0a07; --bg-secondary: #12100e; --bg-card: #1a1714;
  --bg-card-hover: #211e1a; --border: #2a2420; --text: #d8cbb8; --text-muted: #8a7d6b;
}
html[data-stalker="bunker"] body {
  background-color: #0b0a07;
  background-image:
    radial-gradient(ellipse at 50% 0%, rgba(255,159,67,0.055) 0%, transparent 55%),
    radial-gradient(ellipse at 20% 100%, rgba(255,159,67,0.025) 0%, transparent 45%);
}
html[data-stalker="bunker"] body::before { opacity: 0.035; }
html[data-stalker="bunker"] #stalker-scanlines {
  opacity: 0.28;
  background: repeating-linear-gradient(to bottom, transparent 0, transparent 1px, rgba(255,159,67,0.028) 2px, transparent 3px);
}
html[data-stalker="bunker"] #stalker-fog { opacity: 0.38; filter: blur(10px); }
html[data-stalker="bunker"] #stalker-fog span { background: radial-gradient(circle, rgba(255,159,67,0.04) 0%, transparent 60%); }
html[data-stalker="bunker"] .top-nav { background: rgba(18,16,14,0.96); border-bottom-color: rgba(255,159,67,0.18); }
html[data-stalker="bunker"] .top-nav::after { background: linear-gradient(90deg, transparent, rgba(255,159,67,0.45), transparent); }
html[data-stalker="bunker"] .nav-brand { text-shadow: 0 0 12px rgba(255,159,67,0.4); }
html[data-stalker="bunker"] .loader-spinner { border-top-color: #ff9f43; box-shadow: 0 0 14px rgba(255,159,67,0.3); }

/* ---------- EMISSION — красно-синий выброс ---------- */
html[data-stalker="emission"] {
  --accent: #ff2e2e; --accent-light: #60a5fa; --accent-glow: rgba(255,46,46,0.32);
  --bg-primary: #0a0a14; --bg-secondary: #0f0f1a; --bg-card: #151528;
  --bg-card-hover: #1c1c32; --border: #2a2a4a;
}
html[data-stalker="emission"] body {
  background-color: #0a0a14;
  background-image:
    radial-gradient(ellipse at 22% 28%, rgba(255,46,46,0.14) 0%, transparent 52%),
    radial-gradient(ellipse at 78% 72%, rgba(59,130,246,0.13) 0%, transparent 56%),
    radial-gradient(ellipse at 50% 50%, transparent 40%, rgba(0,0,0,0.55) 100%);
}
html[data-stalker="emission"] body::before { opacity: 0.045; }
html[data-stalker="emission"] body::after {
  opacity: 1;
  background:
    radial-gradient(ellipse at 24% 30%, rgba(255,46,46,0.075) 0%, transparent 46%),
    radial-gradient(ellipse at 76% 68%, rgba(59,130,246,0.065) 0%, transparent 48%),
    radial-gradient(ellipse at 50% 50%, transparent 42%, rgba(0,0,0,0.58) 100%);
  will-change: opacity;
  animation: stalker-vignette-pulse 8s ease-in-out infinite, emission-flicker 3.3s steps(2) infinite;
}
html[data-stalker="emission"] #stalker-scanlines { opacity: 0.20; }
html[data-stalker="emission"] #stalker-fog { opacity: 0.60; filter: blur(10px); }
html[data-stalker="emission"] #stalker-fog span:nth-child(1) { background: radial-gradient(circle, rgba(255,46,46,0.07) 0%, transparent 62%); }
html[data-stalker="emission"] #stalker-fog span:nth-child(2) { background: radial-gradient(circle, rgba(59,130,246,0.06) 0%, transparent 62%); }
html[data-stalker="emission"] #stalker-fog span:nth-child(3) { display: block; left: 20%; top: 68%; width: 54vmax; height: 54vmax; background: radial-gradient(circle, rgba(99,102,241,0.04) 0%, transparent 60%); }
html[data-stalker="emission"] .top-nav {
  background: rgba(10,10,20,0.94);
  border-bottom-color: rgba(255,46,46,0.26);
  box-shadow: 0 0 18px rgba(59,130,246,0.08), 0 0 22px rgba(255,46,46,0.10);
}
html[data-stalker="emission"] .top-nav::after {
  background: linear-gradient(90deg, transparent, rgba(255,46,46,0.50) 0%, rgba(255,46,46,0.50) 42%, rgba(59,130,246,0.38) 58%, transparent 100%);
  animation: stalker-border-pulse 3s ease-in-out infinite;
}
html[data-stalker="emission"] .loader-spinner { border-top-color: #ff2e2e; border-right-color: rgba(59,130,246,0.45); box-shadow: 0 0 16px rgba(255,46,46,0.28), 0 0 18px rgba(59,130,246,0.16); }
html[data-stalker="emission"] .btn { box-shadow: 0 0 16px rgba(255,46,46,0.22), 0 0 12px rgba(59,130,246,0.12); }
html[data-stalker="emission"] ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #1a1a2e, #2a1a2a); border-color: rgba(255,46,46,0.18); }
html[data-stalker="emission"] ::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #ff2e2e, #3b82f6); }

/* ---------- Анимации — только transform / opacity (GPU) ---------- */
@keyframes stalker-grain {
  0%, 100% { transform: translate3d(0,0,0); }
  25% { transform: translate3d(-1%, -1%, 0); }
  50% { transform: translate3d(-1.5%, 1%, 0); }
  75% { transform: translate3d(1%, -1%, 0); }
}
@keyframes stalker-scan { from { transform: translate3d(0,0,0); } to { transform: translate3d(0,4px,0); } }
@keyframes stalker-fog-drift {
  0% { transform: translate3d(0,0,0) scale(1); }
  50% { transform: translate3d(2.5%, -2%, 0) scale(1.02); }
  100% { transform: translate3d(-1.5%, 2.5%, 0) scale(0.99); }
}
@keyframes stalker-geiger {
  0%, 92%, 100% { transform: rotate(0) scale(1); }
  94% { transform: rotate(0.5deg) scale(1.015); }
  96% { transform: rotate(-0.5deg) scale(1.015); }
}
@keyframes stalker-text-flicker {
  0%, 18%, 22%, 62%, 100% { opacity: 1; }
  20% { opacity: 0.86; }
}
@keyframes stalker-border-pulse { 0%,100%{opacity:0.35} 50%{opacity:0.75} }
@keyframes stalker-brand-breathe { 0%,100%{opacity:1} 50%{opacity:0.92} }
@keyframes stalker-top-beam {
  0%,100%{transform:translateX(-18%);opacity:0} 50%{opacity:0} 58%{opacity:0.85} 72%{transform:translateX(18%);opacity:0}
}
@keyframes stalker-vignette-pulse { 0%,100%{opacity:1} 50%{opacity:0.9} }

/* Параллакс — только transform, без background-position */
html[data-stalker] body {
  --mx: 0.5; --my: 0.5;
}
/* Лёгкий сдвиг fog от мыши — дёшево */
html[data-stalker] #stalker-fog {
  transform: translate3d(calc((var(--mx) - 0.5) * 12px), calc((var(--my) - 0.5) * 10px), 0);
  transition: transform 0.8s ease-out;
}

@media (prefers-reduced-motion: reduce) {
  html[data-stalker] body::before,
  html[data-stalker] #stalker-scanlines,
  html[data-stalker] #stalker-fog span,
  html[data-stalker] .loader-spinner,
  html[data-stalker] .top-nav::after { animation: none !important; }
  .auth-container:hover, .table-wrapper:hover { transform: none; }
}

/* Панель */
#stalker-switcher {
  position: fixed;
  right: 18px; bottom: 18px;
  z-index: 9998;
  display: flex;
  gap: 6px;
  padding: 6px;
  background: rgba(10,10,10,0.78);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  box-shadow: 0 12px 40px rgba(0,0,0,0.5);
  font-family: 'Consolas','Courier New', monospace;
  backdrop-filter: blur(8px);
  contain: paint;
}
#stalker-switcher button {
  appearance: none;
  border: 1px solid rgba(255,255,255,0.07);
  background: #1a1a1a;
  color: #9a9a9a;
  padding: 7px 10px;
  border-radius: 8px;
  font-size: 11px;
  letter-spacing: 0.6px;
  cursor: pointer;
  transition: border-color .2s, color .2s, background .2s;
  line-height: 1;
  will-change: transform;
}
#stalker-switcher button:hover { color: #fff; border-color: rgba(233,69,96,0.22); }
#stalker-switcher button.active {
  color: #fff;
  background: var(--accent);
  border-color: var(--accent);
  box-shadow: 0 4px 14px var(--accent-glow);
}
#stalker-switcher button[data-v=""] { font-size: 10px; }
#stalker-switcher .stalker-dot {
  display: inline-block;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: currentColor;
  margin-right: 5px;
  box-shadow: 0 0 6px currentColor;
  vertical-align: middle;
}
@media (max-width: 768px) {
  #stalker-switcher { right: 10px; bottom: 10px; padding: 5px; gap: 4px; }
  #stalker-switcher button { padding: 6px 8px; font-size: 10px; }
}
html[data-stalker] .table-wrapper,
html[data-stalker] .crate-table-wrapper { position: relative; }
html[data-stalker="emission"] .nav-brand:hover {
  text-shadow: -1px 0 rgba(255,46,46,0.4), 1px 0 rgba(120,180,255,0.3), 0 0 14px var(--accent-glow);
}

/* ---------- Переходы между темами — отдельные анимации ---------- */
#stalker-transition {
  position: fixed;
  inset: 0;
  z-index: 9996;
  pointer-events: none;
  opacity: 0;
  contain: strict;
  will-change: opacity;
  transform: translateZ(0);
}
/* ЗОНА — плавно, зелено-бирюзовый радиационный фон 1.6с */
#stalker-transition.enter-zone {
  background:
    radial-gradient(ellipse at 50% 62%, rgba(26,188,156,0.18) 0%, transparent 58%),
    radial-gradient(ellipse at 28% 42%, rgba(45,212,191,0.09) 0%, transparent 48%),
    radial-gradient(ellipse at 72% 28%, rgba(16,185,129,0.06) 0%, transparent 50%),
    linear-gradient(to bottom, transparent 30%, rgba(6,20,18,0.28) 100%);
  animation: zone-enter 1600ms cubic-bezier(.22,.6,.2,1) forwards;
}
@keyframes zone-enter {
  0% { opacity: 0; transform: scale(1.04); filter: blur(2px); }
  18% { opacity: 1; transform: scale(1); filter: blur(0); }
  55% { opacity: 0.85; }
  100% { opacity: 0; transform: scale(1); filter: blur(0); }
}
/* БУНКЕР — дверь → темнота → свеча позади (2.8с, 60fps, только opacity) */
#stalker-transition.enter-bunker {
  background: #000000;
  will-change: opacity;
  transform: translateZ(0);
  backface-visibility: hidden;
  animation: bunker-enter-dark 2800ms cubic-bezier(.25,.55,.2,1) forwards;
}
#stalker-transition.enter-bunker::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 50% 65%, rgba(255,159,67,0.24) 0%, rgba(255,159,67,0.09) 26%, transparent 54%),
    radial-gradient(ellipse at 50% 88%, rgba(255,159,67,0.05) 0%, transparent 62%),
    radial-gradient(ellipse at 50% 42%, rgba(255,185,110,0.035) 0%, transparent 38%);
  opacity: 0;
  will-change: opacity;
  transform: translateZ(0);
  backface-visibility: hidden;
  animation: bunker-enter-candle 2800ms cubic-bezier(.22,.6,.18,1) forwards;
}
@keyframes bunker-enter-dark {
  0% { opacity: 0; }
  8% { opacity: 1; }
  28% { opacity: 1; }
  82% { opacity: 1; }
  90% { opacity: 0.52; }
  96% { opacity: 0.18; }
  100% { opacity: 0; }
}
@keyframes bunker-enter-candle {
  0%, 30% { opacity: 0; }
  36% { opacity: 0.10; }
  42% { opacity: 0.22; }
  46% { opacity: 0.14; } /* лёгкий провал — фитиль схватывает */
  52% { opacity: 0.38; }
  57% { opacity: 0.28; }
  62% { opacity: 0.56; }
  67% { opacity: 0.48; }
  72% { opacity: 0.78; }
  76% { opacity: 0.68; }
  80% { opacity: 0.88; }
  84% { opacity: 0.72; }
  88% { opacity: 0.58; }
  93% { opacity: 0.32; }
  97% { opacity: 0.14; }
  100% { opacity: 0; }
}
/* Позади свеча — статичный тёплый фон без хаотичного мерцания */
html[data-stalker="bunker"] body::after {
  background:
    radial-gradient(ellipse at 50% 66%, rgba(255,159,67,0.042) 0%, transparent 44%),
    radial-gradient(ellipse at 50% 82%, rgba(255,159,67,0.022) 0%, transparent 52%),
    radial-gradient(ellipse at 50% 100%, rgba(255,159,67,0.014) 0%, transparent 50%),
    radial-gradient(ellipse at 50% 50%, transparent 54%, rgba(0,0,0,0.52) 100%);
  opacity: 0.96;
  animation: none;
}
html[data-stalker="bunker"] #stalker-fog {
  opacity: 0.40;
  animation: none;
}
html[data-stalker="bunker"] #stalker-fog span {
  animation-duration: 64s; /* медленный дрейф дымки */
  will-change: transform;
}
html[data-stalker="bunker"] #stalker-fog span:nth-child(2) { animation-duration: 60s; }
/* ВЫБРОС — красно-синий быстро нахлынул 0.75с */
#stalker-transition.enter-emission {
  background: #ffffff;
  animation: emission-enter 750ms cubic-bezier(.2,.9,.3,1) forwards;
}
@keyframes emission-enter {
  0% { opacity: 0; background: #000; }
  6% { opacity: 0.95; background: #ffffff; }
  14% { opacity: 1; background:
        radial-gradient(ellipse at 28% 30%, #ff2e2e 0%, #ff2e2e 16%, transparent 52%),
        radial-gradient(ellipse at 72% 68%, #3b82f6 0%, #60a5fa 16%, transparent 52%),
        radial-gradient(ellipse at 50% 50%, #1a0a2a 0%, #000 78%); }
  24% { opacity: 1; background: #000000; }
  32% { opacity: 0.92; background:
        radial-gradient(ellipse at 28% 32%, rgba(255,46,46,0.42) 0%, transparent 52%),
        radial-gradient(ellipse at 72% 68%, rgba(59,130,246,0.36) 0%, transparent 52%); }
  44% { opacity: 0.58; background:
        radial-gradient(ellipse at 28% 32%, rgba(255,46,46,0.16) 0%, transparent 50%),
        radial-gradient(ellipse at 72% 68%, rgba(59,130,246,0.14) 0%, transparent 50%); }
  62% { opacity: 0.18; background: transparent; }
  100% { opacity: 0; background: transparent; }
}
/* OFF — возврат к оригиналу, мягкое растворение 0.9с */
#stalker-transition.enter-off {
  background: rgba(10,10,10,0.72);
  backdrop-filter: blur(1px);
  animation: off-enter 900ms ease-out forwards;
}
@keyframes off-enter {
  0% { opacity: 0; }
  20% { opacity: 1; }
  100% { opacity: 0; backdrop-filter: blur(0); }
}

/* Постоянное мерцание ВЫБРОСА — лёгкий строб поверх темы */
html[data-stalker="emission"] body::after {
  animation: stalker-vignette-pulse 8s ease-in-out infinite, emission-flicker 3.3s steps(2) infinite;
}
html[data-stalker="emission"] #stalker-scanlines {
  animation: stalker-scan 12s linear infinite, emission-scan-flicker 2.1s steps(2) infinite;
}
@keyframes emission-flicker {
  0%, 90%, 100% { opacity: 1; }
  92% { opacity: 0.82; }
  93% { opacity: 1; }
  95% { opacity: 0.88; }
  96% { opacity: 1; }
}
@keyframes emission-scan-flicker {
  0%, 92%, 100% { opacity: 0.22; }
  93% { opacity: 0.42; }
  95% { opacity: 0.18; }
}
