/* The hero reuses homepage typography and entrance; overview reuses About narrative. */
body.labora-page .nav:not(.fixed):not(.menu-active){background:transparent;color:#fff;border-color:#ffffff36}
body.labora-page .labora-editorial-hero{padding:0;isolation:isolate;overflow:hidden;background:#09070d}
.labora-hero-background,.labora-hero-shade{position:absolute;inset:0;z-index:0}
.labora-hero-background img{width:100%;height:100%;object-fit:cover;object-position:50% 48%}
.labora-hero-shade{background:linear-gradient(180deg,#0006 0%,#0004 35%,#0006 65%,#000a 100%)}
.labora-editorial-hero .hero-centre{z-index:1}
.labora-hero-bottom{position:absolute;left:var(--gutter);right:var(--gutter);bottom:32px;color:#fff;z-index:1}
.labora-hero-bottom .pill{gap:8px}
.labora-hero-bottom .hero-actions{flex-wrap:wrap}
.labora-overview{background:#000;color:#fff}
.labora-overview .section-label{border-color:#343434}
.labora-overview-copy{max-width:1000px;margin-inline:auto;text-align:center}
:root body.type-system.labora-page main .labora-overview-copy p{font-family:var(--type-text);font-size:24px;font-weight:400;line-height:1.5;letter-spacing:normal;color:#fff;text-transform:none}
.labora-overview-copy p+p{margin-top:24px}
.labora-overview-word{color:#fff}
.js .labora-overview-word{color:var(--labora-word-color,#777)}
/* The still layout remains a usable horizontal photo strip without JS. */
.labora-collaborative-work{overflow:hidden}
.labora-carousel{margin-top:80px}
.labora-gallery-stage{position:relative;outline-offset:-6px}
.labora-gallery-track{list-style:none;display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;padding:24px var(--gutter);margin:0}
.labora-gallery-slide{flex:0 0 min(70vw,420px);scroll-snap-align:center;margin:0}
.labora-photo-button{display:block;width:100%;aspect-ratio:3/4;overflow:hidden;border-radius:10px;background:#09070d}
.labora-photo-button img{width:100%;height:100%;object-fit:cover;object-position:center 58%;pointer-events:none}
/* Concave gallery: small centre panels expand toward the curved outer edges. */
.labora-carousel.is-ready .labora-gallery-stage{height:520px;perspective:none;touch-action:pan-y}
.labora-carousel.is-ready .labora-gallery-track{position:absolute;inset:0;display:block;overflow:visible;padding:0;transform-style:preserve-3d}
.labora-carousel.is-ready .labora-gallery-slide{position:absolute;left:50%;top:50%;width:clamp(130px,10vw,180px);transform:translate3d(calc(-50% + var(--slide-x,0px)),-50%,var(--slide-z,0px)) perspective(1000px) rotateY(var(--slide-angle,0deg)) scale(var(--slide-scale,1));z-index:var(--slide-order,1);opacity:var(--slide-opacity,1);transition:transform .7s cubic-bezier(.22,.65,.25,1),opacity .5s ease;will-change:transform}
.labora-carousel.is-ready .labora-photo-button{box-shadow:none}
.labora-carousel.is-ready .labora-gallery-slide.is-active .labora-photo-button{box-shadow:none}
.labora-carousel.is-ready .labora-gallery-slide.is-distant{pointer-events:none}
.labora-gallery-navigation{display:grid;grid-template-columns:48px minmax(0,360px) 48px;justify-content:center;align-items:center;gap:32px;padding:16px var(--gutter) 0}
.labora-gallery-navigation>button{display:none;width:48px;height:48px;border:1px solid #bdb7ad;border-radius:50%;align-items:center;justify-content:center;transition:background .2s,color .2s}
.labora-carousel.is-ready .labora-gallery-navigation>button{display:flex}
.labora-gallery-navigation>button:hover{background:var(--ink);color:var(--paper)}
.labora-gallery-navigation>button:focus-visible,.labora-photo-button:focus-visible,.labora-gallery-stage:focus-visible{outline:1px solid var(--ink)}
.labora-gallery-caption{text-align:center;min-width:0}
.labora-gallery-count{color:var(--muted);margin:0}
.labora-practice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;margin-top:48px}
.labora-practice-card{min-width:0;border-top:1px solid var(--rule);padding-top:24px}
.labora-practice-card figure{margin-bottom:24px;overflow:hidden;background:#111}
.labora-practice-card img{width:100%;aspect-ratio:3/2;object-fit:cover}
.labora-practice-card h3{margin-bottom:16px}
.labora-practice-card p{color:var(--muted);max-width:360px}
.labora-coming-soon{background:var(--ink);color:var(--paper)}
.labora-coming-soon .section-label{border-color:#44413d}
.labora-coming-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:96px;align-items:center}
.labora-coming-layout h2{margin-bottom:28px}
.labora-coming-layout p:not(.eyebrow){color:#c9c4bc;max-width:450px}
.labora-coming-layout .text-link{margin-top:28px}
.labora-open-call{border-left:1px solid #44413d;padding:24px 0 24px 48px;min-width:0}
.labora-open-call>.eyebrow{color:#c9c4bc;margin-bottom:24px}
.labora-open-call h3{margin-bottom:20px}
@media(max-width:991px){
 :root body.type-system.labora-page main .labora-overview-copy p{font-size:20px}
 .labora-carousel.is-ready .labora-gallery-stage{height:460px}
 .labora-carousel.is-ready .labora-gallery-slide{width:clamp(112px,12vw,140px)}
 .labora-practice-grid{gap:24px;margin-top:48px}
 .labora-carousel{margin-top:64px}
 .labora-coming-layout{gap:40px}
 .labora-open-call{padding-left:28px}
}
@media(max-width:767px){
 .labora-hero-background img{object-position:50% 50%}
 .labora-hero-bottom{bottom:24px}
 .labora-editorial-hero .hero-descriptor{white-space:normal}
 :root body.type-system.labora-page main .labora-overview-copy p{font-size:18px}
 .labora-overview-copy p+p{margin-top:20px}
 .labora-carousel{margin-top:56px}
 .labora-carousel.is-ready .labora-gallery-stage{height:340px}
 .labora-carousel.is-ready .labora-gallery-slide{width:clamp(104px,28vw,160px)}
 .labora-gallery-navigation{grid-template-columns:44px minmax(0,1fr) 44px;gap:12px;padding-top:8px}
 .labora-gallery-navigation>button{width:44px;height:44px}
 .labora-practice-grid{grid-template-columns:1fr;gap:48px;margin-top:32px}
 .labora-practice-card p{max-width:none}
 .labora-coming-layout{grid-template-columns:1fr;gap:40px}
 .labora-coming-layout h2{margin-bottom:24px}
 .labora-open-call{border-left:0;border-top:1px solid #44413d;padding:32px 0 0}
}
@media(max-width:359px){.labora-carousel.is-ready .labora-gallery-stage{height:300px}.labora-gallery-navigation{gap:8px}}
@media(prefers-reduced-motion:reduce){
 .labora-gallery-slide,.labora-gallery-navigation>button{transition:none!important}
 .labora-overview-word{color:#fff!important}
 .labora-carousel.is-ready .labora-gallery-slide{will-change:auto}
}

/* Related project links retain shared H2, H3, eyebrow and secondary CTA roles. */
.labora-related-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;margin-top:48px}
.labora-related-card{display:block;min-width:0}
.labora-related-card figure{overflow:hidden;background:var(--ink);margin:0 0 24px}
.labora-related-card img{width:100%;aspect-ratio:3/2;object-fit:cover;transition:transform .6s ease}
.labora-related-card:first-child img{object-position:50% 56%}
.labora-related-copy{display:flex;justify-content:space-between;align-items:flex-end;gap:24px}
.labora-related-copy>div{min-width:0}
.labora-related-copy .eyebrow{color:var(--muted);margin-bottom:12px}
.labora-related-copy .text-link{flex-shrink:0;gap:8px}
.labora-related-card:hover .text-link:after,.labora-related-card:focus-visible .text-link:after{transform:scaleX(1)}
.labora-related-card:focus-visible{outline:1px solid var(--ink);outline-offset:6px}
@media(hover:hover) and (pointer:fine){.labora-related-card:hover img{transform:scale(1.025)}}
@media(max-width:1100px){.labora-related-copy{display:block}.labora-related-copy .text-link{margin-top:16px}}
@media(max-width:767px){.labora-related-grid{grid-template-columns:1fr;gap:48px;margin-top:32px}}
@media(prefers-reduced-motion:reduce){.labora-related-card img{transition:none}.labora-related-card:hover img{transform:none}}
