﻿/* ============================================
   SKITZO//WARE — Animations
   ============================================ */

/* ── Glitch Text Effect ── */
.glitch {
  position: relative;
  display: inline-block;
}

.glitch::before,
.glitch::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  line-height: inherit;
}

.glitch::before {
  color: var(--arterial-red);
  animation: glitchTop 4s infinite;
  clip-path: polygon(0 0, 100% 0, 100% 40%, 0 40%);
  transform: translate(-2px, 0);
}

.glitch::after {
  color: var(--chrome);
  animation: glitchBottom 4s infinite;
  clip-path: polygon(0 60%, 100% 60%, 100% 100%, 0 100%);
  transform: translate(2px, 0);
}

@keyframes glitchTop {
  0%, 85%, 92%, 100% {
    opacity: 0;
    transform: translate(0, 0);
  }
  86% {
    opacity: 1;
    transform: translate(-3px, -2px);
  }
  88% {
    opacity: 0.8;
    transform: translate(2px, 1px);
  }
  90% {
    opacity: 1;
    transform: translate(-2px, 0);
  }
  91% {
    opacity: 0;
  }
}

@keyframes glitchBottom {
  0%, 87%, 94%, 100% {
    opacity: 0;
    transform: translate(0, 0);
  }
  88% {
    opacity: 1;
    transform: translate(3px, 2px);
  }
  91% {
    opacity: 0.7;
    transform: translate(-2px, -1px);
  }
  93% {
    opacity: 1;
    transform: translate(2px, 0);
  }
  94% {
    opacity: 0;
  }
}

/* ── Scanline flicker ── */
@keyframes scanline {
  0%   { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}

.scanline-overlay {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: linear-gradient(transparent, rgba(255,255,255,0.04), transparent);
  pointer-events: none;
  z-index: 9998;
  animation: scanline 8s linear infinite;
  opacity: 0.5;
}

/* ── Letter scramble (JS-driven, class toggled) ── */
.scrambling {
  color: var(--arterial-red) !important;
}

/* ── Fade in up ── */
.fade-up {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.fade-up.visible {
  opacity: 1;
  transform: translateY(0);
}

.fade-up-delay-1 { transition-delay: 0.1s; }
.fade-up-delay-2 { transition-delay: 0.2s; }
.fade-up-delay-3 { transition-delay: 0.3s; }
.fade-up-delay-4 { transition-delay: 0.4s; }
.fade-up-delay-5 { transition-delay: 0.5s; }

/* ── Reveal from left ── */
.reveal-left {
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity 0.8s ease, transform 0.8s ease;
}

.reveal-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* ── Stagger children ── */
.stagger-children > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.5s ease, transform 0.5s ease;
}

.stagger-children.visible > *:nth-child(1) { opacity: 1; transform: none; transition-delay: 0s; }
.stagger-children.visible > *:nth-child(2) { opacity: 1; transform: none; transition-delay: 0.1s; }
.stagger-children.visible > *:nth-child(3) { opacity: 1; transform: none; transition-delay: 0.2s; }
.stagger-children.visible > *:nth-child(4) { opacity: 1; transform: none; transition-delay: 0.3s; }
.stagger-children.visible > *:nth-child(5) { opacity: 1; transform: none; transition-delay: 0.4s; }
.stagger-children.visible > *:nth-child(6) { opacity: 1; transform: none; transition-delay: 0.5s; }

/* ── Static burst (on hover, JS adds class) ── */
@keyframes staticBurst {
  0%   { filter: none; }
  10%  { filter: brightness(1.3) contrast(2) saturate(0); transform: translate(2px, -1px); }
  20%  { filter: none; transform: translate(-1px, 2px); }
  30%  { filter: brightness(0.7) contrast(1.5); transform: translate(1px, -2px); }
  40%  { filter: none; transform: translate(0); }
  100% { filter: none; transform: translate(0); }
}

.static-burst {
  animation: staticBurst 0.3s ease forwards;
}

/* ── Red pulse ── */
@keyframes redPulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.5; }
}

.pulse-red {
  animation: redPulse 2s ease-in-out infinite;
  color: var(--arterial-red);
}

/* ── Typewriter cursor ── */
.typewriter-cursor::after {
  content: '_';
  animation: blink 1s step-end infinite;
  color: var(--arterial-red);
}

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

/* ── Number counter (animated by JS) ── */
.counter {
  display: inline-block;
  font-variant-numeric: tabular-nums;
}

/* ── Progress bar fill ── */
.progress-bar {
  height: 1px;
  background: var(--border-gray);
  overflow: hidden;
  margin-top: 0.5rem;
}

.progress-fill {
  height: 100%;
  background: var(--arterial-red);
  width: 0%;
  transition: width 1.5s ease;
}

/* ── Lookbook parallax overlay text ── */
@keyframes textFlicker {
  0%, 94%, 96%, 100% { opacity: 1; }
  95% { opacity: 0.4; }
}

.flicker-text {
  animation: textFlicker 6s ease-in-out infinite;
}

/* ── Noise pulse (for hero background) ── */
@keyframes noisePulse {
  0%, 100% { opacity: 0.035; }
  50%       { opacity: 0.05;  }
}

#noise-canvas {
  animation: noisePulse 4s ease-in-out infinite;
}

/* ── Warning label pulse ── */
@keyframes warnPulse {
  0%, 100% { border-color: var(--arterial-red); }
  50%       { border-color: transparent; }
}

.warning-label {
  font-family: var(--font-body);
  font-size: 0.6rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--arterial-red);
  border: 1px solid var(--arterial-red);
  padding: 0.3rem 0.8rem;
  display: inline-block;
  animation: warnPulse 3s ease-in-out infinite;
}

/* ── Page transition ── */
.page-transition-out {
  animation: pageOut 0.3s ease forwards;
}

@keyframes pageOut {
  0%   { opacity: 1; transform: none; }
  50%  { filter: brightness(2) saturate(0); }
  100% { opacity: 0; transform: translateY(-10px); }
}

/* ── Image noise overlay (SVG filter) ── */
.img-grain {
  filter: url(#grain);
}

/* ── Distort text ── */
@keyframes distortX {
  0%, 88%, 100% { letter-spacing: inherit; }
  89% { letter-spacing: 0.3em; filter: blur(1px); }
  91% { letter-spacing: -0.03em; filter: none; }
}

.distort-text {
  animation: distortX 7s ease-in-out infinite;
}

/* ── Horizontal marquee ── */
.marquee-track {
  display: flex;
  overflow: hidden;
  white-space: nowrap;
}

.marquee-inner {
  display: flex;
  animation: marquee 20s linear infinite;
  gap: 0;
}

.marquee-inner.slow {
  animation-duration: 35s;
}

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

.marquee-item {
  flex: 0 0 auto;
  font-family: var(--font-display);
  font-size: 1rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--ash-gray);
  padding: 1.5rem 3rem;
  border-right: 1px solid var(--border-gray);
  display: flex;
  align-items: center;
  gap: 3rem;
}

.marquee-item span.dot {
  display: inline-block;
  width: 4px;
  height: 4px;
  background: var(--arterial-red);
  border-radius: 50%;
}
