/* Two text-link variants with shared presentation. Country custom.css loads last. */
:where(a:not(.ereg-button, .btn, [role="button"], .icon, .navbar-brand, .open-search, .open-menu, .close, .procedure-button, .transparent-bordered-button, .save-info-btn, .apply-btn, .required-documents-admin-burden, .akk, .document-cost-staff-level, .hs-toggle, .side-menu-close, .footer-brand-link, .highslide-loading, .step-list-item-left a), .ereg-link) {
  --ereg-link-rest: var(--primary-link, #2471a8);
  --ereg-link-hover: var(--gray-900);
  --ereg-link-color: var(--ereg-link-rest);
  --ereg-link-decoration: none;
  /* An empty token makes legacy weighted link declarations inherit at computed-value time. */
  --ereg-link-weight: ;
  --ereg-link-border: 1px solid transparent;
  color: var(--ereg-link-color);
  font-weight: inherit;
  text-decoration: var(--ereg-link-decoration);
  text-underline-offset: .15em;
  text-decoration-thickness: 1px;
}
:where(nav a, .menu-bar a, .main-link a, .menu-child-link a, .menu-child-link-title a,
  .bigmenu a, .link-footer-item-link, .official-site-more-info-toggler) {
  --ereg-link-rest: var(--gray-900);
  --ereg-link-hover: var(--primary-link, #2471a8);
}
:where(p a, .description a, a[href^="mailto:"], a[href^="tel:"]) {
  --ereg-link-rest: var(--primary-link, #2471a8);
  --ereg-link-hover: var(--gray-900);
}
:where(a:not(.ereg-button, .btn, [role="button"], .icon, .navbar-brand, .open-search, .open-menu, .close, .procedure-button, .transparent-bordered-button, .save-info-btn, .apply-btn, .required-documents-admin-burden, .akk, .document-cost-staff-level, .hs-toggle, .side-menu-close, .footer-brand-link, .highslide-loading, .step-list-item-left a), .ereg-link):hover {
  --ereg-link-color: var(--ereg-link-hover);
  --ereg-link-decoration: none;
}

/* Explicit variants take precedence over context defaults. */
:where([data-link-variant="neutral"], .ereg-link--neutral) { --ereg-link-rest:var(--gray-900); --ereg-link-hover:var(--primary-link, #2471a8); }
:where([data-link-variant="primary"], .ereg-link--primary) { --ereg-link-rest:var(--primary-link, #2471a8); --ereg-link-hover:var(--gray-900); }

/* Menu presentation is independent of the two colour variants. */
:where([data-link-decoration="none"], .ereg-link--menu,
  .new-header .menu-bar a, .left-sidebar .navigation-drawer-page-menu a, .bigmenu a) {
  --ereg-link-decoration: none;
}

/* Shared presentation also covers step titles without changing their component colours/weight.
   Reserve a transparent bottom border to avoid movement when hover reveals it. */
a:where(a:not(.ereg-button, .btn, [role="button"], .icon, .navbar-brand, .open-search, .open-menu, .close, .procedure-button, .transparent-bordered-button, .save-info-btn, .apply-btn, .required-documents-admin-burden, .akk, .document-cost-staff-level, .hs-toggle, .side-menu-close, .footer-brand-link, .highslide-loading)), :where(.ereg-link) {
  --ereg-link-border: 1px solid transparent;
  border-bottom: var(--ereg-link-border);
  text-decoration: none;
}
:where(a:not(.ereg-button, .btn, [role="button"], .icon, .navbar-brand, .open-search, .open-menu, .close, .procedure-button, .transparent-bordered-button, .save-info-btn, .apply-btn, .required-documents-admin-burden, .akk, .document-cost-staff-level, .hs-toggle, .side-menu-close, .footer-brand-link, .highslide-loading), .ereg-link):hover { --ereg-link-border: 1px solid currentColor; }
a:where(a:not(.ereg-button, .btn, [role="button"], .icon, .navbar-brand, .open-search, .open-menu, .close, .procedure-button, .transparent-bordered-button, .save-info-btn, .apply-btn, .required-documents-admin-burden, .akk, .document-cost-staff-level, .hs-toggle, .side-menu-close, .footer-brand-link, .highslide-loading)):is(:hover, :focus-visible) { text-decoration: none; }
a:where(a:not(.ereg-button, .btn, [role="button"], .icon, .navbar-brand, .open-search, .open-menu, .close, .procedure-button, .transparent-bordered-button, .save-info-btn, .apply-btn, .required-documents-admin-burden, .akk, .document-cost-staff-level, .hs-toggle, .side-menu-close, .footer-brand-link, .highslide-loading)):focus-visible,
:where(.ereg-link):focus-visible,
a:where([data-link-decoration="none"], .ereg-link--menu,
  .new-header .menu-bar a, .left-sidebar .navigation-drawer-page-menu a, .bigmenu a):focus-visible {
  outline: 2px solid var(--primary-600, #287db3);
  outline-offset: 3px;
}

/* Navigation and step titles keep existing separators; do not add a hover border. */
a:where(nav a, .menu-bar a, .languages a, .menu-child-link a, .menu-child-link-title a, .left-sidebar .menu a, .bigmenu a,
  .step-list-item-left a, [data-link-decoration="none"], .ereg-link--menu),
a:where(nav a, .menu-bar a, .languages a, .menu-child-link a, .menu-child-link-title a, .left-sidebar .menu a, .bigmenu a,
  .step-list-item-left a, [data-link-decoration="none"], .ereg-link--menu):hover,
:where(.ereg-link--menu, [data-link-decoration="none"]),
:where(.ereg-link--menu, [data-link-decoration="none"]):hover { --ereg-link-border: 0; }

/* Block contact links shrink to their label while long labels still truncate safely. */
a:where(.contact-method-link) {
  width: fit-content;
  max-width: 100%;
}

/* Arrow navigation is an action control, without the text-link hover border. */
a:where(.step-next-link),
a:where(.step-next-link):hover { --ereg-link-border: 0; }

/* Media and icon links do not use the text-link underline.
   Match a / a:hover priority so country borders remain overridable. */
a:where(:has(img, svg, .icon, .fa, .fas, .far, .fal, .fab, .fad,
  .fa-solid, .fa-regular, .fa-light, .fa-brands, .material-icons, .glyphicon),
  .icon, .fa, .fas, .far, .fal, .fab, .fad, .material-icons, .glyphicon),
a:where(:has(img, svg, .icon, .fa, .fas, .far, .fal, .fab, .fad,
  .fa-solid, .fa-regular, .fa-light, .fa-brands, .material-icons, .glyphicon),
  .icon, .fa, .fas, .far, .fal, .fab, .fad, .material-icons, .glyphicon):hover {
  --ereg-link-border: 0;
}
