/* Assassin Gym staging core: progressive enhancement, accessibility, and safe fallbacks. */

body {
  cursor: auto !important;
}

#cursor-ring,
#cursor-dot {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  border-radius: 50%;
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, -50%);
  z-index: 9999;
}

#cursor-ring {
  width: 40px;
  height: 40px;
  border: 1.5px solid #dc2626;
  mix-blend-mode: difference;
  transition: width 0.2s ease, height 0.2s ease, background 0.2s ease, opacity 0.2s ease;
}

#cursor-dot {
  width: 6px;
  height: 6px;
  background: #dc2626;
  z-index: 10000;
}

html.custom-cursor-enabled body {
  cursor: none !important;
}

html.custom-cursor-enabled #cursor-ring,
html.custom-cursor-enabled #cursor-dot {
  opacity: 1;
  visibility: visible;
}

/* Content is visible by default. JavaScript adds reveal-pending only after successful init. */
.reveal,
.reveal-left,
.reveal-right {
  opacity: 1 !important;
  transform: none !important;
}

.reveal-pending.reveal {
  opacity: 0 !important;
  transform: translateY(28px) !important;
}

.reveal-pending.reveal-left {
  opacity: 0 !important;
  transform: translateX(-32px) skewX(-2deg) !important;
}

.reveal-pending.reveal-right {
  opacity: 0 !important;
  transform: translateX(32px) skewX(2deg) !important;
}

.is-visible {
  opacity: 1 !important;
  transform: none !important;
}

.hero-content,
.hero-panel {
  opacity: 1 !important;
  transform: none !important;
  visibility: visible !important;
}

#vibe-3d-scene {
  contain: strict;
  opacity: 0;
  transition: opacity 0.8s ease;
}

#vibe-3d-scene.engine-active {
  opacity: 0.48;
}

#vibe-3d-scene canvas {
  display: block;
  width: 100%;
  height: 100%;
}

:focus-visible {
  outline: 2px solid #f87171;
  outline-offset: 3px;
}

@media (hover: none), (pointer: coarse), (prefers-reduced-motion: reduce) {
  html.custom-cursor-enabled body {
    cursor: auto !important;
  }

  #cursor-ring,
  #cursor-dot {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-pending,
  .is-visible,
  .hero-content,
  .hero-panel {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  #vibe-3d-scene {
    display: none !important;
  }
}
