/* WCAG 2.1 AA Compliant Keyboard Focus Styles */

/*
 * Focus visible styles for all interactive elements
 * Meets WCAG 2.1 Success Criterion 2.4.7 (Focus Visible)
 * Provides clear visual indication when elements receive keyboard focus
 */

/* Default focus style for all interactive elements */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible,
[role="button"]:focus-visible,
[role="link"]:focus-visible {
  outline: 3px solid rgba(59, 130, 246, 0.8);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Enhanced focus for primary buttons */
.btn:focus-visible,
.btn-primary:focus-visible,
button[type="submit"]:focus-visible {
  outline: 3px solid rgba(59, 130, 246, 1);
  outline-offset: 3px;
  box-shadow: 0 0 0 6px rgba(59, 130, 246, 0.2);
}

/* Focus for secondary/outlined buttons */
.btn-secondary:focus-visible {
  outline: 3px solid rgba(147, 197, 253, 0.9);
  outline-offset: 3px;
  box-shadow: 0 0 0 6px rgba(147, 197, 253, 0.15);
}

/* Focus for navigation links */
nav a:focus-visible,
.nav-links a:focus-visible {
  outline: 2px solid rgba(59, 130, 246, 0.9);
  outline-offset: 4px;
  background: rgba(59, 130, 246, 0.05);
  border-radius: 6px;
}

/* Focus for form inputs */
input[type="text"]:focus-visible,
input[type="email"]:focus-visible,
input[type="password"]:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 2px solid rgba(59, 130, 246, 0.9);
  outline-offset: 0;
  border-color: rgba(59, 130, 246, 0.8);
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* Focus for checkboxes and radio buttons */
input[type="checkbox"]:focus-visible,
input[type="radio"]:focus-visible {
  outline: 2px solid rgba(59, 130, 246, 0.9);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.15);
}

/* Focus for cards/clickable containers */
.card:focus-visible,
.tier-card:focus-visible,
.feature-card:focus-visible {
  outline: 3px solid rgba(59, 130, 246, 0.8);
  outline-offset: 2px;
  box-shadow: 0 0 0 6px rgba(59, 130, 246, 0.1);
}

/* Focus for footer links */
footer a:focus-visible {
  outline: 2px solid rgba(59, 130, 246, 0.8);
  outline-offset: 3px;
  background: rgba(59, 130, 246, 0.08);
  border-radius: 4px;
  padding: 2px 4px;
  margin: -2px -4px;
}

/* Focus for cookie consent buttons */
#cookie-accept-btn:focus-visible,
#cookie-decline-btn:focus-visible {
  outline: 3px solid rgba(255, 255, 255, 0.9);
  outline-offset: 3px;
  box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.2);
}

/* Skip to main content link (hidden unless focused) */
.skip-to-main {
  position: absolute;
  left: -9999px;
  z-index: 999;
  padding: 1em;
  background-color: #3b82f6;
  color: white;
  text-decoration: none;
  border-radius: 4px;
}

.skip-to-main:focus {
  left: 50%;
  transform: translateX(-50%);
  top: 1em;
}

/* Ensure focus is never hidden by removing default outline only when custom styles are applied */
*:focus:not(:focus-visible) {
  outline: none;
}

/* High contrast mode support */
@media (prefers-contrast: high) {
  a:focus-visible,
  button:focus-visible,
  input:focus-visible,
  textarea:focus-visible,
  select:focus-visible,
  [tabindex]:focus-visible {
    outline: 4px solid currentColor;
    outline-offset: 3px;
  }
}

/* Reduced motion support */
@media (prefers-reduced-motion: reduce) {
  *:focus-visible {
    transition: none;
  }
}
