.project-diagrams { --diagram-base:var(--case-paper,#f1f0ee); --diagram-paper:var(--diagram-base); --diagram-ink:var(--case-ink,#292927); --diagram-muted:var(--case-muted,#797c72); padding:75px 4vw 45px; background:var(--diagram-base); color:var(--diagram-ink); }
.project-diagrams[hidden] { display:none; }
.project-diagrams-heading { display:flex; justify-content:space-between; align-items:end; gap:45px; margin-bottom:38px; }
.project-diagrams-heading h2 { margin:0; font-size:clamp(42px,5.5vw,84px); line-height:1; letter-spacing:-.055em; font-weight:400; }
.project-diagrams-heading p { max-width:310px; margin:0 0 3px; font-size:12px; line-height:1.8; color:var(--diagram-muted); }
.project-diagrams-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1px; padding:0; background:transparent; }
.project-diagram { position:relative; display:flex; flex-direction:column; min-width:0; margin:0; padding:22px 28px 0; background:transparent; color:var(--diagram-ink); }
.project-diagram:only-child { grid-column:1/-1; }
.project-diagram-media { position:relative; display:block; aspect-ratio:1.5; overflow:hidden; color:var(--diagram-ink); cursor:zoom-in; }
.project-diagram:only-child .project-diagram-media { aspect-ratio:1.8; max-height:65svh; }
.project-diagram-media img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; transition:transform 1s cubic-bezier(.16,1,.3,1); }
.project-diagram-media:hover img { transform:scale(1.04); }
.project-diagram figcaption { flex:1; padding:20px 0 24px; border-top:1px solid #b8bcac; }
.project-diagram h3 { margin:0; font-size:clamp(18px,1.65vw,27px); line-height:1.25; font-weight:500; letter-spacing:-.025em; overflow-wrap:anywhere; }
.project-diagram figcaption p { max-width:380px; margin:9px 0 0; font-size:11px; line-height:1.7; color:#727967; white-space:pre-line; overflow-wrap:anywhere; }
.project-diagram-media:focus-visible,.project-diagrams-viewer button:focus-visible { outline:2px solid #828e70; outline-offset:3px; }
.project-diagrams-viewer { position:fixed; inset:0; width:100%; max-width:none; height:100dvh; max-height:none; margin:0; padding:22px 3vw; border:0; background:var(--case-paper,#f1f0ee); color:var(--case-ink,#292927); }
.project-diagrams-viewer:not([open]) { display:none; }
.project-diagrams-viewer[open] { display:grid; grid-template-rows:auto minmax(0,1fr) auto; gap:18px; }
.project-diagrams-viewer::backdrop { background:#f1f0eef2; }
.project-diagrams-viewer > header,.project-diagrams-viewer > footer { display:flex; justify-content:space-between; align-items:center; gap:25px; }
.project-diagrams-viewer > header { font-size:11px; letter-spacing:.08em; font-variant-numeric:tabular-nums; }
.project-diagrams-viewer button { padding:10px; border:0; background:none; color:inherit; cursor:pointer; font:inherit; }
.project-diagrams-viewer > footer > button { flex-shrink:0; width:44px; height:44px; padding:0; border:1px solid #6b7564; border-radius:50%; font-size:24px; }
.project-diagrams-viewer button:disabled { opacity:.25; cursor:default; }
.project-diagrams-viewer-media { position:relative; min-height:0; overflow:hidden; background:transparent; }
.project-diagrams-viewer-media img { position:absolute; inset:0; display:block; width:100%; height:100%; object-fit:contain; }
.project-diagrams-viewer-caption { max-width:850px; min-width:0; text-align:center; }
.project-diagrams-viewer-caption h2 { margin:0; font-size:20px; font-weight:400; line-height:1.3; }
.project-diagrams-viewer-caption p { margin:7px 0 0; max-height:20svh; overflow:auto; font-size:13px; line-height:1.6; color:#727967; white-space:pre-line; overflow-wrap:anywhere; }
@media(max-width:700px) {
 .project-diagrams { padding:50px 5vw 30px; }
 .project-diagrams-heading { display:block; margin-bottom:28px; }
 .project-diagrams-heading h2 { font-size:clamp(40px,11vw,64px); }
 .project-diagrams-heading p { margin-top:20px; font-size:11px; }
 .project-diagrams-grid { grid-template-columns:1fr; }
 .project-diagram { padding:18px 20px 0; }
 .project-diagram-media { aspect-ratio:1.2; }
 .project-diagram figcaption { padding:16px 0 20px; }
 .project-diagram h3 { font-size:22px; }
 .project-diagram figcaption p { font-size:11px; }
 .project-diagrams-viewer { padding:15px 5vw; }
 .project-diagrams-viewer > footer { gap:12px; }
 .project-diagrams-viewer-caption h2 { font-size:17px; }
 .project-diagrams-viewer-caption p { font-size:12px; }
}

@media(max-width:700px) {
 .project-diagram:only-child .project-diagram-media { aspect-ratio:1.15; max-height:none; }
}

.project-diagrams.is-scroll-sequence { position:relative; height:600svh; padding:0; }
.is-scroll-sequence .project-diagrams-stage { position:sticky; top:0; display:grid; grid-template-rows:auto minmax(0,1fr); gap:18px; height:100svh; padding:55px 4vw 20px; overflow:hidden; }
.is-scroll-sequence .project-diagrams-heading { margin:0; }
.is-scroll-sequence .project-diagrams-heading h2 { font-size:clamp(32px,4vw,60px); }
.is-scroll-sequence .project-diagrams-grid { min-height:0; }
.is-scroll-sequence .project-diagram { min-height:0; padding:0; }
.is-scroll-sequence .project-diagram:only-child .project-diagram-media { flex:1; min-height:0; max-height:none; aspect-ratio:auto; }
.is-scroll-sequence .project-diagram figcaption { display:none; }
.project-diagram-scroll-canvas { position:absolute; inset:0; pointer-events:none; transform:translate3d(0,var(--sequence-pan,0px),0) scale(var(--sequence-scale,1)); transform-origin:center; }
.project-diagram-scroll-canvas.is-viewer-snapshot { transform:none; }
.project-diagram-media.is-scroll-ready > img { visibility:hidden; }
.project-diagram-3d-canvas { position:absolute; inset:0; display:block; width:100%; height:100%; pointer-events:none; }
.project-diagram-media.has-3d-model::after { display:none; }
.project-diagram-media.is-scroll-ready::after { content:''; position:absolute; pointer-events:none; inset:0; width:45%; background:linear-gradient(110deg,transparent,#ffffff35,transparent); transform:translateX(calc(var(--sequence-progress,0) * 330% - 100%)); mix-blend-mode:soft-light; }
@media(max-width:700px) {
 .project-diagrams.is-scroll-sequence { height:520svh; padding:0; }
 .is-scroll-sequence .project-diagrams-stage { padding:52px 5vw 16px; gap:14px; }
 .is-scroll-sequence .project-diagrams-heading { display:flex; align-items:end; gap:20px; }
 .is-scroll-sequence .project-diagrams-heading h2 { font-size:35px; }
 .is-scroll-sequence .project-diagrams-heading p { display:none; }
 .is-scroll-sequence .project-diagram { padding:0; }
 .is-scroll-sequence .project-diagram-scroll-canvas { inset:0 -18%; }
}

/* The drawing shares the page surface; phase colours arrive and leave with the scene. */
.is-scroll-sequence .project-diagrams-stage { isolation:isolate; background:var(--diagram-base); }
.is-scroll-sequence .project-diagrams-stage::before,.is-scroll-sequence .project-diagrams-stage::after { content:''; position:absolute; z-index:-1; inset:0; pointer-events:none; }
.is-scroll-sequence .project-diagrams-stage::before { background:radial-gradient(ellipse at 40% 55%,#dce5d2 0%,#e4e9df 55%,transparent 100%); opacity:calc(var(--sequence-sage,0) * .65); }
.is-scroll-sequence .project-diagrams-stage::after { background:radial-gradient(ellipse at 65% 45%,#e9decb 0%,#eee7db 55%,transparent 100%); opacity:calc(var(--sequence-sand,0) * .65); }
.is-scroll-sequence .project-diagrams-heading { padding-bottom:14px; border-bottom:1px solid #c6ccbe; transform:translateY(calc((1 - var(--sequence-entry,0)) * 8px)); }
.is-scroll-sequence .project-diagrams-grid { background:transparent; }
.is-scroll-sequence .project-diagram { background:transparent; }
.project-diagrams-viewer > footer > button { border-color:#aeb8a2; }
@media(prefers-reduced-motion:reduce) { .is-scroll-sequence .project-diagrams-heading { transform:none; } }
@media(prefers-reduced-motion:reduce) { .project-diagram-media img { transition:none; } }

.project-diagram-sequence { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,.36fr); align-items:center; gap:clamp(36px,5vw,100px); padding:0; }
.project-diagram-sequence > figcaption { display:none; }
.project-diagram-narrative { display:grid; align-items:center; min-width:0; }
.project-diagram-narrative > article { grid-area:1/1; opacity:var(--story-opacity,0); transform:translate3d(0,var(--story-shift,18px),0); pointer-events:none; }
.project-diagram-narrative > article:first-child { opacity:var(--story-opacity,1); transform:translate3d(0,var(--story-shift,0px),0); }
.project-diagram-narrative h3 { max-width:330px; margin:0 0 28px; font-size:clamp(26px,2.6vw,44px); font-weight:400; line-height:1.18; letter-spacing:-.035em; }
.project-diagram-narrative p { max-width:320px; margin:0; font-size:clamp(13px,1.05vw,16px); line-height:1.9; color:var(--diagram-muted); }
.is-scroll-sequence .project-diagrams-stage { padding-top:clamp(76px,9svh,120px); row-gap:clamp(30px,4svh,60px); }
.is-scroll-sequence .project-diagrams-heading { padding-bottom:26px; }
.is-scroll-sequence .project-diagram-sequence { display:grid; }
.is-scroll-sequence .project-diagram-sequence .project-diagram-media { align-self:stretch; }
@media(max-width:700px) {
 .project-diagram-sequence { grid-template-columns:1fr; gap:30px; }
 .project-diagram-narrative { min-height:170px; align-items:start; }
 .project-diagram-narrative h3 { margin-bottom:20px; font-size:27px; }
 .project-diagram-narrative p { max-width:100%; font-size:13px; line-height:1.8; }
 .is-scroll-sequence .project-diagrams-stage { padding-top:76px; row-gap:24px; }
 .is-scroll-sequence .project-diagrams-heading { padding-bottom:24px; }
 .is-scroll-sequence .project-diagram-sequence { grid-template-rows:minmax(0,1fr) auto; align-items:stretch; gap:28px; }
 .is-scroll-sequence .project-diagram-scroll-canvas { inset:0 -12%; }
}
@media(prefers-reduced-motion:reduce) { .project-diagram-narrative > article { transform:none; } }

.project-dialog .project-diagrams-heading p, .project-dialog .project-diagram figcaption p { font-size:14px; color:#60695b; }
.project-dialog .project-diagram-narrative p { font-size:clamp(14px,1.1vw,17px); color:#60695b; }
.project-dialog .project-diagrams-viewer > header, .project-dialog .project-diagrams-viewer-caption p { font-size:13px; }
@media(max-width:700px) {
 .project-dialog .project-diagram-narrative { min-height:190px; }
 .project-dialog .project-diagram-narrative p { font-size:14px; line-height:1.7; }
}
