/* Custom High-Contrast Theme Colors - WCAG AA Compliant */
:root {
  /* Base Color Variables */
  --white: #ffffff;
  --off-white: #f8f9fa;
  --light-gray: #e9ecef;
  --medium-gray: #6c757d;
  --dark-gray: #343a40;
  --near-black: #1a1d20;
  --black: #0d0e0f;

  /* Brand Colors - Blues */
  --primary-blue: #0066cc;
  --primary-blue-dark: #004d99;
  --primary-blue-light: #3385d6;

  /* Status Colors */
  --success-green: #198754;
  --success-green-dark: #146c43;
  --warning-orange: #fd7e14;
  --warning-orange-dark: #dc6502;
  --danger-red: #dc3545;
  --danger-red-dark: #b02a37;
  --info-blue: #0dcaf0;
  --info-blue-dark: #087990;

  /* Primary Theme Colors */
  --primary-color: var(--primary-blue);
  --primary-light: var(--primary-blue-light);
  --primary-dark: var(--primary-blue-dark);

  /* Background Colors (18:1 contrast) */
  --body-bg: var(--white);
  --sidebar-bg: var(--off-white);
  --nav-bg: var(--white);
  --card-bg: var(--white);
  --code-bg: var(--off-white);

  /* Text Colors */
  --text-color: var(--near-black);        /* 18:1 contrast */
  --heading-color: var(--black);          /* 21:1 contrast */

  /* Link Colors (8.6:1 contrast) */
  --link-color: var(--primary-blue);
  --link-hover-color: var(--primary-blue-dark);

  /* Border Colors */
  --border-color: var(--light-gray);
}

/* Apply to body */
body {
  background-color: var(--body-bg) !important;
  color: var(--text-color) !important;
}

/* Headings */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  color: var(--heading-color) !important;
}

/* Links */
a {
  color: var(--link-color) !important;
}

a:hover {
  color: var(--link-hover-color) !important;
}

/* Navigation */
.navbar,
.top-header {
  background-color: var(--nav-bg) !important;
  border-bottom: 1px solid var(--border-color) !important;
}

.navbar-brand,
.nav-link {
  color: var(--text-color) !important;
}

.nav-link:hover,
.nav-link:focus {
  color: var(--link-hover-color) !important;
}

/* Sidebar */
.sidebar,
.docs-sidebar {
  background-color: var(--sidebar-bg) !important;
  border-right: 1px solid var(--border-color) !important;
}

.sidebar .nav-link {
  color: var(--text-color) !important;
}

.sidebar .nav-link:hover,
.sidebar .nav-link.active {
  color: var(--link-color) !important;
  background-color: var(--light-gray) !important;
}

/* Code blocks */
pre,
code {
  background-color: var(--code-bg) !important;
  color: var(--text-color) !important;
  border: 1px solid var(--border-color) !important;
}

/* Buttons */
.btn-primary {
  background-color: var(--primary-blue) !important;
  border-color: var(--primary-blue) !important;
  color: var(--white) !important;
}

.btn-primary:hover {
  background-color: var(--primary-blue-dark) !important;
  border-color: var(--primary-blue-dark) !important;
}

.btn-secondary {
  background-color: var(--medium-gray) !important;
  border-color: var(--medium-gray) !important;
  color: var(--white) !important;
}

.btn-secondary:hover {
  background-color: var(--dark-gray) !important;
  border-color: var(--dark-gray) !important;
}

/* Cards */
.card {
  background-color: var(--card-bg) !important;
  border-color: var(--border-color) !important;
  color: var(--text-color) !important;
}

/* Tables */
table {
  border-color: var(--border-color) !important;
  color: var(--text-color) !important;
}

table thead {
  background-color: var(--off-white) !important;
  color: var(--text-color) !important;
  font-weight: 600;
}

/* Search */
.search-input,
input[type="search"] {
  background-color: var(--white) !important;
  border-color: var(--border-color) !important;
  color: var(--text-color) !important;
}

.search-input:focus,
input[type="search"]:focus {
  border-color: var(--primary-blue) !important;
  box-shadow: 0 0 0 0.2rem rgba(0, 102, 204, 0.25) !important;
}

/* Alerts - WCAG AA Compliant */
.alert-info {
  background-color: #cff4fc !important;
  border-color: var(--info-blue-dark) !important;
  color: #055160 !important;
}

.alert-success {
  background-color: #d1e7dd !important;
  border-color: var(--success-green-dark) !important;
  color: #0a3622 !important;
}

.alert-warning {
  background-color: #fff3cd !important;
  border-color: var(--warning-orange-dark) !important;
  color: #664d03 !important;
}

.alert-danger {
  background-color: #f8d7da !important;
  border-color: var(--danger-red-dark) !important;
  color: #58151c !important;
}

/* Scrollbar */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: var(--off-white);
}

::-webkit-scrollbar-thumb {
  background: var(--medium-gray);
  border-radius: 5px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--dark-gray);
}

/* Accent elements */
.badge-primary {
  background-color: var(--primary-blue) !important;
  color: var(--white) !important;
}

.border-primary {
  border-color: var(--primary-blue) !important;
}

.text-primary {
  color: var(--primary-blue) !important;
}

.bg-primary {
  background-color: var(--primary-blue) !important;
  color: var(--white) !important;
}

/* Focus states */
*:focus {
  outline-color: var(--primary-blue) !important;
}

/* Selection */
::selection {
  background-color: var(--primary-blue-light) !important;
  color: var(--white) !important;
}
