/* ═══════════════════════════════════════════════════════════════════════
   TIGRE NINJA · EFFECTS.CSS
   Efectos atmosféricos comunes: cursor, kanji de fondo, sakura, lluvia de
   cometas, reveal-on-scroll y respeto a prefers-reduced-motion.
   ═══════════════════════════════════════════════════════════════════════ */


/* ── CURSOR PERSONALIZADO ─────────────────────────────────────────────── */
#cur{
  position:fixed;z-index:9999;
  width:24px;height:24px;
  pointer-events:none;
  transform:translate(-50%,-50%);
  transition:transform .08s;
}
#cur::before{
  content:'';position:absolute;inset:0;
  border:1.5px solid var(--crimson);border-radius:50%;
  box-shadow:0 0 10px var(--crimson),inset 0 0 6px rgba(232,0,28,.3);
  animation:curPulse 2s ease infinite;
}
#cur::after{
  content:'';position:absolute;
  width:4px;height:4px;background:var(--neon);border-radius:50%;
  top:50%;left:50%;transform:translate(-50%,-50%);
  box-shadow:var(--glow-n);
}
@keyframes curPulse{0%,100%{opacity:1}50%{opacity:.4}}

/* En táctiles el cursor falso estorba: oculto y devuelvo el del sistema. */
@media (hover:none),(pointer:coarse){
  body{cursor:auto;}
  #cur{display:none;}
}


/* ── KANJI DE FONDO (atmósfera oculta, se enciende con pulseKanji) ────── */
.kanji-bg{
  position:fixed;z-index:30;
  font-family:serif;
  pointer-events:none;user-select:none;
  opacity:0;line-height:1;
  filter:blur(.2px) drop-shadow(0 0 18px currentColor);
  mix-blend-mode:screen;
  transform:scale(.96);
  transition:opacity .7s ease,transform .7s ease;
}
body.show-kanji .kanji-bg{
  opacity:.045;transform:scale(1);
  animation:kanjiBreath 4.5s ease-in-out infinite alternate;
}
@keyframes kanjiBreath{
  from{filter:blur(.2px) drop-shadow(0 0 10px currentColor)}
  to  {filter:blur(.4px) drop-shadow(0 0 26px currentColor)}
}


/* ── PÉTALOS DE SAKURA ────────────────────────────────────────────────── */
.sakura{
  position:fixed;pointer-events:none;
  z-index:40;
  width:8px;height:8px;
  border-radius:50% 0;transform:rotate(45deg);
  opacity:0;
  filter:drop-shadow(0 0 4px rgba(255,183,197,.22));
  animation:sakuraFall linear forwards;
}
@keyframes sakuraFall{
  0%  {opacity:.45;transform:rotate(0deg) translateY(-20px)}
  100%{opacity:0;  transform:rotate(360deg) translateY(105vh)}
}


/* ── SALVAPANTALLAS: LLUVIA DE COMETAS POR INACTIVIDAD ────────────────── */
.comet-rain{
  position:fixed;inset:0;z-index:850;
  pointer-events:none;overflow:hidden;
  opacity:0;transition:opacity .9s ease;
}
.comet-rain.on{opacity:1;}
.comet{
  position:absolute;top:0;left:0;
  width:1px;height:clamp(46px,8vh,86px);
  border-radius:999px;
  background:linear-gradient(to bottom,transparent,rgba(237,228,206,.62),rgba(155,48,255,.20),transparent);
  filter:drop-shadow(0 0 8px rgba(155,48,255,.28));
  animation:cometFall var(--dur,2s) linear forwards;
}
@keyframes cometFall{
  0%  {opacity:0;  transform:translate3d(var(--x,50vw),-14vh,0) rotate(18deg)}
  12% {opacity:.72}
  100%{opacity:0;  transform:translate3d(calc(var(--x,50vw) - 24vw),112vh,0) rotate(18deg)}
}


/* ── REVEAL ON SCROLL ─────────────────────────────────────────────────── */
.r{opacity:0;transform:translateY(20px);transition:opacity .65s ease,transform .65s ease;}
.r.v{opacity:1;transform:translateY(0);}


/* ── RESPETO A PREFERENCIAS DE ACCESIBILIDAD ──────────────────────────── */
@media (prefers-reduced-motion:reduce){
  .sakura,.comet{animation:none;display:none;}
  .comet-rain{display:none;}
  .r{opacity:1;transform:none;}
  .kanji-bg{animation:none;}
}
