/* Shared text-CTA component. Change its motion here, never on individual links. */
:root {
  --cta-duration: 240ms;
  --cta-ease: cubic-bezier(.22, 1, .36, 1);
}
/* styles.css contains a legacy desktop body overflow-y:auto rule.
   Keep profile pages on the document scroller so the shared header can stick.
   The privacy notice's intentional lock state is not changed. */
body.profile-page:not(.cookie-locked) {
  overflow-x: clip;
  overflow-y: visible;
}
/* Sufficient specificity to override the legacy generic anchor hover rules. */
:root body main a.cta-link:not(.button) {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 12px;
  max-width: 100%;
  min-width: 0;
  min-height: 44px;
  padding: 4px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--ink, #111827);
  font-size: .86rem;
  font-weight: 700;
  line-height: 1.45;
  text-decoration: none;
  text-shadow: none;
  transform: none;
  transition: color var(--cta-duration) var(--cta-ease);
}
:root body main a.cta-link:not(.button)::before,
:root body main a.cta-link:not(.button)::after { content: none; }
.cta-link__label { min-width: 0; overflow-wrap: break-word; }
.cta-link__icon {
  display: inline-grid;
  flex: 0 0 32px;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 1px solid rgba(36, 91, 143, .32);
  border-radius: 50%;
  background: transparent;
  color: var(--cobalt, #245b8f);
  transition: background-color var(--cta-duration) var(--cta-ease),
              border-color var(--cta-duration) var(--cta-ease),
              color var(--cta-duration) var(--cta-ease);
}
.cta-link__icon svg {
  display: block;
  width: 16px;
  height: 16px;
  max-width: none;
  transform: translateX(0);
  transition: transform var(--cta-duration) var(--cta-ease);
}
:root body main a.cta-link:not(.button):focus-visible {
  color: var(--cobalt, #245b8f);
  outline: 2px solid var(--cobalt, #245b8f);
  outline-offset: 5px;
}
.cta-link:focus-visible .cta-link__icon {
  background: var(--cobalt, #245b8f);
  border-color: var(--cobalt, #245b8f);
  color: #fff;
}
.cta-link:focus-visible .cta-link__icon svg { transform: translateX(2px); }
@media (hover: hover) {
  :root body main a.cta-link:not(.button):hover { color: var(--cobalt, #245b8f); transform: none; }
  .cta-link:hover .cta-link__icon { background: var(--cobalt, #245b8f); border-color: var(--cobalt, #245b8f); color: #fff; }
  .cta-link:hover .cta-link__icon svg { transform: translateX(2px); }
  .cta-link[data-external="true"]:hover .cta-link__icon svg { transform: translate(1.5px, -1.5px); }
}
@media (prefers-reduced-motion: reduce) {
  :root body main a.cta-link:not(.button), .cta-link__icon, .cta-link__icon svg { transition: none; }
  .cta-link .cta-link__icon svg { transform: none !important; }
}
/* Punctuation remains real selectable text; only the final mark is accented. */
.heading-mark { color: var(--cobalt, #245b8f); }
/* Anchor targets stay readable below the compact sticky header. */
main [id] { scroll-margin-top: 110px; }
.cta-link__label .work-linkedin-icon { display: inline-flex; vertical-align: middle; margin-right: 8px; }
