/* ============================================
   Accessibility Widget Styles
   Shiduchim.io - Inclusive Design
   ============================================ */

/* ==================== CSS VARIABLES ==================== */
:root {
  --a11y-font-scale: 1;
  --a11y-toggle-size: 56px;
  --a11y-panel-width: 320px;
  --a11y-panel-bg: var(--color-gray-900);
  --a11y-panel-border: var(--color-gray-700);
  --a11y-button-bg: var(--color-gray-800);
  --a11y-button-hover: var(--color-gray-700);
  --a11y-button-active: var(--color-primary);
  --a11y-text: var(--color-white);
  --a11y-text-muted: var(--color-gray-400);
}

/* ==================== TOGGLE BUTTON ==================== */
.a11y-toggle {
  position: fixed;
  bottom: 20px;
  left: 20px;
  z-index: 9999;
  width: var(--a11y-toggle-size);
  height: var(--a11y-toggle-size);
  border: none;
  border-radius: 50%;
  background: var(--gradient-brand);
  color: var(--color-white);
  cursor: pointer;
  box-shadow: var(--shadow-lg);
  transition: transform var(--transition), box-shadow var(--transition);
  display: flex;
  align-items: center;
  justify-content: center;
}

.a11y-toggle:hover {
  transform: scale(1.05);
  box-shadow: var(--shadow-xl);
}

.a11y-toggle:focus {
  outline: none;
  box-shadow: var(--shadow-xl), 0 0 0 4px rgba(0, 217, 165, 0.4);
}

.a11y-toggle:focus-visible {
  outline: 3px solid var(--color-primary);
  outline-offset: 3px;
}

.a11y-toggle svg,
.a11y-toggle .a11y-icon {
  width: 28px;
  height: 28px;
  fill: currentColor;
}

.a11y-toggle[aria-expanded="true"] {
  background: var(--gradient-brand-hover);
}

/* RTL Support - Move toggle to bottom-right */
[dir="rtl"] .a11y-toggle,
html[dir="rtl"] .a11y-toggle,
.rtl .a11y-toggle {
  left: auto;
  right: 20px;
}

/* ==================== PANEL ==================== */
.a11y-panel {
  position: fixed;
  bottom: 90px;
  left: 20px;
  z-index: 9998;
  width: var(--a11y-panel-width);
  max-height: calc(100vh - 120px);
  background: var(--a11y-panel-bg);
  border: 1px solid var(--a11y-panel-border);
  border-radius: 16px;
  box-shadow: var(--shadow-xl);
  overflow: hidden;
  opacity: 0;
  visibility: hidden;
  transform: translateY(20px) scale(0.95);
  transition: opacity var(--transition), visibility var(--transition), transform var(--transition);
}

.a11y-panel.open,
.a11y-panel[data-state="open"] {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

/* RTL Support - Move panel to right side */
[dir="rtl"] .a11y-panel,
html[dir="rtl"] .a11y-panel,
.rtl .a11y-panel {
  left: auto;
  right: 20px;
}

/* ==================== PANEL HEADER ==================== */
.a11y-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  border-bottom: 1px solid var(--a11y-panel-border);
  background: var(--color-gray-800);
}

.a11y-panel-title {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  font-size: var(--text-lg);
  font-weight: var(--font-semibold);
  color: var(--a11y-text);
  margin: 0;
}

.a11y-panel-title svg,
.a11y-panel-title .a11y-icon {
  width: 24px;
  height: 24px;
  fill: var(--color-primary);
}

.a11y-panel-close {
  width: 32px;
  height: 32px;
  padding: 0;
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--a11y-text-muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--transition-fast), color var(--transition-fast);
}

.a11y-panel-close:hover {
  background: var(--color-gray-700);
  color: var(--a11y-text);
}

.a11y-panel-close:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-primary);
}

.a11y-panel-close:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.a11y-panel-close svg {
  width: 20px;
  height: 20px;
}

/* ==================== PANEL CONTENT ==================== */
.a11y-panel-content {
  padding: var(--space-4);
  overflow-y: auto;
  max-height: calc(100vh - 200px);
}

/* ==================== FEATURE GRID ==================== */
.a11y-feature-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}

/* ==================== FEATURE BUTTONS ==================== */
.a11y-feature-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-4) var(--space-3);
  min-height: 90px;
  border: 1px solid var(--a11y-panel-border);
  border-radius: 12px;
  background: var(--a11y-button-bg);
  color: var(--a11y-text);
  cursor: pointer;
  transition: background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);
}

.a11y-feature-btn:hover {
  background: var(--a11y-button-hover);
  border-color: var(--color-gray-600);
}

.a11y-feature-btn:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-primary);
}

.a11y-feature-btn:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.a11y-feature-btn:active {
  transform: scale(0.98);
}

/* Active state */
.a11y-feature-btn.active,
.a11y-feature-btn[aria-pressed="true"] {
  background: rgba(0, 217, 165, 0.15);
  border-color: var(--color-primary);
  color: var(--color-primary);
}

.a11y-feature-btn.active svg,
.a11y-feature-btn[aria-pressed="true"] svg,
.a11y-feature-btn.active .a11y-icon,
.a11y-feature-btn[aria-pressed="true"] .a11y-icon {
  fill: var(--color-primary);
}

.a11y-feature-btn svg,
.a11y-feature-btn .a11y-icon {
  width: 24px;
  height: 24px;
  fill: currentColor;
  transition: fill var(--transition-fast);
}

.a11y-feature-btn-label {
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  text-align: center;
  line-height: 1.3;
}

/* ==================== FONT SIZE SLIDER ==================== */
.a11y-slider-section {
  margin-bottom: var(--space-4);
}

.a11y-slider-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: var(--space-2);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  color: var(--a11y-text);
}

.a11y-slider-value {
  color: var(--color-primary);
  font-weight: var(--font-semibold);
}

.a11y-slider {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 8px;
  border-radius: 4px;
  background: var(--color-gray-700);
  outline: none;
  cursor: pointer;
  transition: background var(--transition-fast);
}

.a11y-slider:hover {
  background: var(--color-gray-600);
}

.a11y-slider:focus {
  box-shadow: 0 0 0 2px var(--color-primary);
}

.a11y-slider:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

/* Webkit (Chrome, Safari, Edge) */
.a11y-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 20px;
  height: 20px;
  border: 3px solid var(--color-primary);
  border-radius: 50%;
  background: var(--color-gray-900);
  cursor: pointer;
  transition: transform var(--transition-fast), background var(--transition-fast);
}

.a11y-slider::-webkit-slider-thumb:hover {
  transform: scale(1.1);
  background: var(--color-primary);
}

/* Firefox */
.a11y-slider::-moz-range-thumb {
  width: 20px;
  height: 20px;
  border: 3px solid var(--color-primary);
  border-radius: 50%;
  background: var(--color-gray-900);
  cursor: pointer;
  transition: transform var(--transition-fast), background var(--transition-fast);
}

.a11y-slider::-moz-range-thumb:hover {
  transform: scale(1.1);
  background: var(--color-primary);
}

/* Firefox track */
.a11y-slider::-moz-range-track {
  height: 8px;
  border-radius: 4px;
  background: var(--color-gray-700);
}

/* ==================== RESET BUTTON ==================== */
.a11y-reset-btn {
  grid-column: span 2;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  width: 100%;
  padding: var(--space-3) var(--space-4);
  border: 1px solid var(--color-gray-600);
  border-radius: 10px;
  background: transparent;
  color: var(--a11y-text-muted);
  font-size: var(--text-sm);
  font-weight: var(--font-medium);
  cursor: pointer;
  transition: background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);
}

.a11y-reset-btn:hover {
  background: var(--color-gray-800);
  color: var(--a11y-text);
  border-color: var(--color-gray-500);
}

.a11y-reset-btn:focus {
  outline: none;
  box-shadow: 0 0 0 2px var(--color-primary);
}

.a11y-reset-btn:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.a11y-reset-btn svg {
  width: 16px;
  height: 16px;
}

/* ==================== ACCESSIBILITY MODE CLASSES ==================== */

/* High Contrast Mode */
.a11y-high-contrast,
.a11y-high-contrast * {
  border-color: var(--color-white) !important;
}

.a11y-high-contrast {
  --color-gray-400: #FFFFFF;
  --color-gray-500: #FFFFFF;
  --color-gray-600: #FFFFFF;
}

.a11y-high-contrast body,
.a11y-high-contrast .section,
.a11y-high-contrast .card {
  background: var(--color-black) !important;
}

.a11y-high-contrast p,
.a11y-high-contrast span,
.a11y-high-contrast h1,
.a11y-high-contrast h2,
.a11y-high-contrast h3,
.a11y-high-contrast h4,
.a11y-high-contrast h5,
.a11y-high-contrast h6,
.a11y-high-contrast li,
.a11y-high-contrast label {
  color: var(--color-white) !important;
}

.a11y-high-contrast a {
  color: var(--color-primary) !important;
  text-decoration: underline !important;
}

.a11y-high-contrast button,
.a11y-high-contrast .btn {
  border: 2px solid var(--color-white) !important;
}

/* Grayscale Mode */
.a11y-grayscale {
  filter: grayscale(100%);
}

.a11y-grayscale img,
.a11y-grayscale video {
  filter: grayscale(100%);
}

/* Dyslexia-Friendly Mode */
.a11y-dyslexia,
.a11y-dyslexia * {
  font-family: 'OpenDyslexic', 'Comic Sans MS', cursive, sans-serif !important;
  letter-spacing: 0.12em !important;
  word-spacing: 0.25em !important;
  line-height: 1.8 !important;
}

.a11y-dyslexia p,
.a11y-dyslexia span,
.a11y-dyslexia li,
.a11y-dyslexia td,
.a11y-dyslexia th {
  text-align: left !important;
}

[dir="rtl"] .a11y-dyslexia p,
[dir="rtl"] .a11y-dyslexia span,
[dir="rtl"] .a11y-dyslexia li,
[dir="rtl"] .a11y-dyslexia td,
[dir="rtl"] .a11y-dyslexia th {
  text-align: right !important;
}

/* Highlight Links Mode */
.a11y-highlight-links a {
  text-decoration: underline !important;
  text-underline-offset: 3px !important;
  background-color: rgba(0, 217, 165, 0.2) !important;
  padding: 2px 4px !important;
  border-radius: 3px !important;
}

.a11y-highlight-links a:hover {
  background-color: rgba(0, 217, 165, 0.4) !important;
}

/* Stop Animations Mode */
.a11y-stop-animations,
.a11y-stop-animations *,
.a11y-stop-animations *::before,
.a11y-stop-animations *::after {
  animation: none !important;
  transition: none !important;
}

/* Keyboard Navigation Enhancement */
.a11y-keyboard-nav *:focus {
  outline: 3px solid var(--color-primary) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 6px rgba(0, 217, 165, 0.3) !important;
}

.a11y-keyboard-nav *:focus:not(:focus-visible) {
  outline: none !important;
  box-shadow: none !important;
}

.a11y-keyboard-nav *:focus-visible {
  outline: 3px solid var(--color-primary) !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 6px rgba(0, 217, 165, 0.3) !important;
}

/* Font Scale Mode */
.a11y-font-scale {
  font-size: calc(1rem * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale h1 {
  font-size: calc(var(--text-5xl) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale h2 {
  font-size: calc(var(--text-4xl) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale h3 {
  font-size: calc(var(--text-3xl) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale h4 {
  font-size: calc(var(--text-2xl) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale h5 {
  font-size: calc(var(--text-xl) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale h6 {
  font-size: calc(var(--text-lg) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale p,
.a11y-font-scale span,
.a11y-font-scale li,
.a11y-font-scale td,
.a11y-font-scale th,
.a11y-font-scale label {
  font-size: calc(var(--text-base) * var(--a11y-font-scale, 1)) !important;
}

.a11y-font-scale small {
  font-size: calc(var(--text-sm) * var(--a11y-font-scale, 1)) !important;
}

/* ==================== RESPONSIVE DESIGN ==================== */
@media (max-width: 400px) {
  .a11y-panel {
    left: 10px;
    right: 10px;
    width: calc(100% - 20px);
    max-width: none;
  }

  [dir="rtl"] .a11y-panel,
  html[dir="rtl"] .a11y-panel,
  .rtl .a11y-panel {
    left: 10px;
    right: 10px;
  }

  .a11y-toggle {
    left: 10px;
  }

  [dir="rtl"] .a11y-toggle,
  html[dir="rtl"] .a11y-toggle,
  .rtl .a11y-toggle {
    left: auto;
    right: 10px;
  }
}

@media (max-width: 360px) {
  .a11y-feature-grid {
    grid-template-columns: 1fr;
  }

  .a11y-reset-btn {
    grid-column: span 1;
  }

  .a11y-feature-btn {
    flex-direction: row;
    min-height: auto;
    padding: var(--space-3);
  }
}

/* ==================== PRINT STYLES ==================== */
@media print {
  .a11y-toggle,
  .a11y-panel {
    display: none !important;
    visibility: hidden !important;
  }
}

/* ==================== REDUCED MOTION PREFERENCE ==================== */
@media (prefers-reduced-motion: reduce) {
  .a11y-toggle,
  .a11y-panel,
  .a11y-feature-btn,
  .a11y-slider,
  .a11y-slider::-webkit-slider-thumb,
  .a11y-slider::-moz-range-thumb {
    transition: none !important;
  }

  .a11y-panel.open,
  .a11y-panel[data-state="open"] {
    transform: none;
  }
}

/* ==================== DARK/LIGHT MODE SUPPORT ==================== */
@media (prefers-color-scheme: light) {
  /* Widget maintains dark theme regardless of system preference */
  .a11y-panel {
    background: var(--color-gray-900);
    border-color: var(--color-gray-700);
  }
}

/* Light mode class support - Override for body.light-mode */
body.light-mode .a11y-panel {
  background: #FFFFFF;
  border-color: #E2E8F0;
  box-shadow: 0 25px 60px rgba(0, 0, 0, 0.15);
}

body.light-mode .a11y-panel-header {
  background: #F7FAFC;
  border-bottom-color: #E2E8F0;
}

body.light-mode .a11y-panel-title {
  color: #1A1A1A;
}

body.light-mode .a11y-panel-close {
  color: #4A5568;
}

body.light-mode .a11y-panel-close:hover {
  background: #E2E8F0;
  color: #1A1A1A;
}

body.light-mode .a11y-feature-btn {
  background: #F7FAFC;
  border-color: #E2E8F0;
  color: #1A1A1A;
}

body.light-mode .a11y-feature-btn:hover {
  background: #EDF2F7;
  border-color: #CBD5E0;
}

body.light-mode .a11y-feature-btn.active,
body.light-mode .a11y-feature-btn[aria-pressed="true"] {
  background: rgba(0, 217, 165, 0.15);
  border-color: #00D9A5;
  color: #00D9A5;
}

body.light-mode .a11y-feature-btn-label {
  color: inherit;
}

body.light-mode .a11y-slider-label {
  color: #1A1A1A;
}

body.light-mode .a11y-slider {
  background: #E2E8F0;
}

body.light-mode .a11y-slider:hover {
  background: #CBD5E0;
}

body.light-mode .a11y-slider::-webkit-slider-thumb {
  background: #FFFFFF;
  border-color: #00D9A5;
}

body.light-mode .a11y-slider::-moz-range-thumb {
  background: #FFFFFF;
  border-color: #00D9A5;
}

body.light-mode .a11y-slider::-moz-range-track {
  background: #E2E8F0;
}

body.light-mode .a11y-reset-btn {
  border-color: #E2E8F0;
  color: #4A5568;
}

body.light-mode .a11y-reset-btn:hover {
  background: #F7FAFC;
  color: #1A1A1A;
  border-color: #CBD5E0;
}
