/* APSAIDAL 2.0 — shared single-content typography scale.
 *
 * Visual pass requested 2026-09-24:
 *   H1   38 / 34 / 28
 *   H2   24 / 22 / 20
 *   H3   19 / 18 / 17
 *   Body 16 / 15.5 / 15
 *
 * This file deliberately changes type scale only. It does not alter template
 * geometry, image sizing, colors, font families, weights, or component spacing.
 */

body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) {
  --aps-post-h1-size: 38px;
  --aps-post-h1-line: 1.08;
  --aps-post-h2-size: 24px;
  --aps-post-h3-size: 19px;
  --aps-post-body-size: 16px;
  --aps-post-body-line: 1.65;
  --aps-post-heading-family: "Brandon Grotesque Light","Brandon Grotesque","Avenir Next",Arial,sans-serif;
  --aps-post-body-family: "Source Sans Pro",Arial,sans-serif;
}

/* One H1 scale across all APSAIDAL 2.0 content templates. */
body.single-aps_project .aps-project-identity h1,
body.single-aps_heritage .aps-heritage-identity h1,
body.single-aps_person .aps-profile-identity h1,
body.single-aps_organization .aps-profile-identity h1,
body.single-aps_product .aps-product-identity h1,
body.single-aps_event .aps-event-identity h1,
body.single-aps_editorial .aps-editorial-header h1 {
  font-size: var(--aps-post-h1-size) !important;
  line-height: var(--aps-post-h1-line) !important;
}

/* Primary reading copy only: compact facts, cards, captions and metadata keep
 * their own component scale. */
body.single-aps_project .apsaidal-project-body,
body.single-aps_heritage .aps-heritage-editorial-body,
body.single-aps_person .aps-profile-prose,
body.single-aps_organization .aps-profile-prose,
body.single-aps_product .aps-product-copy,
body.single-aps_event .aps-event-overview,
body.single-aps_editorial .aps-editorial-body {
  font-size: var(--aps-post-body-size) !important;
  line-height: var(--aps-post-body-line) !important;
}

body.single-aps_project .apsaidal-project-body p,
body.single-aps_project .apsaidal-project-body li,
body.single-aps_heritage .aps-heritage-editorial-body p,
body.single-aps_heritage .aps-heritage-editorial-body li,
body.single-aps_person .aps-profile-prose p,
body.single-aps_person .aps-profile-prose li,
body.single-aps_organization .aps-profile-prose p,
body.single-aps_organization .aps-profile-prose li,
body.single-aps_product .aps-product-copy p,
body.single-aps_product .aps-product-copy li,
body.single-aps_event .aps-event-overview p,
body.single-aps_event .aps-event-overview li,
body.single-aps_editorial .aps-editorial-body p,
body.single-aps_editorial .aps-editorial-body li {
  font-size: inherit !important;
  line-height: inherit !important;
}

/* Section headings inside the principal reading copy. */
body.single-aps_project .apsaidal-project-body h2,
body.single-aps_heritage .aps-heritage-editorial-body h2,
body.single-aps_person .aps-profile-prose h2,
body.single-aps_organization .aps-profile-prose h2,
body.single-aps_product .aps-product-copy h2,
body.single-aps_event .aps-event-overview h2,
body.single-aps_editorial .aps-editorial-body h2 {
  font-size: var(--aps-post-h2-size) !important;
}

body.single-aps_project .apsaidal-project-body h3,
body.single-aps_heritage .aps-heritage-editorial-body h3,
body.single-aps_person .aps-profile-prose h3,
body.single-aps_organization .aps-profile-prose h3,
body.single-aps_product .aps-product-copy h3,
body.single-aps_event .aps-event-overview h3,
body.single-aps_editorial .aps-editorial-body h3 {
  font-size: var(--aps-post-h3-size) !important;
}

@media (max-width: 1024px) {
  body:is(
    .single-aps_project,
    .single-aps_heritage,
    .single-aps_person,
    .single-aps_organization,
    .single-aps_product,
    .single-aps_event,
    .single-aps_editorial
  ) {
    --aps-post-h1-size: 34px;
    --aps-post-h1-line: 1.10;
    --aps-post-h2-size: 22px;
    --aps-post-h3-size: 18px;
    --aps-post-body-size: 15.5px;
  }
}

@media (max-width: 767px) {
  body:is(
    .single-aps_project,
    .single-aps_heritage,
    .single-aps_person,
    .single-aps_organization,
    .single-aps_product,
    .single-aps_event,
    .single-aps_editorial
  ) {
    --aps-post-h1-size: 28px;
    --aps-post-h1-line: 1.12;
    --aps-post-h2-size: 20px;
    --aps-post-h3-size: 17px;
    --aps-post-body-size: 15px;
  }
}


/* Stronger Project/Heritage editorial specificity: Elementor template CSS may
 * assign sizes directly to descendant paragraphs. Keep the shared reading scale
 * authoritative without changing family, weight or spacing. */
body.single-aps_project .aps-project-editorial .apsaidal-project-body,
body.single-aps_project .aps-project-editorial .apsaidal-project-body p,
body.single-aps_project .aps-project-editorial .apsaidal-project-body li,
body.single-aps_heritage .aps-heritage-editorial-body,
body.single-aps_heritage .aps-heritage-editorial-body p,
body.single-aps_heritage .aps-heritage-editorial-body li {
  font-size: var(--aps-post-body-size) !important;
  line-height: var(--aps-post-body-line) !important;
}


/* -------------------------------------------------------------------------
 * APSAIDAL 2.0 — canonical single-content system.
 * Generalized from the approved Project/Heritage pass to every post family.
 * ---------------------------------------------------------------------- */

/* One title voice across all content types. */
body.single-aps_project .aps-project-identity h1,
body.single-aps_heritage .aps-heritage-identity h1,
body.single-aps_person .aps-profile-identity h1,
body.single-aps_organization .aps-profile-identity h1,
body.single-aps_product .aps-product-identity h1,
body.single-aps_event .aps-event-identity h1,
body.single-aps_editorial .aps-editorial-header h1 {
  font-family: var(--aps-post-heading-family) !important;
  font-size: var(--aps-post-h1-size) !important;
  font-weight: 300 !important;
  line-height: var(--aps-post-h1-line) !important;
  letter-spacing: -.018em !important;
}

/* Profile titles containing extended-Latin characters must use one complete
 * font family. This rule intentionally sits after the canonical single-title
 * rule so the whole name renders in Montserrat rather than mixing Brandon
 * with fallback glyphs (e.g. Snøhetta, NLÉ). */
body.single-aps_person .aps-profile-identity h1.aps-profile-title--extended-latin,
body.single-aps_organization .aps-profile-identity h1.aps-profile-title--extended-latin {
  font-family: "Montserrat", "Avenir Next", Arial, sans-serif !important;
  font-weight: 300 !important;
}

/* Main reading copy: same Source Sans Pro scale everywhere. */
body.single-aps_person .aps-profile-prose,
body.single-aps_organization .aps-profile-prose,
body.single-aps_product .aps-product-copy,
body.single-aps_event .aps-event-overview,
body.single-aps_editorial .aps-editorial-body,
body.single-aps_person .aps-profile-prose p,
body.single-aps_organization .aps-profile-prose p,
body.single-aps_product .aps-product-copy p,
body.single-aps_event .aps-event-overview p,
body.single-aps_editorial .aps-editorial-body p,
body.single-aps_person .aps-profile-prose li,
body.single-aps_organization .aps-profile-prose li,
body.single-aps_product .aps-product-copy li,
body.single-aps_event .aps-event-overview li,
body.single-aps_editorial .aps-editorial-body li {
  font-family: var(--aps-post-body-family) !important;
  font-size: var(--aps-post-body-size) !important;
  line-height: var(--aps-post-body-line) !important;
}

/* Section headings follow the same scale and family; pull quotes may remain serif. */
body.single-aps_person .aps-profile-prose h2,
body.single-aps_organization .aps-profile-prose h2,
body.single-aps_product .aps-product-copy h2,
body.single-aps_event .aps-event-overview h2,
body.single-aps_editorial .aps-editorial-body h2 {
  font-family: var(--aps-post-heading-family) !important;
  font-size: var(--aps-post-h2-size) !important;
  font-weight: 400 !important;
  line-height: 1.18 !important;
}

body.single-aps_person .aps-profile-prose h3,
body.single-aps_organization .aps-profile-prose h3,
body.single-aps_product .aps-product-copy h3,
body.single-aps_event .aps-event-overview h3,
body.single-aps_editorial .aps-editorial-body h3 {
  font-family: var(--aps-post-heading-family) !important;
  font-size: var(--aps-post-h3-size) !important;
  font-weight: 400 !important;
  line-height: 1.22 !important;
}

/* Supporting text uses the body family without enlarging the page again. */
body.single-aps_person :is(.aps-profile-profession,.aps-profile-organization,.aps-profile-standfirst),
body.single-aps_organization :is(.aps-profile-profession,.aps-profile-organization,.aps-profile-standfirst),
body.single-aps_product :is(.aps-product-subtitle,.aps-product-classification),
body.single-aps_event :is(.aps-event-standfirst,.aps-event-primary-meta,.aps-event-deadline),
body.single-aps_editorial :is(.aps-editorial-eyebrow,.aps-editorial-byline,.aps-editorial-publish-meta) {
  font-family: var(--aps-post-body-family) !important;
}

/* Title + Save/Share: common compact composition. */
.aps-post-title-row {
  display: grid !important;
  grid-template-columns: minmax(0,1fr) auto !important;
  align-items: start !important;
  column-gap: 24px !important;
  row-gap: 0 !important;
  width: 100% !important;
}

.aps-post-title-row > h1 {
  min-width: 0 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

.aps-post-title-actions {
  align-self: start !important;
  display: flex !important;
  align-items: center !important;
  flex-wrap: nowrap !important;
  gap: 8px !important;
  margin: 4px 0 0 !important;
  padding: 0 !important;
}

/* Same pill treatment as Project/Heritage. */
body.single-aps_person .aps-profile-action,
body.single-aps_organization .aps-profile-action,
body.single-aps_product .aps-product-action,
body.single-aps_event .aps-event-action,
body.single-aps_editorial .aps-editorial-action {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 7px !important;
  min-height: 38px !important;
  padding: 8px 12px !important;
  border: 1px solid rgba(242,96,113,.38) !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: #D94B5E !important;
  font-family: var(--aps-post-body-family) !important;
  font-size: 13px !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  white-space: nowrap !important;
  box-shadow: none !important;
}

body.single-aps_person .aps-profile-action:hover,
body.single-aps_person .aps-profile-action:focus-visible,
body.single-aps_organization .aps-profile-action:hover,
body.single-aps_organization .aps-profile-action:focus-visible,
body.single-aps_product .aps-product-action:hover,
body.single-aps_product .aps-product-action:focus-visible,
body.single-aps_event .aps-event-action:hover,
body.single-aps_event .aps-event-action:focus-visible,
body.single-aps_editorial .aps-editorial-action:hover,
body.single-aps_editorial .aps-editorial-action:focus-visible {
  background: #F26071 !important;
  border-color: #F26071 !important;
  color: #fff !important;
  outline: 0 !important;
}

body.single-aps_event .aps-event-actions__divider,
body.single-aps_editorial .aps-editorial-actions__divider {
  display: none !important;
}

/* Product manufacturer link now sits under metadata, not inside the action row. */
body.single-aps_product .aps-product-manufacturer-link {
  display: inline-block !important;
  width: auto !important;
  margin: 12px 0 0 !important;
  padding: 0 !important;
  border: 0 !important;
  font-family: var(--aps-post-body-family) !important;
}

/* Product / Event / Editorial hero:
 * fixed 16:9 frame, white background, image fully visible whenever it fits.
 * The frame keeps a common height; vertical/narrow images keep their full height
 * with white space around them, and no image is distorted.
 */
body.single-aps_product .aps-product-hero,
body.single-aps_event .aps-event-hero,
body.single-aps_editorial .aps-editorial-hero {
  aspect-ratio: 16 / 9 !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  background: #fff !important;
}

body.single-aps_product .aps-product-hero .apsaidal-media-slider,
body.single-aps_product .aps-product-hero .apsaidal-media-slider__viewport,
body.single-aps_product .aps-product-hero .apsaidal-media-slider__track,
body.single-aps_product .aps-product-hero .apsaidal-media-slider__slide,
body.single-aps_product .aps-product-hero .apsaidal-media__item,
body.single-aps_product .aps-product-hero .apsaidal-media__lightbox-trigger,
body.single-aps_event .aps-event-hero .apsaidal-media,
body.single-aps_event .aps-event-hero figure,
body.single-aps_event .aps-event-hero .apsaidal-media__item,
body.single-aps_event .aps-event-hero .apsaidal-media__lightbox-trigger,
body.single-aps_editorial .aps-editorial-hero .apsaidal-media,
body.single-aps_editorial .aps-editorial-hero figure,
body.single-aps_editorial .aps-editorial-hero .apsaidal-media__item,
body.single-aps_editorial .aps-editorial-hero .apsaidal-media__lightbox-trigger {
  height: 100% !important;
  min-height: 0 !important;
  margin: 0 !important;
  background: #fff !important;
}

body.single-aps_product .aps-product-hero .apsaidal-media-slider__slide,
body.single-aps_product .aps-product-hero .apsaidal-media__item,
body.single-aps_product .aps-product-hero .apsaidal-media__lightbox-trigger,
body.single-aps_event .aps-event-hero figure,
body.single-aps_event .aps-event-hero .apsaidal-media__item,
body.single-aps_event .aps-event-hero .apsaidal-media__lightbox-trigger,
body.single-aps_editorial .aps-editorial-hero figure,
body.single-aps_editorial .aps-editorial-hero .apsaidal-media__item,
body.single-aps_editorial .aps-editorial-hero .apsaidal-media__lightbox-trigger {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
}

body.single-aps_product .aps-product-hero img,
body.single-aps_product .aps-product-hero--featured img,
body.single-aps_event .aps-event-hero img,
body.single-aps_editorial .aps-editorial-hero img {
  display: block !important;
  flex: 0 1 auto !important;
  width: auto !important;
  height: auto !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 100% !important;
  max-height: 100% !important;
  margin: auto !important;
  object-fit: contain !important;
  object-position: center center !important;
  background: #fff !important;
}

/* Editorial keeps publication date, but no reading-time metadata. */
body.single-aps_editorial .aps-editorial-meta-row {
  margin-top: 12px !important;
}

@media (max-width: 1024px) {
  .aps-post-title-row {
    column-gap: 18px !important;
  }
}

@media (max-width: 767px) {
  .aps-post-title-row {
    grid-template-columns: minmax(0,1fr) !important;
    row-gap: 10px !important;
  }

  .aps-post-title-actions {
    margin-top: 0 !important;
  }

  body.single-aps_person .aps-profile-action,
  body.single-aps_organization .aps-profile-action,
  body.single-aps_product .aps-product-action,
  body.single-aps_event .aps-event-action,
  body.single-aps_editorial .aps-editorial-action {
    min-height: 36px !important;
    padding: 7px 11px !important;
    font-size: 12.5px !important;
  }
}

/* APSAIDAL STAGING targeted resync 2026-09-24 */


/* Portrait HERO correction — intrinsic orientation is tagged by apsaidal-actions.js.
 * Portrait images must show their complete vertical dimension inside the 16:9 frame,
 * centered with white side space. Landscape behavior stays unchanged. */
body.single-aps_product .aps-product-hero img.aps-hero-image--portrait,
body.single-aps_event .aps-event-hero img.aps-hero-image--portrait,
body.single-aps_editorial .aps-editorial-hero img.aps-hero-image--portrait {
  flex: 0 0 auto !important;
  width: auto !important;
  height: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  margin: 0 auto !important;
  object-fit: contain !important;
  object-position: center center !important;
  background: #fff !important;
}


/* Legacy/Elementor HERO fallback frame.
 * JS marks the first real project/heritage hero even when historical markup
 * does not expose the newer aps-project-hero / aps-heritage-hero classes. */
body.single-aps_project .aps-hero-fit-frame,
body.single-aps_heritage .aps-hero-fit-frame {
  width:100% !important;
  max-width:100% !important;
  aspect-ratio:16 / 9 !important;
  overflow:hidden !important;
  background:#fff !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  margin-left:0 !important;
  margin-right:0 !important;
}

body.single-aps_project .aps-hero-fit-frame > a,
body.single-aps_project .aps-hero-fit-frame .apsaidal-media__lightbox-trigger,
body.single-aps_heritage .aps-hero-fit-frame > a,
body.single-aps_heritage .aps-hero-fit-frame .apsaidal-media__lightbox-trigger {
  width:100% !important;
  height:100% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
  background:#fff !important;
}

body.single-aps_project .aps-hero-fit-frame img,
body.single-aps_heritage .aps-hero-fit-frame img {
  display:block !important;
  width:auto !important;
  height:auto !important;
  min-width:0 !important;
  min-height:0 !important;
  max-width:100% !important;
  max-height:100% !important;
  margin:auto !important;
  object-fit:contain !important;
  object-position:center center !important;
  background:#fff !important;
}

body.single-aps_project .aps-hero-fit-frame img.aps-hero-image--portrait,
body.single-aps_heritage .aps-hero-fit-frame img.aps-hero-image--portrait {
  width:auto !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
}


/* APSAIDAL 2.0 — authoritative narrative copy parity, 2026-09-24. */
/* Narrative/body copy across every Single uses the Project reading system.
 * Component metadata, facts, captions, cards and navigation intentionally keep
 * their smaller component-specific scale. Responsive sizes come from the shared
 * --aps-post-body-size variable: 16px desktop, 15.5px tablet, 15px mobile. */
body.single-aps_project .apsaidal-project-body,
body.single-aps_heritage .aps-heritage-editorial-body,
body.single-aps_heritage .aps-heritage-significance > div,
body.single-aps_person .aps-profile-prose,
body.single-aps_organization .aps-profile-prose,
body.single-aps_product .aps-product-copy,
body.single-aps_event .aps-event-copy,
body.single-aps_editorial .aps-editorial-body,
body.single-aps_project .apsaidal-project-body p,
body.single-aps_project .apsaidal-project-body li,
body.single-aps_heritage .aps-heritage-editorial-body p,
body.single-aps_heritage .aps-heritage-editorial-body li,
body.single-aps_heritage .aps-heritage-significance > div p,
body.single-aps_heritage .aps-heritage-significance > div li,
body.single-aps_person .aps-profile-prose p,
body.single-aps_person .aps-profile-prose li,
body.single-aps_organization .aps-profile-prose p,
body.single-aps_organization .aps-profile-prose li,
body.single-aps_product .aps-product-copy p,
body.single-aps_product .aps-product-copy li,
body.single-aps_event .aps-event-copy p,
body.single-aps_event .aps-event-copy li,
body.single-aps_editorial .aps-editorial-body p,
body.single-aps_editorial .aps-editorial-body li {
  font-family: var(--aps-post-body-family) !important;
  font-size: var(--aps-post-body-size) !important;
  line-height: var(--aps-post-body-line) !important;
}


/* APSAIDAL 2.0 — hard lock narrative typography across Singles, 2026-09-24. */
/* Previous passes set the family on wrapper nodes, but template/widget rules could
 * still override descendants or leave the browser on Arial when Elementor had
 * not loaded Source Sans Pro for that Single. This block makes the reading copy
 * authoritative without touching headings, metadata, cards, captions or nav. */
body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance > div,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-editorial-body
) {
  font-family: "Source Sans Pro", Arial, sans-serif !important;
  font-size: var(--aps-post-body-size) !important;
  font-weight: 300 !important;
  line-height: var(--aps-post-body-line) !important;
}

body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance > div,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-editorial-body
) :is(p, li, span, a, strong, b, em, i, blockquote) {
  font-family: "Source Sans Pro", Arial, sans-serif !important;
  font-size: inherit !important;
  font-weight: inherit !important;
  line-height: inherit !important;
}

/* Exact agreed responsive reading sizes. */
@media (min-width: 1025px) {
  body:is(
    .single-aps_project,
    .single-aps_heritage,
    .single-aps_person,
    .single-aps_organization,
    .single-aps_product,
    .single-aps_event,
    .single-aps_editorial
  ) {
    --aps-post-body-size: 16px;
  }
}

@media (min-width: 768px) and (max-width: 1024px) {
  body:is(
    .single-aps_project,
    .single-aps_heritage,
    .single-aps_person,
    .single-aps_organization,
    .single-aps_product,
    .single-aps_event,
    .single-aps_editorial
  ) {
    --aps-post-body-size: 15.5px;
  }
}

@media (max-width: 767px) {
  body:is(
    .single-aps_project,
    .single-aps_heritage,
    .single-aps_person,
    .single-aps_organization,
    .single-aps_product,
    .single-aps_event,
    .single-aps_editorial
  ) {
    --aps-post-body-size: 15px;
  }
}


/* APSAIDAL 2.0 — heading isolation from body weight, 2026-09-24. */
/* The narrative wrapper is intentionally weight 300. Headings must not inherit
 * that light weight: keep them on the APSAIDAL heading face at regular 400. */
body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-event-overview,
  .aps-editorial-body
) h2 {
  font-family: "Brandon Grotesque","Avenir Next",Arial,sans-serif !important;
  font-size: var(--aps-post-h2-size) !important;
  font-weight: 400 !important;
  line-height: 1.18 !important;
  letter-spacing: 0 !important;
}

body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-event-overview,
  .aps-editorial-body
) h3 {
  font-family: "Brandon Grotesque","Avenir Next",Arial,sans-serif !important;
  font-size: var(--aps-post-h3-size) !important;
  font-weight: 400 !important;
  line-height: 1.22 !important;
  letter-spacing: 0 !important;
}


/* APSAIDAL 2.0 — Source Sans ampersand inside narrative headings, 2026-09-24. */
.aps-post-ampersand {
  font-family: "Source Sans Pro", Arial, sans-serif !important;
  font-weight: 300 !important;
  font-style: normal !important;
  font-size: 0.82em !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  display: inline-block !important;
  transform: translateY(-0.01em) scaleX(0.78) !important;
  transform-origin: center center !important;
}


/* APSAIDAL 2.0 — textual links inside Singles, 2026-09-30.
 * Use the APSAIDAL burgundy for editorial/data links without changing
 * breadcrumbs, tabs, cards, action controls, hero links or other designed UI. */
body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  p,
  dd,
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-event-overview,
  .aps-editorial-body
) a {
  color: #F26071 !important;
  font-weight: inherit !important;
  text-decoration: none !important;
}

body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  p,
  dd,
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-event-overview,
  .aps-editorial-body
) a:hover,
body:is(
  .single-aps_project,
  .single-aps_heritage,
  .single-aps_person,
  .single-aps_organization,
  .single-aps_product,
  .single-aps_event,
  .single-aps_editorial
) :is(
  p,
  dd,
  .apsaidal-project-body,
  .aps-heritage-editorial-body,
  .aps-heritage-significance,
  .aps-profile-prose,
  .aps-product-copy,
  .aps-event-copy,
  .aps-event-overview,
  .aps-editorial-body
) a:focus-visible {
  color: #F26071 !important;
  text-decoration: none !important;
}


/* APSAIDAL 2.0 — hard reset link decoration inside Single content/data, 2026-09-30. */
/* CSS-only safety pass. Neutralise underline implementations from themes/builders,
 * including text-decoration, borders, inset shadows and background-image tricks.
 * Breadcrumbs, tabs, buttons, cards and hero links stay outside these selectors. */
body.single-aps_project :is(.aps-project-facts dd,.apsaidal-project-body p,.apsaidal-project-body li),
body.single-aps_heritage :is(.aps-heritage-facts dd,.aps-heritage-editorial-body p,.aps-heritage-editorial-body li,.aps-heritage-significance p,.aps-heritage-significance li),
body.single-aps_person :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p),
body.single-aps_organization :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p),
body.single-aps_product :is(.aps-product-copy p,.aps-product-copy li,.aps-product-data dd,.aps-product-spec-list li),
body.single-aps_event :is(.aps-event-copy p,.aps-event-copy li,.aps-event-overview p,.aps-event-data dd),
body.single-aps_editorial :is(.aps-editorial-body p,.aps-editorial-body li) {
  text-decoration: none !important;
}

body.single-aps_project :is(.aps-project-facts dd,.apsaidal-project-body p,.apsaidal-project-body li) a,
body.single-aps_project :is(.aps-project-facts dd,.apsaidal-project-body p,.apsaidal-project-body li) a *,
body.single-aps_heritage :is(.aps-heritage-facts dd,.aps-heritage-editorial-body p,.aps-heritage-editorial-body li,.aps-heritage-significance p,.aps-heritage-significance li) a,
body.single-aps_heritage :is(.aps-heritage-facts dd,.aps-heritage-editorial-body p,.aps-heritage-editorial-body li,.aps-heritage-significance p,.aps-heritage-significance li) a *,
body.single-aps_person :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a,
body.single-aps_person :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a *,
body.single-aps_organization :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a,
body.single-aps_organization :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a *,
body.single-aps_product :is(.aps-product-copy p,.aps-product-copy li,.aps-product-data dd,.aps-product-spec-list li) a,
body.single-aps_product :is(.aps-product-copy p,.aps-product-copy li,.aps-product-data dd,.aps-product-spec-list li) a *,
body.single-aps_event :is(.aps-event-copy p,.aps-event-copy li,.aps-event-overview p,.aps-event-data dd) a,
body.single-aps_event :is(.aps-event-copy p,.aps-event-copy li,.aps-event-overview p,.aps-event-data dd) a *,
body.single-aps_editorial :is(.aps-editorial-body p,.aps-editorial-body li) a,
body.single-aps_editorial :is(.aps-editorial-body p,.aps-editorial-body li) a * {
  color: #F26071 !important;
  font-weight: inherit !important;
  text-decoration: none !important;
  text-decoration-line: none !important;
  text-decoration-style: solid !important;
  text-decoration-color: transparent !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  background-image: none !important;
  background-size: 0 0 !important;
  background-position: 0 0 !important;
}

body.single-aps_project :is(.aps-project-facts dd,.apsaidal-project-body p,.apsaidal-project-body li) a::before,
body.single-aps_project :is(.aps-project-facts dd,.apsaidal-project-body p,.apsaidal-project-body li) a::after,
body.single-aps_heritage :is(.aps-heritage-facts dd,.aps-heritage-editorial-body p,.aps-heritage-editorial-body li,.aps-heritage-significance p,.aps-heritage-significance li) a::before,
body.single-aps_heritage :is(.aps-heritage-facts dd,.aps-heritage-editorial-body p,.aps-heritage-editorial-body li,.aps-heritage-significance p,.aps-heritage-significance li) a::after,
body.single-aps_person :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a::before,
body.single-aps_person :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a::after,
body.single-aps_organization :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a::before,
body.single-aps_organization :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a::after,
body.single-aps_product :is(.aps-product-copy p,.aps-product-copy li,.aps-product-data dd,.aps-product-spec-list li) a::before,
body.single-aps_product :is(.aps-product-copy p,.aps-product-copy li,.aps-product-data dd,.aps-product-spec-list li) a::after,
body.single-aps_event :is(.aps-event-copy p,.aps-event-copy li,.aps-event-overview p,.aps-event-data dd) a::before,
body.single-aps_event :is(.aps-event-copy p,.aps-event-copy li,.aps-event-overview p,.aps-event-data dd) a::after,
body.single-aps_editorial :is(.aps-editorial-body p,.aps-editorial-body li) a::before,
body.single-aps_editorial :is(.aps-editorial-body p,.aps-editorial-body li) a::after {
  text-decoration: none !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  background-image: none !important;
}

body.single-aps_project :is(.aps-project-facts dd,.apsaidal-project-body p,.apsaidal-project-body li) a:hover,
body.single-aps_heritage :is(.aps-heritage-facts dd,.aps-heritage-editorial-body p,.aps-heritage-editorial-body li,.aps-heritage-significance p,.aps-heritage-significance li) a:hover,
body.single-aps_person :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a:hover,
body.single-aps_organization :is(.aps-profile-prose p,.aps-profile-prose li,.aps-profile-details dd,.aps-profile-contact dd,.aps-profile-location p) a:hover,
body.single-aps_product :is(.aps-product-copy p,.aps-product-copy li,.aps-product-data dd,.aps-product-spec-list li) a:hover,
body.single-aps_event :is(.aps-event-copy p,.aps-event-copy li,.aps-event-overview p,.aps-event-data dd) a:hover,
body.single-aps_editorial :is(.aps-editorial-body p,.aps-editorial-body li) a:hover {
  color: #F26071 !important;
  text-decoration: none !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  background-image: none !important;
}
