/* ============================================================
   OwOTel Part 3 — Animations & Interactions
   "CHAOS MAXIMUM~! ✨ UwU~! Desu~!"
   ============================================================ */

/* ——— Scroll Reveal ——— */
.scroll-reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.7s cubic-bezier(0.22, 0.61, 0.35, 1),
              transform 0.7s cubic-bezier(0.22, 0.61, 0.35, 1);
}

.scroll-reveal.revealed {
  opacity: 1;
  transform: translateY(0);
}

.scroll-reveal-left {
  opacity: 0;
  transform: translateX(-50px);
  transition: opacity 0.7s cubic-bezier(0.22, 0.61, 0.35, 1),
              transform 0.7s cubic-bezier(0.22, 0.61, 0.35, 1);
}

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

.scroll-reveal-scale {
  opacity: 0;
  transform: scale(0.85);
  transition: opacity 0.7s cubic-bezier(0.22, 0.61, 0.35, 1),
              transform 0.7s cubic-bezier(0.22, 0.61, 0.35, 1);
}

.scroll-reveal-scale.revealed {
  opacity: 1;
  transform: scale(1);
}

/* ——— Enhanced Card Hover (juicy!) ——— */
.enhanced-card:hover {
  transform: translateY(-15px) scale(1.03) rotate(2deg);
  box-shadow:
    0 20px 60px rgba(255, 105, 180, 0.4),
    inset 0 0 30px rgba(255, 105, 180, 0.15);
  border-color: #FF69B4;
}

/* ——— Enhanced Button Hover ——— */
.enhanced-btn:hover {
  transform: translateY(-8px) scale(1.05);
  box-shadow:
    0 0 50px rgba(255, 105, 180, 0.9),
    0 0 80px rgba(255, 105, 180, 0.5);
  background: linear-gradient(45deg, #FF69B4, #FF1493);
}

/* ——— Floating Orbs (background magic) ——— */
.floating-orbs {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: -1;
  overflow: hidden;
}

.orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  opacity: 0.35;
  animation: floatOrb 15s ease-in-out infinite;
}

.orb-1 {
  width: 400px;
  height: 400px;
  background: rgba(255, 105, 180, 0.25);
  top: -100px;
  left: -100px;
}

.orb-2 {
  width: 500px;
  height: 500px;
  background: rgba(157, 78, 221, 0.25);
  bottom: -150px;
  right: -150px;
  animation-delay: -5s;
}

.orb-3 {
  width: 350px;
  height: 350px;
  background: rgba(157, 78, 221, 0.2);
  top: 50%;
  left: 60%;
  animation-delay: -10s;
}

@keyframes floatOrb {
  0%, 100% { transform: translate(0, 0) scale(1); }
  25%      { transform: translate(30px, -30px) scale(1.1); }
  50%      { transform: translate(-20px, 20px) scale(0.9); }
  75%      { transform: translate(-30px, -20px) scale(1.05); }
}

/* ——— Particle Background ——— */
.particles-container {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: -1;
  overflow: hidden;
}

.particle {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 105, 180, 0.5), transparent);
  animation: particleFloat 20s ease-in-out infinite;
}

@keyframes particleFloat {
  0%, 100%   { transform: translateY(0) translateX(0); }
  25%        { transform: translateY(-30px) translateX(20px); }
  50%        { transform: translateY(-60px) translateX(-10px); }
  75%        { transform: translateY(-30px) translateX(15px); }
}

/* ——— Marquee (scrolling text) ——— */
.marquee-section {
  padding: 3rem 0;
  background: linear-gradient(90deg, #FF69B4 0%, #9D4EDD 50%, #FF69B4 100%);
  overflow: hidden;
}

.marquee-container {
  display: flex;
  width: fit-content;
  animation: marqueeScroll 25s linear infinite;
}

.marquee-content {
  display: flex;
  gap: 4rem;
  white-space: nowrap;
  padding: 0 2rem;
}

.marquee-item {
  font-family: 'Montserrat', sans-serif;
  font-size: 1.3rem;
  font-weight: 700;
  color: #fff;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
  padding: 0 4rem;
}

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

/* ——— Scroll Progress Indicator ——— */
.scroll-progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  z-index: 1000;
  border-radius: 0 0 2px 2px;
}

.scroll-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, #FF69B4, #9D4EDD, #FF1493, #FF69B4);
  background-size: 200% 100%;
  animation: progressShine 3s linear infinite;
  width: 0%;
  transition: width 0.1s ease;
  border-radius: 2px;
}

@keyframes progressShine {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

/* ——— Sparkles (fixed corners) ——— */
body.sparkles-enabled::before,
body.sparkles-enabled::after {
  z-index: 100;
}

/* ——— Staggered children ——— */
.stagger-grid .stagger-child:nth-child(1) { transition-delay: 0s; }
.stagger-grid .stagger-child:nth-child(2) { transition-delay: 0.1s; }
.stagger-grid .stagger-child:nth-child(3) { transition-delay: 0.2s; }
.stagger-grid .stagger-child:nth-child(4) { transition-delay: 0.3s; }
.stagger-grid .stagger-child:nth-child(5) { transition-delay: 0.4s; }
.stagger-grid .stagger-child:nth-child(6) { transition-delay: 0.5s; }
.stagger-grid .stagger-child:nth-child(7) { transition-delay: 0.6s; }
.stagger-grid .stagger-child:nth-child(8) { transition-delay: 0.7s; }

/* ——— Shimmer / Glow Pulse ——— */
.shimmer-glow {
  animation: shimmerPulse 3s ease-in-out infinite;
}

@keyframes shimmerPulse {
  0%, 100% {
    box-shadow: 0 0 20px rgba(255, 105, 180, 0.4),
                inset 0 1px 0 rgba(255, 255, 255, 0.2);
  }
  50% {
    box-shadow: 0 0 40px rgba(255, 105, 180, 0.7),
                inset 0 1px 0 rgba(255, 255, 255, 0.4),
                0 0 60px rgba(157, 78, 221, 0.3);
  }
}

/* ——— Ripple Effect ——— */
.ripple-btn {
  position: relative;
  overflow: hidden;
}

.ripple-btn::after {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.4) 10%, transparent 70%);
  transform: scale(0);
  opacity: 0;
  transition: transform 0.5s, opacity 0.5s;
  border-radius: 50%;
}

.ripple-btn:hover::after {
  transform: scale(2.5);
  opacity: 1;
  transition: transform 0.8s, opacity 0.8s;
}

/* ——— Tablet Adjustments (Part 5!) ——— */
@media (min-width: 768px) and (max-width: 1024px) {
  .cards, .grid { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ——— Sparkles: float + twinkle combo (Part 8!) ——— */
body.sparkles-enabled::before {
  top: 10%;
  left: 20%;
  font-size: 2rem;
  animation: sparkleFloat 4s ease-in-out infinite, twinkle 3s infinite;
}

body.sparkles-enabled::after {
  bottom: 15%;
  right: 15%;
  font-size: 2rem;
  animation: sparkleFloat 5s ease-in-out infinite reverse, twinkle 4s infinite;
}

@keyframes sparkleFloat {
  0%, 100% { transform: translateY(0) scale(1); }
  25%      { transform: translateY(-20px) scale(1.1); }
  50%      { transform: translateY(-40px) scale(0.9); }
  75%      { transform: translateY(-20px) scale(1.05); }
}

/* ——— Responsive ——— */
@media (max-width: 768px) {
  .scroll-reveal { transform: translateY(25px); }
  .scroll-reveal-left { transform: translateX(-30px); }
  .scroll-reveal-scale { transform: scale(0.9); }

  .enhanced-card:hover {
    transform: translateY(-8px) scale(1.01);
    box-shadow: 0 15px 40px rgba(255, 105, 180, 0.3);
  }
  .enhanced-btn:hover {
    transform: translateY(-4px) scale(1.02);
    box-shadow: 0 0 30px rgba(255, 105, 180, 0.7);
  }

  .orb { filter: blur(50px); opacity: 0.25; }
  .orb-1, .orb-2, .orb-3 { width: 250px; height: 250px; }
  .marquee-item { font-size: 1rem; padding: 0 2rem; }
}
