/* ==========================================================================
   🌈 RAINBOW.CSS — Palette, Gradients, Utilities & Animations
   ========================================================================== */

/* ══════════════════════════════════════════════════════════════════════════
   ANIMATED GRADIENT BACKGROUNDS
   ══════════════════════════════════════════════════════════════════════════ */

@keyframes rainbowShift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

@keyframes rainbowGlow {
  0%, 100% { box-shadow: 0 0 20px rgba(255, 59, 92, 0.3), 0 0 40px rgba(6, 214, 160, 0.15); }
  33%      { box-shadow: 0 0 20px rgba(255, 209, 102, 0.3), 0 0 40px rgba(17, 138, 178, 0.15); }
  66%      { box-shadow: 0 0 20px rgba(123, 45, 142, 0.3), 0 0 40px rgba(255, 140, 66, 0.15); }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInScale {
  from {
    opacity: 0;
    transform: scale(0.92);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes slideInLeft {
  from {
    opacity: 0;
    transform: translateX(-40px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes pulseGlow {
  0%, 100% { opacity: 0.6; }
  50%      { opacity: 1; }
}

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}

/* ══════════════════════════════════════════════════════════════════════════
   UTILITY CLASSES — Backgrounds
   ══════════════════════════════════════════════════════════════════════════ */

.rainbow-bg {
  background: var(--rainbow-gradient);
  background-size: 300% 300%;
  animation: rainbowShift 8s ease infinite;
}

.rainbow-bg-soft {
  background: var(--rainbow-gradient-soft);
}

.rainbow-bg-red    { background-color: var(--rainbow-red-light); }
.rainbow-bg-orange { background-color: var(--rainbow-orange-light); }
.rainbow-bg-yellow { background-color: var(--rainbow-yellow-light); }
.rainbow-bg-green  { background-color: var(--rainbow-green-light); }
.rainbow-bg-blue   { background-color: var(--rainbow-blue-light); }
.rainbow-bg-violet { background-color: var(--rainbow-violet-light); }

/* Solid backgrounds */
.rainbow-bg-red-solid    { background-color: var(--rainbow-red); color: var(--white); }
.rainbow-bg-orange-solid { background-color: var(--rainbow-orange); color: var(--white); }
.rainbow-bg-yellow-solid { background-color: var(--rainbow-yellow); color: var(--neutral-950); }
.rainbow-bg-green-solid  { background-color: var(--rainbow-green); color: var(--white); }
.rainbow-bg-blue-solid   { background-color: var(--rainbow-blue); color: var(--white); }
.rainbow-bg-violet-solid { background-color: var(--rainbow-violet); color: var(--white); }

/* ══════════════════════════════════════════════════════════════════════════
   UTILITY CLASSES — Text
   ══════════════════════════════════════════════════════════════════════════ */

.rainbow-text {
  background: var(--rainbow-gradient);
  background-size: 300% 300%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: rainbowShift 6s ease infinite;
}

.rainbow-text-static {
  background: var(--rainbow-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.text-red    { color: var(--rainbow-red); }
.text-orange { color: var(--rainbow-orange); }
.text-yellow { color: var(--rainbow-yellow); }
.text-green  { color: var(--rainbow-green); }
.text-blue   { color: var(--rainbow-blue); }
.text-violet { color: var(--rainbow-violet); }

/* ══════════════════════════════════════════════════════════════════════════
   UTILITY CLASSES — Borders & Decorative
   ══════════════════════════════════════════════════════════════════════════ */

.rainbow-border {
  border: 3px solid transparent;
  background-clip: padding-box;
  position: relative;
}

.rainbow-border::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: var(--rainbow-gradient-horizontal);
  z-index: -1;
}

.rainbow-border-top {
  border-top: 4px solid transparent;
  border-image: var(--rainbow-gradient-horizontal) 1;
}

.rainbow-border-bottom {
  border-bottom: 4px solid transparent;
  border-image: var(--rainbow-gradient-horizontal) 1;
}

/* Decorative line separator */
.rainbow-divider {
  height: 4px;
  background: var(--rainbow-gradient-horizontal);
  border: none;
  border-radius: var(--radius-full);
  margin: var(--size-2xl) auto;
  max-width: 200px;
}

.rainbow-divider-full {
  height: 4px;
  background: var(--rainbow-gradient-horizontal);
  border: none;
  border-radius: 0;
  margin: 0;
  max-width: 100%;
}

/* ══════════════════════════════════════════════════════════════════════════
   BUTTONS — Rainbow Styles
   ══════════════════════════════════════════════════════════════════════════ */

.btn-rainbow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 0.9rem 2.4rem;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: var(--white);
  background: var(--rainbow-gradient);
  background-size: 300% 300%;
  border: none;
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: all var(--transition-normal);
  animation: rainbowShift 6s ease infinite;
  box-shadow: var(--shadow-rainbow);
  text-decoration: none;
  letter-spacing: 0.02em;
}

.btn-rainbow:hover {
  transform: translateY(-3px) scale(1.03);
  box-shadow: var(--shadow-xl);
  color: var(--white);
  animation: rainbowShift 3s ease infinite;
}

.btn-rainbow:active {
  transform: translateY(-1px) scale(0.98);
}

.btn-rainbow-outline {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  padding: 0.85rem 2.2rem;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 1rem;
  color: var(--neutral-900);
  background: var(--white);
  border: 3px solid transparent;
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: all var(--transition-normal);
  text-decoration: none;
  position: relative;
  z-index: 0;
}

.btn-rainbow-outline::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: var(--rainbow-gradient-horizontal);
  z-index: -1;
}

.btn-rainbow-outline:hover {
  color: var(--white);
  background: var(--rainbow-gradient);
  transform: translateY(-3px);
  box-shadow: var(--shadow-rainbow);
}

/* ══════════════════════════════════════════════════════════════════════════
   CARDS & CONTAINERS
   ══════════════════════════════════════════════════════════════════════════ */

.rainbow-card {
  background: var(--white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: var(--size-xl);
  transition: all var(--transition-normal);
  position: relative;
  overflow: hidden;
}

.rainbow-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-4px);
}

.rainbow-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 4px;
  background: var(--rainbow-gradient-horizontal);
}

.rainbow-card-glow {
  background: var(--white);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: var(--size-xl);
  transition: all var(--transition-normal);
}

.rainbow-card-glow:hover {
  animation: rainbowGlow 3s ease infinite;
  transform: translateY(-4px);
}

/* ══════════════════════════════════════════════════════════════════════════
   BADGES & TAGS
   ══════════════════════════════════════════════════════════════════════════ */

.rainbow-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.3rem 0.9rem;
  font-family: var(--font-display);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  border-radius: var(--radius-full);
  background: var(--rainbow-gradient);
  color: var(--white);
}

.rainbow-badge-sale {
  position: absolute;
  top: 12px;
  left: 12px;
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.9rem;
  font-family: var(--font-display);
  font-size: 0.8rem;
  font-weight: 800;
  color: var(--white);
  background: var(--rainbow-red);
  border-radius: var(--radius-full);
  z-index: 10;
  box-shadow: 0 2px 8px rgba(255, 59, 92, 0.4);
}

.rainbow-badge-new {
  position: absolute;
  top: 12px;
  right: 12px;
  display: inline-flex;
  align-items: center;
  padding: 0.35rem 0.9rem;
  font-family: var(--font-display);
  font-size: 0.8rem;
  font-weight: 800;
  color: var(--white);
  background: var(--rainbow-green);
  border-radius: var(--radius-full);
  z-index: 10;
  box-shadow: 0 2px 8px rgba(6, 214, 160, 0.4);
}

/* ══════════════════════════════════════════════════════════════════════════
   SECTIONS — Alternating rainbow backgrounds
   ══════════════════════════════════════════════════════════════════════════ */

.section {
  padding: var(--size-4xl) var(--size-xl);
  position: relative;
}

.section-red    { background-color: var(--rainbow-red-light); }
.section-orange { background-color: var(--rainbow-orange-light); }
.section-yellow { background-color: var(--rainbow-yellow-light); }
.section-green  { background-color: var(--rainbow-green-light); }
.section-blue   { background-color: var(--rainbow-blue-light); }
.section-violet { background-color: var(--rainbow-violet-light); }
.section-dark   { background-color: var(--neutral-950); color: var(--neutral-100); }

.section-dark h2,
.section-dark h3,
.section-dark h4 {
  color: var(--white);
}

.section-dark p {
  color: var(--neutral-400);
}

.section .section-title {
  text-align: center;
  margin-bottom: var(--size-lg);
}

.section .section-subtitle {
  text-align: center;
  font-size: 1.15rem;
  color: var(--neutral-600);
  max-width: 600px;
  margin: 0 auto var(--size-2xl);
}

/* ── Decorative dots (background detail) ── */
.rainbow-dots {
  position: absolute;
  width: 200px;
  height: 200px;
  background-image: radial-gradient(circle, var(--rainbow-yellow) 1.5px, transparent 1.5px);
  background-size: 20px 20px;
  opacity: 0.15;
  pointer-events: none;
}

/* ══════════════════════════════════════════════════════════════════════════
   ANIMATION UTILITY CLASSES (triggered by JS via IntersectionObserver)
   ══════════════════════════════════════════════════════════════════════════ */

.animate-on-scroll {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
}

.animate-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.animate-scale-on-scroll {
  opacity: 0;
  transform: scale(0.9);
  transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
}

.animate-scale-on-scroll.is-visible {
  opacity: 1;
  transform: scale(1);
}

/* Staggered animation delays for children */
.stagger-children > *:nth-child(1) { transition-delay: 0.05s; }
.stagger-children > *:nth-child(2) { transition-delay: 0.10s; }
.stagger-children > *:nth-child(3) { transition-delay: 0.15s; }
.stagger-children > *:nth-child(4) { transition-delay: 0.20s; }
.stagger-children > *:nth-child(5) { transition-delay: 0.25s; }
.stagger-children > *:nth-child(6) { transition-delay: 0.30s; }
.stagger-children > *:nth-child(7) { transition-delay: 0.35s; }
.stagger-children > *:nth-child(8) { transition-delay: 0.40s; }
.stagger-children > *:nth-child(9) { transition-delay: 0.45s; }

/* Float animation for decorative elements */
.rainbow-float {
  animation: float 4s ease-in-out infinite;
}

.rainbow-float:nth-child(2) { animation-delay: 0.5s; }
.rainbow-float:nth-child(3) { animation-delay: 1s; }
