/* ==========================================
   GIFT GENIUS COMPONENT STYLES
   Component-specific styling extensions
   ========================================== */

/* ===== ENHANCED PRODUCT CARD VARIANTS ===== */
.product-card.luxury-card {
  border: 2px solid transparent;
  background: linear-gradient(white, white) padding-box,
              linear-gradient(135deg, var(--color-primary-600), var(--color-primary-400)) border-box;
  position: relative;
}

.product-card.luxury-card::before {
  background: linear-gradient(90deg, var(--color-primary-600), var(--color-primary-400));
}

.product-card.viral-card {
  border: 2px solid transparent;
  background: linear-gradient(white, white) padding-box,
              linear-gradient(135deg, #f97316, #ea580c) border-box;
  animation: viralGlow 3s ease-in-out infinite;
}

.product-card.viral-card::before {
  background: linear-gradient(90deg, #f97316, #ea580c);
}

.product-card.budget-card {
  border: 2px solid transparent;
  background: linear-gradient(white, white) padding-box,
              linear-gradient(135deg, #16a34a, #15803d) border-box;
}

.product-card.budget-card::before {
  background: linear-gradient(90deg, #16a34a, #15803d);
}

/* ===== VIRAL GLOW ANIMATION ===== */
@keyframes viralGlow {
  0%, 100% {
    box-shadow: 0 4px 20px rgba(249, 115, 22, 0.1);
  }
  50% {
    box-shadow: 0 8px 30px rgba(249, 115, 22, 0.3);
  }
}

/* ===== ENHANCED PRODUCT TAGS ===== */
.product-tag.luxury {
  background: linear-gradient(135deg, var(--color-primary-100), var(--color-primary-50));
  color: var(--color-primary-700);
  border: 1px solid var(--color-primary-200);
  font-weight: 600;
}

.product-tag.viral {
  background: linear-gradient(135deg, rgba(249, 115, 22, 0.1), rgba(234, 88, 12, 0.1));
  color: #ea580c;
  border: 1px solid #f97316;
  font-weight: 600;
  animation: viralPulse 2s infinite;
}

.product-tag.budget {
  background: linear-gradient(135deg, rgba(22, 163, 74, 0.1), rgba(21, 128, 61, 0.1));
  color: #15803d;
  border: 1px solid #16a34a;
  font-weight: 600;
}

.product-tag.demographic {
  background: var(--color-neutral-100);
  color: var(--color-neutral-700);
  border: 1px solid var(--color-neutral-200);
}

/* ===== VIRAL PULSE ANIMATION ===== */
@keyframes viralPulse {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.05);
    opacity: 0.9;
  }
}

/* ===== BUTTON VARIANTS ===== */
.btn-sm {
  padding: var(--space-xs) var(--space-sm);
  font-size: var(--text-xs);
}

.btn-lg {
  padding: var(--space-lg) var(--space-xl);
  font-size: var(--text-lg);
}

.btn-luxury {
  background: linear-gradient(135deg, var(--color-primary-600), var(--color-primary-500));
  color: var(--color-neutral-0);
  border: none;
  position: relative;
  overflow: hidden;
}

.btn-luxury::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  transition: left 0.6s ease;
}

.btn-luxury:hover::before {
  left: 100%;
}

.btn-viral {
  background: linear-gradient(135deg, #f97316, #ea580c);
  color: white;
  box-shadow: 0 4px 15px rgba(249, 115, 22, 0.3);
  animation: viralButtonGlow 2s ease-in-out infinite;
}

@keyframes viralButtonGlow {
  0%, 100% {
    box-shadow: 0 4px 15px rgba(249, 115, 22, 0.3);
  }
  50% {
    box-shadow: 0 6px 20px rgba(249, 115, 22, 0.5);
  }
}

.btn-budget {
  background: linear-gradient(135deg, #16a34a, #15803d);
  color: white;
  box-shadow: 0 4px 15px rgba(22, 163, 74, 0.3);
}

/* ===== CATEGORY CARDS ===== */
.category-card {
  transition: all var(--transition-normal);
  cursor: pointer;
}

.category-card:hover {
  transform: translateY(-4px);
}

.luxury-category-card {
  transition: all var(--transition-normal);
}

.luxury-category-card:hover {
  background: var(--glass-bg-strong);
  box-shadow: var(--glass-shadow-hover);
}

/* ===== OCCASION CARDS ===== */
.occasion-card {
  transition: all var(--transition-normal);
  cursor: pointer;
}

.occasion-card:hover {
  background: var(--glass-bg-strong);
  box-shadow: var(--glass-shadow-hover);
}

/* ===== SEARCH ENHANCEMENTS ===== */
.search-input:focus {
  box-shadow: 0 0 0 3px rgba(168, 85, 247, 0.1),
              0 4px 20px rgba(0, 0, 0, 0.1);
}

/* ===== FILTER ENHANCEMENTS ===== */
.filter-option {
  transition: all var(--transition-fast);
  position: relative;
  overflow: hidden;
}

.filter-option::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(168, 85, 247, 0.1), transparent);
  transition: left var(--transition-normal);
}

.filter-option:hover::before {
  left: 100%;
}

/* ===== MODAL ENHANCEMENTS ===== */
.modal-content.modal-sm {
  max-width: 400px;
}

.modal-content.modal-lg {
  max-width: 800px;
}

.modal-content.modal-xl {
  max-width: 1200px;
}

/* ===== TOAST VARIANTS ===== */
.toast {
  position: relative;
  z-index: 1000;
  margin-bottom: var(--space-sm);
}

.toast-success .glass-card {
  border-left: 4px solid var(--color-success);
}

.toast-error .glass-card {
  border-left: 4px solid var(--color-error);
}

.toast-warning .glass-card {
  border-left: 4px solid var(--color-warning);
}

.toast-info .glass-card {
  border-left: 4px solid var(--color-info);
}

/* ===== LOADING ENHANCEMENTS ===== */
.loading-container {
  position: relative;
}

.loading-container::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100px;
  height: 100px;
  margin: -50px 0 0 -50px;
  border-radius: 50%;
  background: radial-gradient(circle, transparent 40%, var(--color-primary-100) 40%, var(--color-primary-100) 60%, transparent 60%);
  animation: loadingPulse 2s ease-in-out infinite;
  pointer-events: none;
  z-index: -1;
}

@keyframes loadingPulse {
  0%, 100% {
    transform: scale(0.8);
    opacity: 0.3;
  }
  50% {
    transform: scale(1.2);
    opacity: 0.1;
  }
}

/* ===== EMPTY STATE ENHANCEMENTS ===== */
.empty-state {
  position: relative;
  z-index: 1;
}

.empty-state::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  width: 200px;
  height: 200px;
  margin-left: -100px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--color-neutral-50) 30%, transparent 30%);
  opacity: 0.5;
  z-index: -1;
  animation: emptyStatePulse 4s ease-in-out infinite;
}

@keyframes emptyStatePulse {
  0%, 100% {
    transform: scale(1);
    opacity: 0.3;
  }
  50% {
    transform: scale(1.1);
    opacity: 0.1;
  }
}

/* ===== PRICE DISPLAY ENHANCEMENTS ===== */
.product-price {
  position: relative;
}

.product-price::before {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 30%;
  height: 2px;
  background: linear-gradient(90deg, var(--color-primary-500), transparent);
  border-radius: 1px;
}

/* ===== STATS SECTION ===== */
.stat-item {
  text-align: center;
  padding: var(--space-md);
  transition: transform var(--transition-normal);
}

.stat-item:hover {
  transform: translateY(-2px);
}

.stat-item .text-3xl {
  background: linear-gradient(135deg, var(--color-primary-600), var(--color-primary-400));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ===== GUIDE ITEMS ===== */
.guide-item {
  transition: transform var(--transition-normal);
}

.guide-item:hover {
  transform: translateY(-2px);
}

/* ===== HERO ENHANCEMENTS ===== */
.hero-section .glass-card {
  position: relative;
  overflow: hidden;
}

.hero-section .glass-card::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: linear-gradient(45deg, transparent 40%, rgba(168, 85, 247, 0.03) 50%, transparent 60%);
  animation: heroShimmer 8s ease-in-out infinite;
  pointer-events: none;
}

@keyframes heroShimmer {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* ===== PAGE TRANSITIONS ===== */
.page-transition-enter {
  opacity: 0;
  transform: translateY(20px);
}

.page-transition-enter-active {
  opacity: 1;
  transform: translateY(0);
  transition: all var(--transition-normal);
}

.page-transition-exit {
  opacity: 1;
  transform: translateY(0);
}

.page-transition-exit-active {
  opacity: 0;
  transform: translateY(-20px);
  transition: all var(--transition-normal);
}

/* ===== RESPONSIVE UTILITIES ===== */
@media (max-width: 640px) {
  .mobile-stack {
    flex-direction: column !important;
  }
  
  .mobile-full {
    width: 100% !important;
  }
  
  .mobile-center {
    text-align: center !important;
  }
  
  .mobile-hide {
    display: none !important;
  }
}

@media (min-width: 641px) {
  .desktop-show {
    display: block !important;
  }
}

/* ===== PRINT STYLES ===== */
@media print {
  .glass-card {
    background: white !important;
    border: 1px solid #e5e5e5 !important;
    box-shadow: none !important;
  }
  
  .btn {
    border: 1px solid #333 !important;
    background: white !important;
    color: #333 !important;
  }
  
  .product-image {
    filter: grayscale(100%) !important;
  }
}

/* ===== HIGH CONTRAST SUPPORT ===== */
@media (prefers-contrast: high) {
  .glass-card {
    background: white !important;
    border: 2px solid #333 !important;
  }
  
  .product-tag {
    border-width: 2px !important;
    font-weight: 700 !important;
  }
  
  .btn {
    border: 2px solid currentColor !important;
  }
}

/* ===== REDUCED MOTION SUPPORT ===== */
@media (prefers-reduced-motion: reduce) {
  .product-card,
  .category-card,
  .occasion-card,
  .btn,
  .filter-option {
    transition: none !important;
    animation: none !important;
  }
  
  .loading-spinner {
    animation: none !important;
    border-top-color: var(--color-primary-500) !important;
  }
}

/* ===== DARK MODE SUPPORT (for future implementation) ===== */
@media (prefers-color-scheme: dark) {
  :root {
    --glass-bg: rgba(0, 0, 0, 0.2);
    --glass-bg-strong: rgba(0, 0, 0, 0.3);
    --glass-border: rgba(255, 255, 255, 0.1);
  }
  
  body {
    background: linear-gradient(135deg, #0f0f23 0%, #1a1a2e 50%, #16213e 100%);
    color: #e5e5e5;
  }
  
  .product-card {
    background: #1a1a2e;
    border-color: rgba(255, 255, 255, 0.1);
  }
  
  .glass-header {
    background: rgba(0, 0, 0, 0.8);
  }
} 