/* Accessibility and maintainability foundation. Keep this layer last so it can
   normalize older page-specific styles while the UI system is consolidated. */
:root {
  --cpv-space-1: 4px;
  --cpv-space-2: 8px;
  --cpv-space-3: 12px;
  --cpv-space-4: 16px;
  --cpv-space-5: 24px;
  --cpv-space-6: 32px;
  --cpv-z-skip-link: 2000;
  --cpv-z-sidebar: 1100;
  --cpv-z-backdrop: 1000;
  --cpv-motion-fast: 160ms;
  --cpv-motion-base: 220ms;
  --cpv-motion-ease: cubic-bezier(.2, 0, 0, 1);
  --cpv-focus-outline: 3px solid rgba(3, 105, 161, .9);
  --cpv-focus-offset: 3px;
  --cpv-surface-readable: #ffffff;
  --cpv-text-strong: #0f2742;
  --cpv-danger: #b42318;
  --cpv-danger-soft: #fff1f0;
}

.cpv-skip-link {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: var(--cpv-z-skip-link);
  transform: translateY(calc(-100% - 32px));
  opacity: 0;
  pointer-events: none;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 10px 16px;
  border-radius: 999px;
  background: var(--cpv-text-strong);
  color: #fff;
  font: 800 .92rem var(--cpv-font-heading);
  box-shadow: 0 16px 36px rgba(15, 39, 66, .22);
  transition:
    opacity var(--cpv-motion-fast) var(--cpv-motion-ease),
    transform var(--cpv-motion-base) var(--cpv-motion-ease);
}

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

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

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[role="button"]:focus-visible,
[tabindex]:focus-visible,
.action-card:focus-visible,
.event-card-link:focus-visible,
.custom-select-trigger:focus-visible,
.custom-select-option:focus-visible,
.dash-nav-link:focus-visible,
.side-link:focus-visible,
.auth-side-link:focus-visible,
.mini-link:focus-visible,
.button:focus-visible,
.btn-primary:focus-visible,
.btn-outline:focus-visible,
.btn-lk:focus-visible,
.application-button:focus-visible,
.application-button-secondary:focus-visible,
.auth-submit:focus-visible {
  outline: var(--cpv-focus-outline);
  outline-offset: var(--cpv-focus-offset);
  box-shadow: var(--cpv-focus-ring), 0 0 0 1px rgba(255, 255, 255, .95);
}

button,
a,
input,
select,
textarea {
  touch-action: manipulation;
}

img {
  max-width: 100%;
  height: auto;
}

html,
body {
  max-width: 100%;
  overflow-x: hidden;
}

.messages[role="status"],
.cpv-alert {
  border-radius: 18px;
}

.message,
.cpv-alert {
  color: var(--cpv-text-strong);
}

.cpv-error,
.errorlist,
.auth-field-error,
.auth-errors {
  color: var(--cpv-danger);
}

.cpv-error[role="alert"],
.auth-field-error[role="alert"],
.auth-errors[role="alert"] {
  border-left: 4px solid var(--cpv-danger);
  padding-left: 10px;
}

.custom-select-trigger {
  min-height: 44px;
}

.custom-select-option.is-active,
.custom-select-option[aria-selected="true"] {
  outline: 2px solid rgba(3, 105, 161, .28);
  outline-offset: -2px;
}

.action-card.disabled,
.dash-nav-link.disabled,
[aria-disabled="true"] {
  filter: saturate(.75);
}

.action-card.disabled {
  border-style: dashed;
  background: rgba(248, 250, 252, .88);
  color: var(--cpv-muted);
  cursor: not-allowed;
  opacity: .82;
}

.action-card.disabled:hover {
  transform: none;
  box-shadow: var(--cpv-soft-shadow);
}

.danger-button,
.application-button-secondary.danger-button,
button[name="delete"],
button[data-danger] {
  border-color: rgba(180, 35, 24, .35);
  background: var(--cpv-danger-soft);
  color: var(--cpv-danger);
}

.danger-button:hover,
.application-button-secondary.danger-button:hover,
button[name="delete"]:hover,
button[data-danger]:hover {
  border-color: rgba(180, 35, 24, .58);
  background: #ffe4e2;
  color: var(--cpv-danger);
}

.public-site .feature-card:hover,
.public-site .team-card:hover,
.public-site .impact-item:hover,
.public-site .event-item:hover,
.public-site .event-item.active {
  transform: none;
}

.public-site .feature-card,
.public-site .team-card,
.public-site .impact-item,
.public-site .contact-card,
.public-site .faq-card,
.public-site .rating-table-wrapper,
.public-site .event-item,
.public-site .page-card {
  background: var(--cpv-surface-readable);
  backdrop-filter: none;
}

.public-site .hero-slider,
.public-site .hero-visual,
.public-site .page-orbit,
.public-site .join-card {
  box-shadow: 0 14px 38px rgba(15, 39, 66, .09);
}

@media (max-width: 1099px) {
  body.public-site .side-nav {
    left: 18px;
    right: auto;
    width: min(312px, calc(100vw - 34px));
    max-width: none;
    transform: translateX(-106%);
  }

  body.public-site.side-nav-open .side-nav {
    transform: translateX(0);
  }

  .auth-main {
    place-items: start center;
    align-content: start;
  }

  .auth-mobile-top {
    align-items: flex-start;
  }

  .auth-mobile-top .auth-brand-link {
    flex: 1 1 auto;
    min-width: 0;
    padding-left: 0;
  }

  .auth-mobile-top .auth-side-link {
    flex: 0 0 auto;
    min-height: 44px;
    padding: 10px 12px;
    font-size: .84rem;
    line-height: 1.15;
  }
}

@media (max-width: 420px) {
  .public-site .topbar .logo-text {
    display: none;
  }

  .public-site .topbar-inner {
    gap: 8px;
  }

  .public-site .btn-lk {
    padding-inline: 13px;
    font-size: .8rem;
  }

  .public-site .stats-container {
    padding: 20px;
  }

  .public-site .stat-number {
    max-width: 100%;
    overflow-wrap: anywhere;
    font-size: clamp(2rem, 14vw, 2.7rem);
    line-height: 1.05;
  }

  .auth-mobile-top {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
  }

  .auth-mobile-top .auth-brand-logo {
    width: 48px;
    height: 48px;
    flex-basis: 48px;
    border-radius: 16px;
  }

  .auth-mobile-top .auth-brand-text strong {
    font-size: 1rem;
    letter-spacing: 0;
  }

  .auth-mobile-top .auth-brand-text span {
    font-size: .68rem;
    letter-spacing: .06em;
  }

  .auth-mobile-top .auth-side-link i {
    width: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  html:focus-within {
    scroll-behavior: auto;
  }

  *,
  *::before,
  *::after {
    animation-duration: .001ms;
    animation-iteration-count: 1;
    scroll-behavior: auto;
    transition-duration: .001ms;
  }
}
