/* ===== ACCESSIBILITY (Barrierefreiheit) ===== */

/* --- Skip-to-content link --- */
.skip-link {
  position: absolute;
  top: -100%;
  left: 1rem;
  z-index: 10000;
  background: #1a3c6e;
  color: #ffffff;
  padding: 0.75rem 1.5rem;
  border-radius: 0 0 10px 10px;
  font-weight: 600;
  font-size: 1rem;
  text-decoration: none;
  transition: top 0.15s ease;
}
.skip-link:focus {
  top: 0;
  outline: 3px solid #c4a363;
  outline-offset: 2px;
}

/* --- Focus indicators --- */
:focus-visible {
  outline: 3px solid #1a3c6e;
  outline-offset: 2px;
  border-radius: 4px;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid #1a3c6e;
  outline-offset: 2px;
}
.sidebar-link:focus-visible {
  outline-offset: -2px;
}

/* Remove default focus for mouse users */
:focus:not(:focus-visible) {
  outline: none;
}

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

/* --- Reduced motion --- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .sidebar--open {
    transition: none !important;
  }
  .sidebar-overlay--visible {
    transition: none !important;
  }
}

/* --- High contrast mode --- */
@media (prefers-contrast: high) {
  :root {
    --mizan-text: #000000;
    --mizan-muted: #333333;
    --mizan-border: #000000;
    --mizan-green-100: #ffffff;
    --mizan-cream-50: #ffffff;
    --mizan-cream-100: #f0f0f0;
    --mizan-cream-200: #e0e0e0;
  }
  body {
    background: #ffffff;
    color: #000000;
  }
  .sidebar-link {
    border-left: 3px solid transparent;
  }
  .sidebar-link--active {
    border-left-color: #000000;
    font-weight: 700;
  }
  .button {
    border: 2px solid currentColor;
  }
  .alert {
    border: 2px solid currentColor;
  }
  img {
    filter: contrast(1.15);
  }
}

/* Windows High Contrast Mode */
@media (-ms-high-contrast: active), (forced-colors: active) {
  .sidebar-link--active {
    border-left: 4px solid Highlight;
  }
  .button {
    border: 2px solid ButtonText;
  }
  .brand-logo {
    forced-color-adjust: auto;
  }
}

/* --- Large click targets (min 44x44px) --- */
.sidebar-toggle {
  min-width: 44px;
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sidebar-link {
  min-height: 44px;
  display: flex;
  align-items: center;
}
.button {
  min-height: 44px;
  padding: 0.5rem 1.25rem;
}
.topbar__actions .button {
  min-height: 44px;
}
.sidebar-footer button {
  min-height: 44px;
}

/* --- Font sizing improvements --- */
html {
  font-size: 100%;
}
body {
  font-size: 1rem;
  line-height: 1.6;
}
h1 { font-size: 1.75rem; line-height: 1.3; }
h2 { font-size: 1.5rem; line-height: 1.35; }
h3 { font-size: 1.25rem; line-height: 1.4; }
h4 { font-size: 1.125rem; line-height: 1.45; }
small, .text-small {
  font-size: 0.875rem;
}

/* --- Color contrast improvements (WCAG AA minimum) --- */
.brand__text small {
  color: #5a6560;
}
.sidebar-footer__label,
.sidebar-footer__version {
  color: #5a6560;
}
.sidebar-heading {
  color: #5a6560;
  font-weight: 600;
}

/* --- Keyboard navigation improvements --- */
[tabindex]:not([tabindex="-1"]):focus-visible,
details summary:focus-visible {
  outline: 3px solid #1a3c6e;
  outline-offset: 2px;
}
.sidebar-link--disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* --- Focus trap for modals (applied via JS) --- */
.modal[aria-modal="true"] {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.5);
}
.modal[aria-modal="true"] > * {
  background: #ffffff;
  border-radius: 16px;
  padding: 2rem;
  max-width: 90vw;
  max-height: 85vh;
  overflow-y: auto;
  box-shadow: 0 18px 55px rgba(7,27,23,0.11);
}
.modal[aria-modal="true"]:focus-visible {
  outline: none;
}
.modal[aria-modal="true"] > *:focus-visible {
  outline: 3px solid #1a3c6e;
  outline-offset: -2px;
}

/* --- Ensure proper text spacing --- */
* {
  word-break: break-word;
}
p, li, .sidebar-link, .button, .alert {
  word-spacing: normal;
  letter-spacing: normal;
}

/* --- Form field accessibility --- */
input, select, textarea {
  font-size: 1rem;
  min-height: 44px;
}
label {
  font-weight: 600;
  margin-bottom: 0.25rem;
  display: inline-block;
}

/* --- Table accessibility --- */
th {
  text-align: left;
  font-weight: 600;
}
td, th {
  padding: 0.5rem 0.75rem;
}