/* Shared editorial rules. Layout shrinks naturally; overflow is never hidden. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { word-break: normal; overflow-wrap: break-word; }
body :where(*) { min-width: 0; }
:where(h1,h2,h3,h4,p,li,dd,figcaption) { text-wrap: pretty; }
:where(h1,h2,h3,h4) { text-wrap: balance; hyphens: manual; }
:where(p,li,dd) { orphans: 3; widows: 3; }
a { text-decoration-thickness: 1px; text-underline-offset: .22em; }
a[href^="mailto:"], .case-sources a, .legal-details dd, .legal dd { overflow-wrap: anywhere; }
.button { max-width: 100%; min-width: 0; white-space: normal; gap: 20px; }
.button > span[aria-hidden] { flex-shrink: 0; }
.contact .email { max-width: 100%; white-space: normal; }
.brand-service { white-space: normal; }
.hero.wrap { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
.intro.wrap { grid-template-columns: minmax(0,1fr) minmax(0,1fr); }
.intro h2 { max-width: 16ch; }
.business-services { padding-block: 56px; margin-bottom: 48px; }
.business-services-intro { grid-template-columns: minmax(0,1.2fr) minmax(0,.8fr); gap: clamp(28px,4vw,52px); align-items: start; }
.business-services-media { width: 100%; max-width: 450px; justify-self: end; }
.business-services-feature img { height: auto; aspect-ratio: 2.2; }
.business-services-supporting-images img { height: auto; aspect-ratio: 1.65; object-fit: cover; }
.business-services-supporting-images { gap: 14px; margin-top: 14px; }
.business-services h2 { font-size: clamp(2rem,3.4vw,3.15rem); line-height: 1.17; }
.business-services-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 28px 48px; margin-top: 36px; }
.business-services figcaption { line-height: 1.45; }
.hero-image img { object-position: 52% 50%; }
@media (max-width: 800px) {
  .business-services-intro { grid-template-columns: minmax(0,1fr); }
  .business-services-media { justify-self: start; max-width: 560px; }
}
@media (max-width: 740px) {
  .wrap { width: calc(100% - 40px); }
  h1, .service-page .service-hero h1, .case-page .case-top h1 { font-size: clamp(2rem,9vw,2.75rem); line-height: 1.16; letter-spacing: -.02em; }
  h2, .service-page h2, .case-page .case-work h2 { font-size: clamp(1.85rem,7.8vw,2.3rem); line-height: 1.2; }
  .hero h1 { font-size: clamp(2.6rem,11.3vw,3.35rem); line-height: 1.1; }
  h3, .service-page h3 { line-height: 1.35; }
  .intro h2 { max-width: 100%; }
  .hero-image { height: auto; aspect-ratio: 4/3; }
  .hero-image img { height: 100%; }
  .hero-image figcaption { padding: 65px 20px 18px; font-size: 13px; }
  .contact .email { font-size: clamp(1.45rem,6.2vw,1.9rem); }
  .contact .email span { padding-left: 0; }
  .brand-lockup, .footer-brand .brand-lockup { max-width: 100%; }
  .business-services-grid { grid-template-columns: minmax(0,1fr); }
  .business-services { padding-block: 38px; margin-bottom: 36px; }
  .service-process li > div { min-width: 0; }
  .service-use-case summary { gap: 12px; }
  .service-use-case summary::after { flex-shrink: 0; }
  .service-use-case strong { min-width: 0; }
  .metrics strong { font-size: clamp(1.85rem,8.7vw,2.6rem); }
  .booklet-downloads a span { white-space: normal; }
  .person { flex-wrap: wrap; }
  .person > div { min-width: 0; flex: 1 1 165px; }
}
@media (max-width: 380px) {
  .header .brand-lockup, .footer-brand .brand-lockup { grid-template-columns: 70px minmax(0,1fr); gap: 12px; }
  .header .brand-wording, .footer-brand .brand-wording { padding-left: 12px; }
  .header .brand-name, .footer-brand .brand-name { font-size: 17px; }
  .brand-service { font-size: 12px; letter-spacing: 0; }
  .header-brands { gap: 10px; }
  .respect-mark { width: 42px; }
  .respect-name { font-size: 17px; }
  .respect-service { font-size: 10px; white-space: normal; }
  .four { grid-template-columns: minmax(0,1fr); }
}
@media print {
  p, li { orphans: 3; widows: 3; }
  h1,h2,h3,h4 { break-after: avoid; }
  figure, .service-card, .developer-card { break-inside: avoid; }
}
