/* Case-study kit. Blocks: .case-hero, .case-lead-wrap, .cs-intro, .cs-wide, .cs-video, .cs-duo, .cs-pull, .cs-split (+.flip), .cs-vis, .cs-fig (+.cs-photo / .cs-card). */
:root{--case-w:1240px;--case-gap:clamp(56px,8vw,120px)}
.case-hero{padding:90px 24px 0}
.case-hero h1{font-size:clamp(68px,10.5vw,158px);margin:0 0 28px}
.case-sub{font-size:clamp(22px,2.5vw,36px);font-weight:700;font-style:normal;letter-spacing:-.015em;color:#3b3d49;max-width:860px;margin:0 auto 56px;line-height:1.25}
.cs-facts{max-width:var(--case-w);margin:0 auto clamp(56px,7vw,100px);padding:0 24px}.case-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:28px;margin:0;padding:30px 0 0;border-top:1px solid #cfd4de;text-align:left}
.case-facts dt{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#737985;margin:0 0 8px}
.case-facts dd{margin:0;font-weight:700;font-size:16px;line-height:1.45;color:var(--ink)}
.case-lead-wrap{max-width:540px;margin:20px auto clamp(70px,9vw,130px);padding:0 24px}
.case-lead-wrap .project{perspective:1200px}
.cs-intro{max-width:700px;margin:0 auto clamp(56px,7vw,100px);padding:0 24px}
.cs-intro p{font-size:clamp(17px,1.5vw,20px);line-height:1.85;margin:0 0 1.3em}
.cs-intro.behind h2{font-family:'K22 Didoni',serif;font-weight:400;color:#3b3d49;font-size:clamp(40px,5vw,68px);line-height:.9;margin:0 0 .5em}
.cs-fig{margin:0}.cs-fig img{display:block;width:100%;height:auto}
.cs-wide{max-width:var(--case-w);margin:0 auto clamp(56px,7vw,100px);padding:0 24px}.cs-wide+.cs-facts{margin-top:calc(-1 * clamp(24px,3vw,44px))}
.cs-photo img,.cs-card img{border-radius:14px}
.cs-card img{box-shadow:0 18px 40px -18px #242739aa}
.cs-video{position:relative;max-width:var(--case-w);margin:0 auto clamp(56px,7vw,100px);padding:0 24px;aspect-ratio:16/9;background:none}
.cs-video video{width:100%;height:100%;display:block;border-radius:14px;background:#14171d;object-fit:cover}
.cs-video:not(.ok)::after{content:"Video to add: " attr(data-file);position:absolute;inset:0 24px;display:flex;align-items:center;justify-content:center;border-radius:14px;background:#14171d;color:#9aa0ae;font-size:13px;letter-spacing:.06em;text-transform:uppercase;pointer-events:none}
.cs-vis .cs-video{padding:0;margin:0}
.cs-duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(16px,2.5vw,36px);align-items:center;max-width:var(--case-w);margin:0 auto clamp(56px,7vw,100px);padding:0 24px}
.cs-pull{max-width:760px;margin:0 auto clamp(40px,5vw,72px);padding:0 24px;text-align:center}
.cs-pull h2{font-family:'K22 Didoni',serif;font-weight:400;color:#3b3d49;font-size:clamp(44px,6vw,92px);line-height:.88;margin:0 0 .5em}
.cs-pull p{font-size:clamp(17px,1.5vw,20px);line-height:1.85;margin:0}
.cs-pull.wide{max-width:980px;margin-bottom:clamp(36px,4vw,56px)}
.cs-split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--case-gap);align-items:start;max-width:var(--case-w);margin:0 auto clamp(80px,10vw,150px);padding:0 24px}
.cs-split.flip{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.cs-split.flip .cs-text{order:2}.cs-split.flip .cs-vis{order:1}
.cs-text{position:sticky;top:90px}
.cs-text h2{font-family:'K22 Didoni',serif;font-weight:400;color:#3b3d49;font-size:clamp(40px,4.6vw,66px);line-height:.9;margin:0 0 .55em}
.cs-text p{font-size:17px;line-height:1.85;margin:0 0 1.1em}
.cs-text strong{font-weight:600}
.cs-vis{display:flex;flex-direction:column;gap:clamp(28px,4vw,56px)}
.cs-fig[data-px]{will-change:transform;transform-style:preserve-3d}
footer{margin-top:40px}
@media(max-width:900px){.case-facts{grid-template-columns:1fr 1fr;row-gap:22px}.cs-split,.cs-split.flip{grid-template-columns:1fr;gap:36px}.cs-split.flip .cs-text,.cs-split.flip .cs-vis{order:0}.cs-text{position:static}.cs-duo{grid-template-columns:1fr}}
@media(max-width:650px){.cs-facts{padding:0 16px}.case-hero{padding-top:50px}.case-hero h1{font-size:clamp(60px,17vw,100px)}.cs-wide,.cs-video,.cs-duo,.cs-split,.cs-intro,.cs-pull{padding-left:16px;padding-right:16px}.cs-video:not(.ok)::after{inset:0 16px}}
.cs-vis .cs-video:not(.ok)::after{inset:0}
.cs-text h2{font-size:clamp(34px,3.7vw,54px)}
.case-hero .case-sub{font-size:clamp(24px,2.7vw,40px);font-weight:700;font-style:normal;letter-spacing:-.015em;color:#3b3d49;max-width:880px;margin:0 auto 64px;line-height:1.22}
.case-hero+.cs-intro{margin-top:0}
.case-hero .case-sub{text-wrap:balance}.nb{white-space:nowrap}
.cs-facts{margin-bottom:clamp(36px,4.5vw,64px)}
.cs-facts .case-facts{padding:30px 0;border-bottom:1px solid #cfd4de}
.cs-intro+.cs-facts{margin-top:clamp(8px,2vw,24px)}

/* K22 subheaders share the homepage headline's tight tracking. */
.cs-pull h2,.cs-text h2,.cs-intro.behind h2{letter-spacing:-.055em}
/* Main images run full width: copy sits in a centered column above, visuals stack below. */
.cs-split,.cs-split.flip{grid-template-columns:minmax(0,1fr);gap:clamp(32px,4vw,56px)}
.cs-split .cs-text,.cs-split.flip .cs-text{order:0;position:static;max-width:700px;margin:0 auto;width:100%}
.cs-split .cs-vis,.cs-split.flip .cs-vis{order:1;width:100%}
.cs-duo{grid-template-columns:minmax(0,1fr);gap:clamp(28px,4vw,56px)}
.cs-pull.wide{max-width:var(--case-w)}
.cs-video.bars video{background:#000}.cs-video.loop video{object-fit:cover}

/* Mobile: multi-screen composites become one-screen-at-a-time swipe carousels. */
.cs-carousel{display:none}
@media(max-width:650px){
.cs-multi>.cs-fig{display:none}
.cs-multi>.cs-carousel{display:block}
.cs-track{list-style:none;margin:0;padding:0 16px;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 16px;-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain}
.cs-track::-webkit-scrollbar{display:none}
.cs-track li{flex:0 0 84%;scroll-snap-align:center}
.cs-track img{display:block;width:100%;height:auto;border-radius:14px}
.cs-dots{display:flex;justify-content:center;gap:8px;margin-top:16px}
.cs-dots span{width:7px;height:7px;border-radius:50%;background:#b9bfcc;transition:background .2s,transform .2s}
.cs-dots span.on{background:#3b3d49;transform:scale(1.25)}
.cs-duo .cs-multi,.cs-vis .cs-multi{margin:0 -16px}
.cs-carousel{padding-bottom:28px}
main>.cs-multi{margin-bottom:clamp(28px,8vw,48px)}
}
