/* ==================== FADE ПЕРЕХОДЫ МЕЖДУ СТРАНИЦАМИ ==================== */

/* Затемнение при загрузке страницы */
body {
  position: relative;
}

body::after {
  content: '';
  position: fixed;
  inset: 0;
  background: #000;
  z-index: 9999; /* Ниже splash screen (10000) */
  pointer-events: none;
  opacity: 0; /* По умолчанию прозрачное */
  transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Убираем затемнение когда страница загружена */
body.page-loaded::after {
  opacity: 0;
}

/* Добавляем затемнение при переходе на другую страницу */
body.page-transitioning::after {
  opacity: 1;
  z-index: 99999; /* Поднимаем выше всего при переходе */
  transition: opacity 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

/* При загрузке - затемнение НИЖЕ splash screen */
body.page-loading::after {
  opacity: 1;
  z-index: 9999; /* Ниже splash screen */
}

/* ==================== КУРСОР ==================== */

/* Кастомный SVG курсор - улучшенная версия со свечением */
body {
  cursor: url('../repository/cursor/cursor.svg') 12 12, auto !important;
}

/* Универсальное правило для ВСЕХ элементов */
* {
  cursor: url('../repository/cursor/cursor.svg') 12 12, auto !important;
  /* Улучшенный рендеринг SVG */
  image-rendering: -webkit-optimize-contrast;
  image-rendering: crisp-edges;
}

/* Hover эффект для интерактивных элементов */
a, button, .card, .skill, .badge, .player-btn, .volume-slider, .volume-slider::-webkit-slider-thumb, .volume-slider::-moz-range-thumb, 
.back-btn, .enter-btn, .contact-btn, .star-pack, .service-card, .model-card,
input[type="button"], input[type="submit"], input[type="reset"] {
  cursor: url('../repository/cursor/cursor.svg') 12 12, pointer !important;
}

/* Скрытие на сенсорных устройствах */
@media (hover: none) and (pointer: coarse) {
  body {
    cursor: auto;
  }
  
  a, button, .card, .skill, .badge, .player-btn, .volume-slider, .volume-slider::-webkit-slider-thumb, .volume-slider::-moz-range-thumb {
    cursor: pointer;
  }
}

/* Снежинки */
.snowflake {
  position: fixed;
  top: -15px;
  width: 5px;
  height: 5px;
  background: radial-gradient(circle, rgba(255,255,255,0.9) 0%, rgba(255,255,255,0.4) 100%);
  border-radius: 50%;
  pointer-events: none;
  z-index: var(--z-base, 0);
  animation: fall linear infinite;
  will-change: transform;
  transform: translateZ(0);
}

@keyframes fall {
  0% { 
    transform: translateY(-10px) translateZ(0); 
    opacity: 0.9; 
  }
  100% { 
    transform: translateY(110vh) translateZ(0); 
    opacity: 0.3; 
  }
}

/* ==================== МЕДИА-ЗАПРОСЫ ==================== */

/* Отключение эффектов на мобильных для производительности */
@media (max-width: 480px) {
  /* Полное отключение кастомного курсора на мобильных */
  body { 
    cursor: auto;
  }
  
  a, button, .card, .skill, .badge, .player-btn, .volume-slider, .volume-slider::-webkit-slider-thumb, .volume-slider::-moz-range-thumb {
    cursor: pointer;
  }
  
  /* Уменьшаем количество снежинок через CSS */
  .snowflake:nth-child(n+31) {
    display: none;
  }
}

/* Отключение эффектов для prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .snowflake {
    animation: none;
    display: none;
  }
}