body.torch-active, body.torch-active a, body.torch-active button,
body.torch-active input, body.torch-active textarea, body.torch-active select { cursor: none; }

#torch-glow {
  position: fixed;
  left: 0;
  top: 0;
  width: 460px;
  height: 460px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 201;
  opacity: 0;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(253,135,3,.18) 0%, rgba(253,135,3,.07) 36%, transparent 70%);
  mix-blend-mode: screen;
  transition: opacity .35s ease;
}

#torch-cursor {
  position: fixed;
  left: 0;
  top: 0;
  width: 0;
  height: 0;
  pointer-events: none;
  z-index: 1000;
  opacity: 0;
  transform: translate(-50%, -50%);
  transition: opacity .35s ease;
}

#torch-cursor.torch-hidden, #torch-glow.torch-hidden { opacity: 0 !important; }
#torch-cursor.torch-enter svg { animation: torch-enter .5s ease-out; }
#torch-cursor.torch-exit svg { animation: torch-exit .28s ease-in forwards; }
#torch-cursor svg { position: absolute; left: -16px; top: -40px; filter: drop-shadow(0 0 7px var(--naranja)) drop-shadow(0 0 18px rgba(253,135,3,.5)); }
#torch-cursor .torch-flame-outer { transform-origin: 50% 90%; animation: torch-flicker-outer .5s ease-in-out infinite; }
#torch-cursor .torch-flame-inner { transform-origin: 50% 90%; animation: torch-flicker-inner .34s ease-in-out infinite; }
#torch-cursor.torch-flare svg { animation: torch-pulse .6s ease-out; }
#torch-cursor.torch-flare .torch-flame-outer { animation: flare-outer .16s ease-in-out infinite; }
#torch-cursor.torch-flare .torch-flame-inner { animation: flare-inner .12s ease-in-out infinite; }
#torch-glow.torch-flare { animation: glow-flare .6s ease-out; }
.torch-lit { text-shadow: 0 0 12px rgba(255,211,122,.65), 0 0 24px rgba(253,135,3,.35); }

@keyframes torch-flicker-outer { 0%,100% { transform: scale(1,1) skewX(0deg); } 25% { transform: scale(.93,1.06) skewX(-3deg); } 50% { transform: scale(1.06,.95) skewX(2deg); } 75% { transform: scale(.96,1.03) skewX(-1.5deg); } }
@keyframes torch-flicker-inner { 0%,100% { transform: scale(1,1) skewX(0deg); } 30% { transform: scale(1.08,.92) skewX(2.5deg); } 60% { transform: scale(.92,1.08) skewX(-2deg); } }
@keyframes torch-pulse { 0% { transform: scale(1); } 15% { transform: scale(1.4); } 40% { transform: scale(1.1); } 100% { transform: scale(1); } }
@keyframes flare-outer { 0%,100% { transform: scale(1,1) skewX(0deg); } 25% { transform: scale(.82,1.22) skewX(-8deg); } 50% { transform: scale(1.22,.82) skewX(7deg); } 75% { transform: scale(.88,1.15) skewX(-5deg); } }
@keyframes flare-inner { 0%,100% { transform: scale(1,1) skewX(0deg); } 30% { transform: scale(1.28,.78) skewX(7deg); } 60% { transform: scale(.78,1.28) skewX(-6deg); } }
@keyframes glow-flare { 0%,100% { transform: translate(-50%,-50%) scale(1); } 15% { transform: translate(-50%,-50%) scale(1.4); } }
@keyframes torch-enter { 0% { opacity: 0; transform: scale(.45) rotate(-18deg); } 65% { opacity: 1; transform: scale(1.12) rotate(4deg); } 100% { opacity: 1; transform: scale(1) rotate(0); } }
@keyframes torch-exit { 0% { opacity: 1; transform: scale(1) rotate(0); } 100% { opacity: 0; transform: scale(.5) rotate(15deg); } }

.torch-spark { position: fixed; width: 4px; height: 4px; border-radius: 50%; background: #FFD37A; box-shadow: 0 0 7px var(--naranja); pointer-events: none; z-index: 1001; animation: spark-rise .8s ease-out forwards; }
@keyframes spark-rise { 0% { opacity: 1; transform: translate(-50%,-50%) translate(0,0) scale(1); } 100% { opacity: 0; transform: translate(-50%,-50%) translate(var(--spark-x),var(--spark-y)) scale(.3); } }

@media (prefers-reduced-motion: reduce) { #torch-glow, #torch-cursor { display: none; } }
