/* Reusable external link — icon hidden until hover (matches IBM Consulting) */

.external-link {
  gap: 0;
}

.external-link-icon {
  display: inline-block;
  flex: 0 0 auto;
  width: 0;
  height: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
  vertical-align: baseline;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition:
    opacity var(--hover-duration, 0.3s) var(--hover-ease, ease),
    width var(--hover-duration, 0.3s) var(--hover-ease, ease),
    height var(--hover-duration, 0.3s) var(--hover-ease, ease),
    margin-inline-start var(--hover-duration, 0.3s) var(--hover-ease, ease),
    visibility 0s linear var(--hover-duration, 0.3s);
}

.external-link:hover .external-link-icon,
.external-link:focus-visible .external-link-icon {
  width: 1em;
  height: 1em;
  margin-inline-start: 0.22em;
  opacity: 1;
  visibility: visible;
  pointer-events: none;
  transition:
    opacity var(--hover-duration, 0.3s) var(--hover-ease, ease),
    width var(--hover-duration, 0.3s) var(--hover-ease, ease),
    height var(--hover-duration, 0.3s) var(--hover-ease, ease),
    margin-inline-start var(--hover-duration, 0.3s) var(--hover-ease, ease),
    visibility 0s;
}

.nav-contact-link.external-link {
  gap: 0;
}

.nav-contact-link:not(.external-link) svg {
  flex-shrink: 0;
  opacity: 0.55;
  transition: opacity var(--hover-duration) var(--hover-ease);
}

.nav-contact-link:not(.external-link):hover svg,
.nav-contact-link:not(.external-link):focus-visible svg {
  opacity: 1;
}

.rolling-link.external-link {
  gap: 0;
}

.footer-social a.rolling-link.external-link {
  gap: 0;
}

@media (prefers-reduced-motion: reduce) {
  .external-link-icon {
    transition-duration: 0.15s !important;
  }
}
