/* Individual Projects extend the shared shell, typography and architectural lines. */
.ccl-project-page {
    --ccl-accent-line-color: rgba(114, 87, 68, .34);
    --ccl-accent-line-tail: clamp(.8rem, 1.4vw, 1.15rem);
    background: var(--ccl-color-surface);
}
.ccl-project-hero { min-height: 94svh; }
.ccl-project-hero .ccl-photo-hero__shade {
    background: linear-gradient(0deg, rgba(0, 0, 0, .78), rgba(0, 0, 0, .22) 38%, transparent 65%), linear-gradient(180deg, rgba(0, 0, 0, .3), transparent 25%);
}
.ccl-project-hero .ccl-photo-hero__inner { padding-bottom: clamp(4.5rem, 9vh, 6rem); }
.ccl-project-hero .ccl-photo-hero__copy { max-width: 55rem; padding-left: 0; }
.ccl-project-hero h1 { max-width: 23ch; margin-bottom: var(--ccl-space-md); }
.ccl-project-hero .ccl-project-hero__location { margin-bottom: .4rem; font-size: var(--ccl-text-body); }
.ccl-project-hero__location a { color: inherit; text-decoration-color: rgba(255, 255, 255, .55); text-underline-offset: .3em; }
.ccl-project-hero .ccl-project-hero__meta { font-size: var(--ccl-text-small); margin: 0; }
.ccl-project-hero .ccl-photo-hero__line--horizontal { width: min(100%, 42rem); }
.ccl-project-hero__view { position: absolute; right: var(--ccl-gutter); bottom: clamp(4.5rem, 9vh, 6rem); display: grid; place-items: center; width: 3rem; height: 3rem; z-index: 2; color: var(--ccl-color-white); background: rgba(0, 0, 0, .55); text-decoration: none; font-size: 1.5rem; }
.ccl-project-hero__view:hover { color: var(--ccl-color-white); background: rgba(0, 0, 0, .75); }
.ccl-project-hero--text .ccl-photo-hero__inner { padding: 0; }
.ccl-project-hero--text .ccl-photo-hero__copy { color: var(--ccl-color-ink); padding: 0; }

.ccl-project-gallery { padding-block: clamp(2rem, 5vw, 5rem); }
.ccl-project-gallery__composition {
    width: min(100% - (var(--ccl-gutter) * 2), var(--ccl-width-wide));
    margin-inline: auto;
    display: grid;
    gap: clamp(.8rem, 1.8vw, 1.75rem);
    align-items: start;
}
.ccl-project-gallery--triptych .ccl-project-gallery__composition { grid-template-columns: minmax(0, 2.15fr) minmax(0, 1fr); }
.ccl-project-gallery--triptych .ccl-project-photo:first-child { grid-row: span 2; }
.ccl-project-gallery--triptych .ccl-project-photo:first-child .ccl-project-photo__image { aspect-ratio: 3 / 2; }
.ccl-project-gallery--triptych .ccl-project-photo:not(:first-child) .ccl-project-photo__image { aspect-ratio: 3 / 2; }
.ccl-project-gallery--pair .ccl-project-gallery__composition { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); align-items: center; gap: clamp(1.5rem, 4.5vw, 5rem); }
.ccl-project-gallery--pair .ccl-project-photo:first-child { margin-top: clamp(2rem, 6vw, 5rem); }
.ccl-project-gallery--pair .ccl-project-photo:nth-child(2) { margin-bottom: clamp(2rem, 6vw, 5rem); }
.ccl-project-photo { margin: 0; min-width: 0; }
.ccl-project-photo__link { position: relative; display: block; color: var(--ccl-color-white); background: var(--ccl-color-surface-warm); }
.ccl-project-photo__image { display: block; width: 100%; height: auto; object-fit: cover; }
.ccl-project-photo__expand {
    position: absolute; bottom: .8rem; right: .8rem;
    display: grid; place-items: center; width: 2.5rem; height: 2.5rem;
    background: rgba(0, 0, 0, .55); color: var(--ccl-color-white); font-size: 1.35rem;
    pointer-events: none;
}
.ccl-project-photo__link:focus-visible { outline: var(--ccl-focus-ring); outline-offset: 4px; }
.ccl-project-photo figcaption { margin-top: var(--ccl-space-sm); color: var(--ccl-color-muted); font-size: var(--ccl-text-small); }
.ccl-project-gallery--cinematic .ccl-project-photo__image { aspect-ratio: auto; }
.ccl-project-context { padding-block: clamp(3rem, 6vw, 5.5rem); }
.ccl-project-intro { margin-bottom: var(--ccl-space-3xl); }
.ccl-project-intro .ccl-editorial-intro__body { max-width: 40rem; }
.ccl-project-facts { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: var(--ccl-space-xl) clamp(1.5rem, 5vw, 5rem); margin: 0; padding-block: var(--ccl-space-xl); border-block: var(--ccl-border-subtle); }
.ccl-project-facts dt { margin-bottom: var(--ccl-space-sm); color: var(--ccl-color-earth); font-size: var(--ccl-text-eyebrow); text-transform: uppercase; font-weight: 500; }
.ccl-project-facts dd { margin: 0; font-size: var(--ccl-text-body); line-height: 1.65; }
.ccl-project-facts a { color: inherit; text-underline-offset: .2em; text-decoration-thickness: 1px; }
.ccl-project-facts .ccl-project-feature-link { text-decoration: none; }
.ccl-project-facts .ccl-project-feature-link:hover,
.ccl-project-facts .ccl-project-feature-link:focus-visible { color: var(--ccl-color-brand-blue); text-decoration-line: underline; }
.ccl-project-facts .ccl-project-feature-link:focus-visible { outline: var(--ccl-focus-ring); outline-offset: 3px; }
.ccl-project-facts .ccl-project-facts__place { margin: 0 0 .5rem; font-size: clamp(1.5rem, 2.3vw, 2rem); line-height: 1.3; }
.ccl-project-facts__type { margin: 0; }
.ccl-project-facts__services { padding-left: clamp(1.5rem, 5vw, 5rem); border-left: var(--ccl-border-subtle); }
.ccl-project-facts__services ul { list-style: none; margin: 0; padding: 0; }
.ccl-project-facts__services li + li { margin-top: .35rem; }
.ccl-project-facts__features { grid-column: 1 / -1; display: flex; align-items: baseline; gap: var(--ccl-space-lg); }
.ccl-project-facts__features dt { margin: 0; flex-shrink: 0; }
.ccl-project-facts__features dd { color: var(--ccl-color-muted); font-size: var(--ccl-text-small); }
.ccl-project-story { background: var(--ccl-color-surface-warm); margin-block: clamp(2rem, 4vw, 4rem); }
.ccl-project-story__inner { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: clamp(2rem, 7vw, 6rem); align-items: center; }
.ccl-project-story__copy { max-width: 34rem; }
.ccl-project-story__copy > :last-child { margin-bottom: 0; }
.ccl-project-story__copy h2 { font-size: var(--ccl-text-h2); }
.ccl-project-story .ccl-project-photo { width: min(100%, calc(var(--ccl-photo-ratio) * 32rem)); margin-inline: auto; }
.ccl-project-story--text .ccl-project-story__inner { display: block; }
.ccl-project-story--text .ccl-project-story__copy { margin-inline: auto; max-width: var(--ccl-width-readable); }
/* A supplied feature drawing reaches left toward the viewport, not a gallery thumbnail. */
.ccl-project-story--artwork .ccl-project-story__inner {
    width: auto;
    margin-left: var(--ccl-gutter);
    margin-right: max(var(--ccl-gutter), calc((100% - var(--ccl-width-content)) / 2));
}
.ccl-project-story__artwork { min-width: 0; pointer-events: none; }
.ccl-project-story__artwork img { display: block; width: 100%; height: auto; opacity: .65; }
.ccl-project-plan-access {
    width: min(100% - (var(--ccl-gutter) * 2), var(--ccl-width-wide));
    margin: calc(-1 * clamp(1rem, 2vw, 2rem)) auto 0;
}
@media (max-width: 820px) {
    .ccl-project-story--artwork .ccl-project-story__inner { grid-template-columns: 1fr; gap: var(--ccl-space-xl); }
}
.ccl-project-local { padding-block: clamp(3rem, 6vw, 6rem); }
.ccl-project-testimonial + .ccl-project-local { padding-top: 0; }
.ccl-project-local .ccl-editorial-intro__heading h2 { margin-bottom: 0; }
.ccl-project-local__services { font-size: var(--ccl-text-small) !important; }
.ccl-project-finale { padding-top: var(--ccl-space-xl); }
.ccl-project-finale .ccl-project-photo__image { max-height: 90svh; width: 100%; object-fit: cover; object-position: center; }
.ccl-project-related { padding-bottom: calc(var(--ccl-space-section) + 3rem); }

/* Match the photo hero's existing wide rail; reading measures stay inside it. */
.ccl-project-narrative .ccl-section__inner,
.ccl-project-testimonial__inner,
.ccl-project-local__inner,
.ccl-project-related > .ccl-section__inner,
.ccl-project-cta > .ccl-section__inner {
    width: min(100% - (var(--ccl-gutter) * 2), var(--ccl-width-wide));
    max-width: var(--ccl-width-wide);
}
.ccl-project-related .ccl-portfolio__track {
    --portfolio-content-width: min(100cqw - (var(--ccl-gutter) * 2), var(--ccl-width-wide));
}

/* Dundas text moments sit within a second rail; photography keeps its 1440px rail. */
.ccl-project-page--editorial { --ccl-project-editorial-width: 1120px; }
.ccl-project-page--editorial .ccl-project-narrative .ccl-section__inner,
.ccl-project-page--editorial .ccl-project-testimonial__inner,
.ccl-project-page--editorial .ccl-project-local__inner,
.ccl-project-page--editorial .ccl-project-cta > .ccl-section__inner {
    width: min(100% - (var(--ccl-gutter) * 2), var(--ccl-project-editorial-width));
    max-width: var(--ccl-project-editorial-width);
}

/* A compact index can be placed independently of each Project's story. */
.ccl-project-index { padding-block: clamp(1.5rem, 2.5vw, 2.5rem); }
.ccl-project-index__grid { display: grid; grid-template-columns: 1fr .8fr 1.25fr 1.5fr; margin: 0; }
.ccl-project-index__grid > div { min-width: 0; padding-inline: clamp(1rem, 2vw, 2rem); border-left: var(--ccl-border-subtle); }
.ccl-project-index__grid > div:first-child { padding-left: 0; border-left: 0; }
.ccl-project-index__grid > div:last-child { padding-right: 0; }
.ccl-project-index dt { margin-bottom: .55rem; color: var(--ccl-color-earth); font-size: var(--ccl-text-eyebrow); text-transform: uppercase; font-weight: 500; }
.ccl-project-index dd { margin: 0; font-size: var(--ccl-text-small); line-height: 1.6; }
.ccl-project-index a { color: inherit; text-decoration: none; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.ccl-project-index a:hover,
.ccl-project-index a:focus-visible { color: var(--ccl-color-brand-blue); text-decoration-line: underline; }
.ccl-project-index a:focus-visible { outline: var(--ccl-focus-ring); outline-offset: 3px; }
.ccl-project-index ul { list-style: none; margin: 0; padding: 0; }
.ccl-project-index__year { display: block; color: var(--ccl-color-muted); }
.ccl-project-narrative { padding-block: clamp(2.5rem, 4vw, 4rem); }
.ccl-project-narrative h2 { max-width: 15ch; margin-bottom: 0; font-size: var(--ccl-text-h2); }
.ccl-project-narrative .ccl-editorial-intro__body,
.ccl-project-narrative .ccl-editorial-intro__body p,
.ccl-project-local .ccl-editorial-intro__body,
.ccl-project-local .ccl-editorial-intro__body p { max-width: var(--ccl-width-readable); }
.ccl-project-narrative p:last-child { margin-bottom: 0; }
.ccl-project-narrative .ccl-editorial-intro__grid,
.ccl-project-local__inner,
.ccl-project-cta .ccl-editorial-intro__grid { grid-template-columns: minmax(0, 3fr) minmax(0, 7fr); }

/* Shared geometry. Project partials declare tiles; layout and lightbox stay independent. */
.ccl-project-grid-section { padding-block: clamp(2rem, 4vw, 4rem); container-type: inline-size; }
.ccl-project-editorial-grid {
    /* A 4:3 single-cell shape grows with the hero rail instead of flattening photographs. */
    --ccl-grid-row: max(208px, calc((min(100cqw - (var(--ccl-gutter) * 2), var(--ccl-width-wide)) - (var(--ccl-space-md) * 3)) * .1875));
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-auto-rows: minmax(var(--ccl-grid-row), 1fr);
    align-items: stretch;
    gap: var(--ccl-space-md);
    width: min(100% - (var(--ccl-gutter) * 2), var(--ccl-width-wide));
    margin-inline: auto;
}
.ccl-project-grid__item { --ccl-tile-width: 1; --ccl-tile-height: 1; min-width: 0; min-height: 0; grid-column: var(--ccl-tile-column, auto) / span var(--ccl-tile-width); grid-row: var(--ccl-tile-row, auto) / span var(--ccl-tile-height); }
/* Give aspect-ratio tiles a definite inline size even when their image is out of flow. */
.ccl-project-grid__item--image { width: 100%; }
.ccl-project-grid__item--1x2 { --ccl-tile-height: 2; }
.ccl-project-grid__item--2x1 { --ccl-tile-width: 2; }
.ccl-project-grid__item--2x2 { --ccl-tile-width: 2; --ccl-tile-height: 2; }
.ccl-project-editorial-grid .ccl-project-photo { display: grid; grid-template-rows: minmax(0, 1fr) auto; width: 100%; height: 100%; min-height: 0; }
.ccl-project-editorial-grid .ccl-project-photo__link { min-height: 0; }
.ccl-project-editorial-grid .ccl-project-photo__image { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; object-position: var(--ccl-photo-position, 50% 50%); }
.ccl-project-grid__item--artifact.ccl-project-grid__item--contain .ccl-project-photo__image { object-fit: contain; }
.ccl-project-editorial-grid .ccl-project-photo figcaption { margin-top: .35rem; }
.ccl-project-index--embedded { height: 100%; padding: 0 0 0 var(--ccl-space-lg); border-left: var(--ccl-border-subtle); }
.ccl-project-index--embedded .ccl-project-index__grid { display: grid; grid-template-columns: 1fr; gap: var(--ccl-space-md); }
.ccl-project-editorial-grid .ccl-project-index--embedded .ccl-project-index__grid > div { padding: 0; border: 0; }
.ccl-project-index--embedded dt { margin-bottom: .3rem; }
.ccl-project-index--embedded dd { line-height: 1.55; }

/* Design artifacts retain their full technical content in uniform portrait frames. */
.ccl-project-design-gallery { padding-top: clamp(2rem, 4vw, 4rem); }
.ccl-project-design-gallery__header {
    width: min(100% - (var(--ccl-gutter) * 2), var(--ccl-width-wide));
    margin-inline: auto;
}
.ccl-project-design-gallery__header h2 {
    margin: 0;
    color: var(--ccl-color-muted);
    font-size: var(--ccl-text-small);
    font-weight: 500;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.ccl-project-design-gallery .ccl-project-grid-section { padding-top: var(--ccl-space-md); padding-bottom: 0; }
.ccl-project-design-gallery .ccl-project-editorial-grid { grid-auto-rows: auto; }
.ccl-project-design-gallery .ccl-project-grid__item--image { aspect-ratio: 3 / 4; background: var(--ccl-color-white); }
.ccl-project-design-gallery .ccl-project-photo__link { background: var(--ccl-color-white); }

/* Later rows share a modest height, with widths derived from native image proportions. */
.ccl-project-gallery--browse {
    --ccl-row-height: clamp(300px, 29vw, 420px);
    --ccl-row-gap: clamp(.8rem, 1.8vw, 1.75rem);
    padding-block: clamp(1.5rem, 3vw, 3rem);
}
.ccl-project-gallery--browse .ccl-project-gallery__composition {
    max-width: calc(var(--ccl-row-ratio) * var(--ccl-row-height) + var(--ccl-row-gaps) * var(--ccl-row-gap));
    grid-template-columns: var(--ccl-row-columns);
    gap: var(--ccl-row-gap);
    align-items: start;
}
.ccl-project-gallery--browse .ccl-project-photo { grid-row: auto; margin: 0; }
.ccl-project-gallery--browse .ccl-project-photo .ccl-project-photo__image { aspect-ratio: var(--ccl-photo-ratio); object-fit: contain; }

.ccl-project-testimonial { padding-block: clamp(4rem, 8vw, 8rem); }
.ccl-project-testimonial .ccl-client-perspective__quote { max-width: 65rem; }
.ccl-project-testimonial .ccl-eyebrow { margin-bottom: var(--ccl-space-xl); }
.ccl-project-testimonial .ccl-client-perspective__quote p { font-size: clamp(1.5rem, 1.15rem + 1vw, 2.25rem); white-space: pre-line; }
.ccl-project-testimonial .ccl-client-perspective__attribution { margin-top: var(--ccl-space-xl); }

/* An inset, fully contained companion, never a gallery item or an interactive overlay. */
.ccl-project-page--editorial .ccl-project-testimonial { position: relative; isolation: isolate; }
.ccl-project-testimonial__linework {
    --ccl-linework-inset: clamp(1.5rem, 2vw, 3rem);
    position: absolute;
    top: clamp(4rem, 8vw, 8rem);
    right: var(--ccl-linework-inset);
    bottom: 1rem;
    /* The quote's 80px spare rail space leaves a further 32px text clearance. */
    width: min(24rem, calc((100% - var(--ccl-project-editorial-width)) / 2 + 3rem - var(--ccl-linework-inset)));
    container-type: size;
    pointer-events: none;
    z-index: -1;
}
.ccl-project-testimonial__linework img {
    position: absolute;
    top: 50%;
    left: 50%;
    /* Account for the rotated 1600:959 asset, fitting both available dimensions. */
    width: min(42rem, 100cqh, calc(100cqw * 1600 / 959));
    max-width: none;
    height: auto;
    transform: translate(-50%, -50%) rotate(-90deg);
    opacity: .18;
}
@media (max-width: 1399px) {
    .ccl-project-testimonial__linework { display: none; }
}

.ccl-project-lightbox {
    position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none;
    margin: 0; padding: clamp(1rem, 2.5vw, 2rem); border: 0;
    color: var(--ccl-color-white); background: var(--ccl-color-charcoal);
}
.ccl-project-lightbox[open] { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: var(--ccl-space-md); }
.ccl-project-lightbox::backdrop { background: var(--ccl-color-charcoal); }
.ccl-project-lightbox__bar { display: flex; justify-content: space-between; align-items: center; gap: var(--ccl-space-lg); }
.ccl-project-lightbox__bar p { margin: 0; color: inherit; font-size: var(--ccl-text-small); }
.ccl-project-lightbox button {
    min-width: 3rem; min-height: 3rem; padding: .5rem 1rem; border: 1px solid rgba(255, 255, 255, .4);
    border-radius: 0; background: transparent; color: var(--ccl-color-white); font: inherit; cursor: pointer;
}
.ccl-project-lightbox button:hover { background: rgba(255, 255, 255, .12); }
.ccl-project-lightbox button:focus-visible { outline: var(--ccl-focus-ring); outline-offset: 3px; }
.ccl-project-lightbox__figure { display: grid; grid-template-rows: minmax(0, 1fr) auto; min-height: 0; margin: 0; gap: var(--ccl-space-sm); }
.ccl-project-lightbox__figure img { display: block; width: 100%; height: 100%; min-height: 0; object-fit: contain; touch-action: pan-y pinch-zoom; }
.ccl-project-lightbox__figure figcaption { text-align: center; color: inherit; font-size: var(--ccl-text-small); }
.ccl-project-lightbox__figure figcaption:empty { display: none; }
.ccl-project-lightbox__controls { display: flex; justify-content: center; gap: var(--ccl-space-md); }
.ccl-project-lightbox__controls button { font-size: 1.5rem; }
.ccl-project-lightbox__controls[hidden] { display: none; }
.ccl-project-lightbox-open { overflow: hidden; }

@media (max-width: 1100px) {
    .ccl-project-editorial-grid {
        /* Keep the shared gutters in two columns, with a browsable maximum tile height. */
        --ccl-grid-row: clamp(208px, calc((100cqw - (var(--ccl-gutter) * 2) - var(--ccl-space-md)) * .375), calc((var(--ccl-width-wide) - (var(--ccl-space-md) * 3)) * .1875));
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .ccl-project-grid__item { grid-column: auto / span var(--ccl-tile-width); grid-row: auto / span var(--ccl-tile-height); }
}
@media (min-width: 601px) and (max-width: 1100px) {
    .ccl-project-opening .ccl-project-grid__item--1x1 { grid-column: 1; }
    .ccl-project-opening .ccl-project-grid__item--details { grid-column: 2; grid-row: 3 / span 2; }
}
@media (max-width: 1024px) {
    .ccl-project-index__grid { grid-template-columns: 1fr 1fr; row-gap: var(--ccl-space-lg); }
    .ccl-project-index__grid > div:nth-child(odd) { border-left: 0; padding-left: 0; }
    .ccl-project-index__grid > div:nth-child(n+3) { padding-top: var(--ccl-space-lg); border-top: var(--ccl-border-subtle); }
    .ccl-project-story__inner { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: var(--ccl-space-xl); }
    .ccl-project-gallery--browse.ccl-project-gallery--triptych .ccl-project-gallery__composition { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ccl-project-gallery--browse.ccl-project-gallery--triptych .ccl-project-photo:last-child { grid-column: 1 / -1; width: min(100%, calc(var(--ccl-photo-ratio) * 300px)); justify-self: center; }
}
@media (max-width: 820px) {
    .ccl-project-narrative .ccl-editorial-intro__grid,
    .ccl-project-local__inner,
    .ccl-project-cta .ccl-editorial-intro__grid { grid-template-columns: 1fr; }
}
@media (max-width: 700px) {
    .ccl-project-hero { min-height: 88svh; }
    .ccl-project-hero .ccl-photo-hero__inner { padding-block: 9rem 4.5rem; }
    .ccl-project-hero .ccl-photo-hero__copy { padding-left: 0; }
    .ccl-project-hero .ccl-photo-hero__image { object-position: 53% 50%; }
    .ccl-project-hero h1 { font-size: var(--ccl-text-h1); }
    .ccl-project-hero__view { bottom: 1rem; }
    .ccl-project-gallery { padding-block: var(--ccl-space-xl); }
    .ccl-project-gallery--pair .ccl-project-gallery__composition,
    .ccl-project-gallery--triptych .ccl-project-gallery__composition { grid-template-columns: 1fr; gap: var(--ccl-space-xl); }
    .ccl-project-gallery--pair .ccl-project-photo { margin: 0; }
    .ccl-project-gallery--triptych .ccl-project-photo:first-child { grid-row: auto; }
    .ccl-project-photo--portrait { width: 86%; margin-inline: auto !important; }
    .ccl-project-gallery--cinematic .ccl-project-photo--portrait { width: 86%; }
    .ccl-project-intro, .ccl-project-story__inner, .ccl-project-local__inner { grid-template-columns: 1fr; gap: var(--ccl-space-xl); }
    .ccl-project-context { padding-block: var(--ccl-space-3xl); }
    .ccl-project-intro { margin-bottom: var(--ccl-space-2xl); }
    .ccl-project-intro .ccl-editorial-intro__heading { --ccl-boundary-line-run: 6rem; }
    .ccl-project-facts { grid-template-columns: 1fr; }
    .ccl-project-facts__services { border-left: 0; padding-left: 0; }
    .ccl-project-facts__features { display: block; }
    .ccl-project-facts__features dt { margin-bottom: var(--ccl-space-sm); }
    .ccl-project-gallery--browse .ccl-project-gallery__composition { grid-template-columns: var(--ccl-row-columns); gap: var(--ccl-row-gap); }
    .ccl-project-gallery--browse.ccl-project-gallery--triptych .ccl-project-gallery__composition { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ccl-project-gallery--browse.ccl-project-gallery--portraits .ccl-project-gallery__composition { grid-template-columns: 1fr; gap: var(--ccl-space-xl); }
    .ccl-project-gallery--browse .ccl-project-photo--portrait { width: min(86%, calc(var(--ccl-photo-ratio) * 26rem)); margin-inline: auto; }
    .ccl-project-testimonial { padding-block: var(--ccl-space-3xl); }
    .ccl-project-lightbox { padding: 1rem; }
}
@media (max-width: 600px) {
    .ccl-project-editorial-grid { grid-auto-rows: auto; gap: var(--ccl-space-sm); }
    .ccl-project-grid__item { grid-row: auto; }
    /* Mobile image links own their height; figures and tiles follow normal flow. */
    .ccl-project-grid__item--image { aspect-ratio: auto; }
    .ccl-project-editorial-grid .ccl-project-photo { display: block; height: auto; }
    .ccl-project-editorial-grid .ccl-project-photo__link { width: 100%; height: auto; aspect-ratio: 3 / 2; }
    .ccl-project-grid__item--1x2, .ccl-project-grid__item--details { grid-column: 1 / -1; aspect-ratio: auto; }
    .ccl-project-grid__item--1x2 .ccl-project-photo { width: min(100%, calc(var(--ccl-photo-ratio) * 25rem)); height: auto; margin-inline: auto; }
    .ccl-project-grid__item--1x2 .ccl-project-photo__image { position: static; height: auto; aspect-ratio: var(--ccl-photo-ratio); }
    /* Keep the existing native/400px portrait height, but fill the full assigned cell. */
    .ccl-project-grid__item--1x2.ccl-project-grid__item--photograph .ccl-project-photo { width: 100%; }
    .ccl-project-grid__item--1x2.ccl-project-grid__item--photograph .ccl-project-photo__link { height: min(25rem, calc((100cqw - (var(--ccl-gutter) * 2)) / var(--ccl-photo-ratio))); aspect-ratio: auto; }
    .ccl-project-grid__item--1x2.ccl-project-grid__item--photograph .ccl-project-photo__image { position: absolute; height: 100%; aspect-ratio: auto; }
    .ccl-project-grid__item--2x1 { aspect-ratio: auto; }
    .ccl-project-grid__item--2x1 .ccl-project-photo, .ccl-project-grid__item--2x1 .ccl-project-photo__image { height: auto; }
    .ccl-project-grid__item--2x1 .ccl-project-photo__image { position: static; }
    .ccl-project-grid__item--2x1 .ccl-project-photo__link,
    .ccl-project-grid__item--1x2.ccl-project-grid__item--artifact .ccl-project-photo__link { aspect-ratio: auto; }
    .ccl-project-index--embedded { height: auto; margin-top: var(--ccl-space-sm); padding: var(--ccl-space-lg) 0 0; border-left: 0; border-top: var(--ccl-border-subtle); }
    .ccl-project-design-gallery .ccl-project-grid__item--image { aspect-ratio: auto; }
    .ccl-project-design-gallery .ccl-project-photo__link { aspect-ratio: 3 / 4; }
}
@media (max-width: 380px) {
    .ccl-project-facts { grid-template-columns: 1fr; }
    .ccl-project-index__grid { grid-template-columns: 1fr; }
    .ccl-project-index__grid > div { border-left: 0; padding-inline: 0; }
    .ccl-project-index__grid > div + div { padding-top: var(--ccl-space-lg); border-top: var(--ccl-border-subtle); }
}
