.skip-link {
  position: fixed;
  top: 10px;
  right: 10px;
  z-index: 10002;
  padding: 12px 18px;
  background: #fff;
  color: #111;
  border: 2px solid #111;
  transform: translateY(-160%);
}

.skip-link:focus { transform: translateY(0); }

:focus-visible {
  outline: 3px solid #f0bd55 !important;
  outline-offset: 4px !important;
}

.a11y-toggle {
  position: fixed;
  left: 20px;
  bottom: 20px;
  z-index: 10000;
  width: 54px;
  height: 54px;
  border: 2px solid #fff;
  border-radius: 50%;
  background: #0d1a2d;
  color: #fff;
  font-size: 27px;
  cursor: pointer;
  box-shadow: 0 6px 22px rgba(0,0,0,.3);
}

.a11y-panel {
  position: fixed;
  left: 20px;
  bottom: 84px;
  z-index: 9999;
  width: min(310px, calc(100vw - 40px));
  padding: 20px;
  border: 1px solid #c9c9c9;
  border-radius: 10px;
  background: #fff;
  color: #111;
  box-shadow: 0 14px 45px rgba(0,0,0,.28);
  font-family: Arial, sans-serif;
}

.a11y-panel[hidden] { display: none; }
.a11y-panel h2 { margin: 0 0 14px; font-size: 22px; }
.a11y-panel button {
  display: block;
  width: 100%;
  margin-top: 9px;
  padding: 11px 14px;
  border: 1px solid #777;
  border-radius: 6px;
  background: #f5f5f5;
  color: #111;
  font: 600 16px Arial, sans-serif;
  cursor: pointer;
  text-align: right;
}
.a11y-panel button[aria-pressed="true"] { background: #0d1a2d; color: #fff; }

html.a11y-font-large { font-size: 115%; }
html.a11y-font-xlarge { font-size: 130%; }
html.a11y-links a { text-decoration: underline !important; text-decoration-thickness: 2px !important; }
html.a11y-contrast { filter: contrast(1.35); }
html.a11y-contrast body { background: #fff; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}

@media (max-width: 560px) {
  .a11y-toggle { left: 12px; bottom: 12px; }
  .a11y-panel { left: 12px; bottom: 76px; width: min(310px, calc(100vw - 24px)); }
}
