/* O'Neill's D&C — v73.8 iPhone visibility safeguard
   Restrained accessibility and presentation refinements, loaded last. */

/* Progressive enhancement: content remains readable if JavaScript is delayed. */
.reveal{opacity:1;transform:none}
.js .reveal{
  opacity:0;
  transform:translateY(12px);
  transition:opacity .45s ease,transform .45s cubic-bezier(.2,.7,.2,1);
}
.js .reveal.visible{opacity:1;transform:none}
.js .delay{transition-delay:.06s}

/* Above-the-fold messages must be present at first paint. */
.js .hero-copy.reveal,
.js .case-hero__content.reveal,
.js .cap-hero__content.reveal,
.js .editorial-hero__content.reveal,
.js .article-hero__content.reveal,
.js .service-hero__content.reveal,
.js .location-hero__content.reveal,
.js .contact-hero-grid.reveal,
.js .project-brief-grid.reveal{
  opacity:1;
  transform:none;
  transition:none;
}

/* Keep navigation legible when a transparent header crosses bright hero media. */
body:not(.project-page) .site-header:not(.scrolled){
  background:linear-gradient(180deg,rgba(18,13,11,.58) 0%,rgba(18,13,11,.22) 64%,rgba(18,13,11,0) 100%);
  color:#fff;
  text-shadow:0 1px 14px rgba(0,0,0,.5);
}
body:not(.project-page) .site-header:not(.scrolled) .header-cta{
  text-shadow:0 1px 14px rgba(0,0,0,.5);
}

/* Correct the light-page eyebrow rule where text sits on hero photography. */
.case-hero__content .eyebrow,
.cap-hero__content .eyebrow,
.editorial-hero__content .eyebrow,
.article-hero__content .eyebrow,
.service-hero__content .eyebrow,
.location-hero__content .eyebrow{
  color:#d2b56d!important;
  font-size:11px;
  text-shadow:0 1px 14px rgba(0,0,0,.45);
}
.hero-copy .eyebrow.light{color:rgba(255,255,255,.9)}

/* Small editorial labels: retain the hierarchy while remaining readable. */
.eyebrow,.project-number,.hero-index,.cap-list span,.process-grid span,
.insight-grid span,.insight-grid a,.footer-grid .label,.footer-base,
.footer-social a,.visual-caption span,.case-location,.case-facts span,
.case-caption,.case-feature__copy span,.case-next span,.cap-service>span,
.cap-control-grid span,.cap-delivery-link,.insights-feature-copy span,
.insights-feature-copy strong,.article-date,.article-aside a,
.article-related span,.article-next>span,.insight-read,.cap-service-links a,
.footer-location>span,.location-services-grid span,.location-services-grid a,
.location-proof-copy span,.location-proof-copy strong,.article-proof span,
.article-proof a,.service-scope-grid span,.service-proof-copy span,
.service-process-grid span,.project-brief-meta span,.brief-field label,
.brief-submit,.start-proof-list span,.insights-knowledge-card>span,
.insights-knowledge-card strong,.contact-hero-details span,
.systems-platform__role,.systems-data-spine span,.systems-procedure span,
.systems-outcome>span{
  font-size:max(11px,.6875rem);
  line-height:1.45;
}

.project-meta p,.process-grid p,.insight-grid p{color:#655f59}
.case-caption{color:#655e58}
.case-dark-gallery .case-caption{color:#b9afa6}
.article-aside p{color:#69625c}
.article-date{color:rgba(255,255,255,.86)}
.footer-base{color:#aaa098}
.brief-security{font-size:11px;color:#6b635c}
.field-optional{font-size:.9em;opacity:.76}
.location-proof-copy p,.service-proof-copy p,.article-proof p,.systems-outcome p{
  font-size:max(13px,.8125rem);
}

@media(max-width:560px){
  .case-caption{font-size:11px;line-height:1.5}
  .footer-base{font-size:11px;line-height:1.55}
}
@media(prefers-reduced-motion:reduce){
  .js .reveal,.js .reveal.visible{opacity:1;transform:none;transition:none}
}

/* V73.6 — final live-preview corrections.
   The systems hero previously depended on an undefined --page variable,
   which collapsed its editorial safe zone to the viewport edge. */
.article-hero.systems-video-hero .article-hero__content{
  left:clamp(28px,4vw,74px)!important;
  top:47%!important;
}

/* Resolve the last high-specificity micro-label exceptions found in live QA. */
.case-hero__meta .case-location,
.about-proof__grid article > span,
.contact-office-grid article > span,
.insights-knowledge-card.intelligence-card > .intelligence-card__content > span,
.diary-capture-grid .diary-capture-item > span{
  font-size:11px!important;
  line-height:1.45!important;
}
.brief-field label .field-optional{
  font-size:11px!important;
  line-height:1.45!important;
}

/* V73.7 — About-page component labels use the same readable minimum. */
.about-principles-grid article > span,
.location-grid article > span,
.location-grid .location-explore-link{
  font-size:11px!important;
  line-height:1.45!important;
}

@media(max-width:900px){
  /* iOS Safari can miss IntersectionObserver thresholds on very tall reveal
     blocks. Mobile content must never depend on JavaScript to be readable. */
  html.js .reveal,
  html.js .reveal.visible{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
  }
  .article-hero.systems-video-hero .article-hero__content{
    left:22px!important;
    top:44%!important;
  }
}

@media(hover:none) and (pointer:coarse){
  html.js .reveal,
  html.js .reveal.visible{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
  }
}
