/* Global Dark Mode Styles */
:root {
  /* Light Mode Color Palette */
  --bg-primary: #f4f6f9;
  --bg-secondary: #ffffff;
  --bg-tertiary: #f8fafc;
  --text-primary: #1a202c;
  --text-secondary: #4a5568;
  --text-muted: #718096;
  --accent-primary: #3742fa;
  --accent-secondary: #5f27cd;
  --accent-hover: #2e33d1;
  --border-color: #e2e8f0;
  --shadow-color: rgba(0, 0, 0, 0.1);
  --card-bg: rgba(255, 255, 255, 0.95);
  
  /* Dark Mode Color Palette */
  --dark-bg-primary: #0f1419;
  --dark-bg-secondary: #1a1f2e;
  --dark-bg-tertiary: #232a3b;
  --dark-text-primary: #e2e8f0;
  --dark-text-secondary: #a0aec0;
  --dark-text-muted: #718096;
  --dark-accent-primary: #6366f1;
  --dark-accent-secondary: #8b5cf6;
  --dark-accent-hover: #818cf8;
  --dark-border-color: #2d3748;
  --dark-shadow-color: rgba(0, 0, 0, 0.3);
  --dark-card-bg: rgba(26, 31, 46, 0.95);
}

/* Global Transition for Smooth Mode Switching */
body.dark-mode-transition,
body.dark-mode-transition * {
  transition: 
    background-color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
    color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
    border-color 0.4s cubic-bezier(0.4, 0, 0.2, 1),
    box-shadow 0.4s cubic-bezier(0.4, 0, 0.2, 1),
    transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

/* Base Dark Mode Styles */
.dark-mode {
  background-color: var(--dark-bg-primary);
  color: var(--dark-text-primary);
}

.dark-mode body {
  background-color: var(--dark-bg-primary);
  color: var(--dark-text-primary);
  background-image: 
    radial-gradient(ellipse at top left, rgba(99, 102, 241, 0.1) 0%, transparent 50%),
    radial-gradient(ellipse at bottom right, rgba(139, 92, 246, 0.08) 0%, transparent 50%);
  background-attachment: fixed;
}

/* Typography */
.dark-mode h1, 
.dark-mode h2, 
.dark-mode h3, 
.dark-mode h4, 
.dark-mode h5, 
.dark-mode h6 {
  color: var(--dark-text-primary);
}

.dark-mode p, 
.dark-mode span, 
.dark-mode div {
  color: var(--dark-text-secondary);
}

.dark-mode label {
  color: var(--dark-text-primary);
}

/* Forms and Components */
.dark-mode .feedback-form {
  background-color: var(--dark-card-bg);
  backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid var(--dark-border-color);
  box-shadow: 
    0 10px 40px rgba(0, 0, 0, 0.4),
    0 2px 10px rgba(0, 0, 0, 0.2),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.dark-mode .user-info-section {
  background-color: var(--dark-bg-tertiary);
  border: 1px solid var(--dark-border-color);
}

.dark-mode .question-block {
  background: linear-gradient(
    135deg,
    rgba(35, 42, 59, 0.9),
    rgba(26, 31, 46, 0.8)
  );
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 
    0 4px 12px rgba(0, 0, 0, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.dark-mode .question-block:hover {
  transform: translateY(-4px);
  box-shadow: 
    0 8px 24px rgba(0, 0, 0, 0.4),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
  border-color: rgba(99, 102, 241, 0.3);
}

/* Form Elements */
.dark-mode input[type="text"],
.dark-mode input[type="email"],
.dark-mode input[type="tel"],
.dark-mode input[type="date"],
.dark-mode textarea,
.dark-mode select,
.dark-mode .form-control,
.dark-mode .form-select {
  background-color: var(--dark-bg-secondary);
  color: var(--dark-text-primary);
  border-color: var(--dark-border-color);
  transition: all 0.3s ease;
}

.dark-mode input[type="text"]:focus,
.dark-mode input[type="email"]:focus,
.dark-mode input[type="tel"]:focus,
.dark-mode input[type="date"]:focus,
.dark-mode textarea:focus,
.dark-mode select:focus,
.dark-mode .form-control:focus,
.dark-mode .form-select:focus {
  background-color: var(--dark-bg-tertiary);
  border-color: var(--dark-accent-primary);
  box-shadow: 
    0 0 0 0.2rem rgba(99, 102, 241, 0.25),
    inset 0 1px 2px rgba(0, 0, 0, 0.3);
  color: var(--dark-text-primary);
}

.dark-mode input::placeholder,
.dark-mode textarea::placeholder {
  color: var(--dark-text-muted);
  opacity: 0.7;
}

/* Checkboxes and Radio Buttons */
.dark-mode .form-check {
  background-color: rgba(45, 55, 72, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.06);
}

.dark-mode .form-check:hover {
  background-color: rgba(45, 55, 72, 0.8);
  border-color: rgba(99, 102, 241, 0.2);
}

.dark-mode .form-check-input {
  background-color: var(--dark-bg-secondary);
  border-color: var(--dark-border-color);
}

.dark-mode .form-check-input:checked {
  background-color: var(--dark-accent-primary);
  border-color: var(--dark-accent-primary);
}

.dark-mode .form-check-input:focus {
  box-shadow: 0 0 0 0.2rem rgba(99, 102, 241, 0.25);
}

/* Buttons */
.dark-mode .btn-primary {
  background: linear-gradient(135deg, var(--dark-accent-primary), var(--dark-accent-secondary));
  border: none;
  color: white;
  box-shadow: 
    0 4px 12px rgba(99, 102, 241, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
  transition: all 0.3s ease;
}

.dark-mode .btn-primary:hover {
  background: linear-gradient(135deg, var(--dark-accent-hover), var(--dark-accent-primary));
  transform: translateY(-2px);
  box-shadow: 
    0 6px 20px rgba(99, 102, 241, 0.4),
    inset 0 1px 0 rgba(255, 255, 255, 0.15);
}

.dark-mode .btn-primary:active {
  transform: translateY(0);
  box-shadow: 
    0 2px 8px rgba(99, 102, 241, 0.3),
    inset 0 1px 0 rgba(255, 255, 255, 0.1);
}

/* Cards and Containers */
.dark-mode .card,
.dark-mode .bg-white {
  background-color: var(--dark-bg-secondary);
  border-color: var(--dark-border-color);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.dark-mode .bg-gray-50 {
  background-color: var(--dark-bg-tertiary);
}

/* Main container and card elements */
.dark-mode .main-container {
  background-color: transparent;
}

.dark-mode main .bg-white {
  background-color: var(--dark-bg-secondary);
  border-color: var(--dark-border-color);
}

.dark-mode .text-gray-900 {
  color: var(--dark-text-primary);
}

/* App-specific elements */
.dark-mode .logo-top img {
  filter: brightness(0.9) contrast(1.1);
}

/* Headers and Sections */
.dark-mode .questions-section-header {
  color: var(--dark-accent-primary);
  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}

.dark-mode .questions-section-header::after {
  background: linear-gradient(90deg, transparent, var(--dark-accent-primary), transparent);
}

/* Alerts and Messages */
.dark-mode .alert-danger {
  background-color: rgba(220, 38, 38, 0.1);
  border-color: rgba(220, 38, 38, 0.3);
  color: #fca5a5;
}

/* Loading States */
.dark-mode .loading-text {
  color: var(--dark-accent-primary);
}

.dark-mode .spinner-circle {
  border-top-color: var(--dark-accent-primary);
}

/* Ensure dark mode toggle is visible in both light and dark mode */
.dark-mode-toggle {
  position: fixed !important;
  top: 20px !important;
  right: 20px !important;
  z-index: 9999 !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2) !important;
}

/* Select2 Dark Mode */
.dark-mode .select2-container--default .select2-selection--single {
  background-color: var(--dark-bg-secondary);
  border-color: var(--dark-border-color);
  color: var(--dark-text-primary);
}

.dark-mode .select2-dropdown {
  background-color: var(--dark-bg-secondary);
  border-color: var(--dark-border-color);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}

.dark-mode .select2-results__option {
  color: var(--dark-text-primary);
}

.dark-mode .select2-results__option--highlighted {
  background-color: var(--dark-bg-tertiary);
  color: var(--dark-text-primary);
}

.dark-mode .select2-results__option[aria-selected=true] {
  background-color: var(--dark-accent-primary);
  color: white;
}

/* Scrollbar Styling */
.dark-mode ::-webkit-scrollbar {
  width: 12px;
  height: 12px;
}

.dark-mode ::-webkit-scrollbar-track {
  background: var(--dark-bg-secondary);
  border-radius: 6px;
}

.dark-mode ::-webkit-scrollbar-thumb {
  background: linear-gradient(var(--dark-accent-primary), var(--dark-accent-secondary));
  border-radius: 6px;
  border: 2px solid var(--dark-bg-secondary);
}

.dark-mode ::-webkit-scrollbar-thumb:hover {
  background: linear-gradient(var(--dark-accent-hover), var(--dark-accent-primary));
}

/* Animations and Effects */
@keyframes dark-mode-glow {
  0%, 100% {
    box-shadow: 0 0 20px rgba(99, 102, 241, 0.2);
  }
  50% {
    box-shadow: 0 0 40px rgba(99, 102, 241, 0.4);
  }
}

.dark-mode .form-control:focus,
.dark-mode .form-select:focus {
  animation: dark-mode-glow 2s ease-in-out infinite;
}

/* Responsive Dark Mode */
@media (max-width: 768px) {
  .dark-mode .feedback-form {
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  }
  
  .dark-mode .question-block {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  }
  
  .dark-mode-toggle {
    top: 12px !important;
    right: 12px !important;
  }
}

/* Tablet-specific styles for iPad (768×1024, 820×1180) */
@media only screen and (min-width: 768px) and (max-width: 1024px), 
       only screen and (min-width: 820px) and (max-width: 1180px) {
  .dark-mode .feedback-form {
    padding: 1rem;
    max-width: 95%;
  }
  
  .dark-mode .form-floating label {
    opacity: 0.9 !important;
    transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem) !important;
  }
  
  .dark-mode .form-control,
  .dark-mode .form-select {
    padding-top: 1.25rem !important;
    font-size: 16px !important; /* Prevent iOS zoom */
  }
  
  .dark-mode .form-check-input {
    width: 1.5rem !important;
    height: 1.5rem !important;
  }
  
  .dark-mode .question-block {
    padding: 1.25rem !important;
  }
  
  .dark-mode .select2-container .select2-selection--single {
    height: calc(3.5rem + 2px) !important;
    padding: 1rem 0.75rem !important;
  }
  
  .dark-mode .select2-selection__rendered {
    padding-top: 0.5rem !important;
  }
}

/* Surface Pro Tablet (912×1368) */
@media only screen and (min-width: 900px) and (max-width: 1368px) {
  .dark-mode .user-info-section .grid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
  
  .dark-mode .form-floating > .form-control:not(:placeholder-shown) ~ label {
    opacity: 0.9 !important;
  }
  
  .dark-mode .select2-container--default .select2-selection--single {
    padding-top: 1.5rem !important; 
  }
  
  .dark-mode .form-check {
    padding: 1rem !important;
  }
  
  .dark-mode .form-check-label {
    font-size: 1.1rem !important;
  }
}

/* High Contrast Mode Support */
@media (prefers-contrast: high) {
  .dark-mode {
    --dark-bg-primary: #000000;
    --dark-bg-secondary: #0a0a0a;
    --dark-text-primary: #ffffff;
    --dark-accent-primary: #7c7cfc;
  }
}

/* Accessibility for Reduced Motion */
@media (prefers-reduced-motion: reduce) {
  .dark-mode * {
    animation: none !important;
    transition: none !important;
  }
} 