/* =================================
   COMPREHENSIVE ACCESSIBILITY CSS
   High Contrast Mode & Screen Reader Support
   ================================= */

/* =================================
   DOWNLOAD BUTTON ACCESSIBILITY
   ================================= */

/* Enhanced download button styling */
.a-button--with-icon[download] {
  position: relative;
}

/* Visual indicator for download links */
.a-button--with-icon[download]::after {
  content: " ⬇";
  font-size: 0.8em;
  opacity: 0.7;
  margin-left: 4px;
}

/* High contrast mode download button fixes */
@media (prefers-contrast: high), (-ms-high-contrast: active), (forced-colors: active) {
  .a-button--with-icon[download] {
    border: 2px solid ButtonText !important;
    background-color: ButtonFace !important;
    color: ButtonText !important;
  }
  
  .a-button--with-icon[download]:hover,
  .a-button--with-icon[download]:focus {
    background-color: Highlight !important;
    color: HighlightText !important;
    border-color: Highlight !important;
    outline: 2px solid HighlightText !important;
    outline-offset: 1px !important;
  }
  
  .a-button--with-icon[download] .icon {
    fill: ButtonText !important;
    color: ButtonText !important;
  }
  
  .a-button--with-icon[download]:hover .icon,
  .a-button--with-icon[download]:focus .icon {
    fill: HighlightText !important;
    color: HighlightText !important;
  }
}

/* =================================
   SCREEN READER UTILITIES
   ================================= */

/* Screen Reader Only - Accessibility Utility Class */
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

/* Show on focus for keyboard navigation */
.sr-only:focus {
  position: static !important;
  width: auto !important;
  height: auto !important;
  padding: inherit !important;
  margin: inherit !important;
  overflow: visible !important;
  clip: auto !important;
  white-space: inherit !important;
}

/* Skip to content link */
.skip-link {
  position: absolute;
  top: -40px;
  left: 6px;
  background: #000;
  color: #fff;
  padding: 8px;
  z-index: 1000;
  text-decoration: none;
  border-radius: 4px;
}

.skip-link:focus {
  top: 6px;
}

/* =================================
   FOCUS MANAGEMENT
   ================================= */

/* Ensure focus is always visible */
:focus {
  outline: 2px solid #005fcc;
  outline-offset: 2px;
}

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

:focus-visible {
  outline: 5px solid #005fcc !important;
  outline-offset: 3px;
}

/* =================================
   REDUCED MOTION PREFERENCES
   ================================= */

/* Respect user's motion preferences */
@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;
  }
}

/* =================================
   WINDOWS HIGH CONTRAST MODE
   ================================= */

/* Microsoft IE/Edge High Contrast Detection */
@media screen and (-ms-high-contrast: active) {
  /* General focus indicators */
  a:focus,
  button:focus,
  input:focus,
  textarea:focus,
  select:focus {
    outline: 3px solid highlight !important;
    outline-offset: 2px !important;
  }
  
  /* SVG Icons */
  .svg-icon {
    fill: windowText !important;
    color: windowText !important;
    stroke: windowText !important;
  }
  
  .m-category-icon {
    border: 2px solid windowText !important;
    background-color: window !important;
  }
  
  .m-tile-article-preview__icon {
    border-left: 3px solid windowText !important;
  }
  
  /* Buttons */
  .a-button,
  button,
  input[type="submit"],
  input[type="button"] {
    border: 2px solid windowText !important;
    background-color: buttonFace !important;
    color: windowText !important;
  }
  
  .a-button:hover,
  .a-button:focus,
  button:hover,
  button:focus,
  input[type="submit"]:hover,
  input[type="submit"]:focus,
  input[type="button"]:hover,
  input[type="button"]:focus {
    background-color: highlight !important;
    color: highlightText !important;
    border-color: highlight !important;
  }
  
  /* Form inputs */
  input,
  textarea,
  select {
    background-color: window !important;
    color: windowText !important;
    border: 2px solid windowText !important;
  }
  
  input:focus,
  textarea:focus,
  select:focus {
    outline: 3px solid highlight !important;
    outline-offset: 1px !important;
  }
  
  /* Text elements */
  .m-tile-article-preview__category,
  .m-tile-article-preview__title,
  .m-tile-article-preview__summary {
    color: windowText !important;
  }
  
  /* Links */
  a {
    color: windowText !important;
  }
  
  a:hover,
  a:focus {
    color: highlightText !important;
    background-color: highlight !important;
  }
  
  /* Images */
  img {
    border: 1px solid windowText !important;
  }
  
  /* Hide decorative images */
  img[alt=""],
  img:not([alt]),
  [aria-hidden="true"] img {
    opacity: 0.3 !important;
    border-style: dashed !important;
  }
  
  /* Container */
  .m-tile-article-preview {
    border: 1px solid windowText !important;
    background-color: window !important;
    color: windowText !important;
  }
  
  /* Screen reader utilities in high contrast */
  .sr-only:focus {
    background-color: highlight !important;
    color: highlightText !important;
    outline: 2px solid highlightText !important;
  }
  
  .skip-link {
    background-color: buttonFace !important;
    color: windowText !important;
    border: 2px solid windowText !important;
  }
  
  .skip-link:focus {
    background-color: highlight !important;
    color: highlightText !important;
    border-color: highlightText !important;
  }
}

/* =================================
   MAC & MODERN BROWSER HIGH CONTRAST
   ================================= */

/* CSS Level 5 Media Query for high contrast (Mac & modern browsers) */
@media (prefers-contrast: high) {
  /* General focus indicators */
  a:focus,
  button:focus,
  input:focus,
  textarea:focus,
  select:focus {
    outline: 3px solid Highlight !important;
    outline-offset: 2px !important;
  }
  
  /* SVG Icons */
  .svg-icon {
    fill: CanvasText !important;
    color: CanvasText !important;
    stroke: CanvasText !important;
  }
  
  .m-category-icon {
    border: 2px solid CanvasText !important;
    background-color: Canvas !important;
  }
  
  .m-tile-article-preview__icon {
    border-left: 3px solid CanvasText !important;
  }
  
  /* Buttons */
  .a-button,
  button,
  input[type="submit"],
  input[type="button"] {
    border: 2px solid CanvasText !important;
    background-color: ButtonFace !important;
    color: ButtonText !important;
    forced-color-adjust: none;
  }
  
  .a-button:hover,
  .a-button:focus,
  button:hover,
  button:focus,
  input[type="submit"]:hover,
  input[type="submit"]:focus,
  input[type="button"]:hover,
  input[type="button"]:focus {
    background-color: Highlight !important;
    color: HighlightText !important;
    border-color: Highlight !important;
  }
  
  /* Form inputs */
  input,
  textarea,
  select {
    background-color: Canvas !important;
    color: CanvasText !important;
    border: 2px solid CanvasText !important;
    forced-color-adjust: none;
  }
  
  input:focus,
  textarea:focus,
  select:focus {
    outline: 3px solid Highlight !important;
    outline-offset: 1px !important;
    border-color: Highlight !important;
  }
  
  /* Text elements */
  .m-tile-article-preview__category,
  .m-tile-article-preview__title,
  .m-tile-article-preview__summary {
    color: CanvasText !important;
  }
  
  /* Links */
  a {
    color: LinkText !important;
  }
  
  a:visited {
    color: VisitedText !important;
  }
  
  a:hover,
  a:focus {
    color: HighlightText !important;
    background-color: Highlight !important;
  }
  
  /* Images */
  img {
    border: 1px solid CanvasText !important;
  }
  
  /* Hide decorative images */
  img[alt=""],
  img:not([alt]),
  [aria-hidden="true"] img {
    opacity: 0.3 !important;
    filter: contrast(0.5);
    border-style: dashed !important;
  }
  
  /* Container */
  .m-tile-article-preview {
    border: 1px solid CanvasText !important;
    background-color: Canvas !important;
    color: CanvasText !important;
  }
  
  /* Screen reader utilities in high contrast */
  .sr-only:focus {
    background-color: Highlight !important;
    color: HighlightText !important;
    outline: 2px solid HighlightText !important;
  }
  
  .skip-link {
    background-color: ButtonFace !important;
    color: ButtonText !important;
    border: 2px solid ButtonText !important;
  }
  
  .skip-link:focus {
    background-color: Highlight !important;
    color: HighlightText !important;
    border-color: HighlightText !important;
  }
}

/* =================================
   FORCED COLORS MODE (Windows 10+)
   ================================= */

/* Forced Colors Mode (Windows 10+) */
@media (forced-colors: active) {
  /* Let browser handle most color adjustments automatically */
  * {
    forced-color-adjust: auto;
  }
  
  /* Override specific problem elements */
  .svg-icon,
  .m-category-icon,
  .m-tile-article-preview__icon,
  .a-button,
  input,
  textarea,
  select,
  button {
    forced-color-adjust: none;
  }
  
  /* SVG Icons */
  .svg-icon {
    fill: CanvasText !important;
    color: CanvasText !important;
  }
  
  .m-category-icon {
    border: 2px solid CanvasText !important;
    background-color: Canvas !important;
  }
  
  .m-tile-article-preview__icon {
    border-left: 3px solid CanvasText !important;
  }
  
  /* Buttons */
  .a-button,
  button,
  input[type="submit"],
  input[type="button"],
  input[type="reset"] {
    border: 2px solid ButtonBorder !important;
    background-color: ButtonFace !important;
    color: ButtonText !important;
  }
  
  .a-button:hover,
  .a-button:focus,
  button:hover,
  button:focus,
  input[type="submit"]:hover,
  input[type="submit"]:focus,
  input[type="button"]:hover,
  input[type="button"]:focus,
  input[type="reset"]:hover,
  input[type="reset"]:focus {
    background-color: Highlight !important;
    color: HighlightText !important;
    border-color: Highlight !important;
    outline: 2px solid HighlightText !important;
    outline-offset: 1px !important;
  }
  
  /* Form Elements */
  input[type="text"],
  input[type="email"],
  input[type="password"],
  input[type="search"],
  input[type="tel"],
  input[type="url"],
  input[type="number"],
  textarea {
    background-color: Field !important;
    color: FieldText !important;
    border: 2px solid ButtonText !important;
  }
  
  input[type="text"]:focus,
  input[type="email"]:focus,
  input[type="password"]:focus,
  input[type="search"]:focus,
  input[type="tel"]:focus,
  input[type="url"]:focus,
  input[type="number"]:focus,
  textarea:focus {
    border-color: Highlight !important;
    outline: 3px solid Highlight !important;
    outline-offset: 1px !important;
  }
  
  /* Checkboxes and radio buttons */
  input[type="checkbox"],
  input[type="radio"] {
    background-color: Field !important;
    border: 2px solid ButtonText !important;
  }
  
  input[type="checkbox"]:checked,
  input[type="radio"]:checked {
    background-color: Highlight !important;
    border-color: Highlight !important;
  }
  
  input[type="checkbox"]:focus,
  input[type="radio"]:focus {
    outline: 3px solid Highlight !important;
    outline-offset: 2px !important;
  }
  
  /* Select elements */
  select {
    background-color: Field !important;
    color: FieldText !important;
    border: 2px solid ButtonText !important;
  }
  
  select:focus {
    border-color: Highlight !important;
    outline: 3px solid Highlight !important;
    outline-offset: 1px !important;
  }
  
  /* Enhanced focus indicators */
  a:focus,
  button:focus,
  input:focus,
  textarea:focus,
  select:focus,
  [tabindex]:focus {
    outline: 3px solid Highlight !important;
    outline-offset: 2px !important;
  }
  
  /* Text contrast */
  .m-tile-article-preview__category,
  .m-tile-article-preview__title,
  .m-tile-article-preview__summary {
    color: CanvasText !important;
  }
  
  /* Links */
  a {
    color: LinkText !important;
  }
  
  a:visited {
    color: VisitedText !important;
  }
  
  a:hover,
  a:focus {
    color: HighlightText !important;
    background-color: Highlight !important;
  }
  
  /* Images */
  img {
    border: 1px solid CanvasText !important;
  }
  
  /* Hide decorative images */
  img[alt=""],
  img:not([alt]),
  [aria-hidden="true"] img {
    opacity: 0.3 !important;
    border-style: dashed !important;
  }
  
  /* Container */
  .m-tile-article-preview {
    border: 1px solid CanvasText !important;
    background-color: Canvas !important;
    color: CanvasText !important;
  }
  
  /* Labels and fieldsets */
  label {
    color: CanvasText !important;
  }
  
  fieldset {
    border: 2px solid CanvasText !important;
    background-color: Canvas !important;
  }
  
  legend {
    color: CanvasText !important;
    background-color: Canvas !important;
  }
  
  /* Disabled states */
  input:disabled,
  textarea:disabled,
  select:disabled,
  button:disabled {
    background-color: Canvas !important;
    color: GrayText !important;
    border-color: GrayText !important;
  }
}

/* =================================
   MAC DARK MODE SUPPORT
   ================================= */

@media (prefers-color-scheme: dark) and (prefers-contrast: high) {
  /* Enhanced contrast for Mac dark mode */
  .svg-icon {
    fill: white !important;
    color: white !important;
  }
  
  .m-category-icon {
    border: 2px solid white !important;
    background-color: black !important;
  }
  
  .a-button {
    border: 2px solid white !important;
    background-color: black !important;
    color: white !important;
  }
  
  .a-button:hover,
  .a-button:focus {
    background-color: white !important;
    color: black !important;
  }
}

/* =================================
   FALLBACK FOR OLDER BROWSERS
   ================================= */

@media screen and (-ms-high-contrast: white-on-black) {
  /* Dark high contrast theme */
  .svg-icon {
    fill: white !important;
    color: white !important;
  }
  
  .m-category-icon {
    border: 2px solid white !important;
    background-color: black !important;
  }
}

@media screen and (-ms-high-contrast: black-on-white) {
  /* Light high contrast theme */
  .svg-icon {
    fill: black !important;
    color: black !important;
  }
  
  .m-category-icon {
    border: 2px solid black !important;
    background-color: white !important;
  }
}

/* =================================
   Fix element of website for accessibility
   ================================= */

.slick-dots li button:focus{outline: none !important;}
.slick-dots li button:focus,
.slick-dots li button:focus-visible
 {
  outline: 3px solid #005fcc !important;
  outline-offset: 2px !important;
    border: 2px solid #005fcc !important;
    box-shadow: 0 0 0 3px rgba(0, 95, 204, 0.5) !important;
}

.m-hero-slider__text-wrapper-link:focus {outline: none !important;}
.m-hero-slider__text-wrapper-link:focus-visible{ outline: 4px solid #005fcc !important; } 

.m-hero-image__button:focus {outline: none !important;}
.m-hero-image__button:focus-visible{ outline: 4px solid #005fcc !important; }

.a-button--secondary:focus {outline: none !important;}
.a-button--secondary:focus-visible{ outline: 4px solid #005fcc !important;border: 2px solid #005fcc !important; }

.o-header .inner-cntainer.top .font-size-controls button:focus {outline: none !important;}
.o-header .inner-container.top .font-size-controls button:focus-visible{ outline: 4px solid #005fcc !important;outline-offset: 0px !important;box-shadow: 0 0 0 7px rgba(0, 95, 204, 0.5) !important; }

#CookiebotWidget:not(.CookiebotWidget-open) .CookiebotWidget-logo:focus {outline: none !important;}
#CookiebotWidget:not(.CookiebotWidget-open) .CookiebotWidget-logo:focus-visible{ outline: 4px solid #005fcc !important; }

.m-module-staying-up-to-date .newsletter .sign-up input[type="text"]:focus {outline: none !important;}
.m-module-staying-up-to-date .newsletter .sign-up input[type="text"]:focus-visible{ outline: 4px solid #005fcc !important; }

.form-container input[type="text"]:focus {outline: none !important;}
.form-container input[type="text"]:focus-visible{ outline: 4px solid #005fcc !important; }
.form-container input[type="submit"]:focus {outline: none !important;}
.form-container input[type="submit"]:focus-visible{ outline: 4px solid #005fcc !important; }
.form-container button:focus {outline: none !important;}
.form-container button:focus-visible{ outline: 4px solid #005fcc !important; }
.form-container textarea:focus {outline: none !important;}
.form-container textarea:focus-visible{ outline: 4px solid #005fcc !important; }

.o-header .inner-container.top .font-size-controls button:focus {outline: none !important;}
.o-header .inner-container.top .font-size-controls button:focus-visible{ outline: 4px solid #005fcc !important;outline-offset: 0px !important;box-shadow: 0 0 0 7px rgba(0, 95, 204, 0.5) !important; }

.a-button:focus {outline: none !important;}
.a-button:focus-visible{ outline: 4px solid #005fcc !important; }

.m-module-staying-up-to-date .newsletter .sign-up .data-protection input[type=checkbox]:focus {outline: none !important;}
.m-module-staying-up-to-date .newsletter .sign-up .data-protection input[type=checkbox]:focus-visible{ outline: 4px solid #005fcc !important; }

.m-module-staying-up-to-date .newsletter .sign-up .data-protection label:focus {outline: none !important;}
.m-module-staying-up-to-date .newsletter .sign-up .data-protection label:focus-visible{ outline: 4px solid #005fcc !important; }

.select2-container--default .select2-search--inline .select2-search__field:focus {outline: none !important;}
.select2-container--default .select2-search--inline .select2-search__field:focus-visible{ outline: 4px solid #005fcc !important; }

.slick-prev, .slick-next:focus {outline: none !important;}
.slick-prev:focus-visible, .slick-next:focus-visible{ outline: 4px solid #005fcc !important; }

.m-contact-form + input[type="text"]:focus {outline: none !important;}
.m-contact-form + input[type="text"]:focus-visible{ outline: 4px solid #005fcc !important; }

.m-contact-form + input[type="checkbox"]:focus {outline: none !important;}
.m-contact-form + input[type="checkbox"]:focus-visible{ outline: 4px solid #005fcc !important; }

.m-contact-form  .form-row:focus {outline: none !important;}
.m-contact-form  .form-row:focus-visible{ outline: 4px solid #005fcc !important; }

.m-contact-form textarea:focus {outline: none !important;}
.m-contact-form textarea:focus-visible{ outline: 4px solid #005fcc !important; }

.m-contact-form iframe:focus {outline: none !important;}
.m-contact-form iframe:focus-visible{ outline: 4px solid #005fcc !important; }

.module iframe:focus {outline: none !important;}
.module iframe:focus-visible{ outline: 4px solid #005fcc !important; }  

.m-newsletter-sign-off-form input[type="text"]:focus {outline: none !important;}
.m-newsletter-sign-off-form input[type="text"]:focus-visible{ outline: 4px solid #005fcc !important; }

.m-module-video video:focus {outline: none !important;}
.m-module-video video:focus-visible{ outline: 4px solid #005fcc !important; }

a:focus {outline: none}
a:focus-visible{ outline: 4px solid #005fcc}
button:focus {outline: none}
button:focus-visible{ outline: 4px solid #005fcc}

