.skip-links {
  position: absolute;
  top: 0;
  left: 0;
  z-index: var(--z-toast);
}

.skip-link {
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  width: max-content;
  max-width: calc(100vw - 32px);
  transform: translateY(-150%);
  border: 2px solid #fff;
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  background: var(--color-blue-900);
  color: #fff;
  font-weight: 900;
  text-decoration: none;
  box-shadow: var(--shadow-lg);
  opacity: 0;
  pointer-events: none;
  transition: transform var(--transition-fast), opacity var(--transition-fast);
}

.skip-link:focus,
.skip-link:focus-visible {
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}

:focus-visible {
  outline: 4px solid var(--color-focus);
  outline-offset: 4px;
  box-shadow: 0 0 0 7px rgba(217, 154, 54, 0.22);
}

a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus,
summary:focus,
[tabindex]:focus {
  outline: 2px solid transparent;
}

a:focus-visible {
  text-decoration-thickness: 0.16em;
}

button,
.btn,
.button-link,
.button-secondary,
input,
select,
textarea,
summary {
  min-height: 44px;
}

input,
select,
textarea {
  color: var(--color-text);
}

input:invalid,
select:invalid,
textarea:invalid,
[aria-invalid="true"] {
  border-color: var(--color-red-700);
  box-shadow: 0 0 0 3px rgba(179, 55, 34, 0.12);
}

.field-error,
.error-text {
  color: var(--color-red-700);
  font-weight: 800;
}

input::placeholder,
textarea::placeholder {
  color: #687873;
  opacity: 1;
}

[aria-disabled="true"],
:disabled {
  cursor: not-allowed;
  opacity: 0.62;
}

[aria-current="page"],
[aria-pressed="true"] {
  box-shadow: inset 0 -3px 0 var(--color-focus);
}

.auth-accessibility {
  position: fixed;
  top: var(--space-3);
  right: var(--space-3);
  z-index: var(--z-header);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

body.font-large {
  font-size: 118%;
}

body.font-large .public-menu,
body.font-large .breadcrumb,
body.font-large table {
  line-height: 1.65;
}

html[data-text-spacing="wide"] body {
  line-height: 1.8;
  word-spacing: 0.16em;
}

html[data-text-spacing="wide"] p,
html[data-text-spacing="wide"] li,
html[data-text-spacing="wide"] label,
html[data-text-spacing="wide"] input,
html[data-text-spacing="wide"] textarea,
html[data-text-spacing="wide"] select,
html[data-text-spacing="wide"] button,
html[data-text-spacing="wide"] a {
  letter-spacing: 0.04em;
}

html[data-text-spacing="wide"] .content-panel,
html[data-text-spacing="wide"] .service-card,
html[data-text-spacing="wide"] .metric-card {
  padding-block: calc(var(--space-5) + 0.25rem);
}

html[data-motion="reduced"] *,
html[data-motion="reduced"] *::before,
html[data-motion="reduced"] *::after {
  scroll-behavior: auto !important;
  animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
}

html[data-theme="high-contrast"] body {
  background: #fff !important;
  color: #000 !important;
}

html[data-theme="high-contrast"] .public-topbar,
html[data-theme="high-contrast"] .public-footer,
html[data-theme="high-contrast"] .admin-sidebar,
html[data-theme="high-contrast"] .auth-hero {
  background: #000 !important;
  color: #fff !important;
}

html[data-theme="high-contrast"] a,
html[data-theme="high-contrast"] .btn-ghost {
  color: #004c99 !important;
}

html[data-theme="high-contrast"] .content-panel,
html[data-theme="high-contrast"] .public-card,
html[data-theme="high-contrast"] .metric-card,
html[data-theme="high-contrast"] .service-card,
html[data-theme="high-contrast"] .table-wrap,
html[data-theme="high-contrast"] .table-wrapper,
html[data-theme="high-contrast"] input,
html[data-theme="high-contrast"] select,
html[data-theme="high-contrast"] textarea {
  border-color: #000 !important;
  background: #fff !important;
  color: #000 !important;
  box-shadow: none !important;
}

html[data-theme="high-contrast"] .btn,
html[data-theme="high-contrast"] button,
html[data-theme="high-contrast"] .button-primary,
html[data-theme="high-contrast"] .button-secondary,
html[data-theme="high-contrast"] summary {
  border: 2px solid #000 !important;
}

html[data-theme="high-contrast"] .btn-primary,
html[data-theme="high-contrast"] .button-primary {
  background: #000 !important;
  color: #fff !important;
}

html[data-theme="high-contrast"] table th,
html[data-theme="high-contrast"] table td {
  border-color: #000 !important;
}

html[data-theme="high-contrast"] table th {
  background: #000 !important;
  color: #fff !important;
}

html[data-theme="high-contrast"] .badge {
  border-color: #000;
  background: #fff;
  color: #000;
}

html[data-theme="high-contrast"] svg path,
html[data-theme="high-contrast"] svg circle,
html[data-theme="high-contrast"] svg rect {
  stroke: currentColor !important;
}

html[data-theme="high-contrast"] :focus-visible {
  outline-color: #ffbf00;
  box-shadow: 0 0 0 7px rgba(255, 191, 0, 0.42);
}

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

@media (max-width: 640px) {
  .accessibility-actions {
    width: auto;
    justify-content: flex-start;
  }

  .accessibility-actions button {
    flex: 0 0 auto;
  }

  .table-wrapper,
  .table-wrap,
  .table-shell {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  table {
    min-width: 680px;
  }
}

.table-wrap:focus-visible,
.table-wrapper:focus-visible,
.table-shell:focus-visible {
  outline: 3px solid var(--color-focus);
  outline-offset: 3px;
}

.table-wrap::after,
.table-wrapper::after,
.table-shell::after {
  content: "Role horizontalmente se necessario";
  display: block;
  padding: var(--space-2) var(--space-3);
  color: var(--color-muted);
  font-size: var(--font-size-xs);
  font-weight: 800;
}

.a11y-resource-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: var(--space-4);
}

.a11y-resource-card {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-5);
  background: var(--color-surface);
}

.a11y-resource-card strong {
  display: block;
  margin-bottom: var(--space-2);
  color: var(--color-green-900);
  font-size: var(--font-size-lg);
}

.a11y-audit-output {
  max-height: 420px;
  overflow: auto;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: var(--space-4);
  background: #0b171a;
  color: #eef8f4;
  white-space: pre-wrap;
}

@media (forced-colors: active) {
  * {
    forced-color-adjust: auto;
  }

  :focus-visible {
    outline: 3px solid Highlight;
  }
}
