/* The approved halftone is a site-wide brand material, not just a homepage effect.
   Same 42 x 72 curved geometry, cached SVGs, no new animation or interaction.
   Empty decorative layers sit behind content; documents/forms keep plain surfaces. */
.field-page :is(.field-hero,.page-hero,.post-hero,.resources-hero,.scanner-branded-header,.cta,.resources-cta,.field-service-close,.journey-service-detail,.field-service-accountability,.about-accountability,#ongoing-report),
.journey-home :is(.journey-report,.journey-people){
 --brand-dot-field:url('../images/brand/dot-field-paper.svg');
 position:relative;
 isolation:isolate;
 overflow:hidden;
}
.field-page :is(.field-hero,.page-hero,.post-hero,.resources-hero,.scanner-branded-header,.cta,.resources-cta,.field-service-close,.journey-service-detail,.field-service-accountability,.about-accountability,#ongoing-report)::before,
.journey-home :is(.journey-report,.journey-people)::before{
 content:"";
 position:absolute;
 inset:0;
 z-index:-1;
 pointer-events:none;
 user-select:none;
 background-image:var(--brand-dot-field);
 background-repeat:no-repeat;
 background-size:cover;
 background-position:center;
}
.field-page :is(.cta,.resources-cta,.journey-service-detail,.field-service-accountability,.about-accountability,#ongoing-report),
.journey-home .journey-report{--brand-dot-field:url('../images/brand/dot-field-dark.svg')}
/* Grey accountability bands need a quiet texture, not a second foreground. */
.field-page :is(.cta:not(.field-paper,.about-cta),.resources-cta,.journey-service-detail,.field-service-accountability,.about-accountability,#ongoing-report)::before,
.journey-home .journey-report::before{opacity:.28;background-size:max(100%,960px) auto;background-position:center bottom}
.field-contact .cta.field-paper,.field-about .about-cta{--brand-dot-field:url('../images/brand/dot-field-paper.svg')}
/* Protect small type even at the darkest point of a dot, not just between dots. */
.field-about .about-cta::before,.journey-home .journey-people::before{opacity:.45}
.field-page :is(.field-hero,.page-hero,.post-hero,.resources-hero,.scanner-branded-header,.field-service-close) a:not(.btn){color:#75300e}
/* Let the wave enter from the other side at the lower break, rather than repeat
   the hero composition. The reversal changes geometry only, never the content. */
.field-page :is(.cta,.resources-cta,.field-service-close,.journey-service-detail,.field-service-accountability,.about-accountability,#ongoing-report)::before,
.journey-home :is(.journey-report,.journey-people)::before{transform:scaleX(-1)}
@media(max-width:640px){
 .field-page :is(.field-hero,.page-hero,.post-hero,.resources-hero,.scanner-branded-header)::before{background-size:auto 100%;background-position:65% center}
}
@media(forced-colors:active){
 .field-page :is(.field-hero,.page-hero,.post-hero,.resources-hero,.scanner-branded-header,.cta,.resources-cta,.field-service-close,.journey-service-detail,.field-service-accountability,.about-accountability,#ongoing-report)::before,
 .journey-home :is(.journey-report,.journey-people)::before{display:none}
}
