/* Links: CD underlines every content link in main (link.postcss:5-38) */
a { color:var(--color-link); text-decoration:none; }
/* The exclusion list was written out in full THREE times. Its chain of separate
   :not() selectors produced specificity (1,11,1), forcing every later link rule
   to compete with it and causing several !important declarations. `:not(a, b, c)`
   counts only its most specific argument, producing (1,1,1); `:is(:hover,:focus)`
   avoids the second and third copies. `.tile` has left the list because that
   class no longer exists (§5). */
/* `.notification a` is a COMPLEX :not() argument in the list (Selectors 4):
   links in notifications inherit the notification color (currentColor, set on
   .notification), never brand primary; see CD notification.postcss:11-21. */
/* `.modal a` IS part of the recipe: modals mount on document.body, outside
   #main-content, so a bare anchor there would otherwise receive the brand color
   WITHOUT an underline (color as its only affordance). Toasts need no entry:
   toast() renders with textContent, never markup. cursor:pointer follows CD
   (link.postcss:8); `.link` on a <button> or an anchor without href otherwise
   showed the text cursor. */
:where(.site-main, .modal) a:not(:where(.btn, .card, .card--clickable, .tag-item, .download-item, .active-filter, .plain-link, .menu__item, .badge, .card__link, .notification a)),
.link {
  color:var(--color-primary-600); text-decoration:underline; text-underline-offset:var(--stroke-2); overflow-wrap:break-word; cursor:pointer;
}
:where(.site-main, .modal) a:not(:where(.btn, .card, .card--clickable, .tag-item, .download-item, .active-filter, .plain-link, .menu__item, .badge, .card__link, .notification a)):is(:hover, :focus),
.link:hover, .link:focus { color:var(--color-primary-800); }
/* automatic external-link affordance (link.postcss:21-38) */
:root { --icon-external-link:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='m14.5 2.7v1.9h3.8l.6-.5.3.1-.7.6-6.4 6.4 1.4 1.4 6.4-6.4.6-.7.1.3-.5.7v3.7h1.9v-7.5z'/%3E%3Cpath d='m16.9 19.9h-12v-12.2h5.7v-1.9h-7.6v16h15.9v-7.7h-2z'/%3E%3C/svg%3E"); }
/* .download-item and .card--clickable already provide their own icon */
:where(.site-main) a[rel~="external"]:not(:where(.btn, .card--clickable, .card__link, .download-item))::after,
.link--external::after {
  content:""; display:inline-block; position:relative; width:1em; height:1em; top:.2em; margin:0 .125em;
  background-color:currentColor; -webkit-mask:var(--icon-external-link) no-repeat; mask:var(--icon-external-link) no-repeat;
  -webkit-mask-size:contain; mask-size:contain;
}

mark { background:var(--color-primary-200); padding:var(--sp-0-5) var(--sp-1); }   /* CD typography.postcss:157-159: py-0.5 px-1, no radius */
img { max-width:100%; display:block; }
ul,ol { margin:0; padding:0; }

/* Lists (list.postcss:5-67) */
:where(.site-main) ul:not([class]), .list--default { list-style:disc outside; padding-left:var(--sp-5); }
:where(.site-main) ol:not([class]), .list--ordered { list-style:decimal outside; padding-left:var(--sp-5); }
:where(.site-main) ul:not([class]) > li + li, :where(.site-main) ol:not([class]) > li + li,
.list--default > li + li, .list--ordered > li + li { margin-top:var(--sp-2); }
.list--loose > li + li { margin-top:var(--sp-3); }
.list--bare { list-style:none; padding-left:0; }
.list--flex { display:flex; } .list--wrap { flex-wrap:wrap; }

/* Focus: CD ring, with the negative variant on dark chrome (global.postcss:75-86) */
/* This ONE rule covers every focusable element. Seven components repeated it
   verbatim; verification found no intervening rule that removed the ring, so
   they were pure duplicates. A dedicated :focus-visible rule is needed only
   when a component first disables the ring (input, .tag-item,
   .card--clickable .card__link), needs a different offset, or uses the
   negative ring. DEVIATION from CD: CD uses an ADJACENT box-shadow ring with
   z-10 (global.postcss:75-86, ring-2 ring-purple-500, offset 0). The 2px offset
   here is deliberate and is much clearer on filled surfaces; an outline needs
   no z-index lift because it already paints over neighboring elements. */
:focus-visible { outline:var(--stroke-2) solid var(--focus-ring-color, var(--color-focus-ring)); outline-offset:var(--stroke-2); }
/* Focus colour belongs to the surface, not to each control. The inherited local
   property keeps the federal purple on light surfaces and switches every dark
   chrome descendant to CD's purple-300 negative ring. Keep this list aligned
   with the actual dark backgrounds; a light card nested in one must reset the
   property explicitly. */
:where(.top-bar, .footer-information, .footer-navigation,
  .mobile-menu .top-bar-navigation--mobile,
  .viewer-toolbar--negative, .docviewer, .pf-lightbox, .modal__header,
  .bg--secondary-500, [class*="bg--secondary-6"], [class*="bg--secondary-7"],
  [class*="bg--secondary-8"], [class*="bg--secondary-9"]) {
  --focus-ring-color:var(--color-focus-ring-negative);
}
/* Viewer chrome is dark, but its document paper, notifications, menus and the
   light paging controls are not. Reset at each light island so inheritance can
   never put the low-contrast negative ring on a pale surface. Metadata panels
   intentionally stay dark and therefore keep the negative ring. */
:where(.docviewer, .pf-lightbox) :where(
  .docpage, .card, .notification, .action-menu__popup, .pf-lightbox__nav
) { --focus-ring-color:var(--color-focus-ring); }
/* Route-change focus targets are not interactive controls: move focus for screen
   readers (router.js focusHeading) without painting a ring for mouse users.
   #main-header is included: the back-to-top button focuses it programmatically
   (shell.js renderFooter); without this entry, Enter painted the ring around
   the entire header (a11y-backtotop-1). */
h1[tabindex="-1"]:focus, h1[tabindex="-1"]:focus-visible,
h2[tabindex="-1"]:focus, h2[tabindex="-1"]:focus-visible,
h3[tabindex="-1"]:focus, h3[tabindex="-1"]:focus-visible,
h4[tabindex="-1"]:focus, h4[tabindex="-1"]:focus-visible,
.site-header:focus, .site-header:focus-visible,
.site-main:focus, .site-main:focus-visible { outline:none; }

/* Visually hidden but available to screen readers. The recipe appeared SEVEN
   times in three variants (sometimes with padding/margin/border, sometimes
   without), giving every copy a chance to drift. It now lives here once for
   every consumer; the counter-rules that reveal text above a given width stay
   with their components and win because they occur later in the style sheet. */
.sr-only,
.top-bar-navigation a > span:not(.icon),
.logo__title,
.search__button__title,
.btn--icon-only .btn__text,
.table caption { position:absolute; width:var(--stroke-1); height:var(--stroke-1); padding:0; margin:calc(-1 * var(--stroke-1)); overflow:hidden;
  clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-to-content { position:absolute; left:50%; top:0; z-index:var(--z-skiplink); background:var(--color-secondary-900);
  color:var(--color-text-negative); border:var(--stroke-2) solid var(--color-bg); box-shadow:var(--shadow-md); padding:var(--sp-2) var(--sp-4); font:inherit; cursor:pointer;
  transform:translate(-50%,-200%); transition:transform var(--duration-fast); }   /* CD: transition-transform = 150ms */
.skip-to-content:focus { transform:translate(-50%,0); }

