/* ========================================
   UTILITY STYLES - Micah Portfolio
   ======================================== */

/* Spacing Utilities */
.spacing-xs { @apply space-y-1; }
.spacing-sm { @apply space-y-2; }
.spacing-md { @apply space-y-4; }
.spacing-lg { @apply space-y-6; }
.spacing-xl { @apply space-y-8; }
.spacing-2xl { @apply space-y-12; }

/* Text Utilities */
.text-balance { text-wrap: balance; }
.text-pretty { text-wrap: pretty; }

/* Animation Utilities */
.animate-float {
  animation: float 6s ease-in-out infinite;
}

.animate-pulse-slow {
  animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.animate-bounce-slow {
  animation: bounce 2s infinite;
}

/* Hover Utilities */
.hover-lift {
  @apply transition-transform duration-300 hover:-translate-y-2;
}

.hover-glow {
  @apply transition-shadow duration-300 hover:shadow-lg hover:shadow-primary/25;
}

.hover-scale {
  @apply transition-transform duration-300 hover:scale-105;
}

/* Focus Utilities */
.focus-ring {
  @apply focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2 focus:ring-offset-background;
}

/* Border Utilities */
.border-gradient {
  border-image: linear-gradient(45deg, #6C5CE7, #00B894) 1;
}

.border-dashed-primary {
  @apply border border-dashed border-primary/30;
}

.border-dashed-accent {
  @apply border border-dashed border-accent/30;
}

/* Background Utilities */
.bg-gradient-primary {
  background: linear-gradient(135deg, #6C5CE7, #8B7FEA);
}

.bg-gradient-accent {
  background: linear-gradient(135deg, #00B894, #34D5B0);
}

.bg-gradient-radial {
  background: radial-gradient(circle, rgba(108, 92, 231, 0.1) 0%, transparent 70%);
}

/* Shadow Utilities */
.shadow-primary {
  box-shadow: 0 4px 14px 0 rgba(108, 92, 231, 0.25);
}

.shadow-accent {
  box-shadow: 0 4px 14px 0 rgba(0, 184, 148, 0.25);
}

.shadow-glow {
  box-shadow: 0 0 20px rgba(108, 92, 231, 0.3);
}

/* Layout Utilities */
.container-custom {
  @apply container mx-auto px-5 md:px-10;
}

.grid-auto-fit {
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.grid-auto-fill {
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}

/* Responsive Utilities */
@media (max-width: 640px) {
  .mobile-hidden { @apply hidden; }
  .mobile-block { @apply block; }
  .mobile-text-sm { @apply text-sm; }
  .mobile-text-xs { @apply text-xs; }
  .mobile-p-2 { @apply p-2; }
  .mobile-p-4 { @apply p-4; }
}

@media (min-width: 641px) and (max-width: 1024px) {
  .tablet-hidden { @apply hidden; }
  .tablet-block { @apply block; }
}

@media (min-width: 1025px) {
  .desktop-hidden { @apply hidden; }
  .desktop-block { @apply block; }
}

/* Print Utilities */
@media print {
  .print-hidden { display: none !important; }
  .print-visible { display: block !important; }
  .print-black { color: black !important; }
  .print-white { color: white !important; }
}

/* High Contrast Mode */
@media (prefers-contrast: high) {
  .high-contrast-border {
    @apply border-2 border-white;
  }
  
  .high-contrast-text {
    @apply text-white font-bold;
  }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  .motion-reduce {
    animation: none !important;
    transition: none !important;
  }
  
  .fade-up {
    @apply opacity-100 transform-none;
  }
}

/* Dark Mode Utilities */
@media (prefers-color-scheme: dark) {
  .dark-mode-bg {
    @apply bg-background text-white;
  }
}

/* Light Mode Utilities */
@media (prefers-color-scheme: light) {
  .light-mode-bg {
    @apply bg-white text-gray-900;
  }
}
