@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  html {
    @apply scroll-smooth;
  }
  
  body {
    @apply bg-gray-50 text-gray-800 dark:bg-dark-800 dark:text-gray-100 font-sans;
  }
  
  h1, h2, h3, h4, h5, h6 {
    @apply font-bold text-gray-900 dark:text-white;
  }
  
  h1 {
    @apply text-4xl md:text-5xl lg:text-6xl;
  }
  
  h2 {
    @apply text-3xl md:text-4xl;
  }
  
  h3 {
    @apply text-2xl md:text-3xl;
  }
  
  h4 {
    @apply text-xl md:text-2xl;
  }
  
  a {
    @apply text-primary-600 hover:text-primary-700 dark:text-primary-400 dark:hover:text-primary-300 transition-colors;
  }
  
  input, textarea, select {
    @apply bg-white border border-gray-300 rounded-md px-3 py-2 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 dark:bg-dark-700 dark:border-dark-500 dark:focus:ring-primary-400 dark:focus:border-primary-400;
  }
  
  label {
    @apply block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1;
  }
  
  ::placeholder {
    @apply text-gray-400 dark:text-gray-500;
  }
}

@layer components {
  .btn {
    @apply inline-flex items-center justify-center px-4 py-2 font-medium rounded-md transition-all focus:outline-none focus:ring-2 focus:ring-offset-2 shadow-sm text-base;
  }
  
  .btn-primary {
    @apply btn bg-primary-600 hover:bg-primary-700 text-white focus:ring-primary-500 hover:shadow-md active:translate-y-0.5 dark:bg-primary-700 dark:hover:bg-primary-600;
  }
  
  .btn-secondary {
    @apply btn bg-secondary-600 hover:bg-secondary-700 text-white focus:ring-secondary-500 hover:shadow-md active:translate-y-0.5 dark:bg-secondary-700 dark:hover:bg-secondary-600;
  }
  
  .btn-outline {
    @apply btn border-2 border-gray-300 dark:border-dark-500 bg-white dark:bg-transparent text-gray-700 dark:text-gray-200 hover:bg-gray-50 hover:border-primary-500 hover:text-primary-600 dark:hover:bg-dark-700 dark:hover:border-primary-400 dark:hover:text-primary-400 focus:ring-gray-500 active:translate-y-0.5;
  }
  
  .card {
    @apply bg-white shadow-md dark:bg-dark-700 rounded-lg overflow-hidden border border-gray-200 dark:border-dark-600 hover:shadow-lg transition-shadow duration-300;
  }
  
  .gradient-text {
    @apply text-transparent bg-clip-text bg-gradient-to-r from-primary-600 to-secondary-600 dark:from-primary-500 dark:to-secondary-500 font-bold;
  }
  
  .node-tooltip {
    @apply max-w-xs p-3 bg-white text-gray-800 dark:bg-dark-800 dark:text-white rounded-lg shadow-lg text-sm z-50 border border-gray-200 dark:border-dark-600;
  }
  
  .mindmap-node {
    @apply cursor-pointer transition-all duration-200 hover:shadow-lg border-2 border-gray-200 dark:border-dark-600;
  }
  
  /* Mindmap-spezifische Stile */
  .mindmap-container {
    @apply bg-gray-50/80 dark:bg-dark-800/80 rounded-lg p-4 shadow-inner;
  }
  
  .mindmap-node-root {
    @apply bg-primary-100 dark:bg-primary-900 text-primary-900 dark:text-primary-100 border-primary-300 dark:border-primary-700;
  }
  
  .mindmap-node-branch {
    @apply bg-secondary-100 dark:bg-secondary-900 text-secondary-900 dark:text-secondary-100 border-secondary-300 dark:border-secondary-700;
  }
  
  .mindmap-node-leaf {
    @apply bg-gray-100 dark:bg-dark-700 text-gray-800 dark:text-gray-200 border-gray-300 dark:border-dark-500;
  }
  
  .mindmap-link {
    @apply stroke-gray-400 dark:stroke-gray-500 stroke-[2];
  }
  
  .mindmap-link-active {
    @apply stroke-primary-500 dark:stroke-primary-400 stroke-[3];
  }
  
  .form-group {
    @apply mb-4;
  }
  
  .form-control {
    @apply w-full;
  }
  
  .ascii-art {
    @apply font-mono text-xs leading-none whitespace-pre tracking-tight select-none text-primary-700 dark:text-primary-400 opacity-80 dark:opacity-60 font-bold;
  }
  
  /* Verbesserte Formulareingabefelder */
  .form-input,
  .form-textarea,
  .form-select {
    @apply w-full rounded-md border border-gray-300 bg-white px-4 py-2 text-gray-800 shadow-sm
    focus:border-primary-500 focus:ring focus:ring-primary-500 focus:ring-opacity-50
    dark:border-dark-500 dark:bg-dark-700 dark:text-gray-100 dark:focus:border-primary-400 dark:focus:ring-primary-400;
  }
  
  .form-input-lg {
    @apply py-3 text-lg;
  }
  
  .form-input-sm {
    @apply py-1 text-sm;
  }
  
  .form-checkbox, 
  .form-radio {
    @apply h-5 w-5 rounded border-gray-300 text-primary-600 shadow-sm 
    focus:border-primary-500 focus:ring focus:ring-primary-500 focus:ring-opacity-50
    dark:border-dark-500 dark:bg-dark-700 dark:focus:border-primary-400 dark:focus:ring-primary-400;
  }
  
  .form-checkbox {
    @apply rounded;
  }
  
  .form-radio {
    @apply rounded-full;
  }
  
  .form-error {
    @apply mt-1 text-sm text-red-600 dark:text-red-400;
  }
}

@layer utilities {
  .tech-gradient {
    @apply bg-gradient-to-r from-primary-600 to-secondary-500;
  }
  
  .glass-effect {
    @apply bg-white/95 backdrop-blur-md border border-gray-200 shadow-md dark:bg-dark-800/90 dark:border-dark-700/50 dark:shadow-xl;
  }
  
  .focus-ring {
    @apply focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 dark:focus:ring-primary-400 dark:focus:ring-offset-dark-800;
  }
  
  .input-focus {
    @apply focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 dark:focus:ring-primary-400 dark:focus:border-primary-400;
  }
}

/* Form validation styles */
.is-valid {
  @apply border-green-500 dark:border-green-400;
}

.is-invalid {
  @apply border-red-500 dark:border-red-400;
}

.is-valid:focus {
  @apply ring-green-500/30 border-green-500 dark:ring-green-400/30 dark:border-green-400;
}

.is-invalid:focus {
  @apply ring-red-500/30 border-red-500 dark:ring-red-400/30 dark:border-red-400;
}

.form-hint {
  @apply text-xs text-gray-500 dark:text-gray-400 mt-1;
}

.form-label {
  @apply block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1;
}

.input-icon {
  @apply absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none text-gray-500 dark:text-gray-400;
}

.input-with-icon {
  @apply pl-10;
} 