/* effects.css — flashlight, animações de entrada/revelação e efeitos do demo KDS */

/* --- EFEITO FLASHLIGHT (borda e fundo que seguem o cursor) --- */
.flashlight-target {
  position: relative;
  overflow: hidden;
}

.flashlight-target::before {
  content: "";
  position: absolute;
  inset: -1px;
  background: radial-gradient(
    600px circle at var(--mouse-x, 0) var(--mouse-y, 0),
    rgba(255, 243, 133, 0.55),
    transparent 40%
  );
  border-radius: inherit;
  z-index: 0;
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}

.flashlight-target::after {
  content: "";
  position: absolute;
  inset: 1px;
  background: radial-gradient(
    800px circle at var(--mouse-x, 0) var(--mouse-y, 0),
    rgba(109, 142, 116, 0.05),
    transparent 40%
  );
  border-radius: inherit;
  z-index: 1;
  opacity: 0;
  transition: opacity 0.4s ease;
  pointer-events: none;
}

.flashlight-content {
  position: relative;
  z-index: 2;
  height: 100%;
  width: 100%;
  border-radius: inherit;
}

.flashlight-target:hover::before,
.flashlight-target:hover::after {
  opacity: 1;
}

/* --- ANIMAÇÕES DE ENTRADA --- */
.animate-blur-in {
  opacity: 0;
  filter: blur(12px);
  transform: translateY(20px);
  animation: blurFadeIn 1s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.animate-fade-in {
  opacity: 0;
  animation: simpleFadeIn 1s ease-out forwards;
}

.stagger-1 { animation-delay: 100ms; }
.stagger-2 { animation-delay: 200ms; }
.stagger-3 { animation-delay: 300ms; }
.stagger-4 { animation-delay: 400ms; }
.stagger-5 { animation-delay: 500ms; }
.stagger-6 { animation-delay: 600ms; }

/* --- REVELAÇÃO DE PALAVRAS (GSAP) — spans gerados em scroll-animations.js --- */
.gsap-reveal-wrapper {
  position: relative;
  display: inline-block;
  overflow: hidden;
  vertical-align: bottom;
  padding-bottom: 0.08em;
}

.gsap-word-reveal {
  display: inline-block;
  will-change: transform;
}

/* --- MARQUEE --- */
.marquee-track {
  animation: marquee 32s linear infinite;
}

/* --- DEMO KDS --- */
.kds-card {
  transition: border-color 0.4s ease, background-color 0.4s ease;
}

/* mesmas cores de urgência do KanbanCard do app */
.kds-card[data-urgency="normal"] { border-color: rgba(109, 142, 116, 0.55); background-color: #ffffff; }
.kds-card[data-urgency="warning"] { border-color: #EBD45A; background-color: #FFFBE0; }
.kds-card[data-urgency="urgent"] {
  border-color: #EF767A;
  background-color: #FDEEEE;
  animation: urgentPulse 1.6s ease-in-out infinite;
}

.kds-timer[data-urgency="normal"] { color: #557259; }
.kds-timer[data-urgency="warning"] { color: #A98A00; }
.kds-timer[data-urgency="urgent"] { color: #D95C61; font-weight: 700; }

.kds-new {
  animation: kdsIn 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.pulse-dot {
  animation: pulseDot 2s ease-in-out infinite;
}

@keyframes blurFadeIn {
  to { opacity: 1; filter: blur(0); transform: translateY(0); }
}

@keyframes simpleFadeIn {
  to { opacity: 1; }
}

@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@keyframes urgentPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239, 118, 122, 0); }
  50% { box-shadow: 0 0 0 4px rgba(239, 118, 122, 0.25); }
}

@keyframes kdsIn {
  from { opacity: 0; transform: translateY(-8px) scale(0.98); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes pulseDot {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.35; }
}

@media (prefers-reduced-motion: reduce) {
  .marquee-track,
  .kds-card[data-urgency="urgent"],
  .pulse-dot { animation: none; }
}
