/** @type {import('tailwindcss').Config} */
const plugin = require("tailwindcss/plugin");

module.exports = {
  darkMode: 'class',
  content: [
    './templates/**/*.html',
    './assets/css/src/**/*.css',
  ],
  theme: {
    extend: {
      colors: {
        primary: '#4f46e5', // Vibrant indigo
        secondary: '#e11d48', // Vibrant rose
        accent: '#8b5cf6'
      },
      fontFamily: {
        'sans': ['Poppins', 'sans-serif'],
      },
    },
  },
  plugins: [
    require("@tailwindcss/typography"),
    require("@tailwindcss/forms"),
    require("@tailwindcss/aspect-ratio"),
    require("@tailwindcss/container-queries"),
    plugin(function ({ addComponents }) {
      addComponents({
        '.auth-card': {
          '@apply w-full max-w-md p-8 mx-auto border shadow-xl bg-white/90 dark:bg-gray-800/90 rounded-2xl backdrop-blur-sm border-gray-200/50 dark:border-gray-700/50': {},
        },
        '.auth-title': {
          '@apply mb-8 text-2xl font-bold text-center text-transparent bg-gradient-to-r from-primary to-secondary bg-clip-text': {},
        },
        '.auth-divider': {
          '@apply relative my-6 text-center': {},
          '&::before, &::after': {
            '@apply absolute top-1/2 w-1/3 border-t border-gray-200 dark:border-gray-700 content-[\'\']': {},
          },
          '&::before': {
            '@apply left-0': {},
          },
          '&::after': {
            '@apply right-0': {},
          },
          'span': {
            '@apply px-4 text-sm text-gray-500 dark:text-gray-400 bg-white/90 dark:bg-gray-800/90': {},
          },
        },
        '.btn-social': {
          '@apply w-full flex items-center justify-center px-6 py-3 border border-gray-200 dark:border-gray-700 rounded-lg shadow-sm text-sm font-medium text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary/50 transform hover:scale-[1.02] transition-all mb-3': {},
        },
        '.btn-discord': {
          '@apply bg-[#5865F2] hover:bg-[#4752C4] text-white border-transparent shadow-[#5865F2]/20': {},
        },
        '.btn-google': {
          '@apply text-gray-700 bg-white border-gray-200 hover:bg-gray-50 shadow-gray-200/50 dark:shadow-gray-900/50': {},
        },
        '.password-requirements': {
          '@apply p-4 rounded-lg bg-gray-50/80 dark:bg-gray-800/80 border border-gray-200/50 dark:border-gray-700/50': {},
          'ul': {
            '@apply space-y-2': {},
          },
          'li': {
            '@apply flex items-center space-x-2 text-sm transition-colors duration-200': {},
            'i': {
              '@apply text-xs transition-all duration-200': {},
            },
            '&.invalid': {
              '@apply text-gray-500 dark:text-gray-400': {},
              'i': {
                '@apply text-gray-400 dark:text-gray-500': {},
              },
            },
            '&.valid': {
              '@apply text-green-600 dark:text-green-400': {},
              'i': {
                '@apply text-green-500 dark:text-green-400': {},
              },
            },
          },
        },
        '.form-input': {
          '@apply w-full px-4 py-3 text-gray-900 transition-all border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 bg-white/70 dark:bg-gray-800/70 backdrop-blur-sm dark:text-white focus:ring-2 focus:ring-primary/50 focus:border-primary': {},
        },
        '.form-label': {
          '@apply block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1.5': {},
        },
        '.form-error': {
          '@apply mt-2 text-sm text-red-600 dark:text-red-400': {},
        },
        '.alert': {
          '@apply p-4 mb-4 shadow-lg rounded-xl backdrop-blur-sm': {},
        },
        '.alert-error': {
          '@apply text-red-800 border border-red-200 bg-red-100/90 dark:bg-red-800/30 dark:text-red-100 dark:border-red-700': {},
        },
      });
    }),
    plugin(function ({ addVariant }) {
      addVariant("htmx-settling", ["&.htmx-settling", ".htmx-settling &"]);
      addVariant("htmx-request", ["&.htmx-request", ".htmx-request &"]);
      addVariant("htmx-swapping", ["&.htmx-swapping", ".htmx-swapping &"]);
      addVariant("htmx-added", ["&.htmx-added", ".htmx-added &"]);
    }),
  ],
}
