/* v35 — typography safety, hero controls, map cleanup follow-up.
   Main goal: no ugly mid-word letter breaks in readability mode. */

/* ---------- Safe word wrapping ---------- */
body.vision-mode main :where(h1,h2,h3,h4,strong){
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
  text-wrap:balance;
}
body.vision-mode main :where(p,li,dd,dt,label,a,button){
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:auto;
  text-wrap:pretty;
}

/* Large decorative words should fit as whole words rather than split by letters. */
body.vision-mode.vision-mode.vision-mode main :where(.ref-heading__ghost,.display-title,.section-display-title){
  max-width:100%!important;
  white-space:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
  letter-spacing:-.035em!important;
}
body.vision-mode.vision-mode.vision-mode main .ref-heading__ghost{
  font-size:min(var(--vision-display),clamp(42px,6.7vw,94px))!important;
  line-height:.96!important;
}
body.vision-mode.vision-mode.vision-mode main .display-title{
  font-size:min(var(--vision-display),clamp(54px,7.2vw,102px))!important;
  line-height:.96!important;
}
body.vision-mode.vision-mode.vision-mode main .section-display-title{
  font-size:min(var(--vision-section-display),clamp(46px,6.5vw,90px))!important;
  line-height:1!important;
}

/* Archive has one long decorative word; keep it on one line at every breakpoint. */
body.vision-mode .archive-page-hero .display-title{
  font-size:min(var(--vision-display),clamp(54px,7vw,96px))!important;
  white-space:nowrap!important;
}

/* ---------- Benefits: give large copy enough width ---------- */
body.vision-mode .benefits-bento{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:20px!important;
  width:min(1180px,100%)!important;
  align-items:stretch!important;
}
body.vision-mode .benefit-tile,
body.vision-mode .benefit-tile:nth-child(n){
  grid-column:auto!important;
  min-height:0!important;
  height:auto!important;
  padding:25px 24px!important;
  gap:16px!important;
  transform:none!important;
  align-items:flex-start!important;
}
body.vision-mode .benefit-tile:hover,
body.vision-mode .benefit-tile:nth-child(2):hover,
body.vision-mode .benefit-tile:nth-child(5):hover{transform:none!important}
body.vision-mode .benefit-tile__number{
  flex:0 0 48px!important;
  width:48px!important;
  height:48px!important;
  border-radius:15px!important;
}
body.vision-mode.vision-mode.vision-mode .benefit-tile h3{
  margin:2px 0 0!important;
  font-size:clamp(30px,calc(var(--vision-body) * 1.55),44px)!important;
  line-height:1.12!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:none!important;
  text-wrap:balance!important;
}
body.vision-mode.vision-mode.vision-mode .benefit-tile p{
  margin:10px 0 0!important;
  font-size:var(--vision-body)!important;
  line-height:1.5!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  hyphens:auto!important;
  text-wrap:pretty!important;
}

/* ---------- Home hero: wave must never cover CTAs ---------- */
body.vision-mode .ref-hero__copy,
body.vision-mode .ref-actions,
body.vision-mode .ref-actions .ref-button{
  position:relative!important;
  z-index:12!important;
}
body.vision-mode .ref-actions{
  flex-wrap:wrap!important;
  row-gap:14px!important;
}
@media(max-width:1080px){
  body.vision-mode .ref-hero{
    height:auto!important;
    min-height:0!important;
  }
  body.vision-mode .ref-hero__inner{
    height:auto!important;
    min-height:0!important;
    padding-bottom:120px!important;
  }
  body.vision-mode .ref-hero__copy{
    padding-bottom:0!important;
    margin-bottom:0!important;
  }
  body.vision-mode .ref-hero::after{
    pointer-events:none!important;
    z-index:8!important;
  }
}

/* ---------- Intermediate widths ---------- */
@media(max-width:1180px){
  body.vision-mode .benefits-bento{
    grid-template-columns:1fr!important;
    width:min(820px,100%)!important;
  }
  body.vision-mode .benefit-tile,
  body.vision-mode .benefit-tile:nth-child(n){
    padding:24px 22px!important;
  }
}
@media(max-width:760px){
  body.vision-mode.vision-mode.vision-mode main .ref-heading__ghost{
    font-size:min(var(--vision-display),clamp(38px,10.5vw,54px))!important;
  }
  body.vision-mode.vision-mode.vision-mode main .display-title{
    font-size:min(var(--vision-display),clamp(42px,12vw,58px))!important;
  }
  body.vision-mode.vision-mode.vision-mode main .section-display-title{
    font-size:min(var(--vision-section-display),clamp(40px,11vw,56px))!important;
  }
  body.vision-mode .archive-page-hero .display-title{
    font-size:min(var(--vision-display),clamp(42px,11.5vw,56px))!important;
  }
  body.vision-mode .benefits-bento{
    grid-template-columns:1fr!important;
    gap:14px!important;
  }
  body.vision-mode .benefit-tile,
  body.vision-mode .benefit-tile:nth-child(n){
    padding:21px 18px!important;
    gap:13px!important;
  }
  body.vision-mode .benefit-tile__number{
    flex-basis:44px!important;
    width:44px!important;
    height:44px!important;
  }
  body.vision-mode.vision-mode.vision-mode .benefit-tile h3{
    font-size:clamp(27px,calc(var(--vision-body) * 1.38),36px)!important;
  }
  body.vision-mode .ref-hero__inner{
    padding-bottom:112px!important;
  }
}

/* Ultra-narrow: still wrap only at natural boundaries. */
@media(max-width:390px){
  body.vision-mode.vision-mode.vision-mode main .ref-heading__ghost{
    font-size:min(var(--vision-display),42px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main .display-title,
  body.vision-mode .archive-page-hero .display-title{
    font-size:min(var(--vision-display),44px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main .section-display-title{
    font-size:min(var(--vision-section-display),42px)!important;
  }
}


/* ---------- Follow-up QA safeguards: keep natural word boundaries everywhere ---------- */
body.vision-mode main :where(h1,h2,h3,h4){
  white-space:normal!important;
  max-width:100%!important;
}
body.vision-mode .ref-hero__copy h1 span{
  white-space:normal!important;
}
body.vision-mode .ref-mini-card h3{
  font-size:clamp(30px,calc(var(--vision-body) * 1.48),44px)!important;
  line-height:1.14!important;
}

/* Multi-word decorative labels may wrap only at spaces; single-word labels get their own safe caps. */
body.vision-mode.vision-mode.vision-mode main :where(.ref-heading__ghost,.section-display-title){
  white-space:normal!important;
  text-wrap:balance!important;
}
body.vision-mode #benefits .ref-heading__ghost,
body.vision-mode #program .ref-heading__ghost,
body.vision-mode #territory .ref-heading__ghost,
body.vision-mode #welcome .ref-heading__ghost{
  white-space:nowrap!important;
}

/* Parent-info cards contain long Russian headings: keep them large but never wider than their cards. */
body.vision-mode main.reference-parents h2{
  font-size:clamp(38px,4vw,56px)!important;
  line-height:1.12!important;
  white-space:normal!important;
}
body.vision-mode main.reference-parents h3{
  font-size:clamp(30px,3.2vw,44px)!important;
  line-height:1.16!important;
}
body.vision-mode main.reference-parents .ref-heading__ghost{
  font-size:min(var(--vision-display),clamp(44px,6vw,82px))!important;
  white-space:normal!important;
}

/* Long homepage editorial heading: slight cap avoids 1–4px text overflow at large font sizes. */
body.vision-mode .camp-moments__copy h2{
  font-size:clamp(38px,calc(var(--vision-body) * 1.85),56px)!important;
  line-height:1.14!important;
}

/* More room for large hero copy on desktop without shrinking the accessibility text. */
@media(min-width:1081px){
  body.vision-mode .ref-hero__copy{
    max-width:690px!important;
  }
  body.vision-mode.vision-mode.vision-mode .ref-hero h1{
    font-size:min(var(--vision-h1),clamp(60px,5vw,76px))!important;
  }
}

/* Mobile/compact: cap individual one-word headings, while body text stays at the selected accessibility size. */
@media(max-width:760px){
  body.vision-mode main.reference-parents h2{
    font-size:min(var(--vision-h2),40px)!important;
  }
  body.vision-mode main.reference-parents h3{
    font-size:min(var(--vision-h3),34px)!important;
  }
  body.vision-mode main.reference-parents .ref-heading__ghost{
    font-size:min(var(--vision-display),clamp(36px,9.5vw,46px))!important;
  }
  body.vision-mode .camp-moments__copy h2{
    font-size:min(var(--vision-h2),38px)!important;
  }
}


/* ---------- High-specificity QA corrections (override the v34 !important type scale) ---------- */
body.vision-mode.vision-mode.vision-mode main .ref-mini-card h3{
  font-size:clamp(30px,calc(var(--vision-body) * 1.48),44px)!important;
  line-height:1.14!important;
  white-space:normal!important;
}
body.vision-mode.vision-mode.vision-mode main .camp-moments__copy h2{
  font-size:clamp(38px,calc(var(--vision-body) * 1.85),56px)!important;
  line-height:1.14!important;
  white-space:normal!important;
}
body.vision-mode.vision-mode.vision-mode main.reference-parents h2{
  font-size:clamp(38px,4vw,56px)!important;
  line-height:1.12!important;
  white-space:normal!important;
}
body.vision-mode.vision-mode.vision-mode main.reference-parents h3{
  font-size:clamp(30px,3.2vw,44px)!important;
  line-height:1.16!important;
  white-space:normal!important;
}
body.vision-mode.vision-mode.vision-mode main .ref-extra-card h2{
  font-size:clamp(36px,calc(var(--vision-body) * 1.65),50px)!important;
  line-height:1.14!important;
  white-space:normal!important;
}

/* Desktop readability hero needs extra vertical breathing room because its wave is ~178px high. */
@media(min-width:1081px){
  body.vision-mode .ref-hero{
    height:auto!important;
    min-height:920px!important;
  }
  body.vision-mode .ref-hero__inner{
    height:auto!important;
    min-height:920px!important;
    padding-bottom:220px!important;
  }
}

@media(max-width:760px){
  body.vision-mode.vision-mode.vision-mode main.reference-parents h2{
    font-size:min(var(--vision-h2),38px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main.reference-parents h3{
    font-size:min(var(--vision-h3),32px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main .ref-extra-card h2{
    font-size:min(var(--vision-h2),36px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main .camp-moments__copy h2{
    font-size:min(var(--vision-h2),36px)!important;
  }
}


/* ---------- Full-site QA pass for A and A+ as well ---------- */
/* Extra-comfort blocks: large mode needs real width, not three narrow columns. */
body.vision-mode .ref-extra-grid{
  grid-template-columns:1fr!important;
  gap:16px!important;
}
body.vision-mode .ref-extra-grid section{
  min-width:0!important;
  height:auto!important;
}
body.vision-mode.vision-mode.vision-mode main .ref-extra-grid h3{
  font-size:clamp(30px,calc(var(--vision-body) * 1.42),42px)!important;
  white-space:normal!important;
}

/* Territory/services: full-width cards in readability mode avoid cramped Russian words. */
body.vision-mode .ref-territory-grid{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:16px!important;
  max-width:1080px!important;
}
body.vision-mode .ref-territory-grid::before{display:none!important}
body.vision-mode .ref-territory-grid article,
body.vision-mode .ref-territory-grid article:nth-child(even){
  transform:none!important;
  min-height:0!important;
  height:auto!important;
}
body.vision-mode.vision-mode.vision-mode main .ref-territory-grid h3,
body.vision-mode.vision-mode.vision-mode main .ref-territory-mobile__cards h3{
  font-size:clamp(28px,calc(var(--vision-body) * 1.34),40px)!important;
  line-height:1.14!important;
  white-space:normal!important;
}
body.vision-mode .ref-territory-mobile{
  grid-template-columns:1fr!important;
  gap:0!important;
}
body.vision-mode .ref-territory-mobile__rail{display:none!important}
body.vision-mode .ref-territory-mobile__cards{
  width:100%!important;
  min-width:0!important;
  gap:12px!important;
}
body.vision-mode .ref-territory-mobile__cards article{
  width:100%!important;
  min-width:0!important;
  height:auto!important;
}
body.vision-mode.vision-mode.vision-mode main .ref-territory-mobile__cards p{
  font-size:var(--vision-body)!important;
  white-space:normal!important;
}

/* Additional-services page: one wide service per row in accessibility mode. */
body.vision-mode .extras-grid{
  grid-template-columns:1fr!important;
  width:min(980px,100%)!important;
  margin-inline:auto!important;
}
body.vision-mode .service-card{
  min-width:0!important;
  height:auto!important;
}
body.vision-mode.vision-mode.vision-mode main .service-card h2{
  font-size:clamp(36px,calc(var(--vision-body) * 1.72),54px)!important;
  line-height:1.14!important;
  white-space:normal!important;
}

/* Contacts: stop squeezing large headings beside maps. */
body.vision-mode .contact-office-card,
body.vision-mode .contact-camp-card{
  grid-template-columns:1fr!important;
}
body.vision-mode.vision-mode.vision-mode main .office-details h1{
  font-size:clamp(42px,4.2vw,58px)!important;
  line-height:1.1!important;
  white-space:normal!important;
}

/* Shift dates: accessibility sizes may wrap naturally, but never clip or duplicate visually. */
body.vision-mode .ref-shift__dates{
  white-space:normal!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
}
@media(max-width:1180px){
  body.vision-mode .ref-territory-grid{grid-template-columns:1fr!important}
}
@media(max-width:760px){
  body.vision-mode.vision-mode.vision-mode main .ref-territory-mobile__cards h3{
    font-size:min(var(--vision-h3),34px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main .service-card h2{
    font-size:min(var(--vision-h2),40px)!important;
  }
  body.vision-mode.vision-mode.vision-mode main .office-details h1{
    font-size:min(var(--vision-h1),42px)!important;
  }
  body.vision-mode .ref-shift__dates-desktop{display:none!important}
  body.vision-mode .ref-shift__dates-mobile{display:block!important;white-space:normal!important}
}


/* Final feature-card safeguard: these two long Russian words must stay whole. */
body.vision-mode.vision-mode.vision-mode.vision-mode main .ref-mini-card h3{
  font-size:38px!important;
  line-height:1.14!important;
  white-space:normal!important;
  word-break:normal!important;
  overflow-wrap:normal!important;
  hyphens:none!important;
}
@media(max-width:1180px){
  body.vision-mode.vision-mode.vision-mode.vision-mode main .ref-mini-card h3{
    font-size:34px!important;
  }
}
@media(max-width:760px){
  body.vision-mode.vision-mode.vision-mode.vision-mode main .ref-mini-card h3{
    font-size:30px!important;
  }
}

/* Individual long-word fit: preserve whole Russian words instead of splitting letters. */
body.vision-mode.vision-mode.vision-mode.vision-mode main :is(.ref-mini-card--one,.ref-mini-card--three) h3{
  font-size:32px!important;
  line-height:1.14!important;
}
@media(max-width:760px){
  body.vision-mode.vision-mode.vision-mode.vision-mode main :is(.ref-mini-card--one,.ref-mini-card--three) h3{
    font-size:29px!important;
  }
}

@media(min-width:761px) and (max-width:1180px){body.vision-mode.vision-mode.vision-mode.vision-mode main :is(.ref-mini-card--one,.ref-mini-card--three) h3{font-size:28px!important}}
