/* V32: safe responsive compactness. No CSS zoom or oversize width. */
*,*::before,*::after{box-sizing:border-box}
html,body{max-width:100%;overflow-x:clip}
main,main>section,main>article,main>div{max-width:100%;min-width:0}
main :is(.container,.shell,.v9-wrap,.v20-work-wrap,.v27-journey-inner,.v9-section-inner,.v28-process-inner,.v27-clients-inner){max-width:100%;min-width:0}
main img,main video,main iframe{max-width:100%}
/* Typography and spacing: compact subpage sections, not the opening hero. */
@media(min-width:801px){
  main>section:not(:first-child):not(.hero):not(.v9-hero):not(.v20-work-intro),
  main>article{font-size:.92em}
  main>section:not(:first-child):not(.hero):not(.v9-hero):not(.v20-work-intro) h2,
  main>article h2{font-size:clamp(26px,3.2vw,48px)}
  main>section:not(:first-child):not(.hero):not(.v9-hero):not(.v20-work-intro) h3,
  main>article h3{font-size:clamp(18px,2vw,30px)}
}
/* Keep before/after visuals at a useful but bounded size and make caption text legible. */
.v20-case .v20-before-after,.v20-case .before-after,.v20-case .comparison,.v20-case .ba-slider,
.v20-case .v20-case-media{max-width:100%;overflow:hidden}
.v20-case p,.v20-case figcaption,.v20-case .v20-case-description{font-size:clamp(14px,1.15vw,17px);line-height:1.6}
/* Robust columns: grids must be allowed to shrink rather than spill past viewport. */
:is(.advantage-grid,.v9-grid,.v27-client-grid,.v30-story-grid,.v30-calculator-guide,.v27-steps,.v28-process-grid,.v9-card-grid,.work-grid)>*{min-width:0;max-width:100%}
@media(max-width:1100px){
  .advantage-grid,.v9-grid,.v27-client-grid,.v27-steps,.v28-process-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:700px){
  .advantage-grid,.v9-grid,.v27-client-grid,.v27-steps,.v28-process-grid,.v30-story-grid,.work-grid{grid-template-columns:minmax(0,1fr)!important}
  main>section,main>article{min-width:0}
  main h1,main h2,main h3{overflow-wrap:break-word}
  .v20-case p,.v20-case figcaption{font-size:15px}
}
/* Keep cards informational where not interactive. */
.v30-guide-step,.v30-guide-step:hover{transform:none!important;cursor:default!important;box-shadow:none!important}
/* Preserve corrected TPN badge sizing on subpages. */
.v20-footer-shield img{width:clamp(64px,6.4vw,104px)!important;max-width:104px!important;height:auto!important}
/* What We Do: keep three advantage columns within the viewport. */
.advantage-cols{grid-template-columns:repeat(3,minmax(0,1fr))!important;width:100%!important}
.advantage-cols>*{min-width:0;overflow-wrap:break-word}
.services-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
/* Work comparisons: proportionate visual with legible explanatory copy. */
.v20-case .v22-compare{width:100%!important;max-width:100%!important;aspect-ratio:16/9!important}
.v20-case .v22-compare-caption{font-size:clamp(14px,1.05vw,16px)!important;line-height:1.5!important}
.v20-case .v20-case-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.v20-case .v20-case-grid>*{min-width:0}
@media(max-width:900px){
 .advantage-cols{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .services-grid{grid-template-columns:minmax(0,1fr)!important}
}
@media(max-width:700px){
 .advantage-cols,.v20-case .v20-case-grid,.v22-compare-gallery{grid-template-columns:minmax(0,1fr)!important}
 .advantage-item{border-right:0!important;padding-right:0!important}
 .v20-case .v22-compare-caption{font-size:14px!important}
 .v27-quick-nav{right:12px!important}
}
