/* ========================================
   BASE STYLES - THEME AGNOSTIC
   Shared component styles for all themes
   ======================================== */

/* ========================================
   DARK MODE BASE OVERRIDES
   Generic dark mode styles (work with all themes)
   ======================================== */

.dark {
  --color-surface: var(--color-gray-900);
  --color-surface-secondary: var(--color-gray-800);
  --color-surface-tertiary: var(--color-gray-700);
  --color-border: var(--color-gray-700);
  --color-text-primary: var(--color-gray-50);
  --color-text-secondary: var(--color-gray-300);
  --color-text-tertiary: var(--color-gray-400);
  --color-text-inverse: var(--color-gray-900);
  --shadow-base: 0 1px 3px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.3);
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.3);
}

/* ========================================
   THEME DROPDOWN ACTIVE STATE
   ======================================== */

/* Active state for selected theme/mode buttons */
#theme-dropdown button.theme-active {
  background-color: var(--color-primary-600) !important;
  color: #ffffff !important;
}

/* Active state hover - slightly darker */
#theme-dropdown button.theme-active:hover {
  background-color: var(--color-primary-700) !important;
}

/* Checkmark icon styling in active buttons */
#theme-dropdown button.theme-active .fa-circle-check {
  color: #ffffff !important;
}

/* ========================================
   NAVIGATION COMPONENTS
   ======================================== */

/* Navigation */
.navbar {
  background-color: var(--color-primary-600);
  color: #ffffff;
}

.navbar a,
.navbar button {
  color: #ffffff;
  text-decoration: none;
}

.navbar .nav-link:hover {
  color: var(--color-accent-500);
  opacity: 1;
}

/* ========================================
   ACCESSIBILITY
   ======================================== */

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0.5rem;
  z-index: 50;
}

.skip-link:focus {
  left: 0.5rem;
  background-color: var(--color-primary-600);
  color: white;
  padding: 0.5rem 1rem;
  border-radius: 0.375rem;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* ========================================
   NOTIFICATIONS
   ======================================== */

.notification {
  padding: 1rem;
  border-radius: 0.375rem;
  margin-bottom: 1rem;
  display: flex;
  align-items: flex-start;
}

.notification-success {
  background-color: #f0fdf4;
  color: #166534;
  border: 1px solid #bbf7d0;
}

.notification-error {
  background-color: #fef2f2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

.notification-warning {
  background-color: #fefce8;
  color: #854d0e;
  border: 1px solid #fef08a;
}

.notification-info {
  background-color: #eff6ff;
  color: #1e40af;
  border: 1px solid #bfdbfe;
}

/* ========================================
   ANIMATIONS
   ======================================== */

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideIn {
  from {
    opacity: 0;
    transform: translateX(-20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.animate-fadeIn {
  animation: fadeIn 0.3s ease-out;
}

.animate-slideIn {
  animation: slideIn 0.3s ease-out;
}

/* ========================================
   FLOWBITE COMPONENT STYLES
   ======================================== */

/* Dropdown Menus */
[data-dropdown-menu] {
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
  z-index: 50;
}

/* Dropdown items use theme colors */
[data-dropdown-menu] a,
[data-dropdown-menu] button {
  color: var(--color-text-primary);
  transition: background-color 0.15s ease-in-out;
}

[data-dropdown-menu] a:hover,
[data-dropdown-menu] button:hover {
  background-color: var(--color-surface-secondary);
  color: var(--color-interactive);
}

/* Dark mode dropdown styling */
.dark [data-dropdown-menu] {
  background-color: var(--color-surface);
  border-color: var(--color-border);
}

.dark [data-dropdown-menu] a:hover,
.dark [data-dropdown-menu] button:hover {
  background-color: var(--color-surface-secondary);
}

/* Sidebar/Drawer Components */
[data-drawer] {
  background-color: var(--color-surface);
  border-right: 1px solid var(--color-border);
  transition: transform 300ms var(--ease-fluid);
  z-index: 40;
}

/* Dark mode sidebar */
.dark [data-drawer] {
  background-color: var(--color-surface);
  border-color: var(--color-border);
}

/* Drawer backdrop */
[data-drawer-backdrop] {
  background-color: rgba(0, 0, 0, 0.5);
  transition: opacity 300ms ease-in-out;
  z-index: 30;
}

/* Drawer open/close animations */
[data-drawer].transform-none {
  transform: translateX(0);
}

[data-drawer]:not(.transform-none) {
  transform: translateX(-100%);
}

/* Sidebar navigation items */
[data-drawer] a,
[data-drawer] button {
  color: var(--color-text-primary);
  transition: all 0.15s ease-in-out;
}

[data-drawer] a:hover,
[data-drawer] button:hover {
  background-color: var(--color-surface-secondary);
  color: var(--color-interactive);
}

[data-drawer] a.active,
[data-drawer] button.active {
  background-color: var(--color-surface-tertiary);
  color: var(--color-primary-600);
  border-left: 3px solid var(--color-interactive);
}

/* Dark mode sidebar navigation */
.dark [data-drawer] a:hover,
.dark [data-drawer] button:hover {
  background-color: var(--color-surface-secondary);
}

.dark [data-drawer] a.active,
.dark [data-drawer] button.active {
  background-color: var(--color-surface-tertiary);
  color: var(--color-primary-400);
  border-left-color: var(--color-interactive);
}

/* Modals */
[data-modal] {
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-lg);
  transition: all 300ms var(--ease-fluid);
}

.dark [data-modal] {
  background-color: var(--color-surface);
  border-color: var(--color-border);
}

/* Modal backdrop */
[data-modal-backdrop] {
  background-color: rgba(0, 0, 0, 0.6);
  transition: opacity 300ms ease-in-out;
  z-index: 50;
}

/* Datepicker Component */
.datepicker {
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
}

.dark .datepicker {
  background-color: var(--color-surface);
  border-color: var(--color-border);
}

.datepicker .datepicker-cell.selected {
  background-color: var(--color-primary-600);
  color: var(--color-text-inverse);
}

.datepicker .datepicker-cell:hover {
  background-color: var(--color-surface-secondary);
}

/* Tooltips */
[data-tooltip] {
  background-color: var(--color-gray-900);
  color: var(--color-text-inverse);
  box-shadow: var(--shadow-md);
  font-size: 0.875rem;
  padding: 0.5rem 0.75rem;
  z-index: 60;
}

.dark [data-tooltip] {
  background-color: var(--color-gray-700);
}

/* Tabs Component */
[data-tabs-toggle] button {
  color: var(--color-text-secondary);
  border-bottom: 2px solid transparent;
  transition: all 0.15s ease-in-out;
}

[data-tabs-toggle] button:hover {
  color: var(--color-text-primary);
  border-bottom-color: var(--color-border);
}

[data-tabs-toggle] button[aria-selected="true"] {
  color: var(--color-interactive);
  border-bottom-color: var(--color-interactive);
}

/* Dark mode tabs */
.dark [data-tabs-toggle] button {
  color: var(--color-text-secondary);
}

.dark [data-tabs-toggle] button:hover {
  color: var(--color-text-primary);
}

.dark [data-tabs-toggle] button[aria-selected="true"] {
  color: var(--color-primary-400);
  border-bottom-color: var(--color-primary-400);
}

/* Accordion Component */
[data-accordion-target] {
  color: var(--color-text-primary);
  background-color: var(--color-surface-secondary);
  border: 1px solid var(--color-border);
  transition: all 0.15s ease-in-out;
}

[data-accordion-target]:hover {
  background-color: var(--color-surface-tertiary);
}

.dark [data-accordion-target] {
  background-color: var(--color-surface-secondary);
  border-color: var(--color-border);
}

.dark [data-accordion-target]:hover {
  background-color: var(--color-surface-tertiary);
}

/* Toast Notifications (Flowbite) */
[data-toast] {
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
  transition: all 300ms var(--ease-snappy);
}

.dark [data-toast] {
  background-color: var(--color-surface);
  border-color: var(--color-border);
}

/* Spinner/Loading Components */
.animate-spin {
  animation: spin 1s linear infinite;
}

@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* ========================================
   TABLE SORT ICONS (Font Awesome SVG)
   ======================================== */

/* Font Awesome renders icons as SVG elements.
   Without explicit size constraints, the SVG
   renders at its native path dimensions, causing
   oversized icons. This constrains the SVG to
   match the font-size of its container. */

.sort-icon {
  display: inline-block;
  width: 0.75em;  /* 12px at 16px font-size */
  height: 0.75em;
  vertical-align: middle;
}

/* Ensure the SVG element itself is constrained */
.sort-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}
