/* R47.5 — text must contribute to layout height at every viewport size. */
html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }
h1,h2,h3,h4 { line-height:1.15; overflow-wrap:anywhere; hyphens:auto; }
p,li,figcaption,blockquote,summary { overflow-wrap:anywhere; }
main a,main button,main label,main strong,.v19-contact a { overflow-wrap:anywhere; }
:is(.shell,.cavh-shell,.v19-hero-inner,.v19-manifesto,.v19-explorer-grid,.v19-contact-grid,.home-film-grid,.project-hero-shell,.project-overview-grid,.project-framework-grid,.universe-focus,.universe-project-grid,.audience-grid,.cavh-grid,.cavh-name,.cavh-facts,.cavh-timeline)>* { min-width:0; }
/* Buttons can expand vertically when a translated label wraps. */
.button,.v19-btn,.v19-contact .button,.v20-watch-film {
 max-width:100%; height:auto; padding-block:12px; white-space:normal; line-height:1.4; text-align:center;
}
/* The hero side note belongs in its own column rather than over the headline. */
@media(min-width:1181px) {
 .v19-hero-inner { grid-template-columns:minmax(0,1fr) minmax(200px,.28fr); gap:40px; }
 .v19-hero-side { position:relative; inset:auto; width:auto; max-width:none; align-self:end; }
 .v19-hero-side strong { line-height:1.2; overflow-wrap:anywhere; }
}
.v19-hero-logo { width:min(1200px,100%); max-width:100%; }
/* Flexible portfolio cards: keep the image background and let the copy set height. */
.project-grid .project-card,.portfolio-grid .project-card,.related-grid .project-card {
 height:auto!important; max-height:none!important; aspect-ratio:auto!important;
}
.project-card .project-card-click {
 display:flex; flex-direction:column; justify-content:flex-end;
 min-height:inherit; height:100%; isolation:isolate;
}
.project-card-click>picture { position:absolute; inset:0; z-index:-2; }
.project-card-click>picture img { width:100%; height:100%; object-fit:cover; }
.project-card-click::before { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.65) 42%,rgba(0,0,0,.96)); pointer-events:none; }
.project-card:has(>.project-card-click)::after { display:none; }
.project-grid .project-copy,.portfolio-grid .project-copy,.related-grid .project-copy {
 position:relative!important; inset:auto; flex:0 0 auto; width:100%; min-width:0;
 margin-top:150px; padding:22px;
}
.project-grid .project-copy p,.project-grid .project-card:first-child .project-copy p,.portfolio-grid .project-copy p {
 display:block!important; -webkit-line-clamp:unset!important; line-clamp:unset!important;
 overflow:visible!important; max-height:none!important; line-height:1.55;
}
/* Home field previews and expanding panels need intrinsic text height too. */
.v19-feature { display:flex; align-items:flex-end; }
.v19-feature-copy { position:relative; inset:auto; width:100%; min-width:0; margin:0; padding:180px 34px 34px; }
.v19-worlds-grid { height:auto; }
.v19-world { display:flex; align-items:flex-end; }
.v19-world-copy { position:relative; inset:auto; width:100%; min-width:0; padding:170px 26px 28px; }
.v19-world-copy h3 { overflow-wrap:anywhere!important; }
.v19-world-copy p { overflow-wrap:anywhere; }
/* Avoid an inflexible minimum grid track or over-wide form control. */
.site-contact-form { grid-template-columns:repeat(2,minmax(0,1fr)); }
.site-contact-form :is(input,textarea,select) { min-width:0; max-width:100%; font-size:16px; line-height:1.5; }
.site-contact-form fieldset,.site-contact-form label,.archive-compare-selects label { min-width:0; }
.site-contact-form .r47-capabilities,.site-contact-form .r47-mail-fallback { grid-column:1/-1; }
.project-media-toolbar,.project-media-navigation { flex-wrap:wrap; }
.project-media-toolbar>*,.project-media-navigation>*,.archive-compare-captions>*,.portfolio-deep-links>a { min-width:0; overflow-wrap:anywhere; }
.archive-compare button,.archive-timeline button,.project-media-dialog button,.universe-chip-row button { max-width:100%; white-space:normal; overflow-wrap:anywhere; line-height:1.4; }
.archive-compare-captions { flex-wrap:wrap; }
.archive-compare-captions span { flex:1 1 160px; }
.archive-timeline-view figcaption { line-height:1.5; }
/* Business card contact lines stay in flow, beside a dedicated QR column. */
.business-card-live {
 display:grid; grid-template-columns:minmax(0,1fr) 64px; align-content:start;
 gap:10px 14px; aspect-ratio:auto; min-height:280px; padding:24px;
}
.business-card-live :is(.bc-brand,.bc-tagline,.bc-name,.bc-role) { grid-column:1/-1; margin:0; min-width:0; white-space:normal; overflow-wrap:anywhere; }
.business-card-live .bc-brand { font-size:clamp(1.4rem,4vw,2.7rem); line-height:1.15; letter-spacing:0; }
.business-card-live .bc-tagline { font-size:.7rem; line-height:1.5; letter-spacing:.1em; }
.business-card-live .bc-name { margin-top:10px; font-size:1rem; line-height:1.4; letter-spacing:.1em; }
.business-card-live .bc-role { font-size:.72rem; line-height:1.5; letter-spacing:.1em; }
.business-card-live .bc-bottom { position:relative; inset:auto; grid-column:1; align-self:end; min-width:0; margin-top:16px; font-size:.72rem; line-height:1.5; letter-spacing:.02em; overflow-wrap:anywhere; }
.business-card-live .bc-qr { position:relative; inset:auto; grid-column:2; width:64px; align-self:end; margin-top:16px; }
/* A long page title/link must not force siblings outside their column. */
.portfolio-cta,.cta-row,.deep-switch { flex-wrap:wrap; gap:16px; }
.universe-chip-row,.universe-route-tags,.project-market-tags { min-width:0; }
.universe-project-card,.audience-grid article,.cavh-proof,.cavh-fact,.cavh-timeline article { min-width:0; overflow-wrap:anywhere; }
/* Keep navigation usable on short landscape screens and at browser zoom. */
@media(max-width:1180px) {
 .v19-header .v19-links { max-height:calc(100svh - 84px); overflow-y:auto; }
 .v19-header .v19-links>a { white-space:normal; overflow-wrap:anywhere; line-height:1.5; }
 .site-header .main-nav a { white-space:normal!important; word-break:normal!important; overflow-wrap:anywhere; line-height:1.3!important; }
}
@media(max-width:760px) {
 .v19-feature-copy { padding:160px 22px 24px; }
 .portfolio-tools { position:static; }
 .business-card-live { padding:20px; }
}
@media(max-width:640px) {
 .site-contact-form { grid-template-columns:minmax(0,1fr); }
 .home-film-grid { grid-template-columns:minmax(0,1fr); }
 .v19-header .v19-links { left:10px; right:10px; padding:16px; }
 .v19-world-copy { padding:160px 22px 24px; }
 .project-grid .project-copy,.portfolio-grid .project-copy { padding:18px; margin-top:130px; }
 .project-media-navigation button { flex:1 1 120px; }
}
@media(max-width:420px) {
 .site-header .nav-shell { gap:8px; }
 .site-header .brand-image { width:clamp(86px,29vw,122px); }
 .site-header .lang-switch { flex:0 0 auto; gap:4px; }
 .v19-header .v19-lang a { min-width:30px; }
 .v19-header .v19-menu { padding-inline:8px; }
 .business-card-live { grid-template-columns:minmax(0,1fr) 56px; padding:18px; gap:10px; }
 .business-card-live .bc-qr { width:56px; }
 .v19-feature-copy h3 { font-size:clamp(1.7rem,8vw,2.2rem); }
}
