.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  clip-path: inset(50%);
}

.skip-link {
  position: fixed;
  top: var(--space-3);
  left: var(--space-3);
  z-index: 10000;
  translate: 0 -150%;
  border-radius: var(--r-md);
  padding: var(--space-3) var(--space-4);
  background: var(--surface-strong);
  color: var(--text);
  box-shadow: var(--shadow-soft);
}

.skip-link:focus {
  translate: 0 0;
}

:focus-visible {
  outline: 3px solid rgba(255, 95, 143, 0.92);
  outline-offset: 3px;
}

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

.loading-state {
  display: grid;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-4);
}

.skeleton-line {
  display: block;
  width: 100%;
  height: 0.9rem;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(255,255,255,0.08), rgba(255,255,255,0.18), rgba(255,255,255,0.08));
  background-size: 220% 100%;
  animation: skeleton-shimmer 1.4s ease-in-out infinite;
}

.skeleton-line-lg {
  width: 70%;
  height: 1.3rem;
}

.skeleton-line-sm {
  width: 42%;
}

.error-state,
.confirm-panel {
  display: grid;
  gap: var(--space-4);
}

@keyframes skeleton-shimmer {
  0% { background-position: 120% 0; }
  100% { background-position: -120% 0; }
}

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