/* RSVPix Shell App - Brand Design System with Dark Mode */

:root {
  /* Font Families */
  --font-heading: 'Sora', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  
  /* Primary Brand Colors */
  --color-primary-main: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1E4ED8;
  --color-primary-50: #EFF6FF;
  --color-primary-100: #DBEAFE;
  
  /* Accent Colors (Fresh Mint) */
  --color-accent-main: #2DD4BF;
  --color-accent-light: #5EEAD4;
  --color-accent-dark: #14B8A6;
  
  /* Text Colors - Light Mode */
  --color-charcoal: #111827;
  --color-slate-grey: #4B5563;
  --color-cloud-white: #F9FAFB;
  --color-soft-grey: #E5E7EB;
  
  /* Background Colors */
  --color-paper: #FFFFFF;
  --color-surface: #FFFFFF;
  
  /* Border Colors */
  --color-border: #E5E7EB;
  
  /* Grey Scale */
  --color-grey-50: #F9FAFB;
  --color-grey-100: #F3F4F6;
  --color-grey-200: #E5E7EB;
  --color-grey-300: #D1D5DB;
  --color-grey-400: #9CA3AF;
  --color-grey-500: #6B7280;
  --color-grey-600: #4B5563;
  --color-grey-700: #374151;
  --color-grey-800: #1F2937;
  --color-grey-900: #111827;
  
  /* Functional Colors */
  --color-success: #10B981;
  --color-success-light: #D1FAE5;
  --color-warning: #F59E0B;
  --color-warning-light: #FEF3C7;
  --color-error: #EF4444;
  --color-error-light: #FEE2E2;
  --color-disabled: #9CA3AF;
  
  /* Shadows */
  --shadow-card: 0 10px 30px rgba(0, 0, 0, 0.05);
  --shadow-card-hover: 0 20px 40px rgba(0, 0, 0, 0.1);
  --shadow-button: 0 6px 20px rgba(37, 99, 235, 0.15);
  --shadow-subtle: 0 2px 8px rgba(0, 0, 0, 0.04);
  
  /* Border Radius */
  --radius-button: 10px;
  --radius-card: 16px;
  --radius-input: 10px;
  
  font-family: var(--font-body);
  line-height: 1.6;
}

/* Dark Mode Variables */
[data-theme='dark'], .dark-mode {
  color-scheme: dark;
  
  /* Text Colors - Dark Mode - Enhanced contrast */
  --color-charcoal: #F9FAFB;
  --color-slate-grey: #E5E7EB;
  --color-cloud-white: #0B1120;
  --color-soft-grey: #374151;
  
  /* Background Colors - Rich dark background */
  --color-paper: #151E2E;
  --color-surface: #1A2435;
  
  /* Border Colors */
  --color-border: #2D3A4D;
  
  /* Grey Scale - Dark Mode - Better contrast */
  --color-grey-50: #0F172A;
  --color-grey-100: #1E293B;
  --color-grey-200: #2D3A4D;
  --color-grey-300: #4B5563;
  --color-grey-400: #6B7280;
  --color-grey-500: #9CA3AF;
  --color-grey-600: #D1D5DB;
  --color-grey-700: #E5E7EB;
  --color-grey-800: #F3F4F6;
  --color-grey-900: #F9FAFB;
  
  /* Functional Colors - Dark Mode - Vibrant accents */
  --color-success: #34D399;
  --color-success-light: #064E3B;
  --color-warning: #FBBF24;
  --color-warning-light: #78350F;
  --color-error: #F87171;
  --color-error-light: #7F1D1D;
  
  /* Shadows - Dark Mode - Enhanced depth */
  --shadow-card: 0 10px 30px rgba(0, 0, 0, 0.5);
  --shadow-card-hover: 0 20px 40px rgba(0, 0, 0, 0.6);
  --shadow-button: 0 6px 20px rgba(37, 99, 235, 0.4);
  --shadow-subtle: 0 2px 8px rgba(0, 0, 0, 0.3);
}

html, body {
  min-width: 100%;
  font-family: var(--font-body);
  background-color: var(--color-cloud-white);
  transition: background-color 0.3s ease, color 0.3s ease;
}

[data-theme='dark'] html,
[data-theme='dark'] body {
  background-color: var(--color-cloud-white);
}

#root {
  width: 100%;
  font-family: var(--font-body);
  min-height: 100vh;
  background-color: var(--color-cloud-white);
  color: var(--color-slate-grey);
  transition: background-color 0.3s ease, color 0.3s ease;
}

/* Typography */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  color: var(--color-charcoal);
  transition: color 0.3s ease;
}

p, span, div {
  transition: color 0.3s ease;
}

/* Smooth transitions for theme changes */
* {
  transition: background-color 0.3s ease, border-color 0.3s ease;
}

/* Exclude certain elements from global transition */
button, a, svg, img {
  transition: transform 0.2s ease, box-shadow 0.2s ease, color 0.2s ease;
}

/* ============================================
   BRAND GRADIENT UTILITIES & ANIMATIONS
   ============================================ */

/* Brand Gradient Background */
.brand-gradient {
  background: linear-gradient(135deg, #2563EB 0%, #2DD4BF 100%);
}

.brand-gradient-animated {
  background: linear-gradient(135deg, #2563EB 0%, #2DD4BF 50%, #2563EB 100%);
  background-size: 200% 200%;
  animation: gradientShift 3s ease infinite;
}

/* Brand Glow Effects */
.brand-glow {
  box-shadow: 0 0 20px rgba(37, 99, 235, 0.3), 0 0 40px rgba(45, 212, 191, 0.1);
}

.brand-glow-hover:hover {
  box-shadow: 0 0 30px rgba(37, 99, 235, 0.4), 0 0 60px rgba(45, 212, 191, 0.2);
}

/* Shimmer Effect for Buttons */
.btn-shimmer {
  position: relative;
  overflow: hidden;
}

.btn-shimmer::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.2),
    transparent
  );
  transform: translateX(-100%);
}

.btn-shimmer:hover::after {
  animation: shimmer 0.6s ease;
}

/* Floating Animation */
.float-hover:hover {
  animation: float 2s ease-in-out infinite;
}

/* Glassmorphism Enhancement */
.glass {
  background: rgba(255, 255, 255, 0.05);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.1);
}

[data-theme='dark'] .glass {
  background: rgba(21, 30, 46, 0.7);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

/* Text Gradient */
.text-gradient {
  background: linear-gradient(135deg, #2563EB 0%, #2DD4BF 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* Gradient Border Effect */
.gradient-border {
  position: relative;
  background: var(--color-paper);
  border-radius: var(--radius-card);
}

.gradient-border::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: calc(var(--radius-card) + 2px);
  background: linear-gradient(135deg, #2563EB 0%, #2DD4BF 100%);
  z-index: -1;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.gradient-border:hover::before {
  opacity: 1;
}

/* Chart/Graph Bar Gradient */
.chart-bar {
  background: linear-gradient(to top, #2563EB, #2DD4BF);
  border-radius: 4px 4px 0 0;
  transition: all 0.3s ease;
}

.chart-bar:hover {
  filter: brightness(1.2);
  transform: scaleY(1.05);
}

/* Progress Bar Gradient */
.progress-gradient {
  background: linear-gradient(90deg, #2563EB 0%, #2DD4BF 100%);
  border-radius: 9999px;
}

/* Dark Mode Specific Enhancements */
[data-theme='dark'] .brand-gradient {
  background: linear-gradient(135deg, #3B82F6 0%, #2DD4BF 100%);
  box-shadow: 0 4px 20px rgba(37, 99, 235, 0.4);
}

[data-theme='dark'] .brand-glow {
  box-shadow: 0 0 30px rgba(37, 99, 235, 0.4), 0 0 60px rgba(45, 212, 191, 0.2);
}

/* Keyframes */
@keyframes gradientShift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}

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

@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50% { transform: translateY(-4px); }
}

@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 0 20px rgba(37, 99, 235, 0.3), 0 0 40px rgba(45, 212, 191, 0.1); }
  50% { box-shadow: 0 0 30px rgba(37, 99, 235, 0.5), 0 0 60px rgba(45, 212, 191, 0.2); }
}
