/* Contact: text keeps its spacing; the right-hand media reaches both section edges. */
.kt-band:has(.kt-info){--kt-info-space:clamp(32px,4vw,64px);padding:0}
.kt-band>.ms-wrap:has(>.kt-info){width:100%;max-width:none;padding:0 clamp(20px,4vw,72px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:clamp(32px,5vw,88px);row-gap:28px}
.kt-band>.ms-wrap:has(>.kt-info)>.kt-head{grid-column:1;grid-row:1;margin:0;padding-top:var(--kt-info-space)}
.kt-info{display:contents}
.kt-info-list{grid-column:1;grid-row:2;padding-bottom:var(--kt-info-space)}
.kt-info-photo{grid-column:2;grid-row:1 / 3;position:relative;align-self:stretch;min-width:0;min-height:0;aspect-ratio:auto;overflow:hidden;margin:0}
.kt-info-photo>:is(img,video),.kt-info-photo>picture>:is(img,video){position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover}
.kt-info-photo:hover img{transform:none}
.kt-hero-media>video,.kt-hero-media>figure,.kt-hero-media>picture{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;margin:0}
.kt-hero-media>figure>:is(img,video),.kt-hero-media>picture>:is(img,video){width:100%;height:100%;object-fit:cover}
@media(max-width:900px){
 .kt-band>.ms-wrap:has(>.kt-info){grid-template-columns:minmax(0,1fr);gap:28px}
 .kt-info-list{padding-bottom:0}
 .kt-info-photo{grid-column:1;grid-row:3;aspect-ratio:3 / 2;order:0}
}

/* One controller owns contact hero opacity. The old 18-second CSS sequence also
   faded a single photograph to black; wrappers must be treated as whole slides. */
.kt-hero-media :is(img,video,figure,picture){animation:none}
.kt-hero .kt-hero-media>:is(img,video,figure,picture){opacity:0;transition:opacity 1.5s ease}
.kt-hero:not(.js-slideshow) .kt-hero-media>:is(img,video,figure,picture):first-child,
.kt-hero.js-slideshow .kt-hero-media>.is-active{opacity:1}
.kt-hero .kt-hero-media :is(figure,picture) img{opacity:1}
