/* ==========================================================================
   DANDI STUDIO — Retro / CRT Effects
   ========================================================================== */

/* --------------------------------------------------------------------------
   CRT Scanlines — overlaid on every page via body::after
   -------------------------------------------------------------------------- */
body::after {
  content:  '';
  position: fixed;
  top:      0;
  left:     0;
  width:    100%;
  height:   100%;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0, 0, 0, 0.10) 2px,
    rgba(0, 0, 0, 0.10) 4px
  );
  pointer-events: none;
  z-index: 9998;
}

/* --------------------------------------------------------------------------
   Blinking cursor / element
   -------------------------------------------------------------------------- */
@keyframes blink {
  0%,  49% { opacity: 1; }
  50%, 100% { opacity: 0; }
}

.blink {
  animation: blink 1s step-end infinite;
}

/* Blinking block cursor appended via pseudo-element */
.cursor::after {
  content: '█';
  animation: blink 1s step-end infinite;
  color: var(--green);
  margin-left: 2px;
}

/* --------------------------------------------------------------------------
   Slide-down reveal (used for mascot nav)
   -------------------------------------------------------------------------- */
@keyframes slide-down {
  from {
    opacity:   0;
    transform: translateY(-6px);
  }
  to {
    opacity:   1;
    transform: translateY(0);
  }
}

.slide-down {
  animation: slide-down 0.15s steps(3) forwards;
}

/* --------------------------------------------------------------------------
   Fade-in
   -------------------------------------------------------------------------- */
@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

.fade-in {
  animation: fade-in 0.3s ease-out forwards;
}

/* --------------------------------------------------------------------------
   Error flash (red text blinks briefly)
   -------------------------------------------------------------------------- */
@keyframes error-flash {
  0%,  100% { color: var(--red);  opacity: 1; }
  33%, 66%  { color: var(--red);  opacity: 0; }
}

.error-flash {
  animation: error-flash 0.5s steps(2) forwards;
}

/* --------------------------------------------------------------------------
   Pixel-border pop-in (for cards / panels)
   -------------------------------------------------------------------------- */
@keyframes pixel-pop {
  from {
    transform: scale(0.94);
    opacity:   0;
  }
  to {
    transform: scale(1);
    opacity:   1;
  }
}

.pixel-pop {
  animation: pixel-pop 0.2s steps(4) forwards;
}

/* --------------------------------------------------------------------------
   Phosphor glow pulse (optional ambient effect on green elements)
   -------------------------------------------------------------------------- */
@keyframes phosphor-pulse {
  0%,  100% { text-shadow: 0 0 6px var(--green), 0 0 12px var(--green-dim); }
  50%       { text-shadow: 0 0 10px var(--green), 0 0 20px var(--green-dim); }
}

.phosphor-pulse {
  animation: phosphor-pulse 3s ease-in-out infinite;
}
