/* Public interaction system: links, buttons, inputs and focus. Loaded last on every public page. */

* {
  -webkit-tap-highlight-color: transparent;
}

/* Focus: keyboard only, one ring everywhere */
:focus-visible {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
  border-radius: var(--radius-sm);
}

.btn:focus-visible,
.lang-btn:focus-visible,
.form-input:focus-visible,
.form-select:focus-visible,
.icon-btn:focus-visible,
.mobile-nav-toggle:focus-visible,
.floating-back-to-top:focus-visible,
.password-toggle-btn:focus-visible,
.motion-toggle:focus-visible {
  border-radius: var(--radius-md);
}

.floating-back-to-top:focus-visible {
  border-radius: 50%;
}

.lang-btn:focus-visible {
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.password-toggle-btn:focus-visible {
  outline-offset: -4px;
}

[tabindex="-1"]:focus,
[tabindex="-1"]:focus-visible {
  outline: none;
}

.skip-link:focus {
  outline: var(--focus-ring);
  outline-offset: var(--focus-offset);
}

/* Inline text links: accent plus underline, visited stays the same */
.text-link,
.legal-content p a,
.legal-content li a {
  color: var(--accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  border-radius: var(--radius-sm);
  transition: color var(--transition), text-decoration-thickness var(--transition);
}

.text-link:visited,
.legal-content p a:visited,
.legal-content li a:visited {
  color: var(--accent);
}

.text-link:active,
.legal-content p a:active,
.legal-content li a:active {
  color: var(--link-active);
}

/* Navigation and footer links: muted, underline on hover only */
.nav-link,
.footer-links-list a,
.back-to-home-link,
.breadcrumb-item a,
.register-footer-link,
.mobile-nav-cta {
  color: var(--link);
  text-decoration: none;
  border-radius: var(--radius-sm);
  transition: color var(--transition);
}

.nav-link:visited,
.footer-links-list a:visited,
.back-to-home-link:visited,
.breadcrumb-item a:visited,
.register-footer-link:visited,
.mobile-nav-cta:visited {
  color: var(--link);
}

.mobile-nav-cta,
.mobile-nav-cta:visited {
  color: var(--accent);
  font-weight: 600;
}

.nav-link,
.register-footer-link {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0 8px;
}

.mobile-menu-drawer .nav-link {
  min-height: 44px;
}

@media (hover: hover) {
  .nav-link:hover,
  .footer-links-list a:hover,
  .back-to-home-link:hover,
  .breadcrumb-item a:hover,
  .register-footer-link:hover {
    color: var(--link-hover);
    text-decoration: underline;
    text-decoration-color: var(--accent);
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
  }

  .mobile-nav-cta:hover {
    color: var(--accent-soft);
    text-decoration: underline;
    text-underline-offset: 4px;
  }

  .brand-lockup:hover .brand-title {
    color: var(--link-hover);
  }

  .text-link:hover,
  .legal-content p a:hover,
  .legal-content li a:hover {
    color: var(--accent-soft);
    text-decoration-thickness: 2px;
  }
}

.nav-link:focus-visible,
.footer-links-list a:focus-visible,
.back-to-home-link:focus-visible,
.breadcrumb-item a:focus-visible,
.register-footer-link:focus-visible,
.mobile-nav-cta:focus-visible {
  text-decoration: none;
}

.nav-link:active,
.footer-links-list a:active,
.back-to-home-link:active,
.breadcrumb-item a:active,
.register-footer-link:active {
  color: var(--link-active);
}

/* Buttons */
.btn {
  text-decoration: none;
}

.btn:visited {
  color: inherit;
}

.btn-primary,
.btn-primary:visited {
  color: #ffffff;
}

.btn-outline,
.btn-outline:visited {
  color: var(--tx-primary);
}

.btn-text,
.btn-ghost,
.btn-text:visited {
  color: var(--link);
}

.btn-outline {
  border-color: var(--control-border);
}

@media (hover: hover) {
  .btn-primary:hover:not(:disabled):not([aria-disabled="true"]) {
    filter: brightness(1.15);
    transform: translateY(-1px);
    box-shadow: 0 6px 16px rgba(14, 165, 233, 0.35);
    color: #ffffff;
    text-decoration: none;
  }

  .btn-outline:hover:not(:disabled):not([aria-disabled="true"]) {
    background: var(--bg-surface-elevated);
    border-color: var(--control-border-hover);
    color: #ffffff;
    text-decoration: none;
  }

  .btn-text:hover:not(:disabled):not([aria-disabled="true"]),
  .btn-ghost:hover:not(:disabled):not([aria-disabled="true"]) {
    background: rgba(148, 163, 184, 0.12);
    color: var(--link-hover);
    text-decoration: none;
  }

  .motion-toggle:hover:not(:disabled):not([aria-disabled="true"]) {
    background: var(--bg-surface-elevated);
    border-color: var(--control-border-hover);
    color: var(--link-hover);
  }

  .lang-btn:not(.active):hover {
    background: rgba(148, 163, 184, 0.14);
    color: var(--link-hover);
  }
}

.btn:active:not(:disabled):not([aria-disabled="true"]) {
  transform: translateY(0);
  filter: brightness(0.95);
}

.btn-text:active:not(:disabled),
.btn-ghost:active:not(:disabled) {
  color: var(--link-active);
}

.lang-btn:active {
  color: var(--link-active);
}

.lang-btn.active,
.lang-btn.active:visited {
  color: var(--tx-primary);
}

.btn:disabled,
.btn[aria-disabled="true"],
.icon-btn:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

/* Icon buttons: 44 px target */
.icon-btn,
.mobile-nav-toggle,
.floating-back-to-top,
.password-toggle-btn {
  min-width: 44px;
  min-height: 44px;
  transition: background-color var(--transition), color var(--transition), border-color var(--transition), transform var(--transition);
}

.password-toggle-btn {
  color: var(--link);
}

@media (hover: hover) {
  .icon-btn:hover:not(:disabled),
  .mobile-nav-toggle:hover,
  .mobile-nav-toggle:hover {
    background-color: #334155;
    color: #ffffff;
  }

  .floating-back-to-top:hover {
    background-color: #334155;
    color: #ffffff;
    transform: translateY(-1px);
  }

  .password-toggle-btn:hover {
    color: var(--link-hover);
    background-color: rgba(148, 163, 184, 0.14);
  }
}

.icon-btn:active:not(:disabled),
.mobile-nav-toggle:active,
.floating-back-to-top:active,
.password-toggle-btn:active {
  color: var(--link-active);
  transform: none;
}

/* Form fields: 3:1 border, hover brightens, one ring plus accent border on keyboard focus */
.form-input,
.form-select {
  border-color: var(--input-border);
}

@media (hover: hover) {
  .form-input:hover:not(:disabled),
  .form-select:hover:not(:disabled) {
    border-color: var(--control-border-hover);
  }
}

.form-input:focus-visible,
.form-select:focus-visible {
  border-color: var(--accent);
  outline: var(--focus-ring);
  outline-offset: 1px;
  box-shadow: none;
}

.form-input.has-error,
.form-select.has-error {
  border-color: var(--error-border);
}

.form-input:disabled,
.form-select:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

@media (prefers-reduced-motion: reduce) {
  .btn,
  .btn-primary,
  .nav-link,
  .text-link {
    transition: none;
  }

  .btn-primary:hover:not(:disabled),
  .floating-back-to-top:hover {
    transform: none;
  }
}
