/* Shared project template: all rules are scoped to the detail page. */
.detail-hero>img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--hero-position,50% 50%)}
.detail-intro{padding-top:88px;padding-bottom:58px}
.detail-intro h1{font-size:clamp(44px,5.4vw,80px);font-weight:400;line-height:1.08;letter-spacing:-.04em;margin:0 0 24px}
.detail-facts{font-size:14px;margin:0;line-height:1.8}
.detail-mission{display:block;border-top:1px solid var(--line);padding-top:26px;margin-top:45px}
.detail-mission h2{font-size:12px;letter-spacing:.12em;line-height:1.5;margin:4px 0 0;font-weight:400}
.detail-mission p{font-size:16px;line-height:1.7;margin:0}
.detail-story{display:block;padding-bottom:94px}
.detail-story p{font-size:17px;line-height:1.85;max-width:1100px;margin:0 0 14px;text-align:left}.detail-story p:last-child{margin-bottom:0}
.detail-gallery{--gallery-gap:28px;display:flex;flex-direction:column;gap:var(--gallery-gap);padding-bottom:90px}
.gallery-module{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gallery-gap);align-items:center}
.gallery-module.duo{grid-template-columns:repeat(2,minmax(0,1fr))}
.gallery-photo{display:block;min-width:0;cursor:zoom-in}
.gallery-photo img{width:100%;height:auto;display:block}
.gallery-module.vertical-xl{width:calc((100% - var(--gallery-gap))/2);align-self:center;margin:0}
.detail-testimonial{text-align:center;padding-top:65px;padding-bottom:85px;border-top:1px solid var(--line)}
.detail-testimonial blockquote{margin:0 auto 30px;max-width:1000px}
.detail-testimonial blockquote p{font-family:var(--serif);font-style:italic;font-size:clamp(26px,3.1vw,46px);line-height:1.45;letter-spacing:-.025em;margin:0}
.testimonial-signature{font-size:14px;margin:0 0 6px}.testimonial-source{font-size:12px;margin:0}.testimonial-source a{text-decoration:underline;text-underline-offset:4px}
.detail-credit{font-size:12px;margin:48px 0 0}
.detail-next{padding-top:45px;padding-bottom:80px;border-top:1px solid var(--line)}
.detail-next>.eyebrow{display:block;margin-bottom:24px}
.next-project{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:7vw}
.next-photo{aspect-ratio:3/2;overflow:hidden}.next-photo img{width:100%;height:100%;object-fit:cover;object-position:57% 50%}
.detail-next h2{font-size:clamp(30px,4.2vw,66px);margin:0}
.detail-lightbox{position:fixed;inset:0;border:0;margin:0;padding:0;width:100vw;height:100dvh;max-width:none;max-height:none;background:var(--ink);color:var(--paper);overflow:hidden}
.detail-lightbox::backdrop{background:var(--ink)}
.detail-lightbox[open]{display:grid;grid-template-columns:65px minmax(0,1fr) 65px;grid-template-rows:64px minmax(0,1fr) 35px;align-items:center}
.lightbox-close{position:absolute;right:24px;top:14px;min-height:44px;display:flex;align-items:center;gap:18px;font-size:14px;z-index:2}.lightbox-close span{font-size:30px}
.lightbox-count{position:absolute;left:26px;top:28px;margin:0;font-size:12px;letter-spacing:.1em}
.lightbox-stage{grid-column:2;grid-row:2;width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;touch-action:pan-y}
.lightbox-image{width:100%;height:100%;object-fit:contain;user-select:none}
.lightbox-previous,.lightbox-next{grid-row:2;width:100%;min-height:60px;font-size:30px;padding:10px}.lightbox-previous{grid-column:1}.lightbox-next{grid-column:3}
body.lightbox-open{overflow:hidden}
@media(max-width:700px){.detail-hero>img{object-position:var(--hero-mobile-position,50% 50%)}.detail-intro{padding-top:50px;padding-bottom:35px}.detail-intro h1{font-size:42px}.detail-facts{font-size:13px}.detail-mission{grid-template-columns:1fr;gap:12px;margin-top:30px;padding-top:22px}.detail-mission p{font-size:15px}.detail-story{grid-template-columns:1fr;gap:24px;padding-bottom:48px}.detail-story p{font-size:16px;line-height:1.75}.detail-gallery{padding-bottom:50px}.gallery-module.duo{grid-template-columns:1fr;gap:var(--gallery-gap)}.gallery-module.vertical-xl{width:100%;margin:0}.detail-testimonial{padding-top:45px;padding-bottom:48px}.detail-testimonial blockquote p{font-size:27px}.detail-credit{margin-top:32px}.detail-next{padding-top:32px;padding-bottom:48px}.next-project{grid-template-columns:1fr;gap:22px}.detail-next h2{font-size:32px}.detail-lightbox[open]{grid-template-columns:44px minmax(0,1fr) 44px;grid-template-rows:65px minmax(0,1fr) 35px}.lightbox-close{right:12px}.lightbox-count{left:16px}.lightbox-previous,.lightbox-next{font-size:26px}}

.detail-credit a{text-decoration:underline;text-underline-offset:3px}
.gallery-module.horizontal-xl{width:100%}

/* Readability adjustments, independent of the photo gallery. */
.detail-facts{font-size:19px}
.detail-testimonial{border-top:0;border-bottom:1px solid var(--line);padding-top:0;padding-bottom:58px}
.detail-testimonial blockquote{max-width:none;margin:0 0 38px;padding:60px 0;border-top:1px solid var(--line)}
.detail-testimonial blockquote p{max-width:1100px;margin:0 auto;font-size:clamp(32px,3.7vw,54px)}
.testimonial-signature{font-size:17px;margin-bottom:6px}
.testimonial-source{font-size:15px}
.detail-credit{font-size:15px;margin-top:12px}
.detail-next{border-top:0}
@media(max-width:700px){.detail-facts{font-size:17px}.detail-testimonial{padding-bottom:42px}.detail-testimonial blockquote{padding:38px 0;margin-bottom:30px}.detail-testimonial blockquote p{font-size:31px}.testimonial-signature{font-size:16px}.testimonial-source,.detail-credit{font-size:14px}.detail-credit{margin-top:10px}}

.gallery-video{display:block;width:100%;height:auto;object-fit:contain}

/* Shared duo format; legacy validated galleries keep their natural framing.
   Individual positions belong to project image data. Stacked mobile photos
   and full-size lightbox originals retain their natural ratios. */
@media(min-width:701px){
 .gallery-module.duo.uniform-duo{align-items:stretch}
 .gallery-module.duo.uniform-duo .gallery-photo{aspect-ratio:2/3;overflow:hidden}
 .gallery-module.duo.uniform-duo .gallery-photo img{width:100%;height:100%;object-fit:cover;object-position:var(--photo-position,50% 50%)}
}

/* Hero participates in the same lightbox, without changing its box. */
a.detail-hero{display:block;cursor:zoom-in}
