/* Open case reader; site colors/type remain authoritative. */
body.project-overlay-open {overflow:hidden;}
/* Keep the site's stable gutter under the reader; only its content may scroll. */
html:root:has(.project-overlay[open]) {overflow:hidden;}
.project-overlay {
    --project-overlay-columns:minmax(20rem,.78fr) minmax(0,1.42fr);
    --project-overlay-copy:var(--bg);
    --project-overlay-media:var(--bg);
    width:100vw;max-width:none;height:100vh;height:100dvh;max-height:none;
    margin:0;padding:0;border:0;border-radius:0;overflow:hidden;
    background:transparent;color:var(--fg);font-family:inherit;
}
.project-overlay:not([open]) {display:none;}
.project-overlay::backdrop {background:rgba(0,0,0,.42);}
.project-overlay__curtain {position:absolute;z-index:10;inset-block:0;left:0;width:var(--project-overlay-client-width,100%);display:grid;grid-template-columns:var(--project-overlay-columns);overflow:hidden;pointer-events:none;}
.project-overlay__curtain span {min-width:0;transition:transform 560ms cubic-bezier(.2,.76,.24,1);will-change:transform;}
.project-overlay__curtain span:first-child {background:var(--project-overlay-copy);transform:translateX(-100%);}
.project-overlay__curtain span:last-child {background:var(--project-overlay-media);transform:translateX(100%);}
.project-overlay.is-covering .project-overlay__curtain span {transform:translateX(0);}
.project-overlay.is-revealing .project-overlay__curtain span:first-child {transform:translateX(-100%);}
.project-overlay.is-revealing .project-overlay__curtain span:last-child {transform:translateX(100%);}
.project-overlay.is-exiting .project-overlay__curtain span {transform:translateX(0);transition-duration:300ms;}
.project-overlay__content {position:relative;z-index:2;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;visibility:hidden;opacity:0;transform:translateY(1.5rem);pointer-events:none;}
.project-overlay__content[hidden] {display:none;}
.project-overlay.is-content-ready .project-overlay__content {visibility:visible;opacity:1;transform:translateY(0);transition:opacity 360ms ease,transform 420ms cubic-bezier(.2,.76,.24,1);}
/* Release the transformed containing block before copy can scroll: Close stays fixed. */
.project-overlay.is-interactive .project-overlay__content {pointer-events:auto;transform:none;transition-property:opacity;}
.project-overlay.is-exiting .project-overlay__content {opacity:.35;}
.project-overlay__layout {display:grid;grid-template-columns:var(--project-overlay-columns);align-items:start;min-height:100dvh;background:var(--project-overlay-copy);}
.project-overlay__copy {min-width:0;padding:clamp(6rem,9vh,8rem) clamp(1.5rem,3.5vw,4rem) 5rem;}
.project-overlay__copy > header {padding-bottom:2.5rem;border-bottom:1px solid var(--line);}
.project-overlay__copy .eyebrow {margin:0 0 1.5rem;color:var(--green);}
.project-overlay__copy h2 {margin:0;max-width:15ch;font-size:clamp(2.4rem,4.2vw,4.8rem);line-height:1.04;letter-spacing:-.05em;overflow-wrap:anywhere;}
.project-overlay__lead {margin:1.75rem 0 0;color:var(--muted);font-size:clamp(1.05rem,1.3vw,1.2rem);line-height:1.7;}
.project-overlay__chapters > section {padding:2.25rem 0;border-bottom:1px solid var(--line);}
.project-overlay__chapters h3 {margin:0 0 .9rem;font-size:1.15rem;line-height:1.3;letter-spacing:-.025em;}
.project-overlay__chapters :is(p,.project-overlay__prose) {margin:0;color:var(--muted);font-size:1rem;line-height:1.8;overflow-wrap:anywhere;}
.project-overlay__prose > * + *, .project-overlay__lead > * + * {margin-top:1.2em;}
.project-overlay__prose :is(ul,ol) {padding-left:1.2em;}
.project-overlay__actions {display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding-top:2rem;}
.project-overlay__actions a {text-underline-offset:5px;}
.project-overlay__media {position:sticky;top:0;display:flex;align-items:center;min-width:0;height:100vh;height:100dvh;margin:0;padding:clamp(4rem,7vw,7rem) clamp(1.25rem,3vw,3rem);background:var(--project-overlay-media);border-left:1px solid var(--line);}
.project-overlay__media a {display:block;width:100%;}
.project-overlay__media img {display:block;width:100%;height:auto;max-height:78dvh;object-fit:contain;}
.project-overlay__close {position:fixed;z-index:5;top:1.25rem;right:clamp(1.25rem,3vw,3rem);display:flex;align-items:center;gap:1rem;min-height:44px;padding:.5rem .8rem;border:1px solid var(--line);border-radius:0;background:var(--bg);color:var(--fg);font:inherit;cursor:pointer;}
.project-overlay__close > span:last-child {font-size:1.65rem;line-height:1;}
.project-overlay :is(a,button):focus-visible {outline:2px solid var(--green);outline-offset:5px;}
@media(max-width:900px) {
    .project-overlay {--project-overlay-columns:minmax(0,.78fr) minmax(0,1.42fr);}
    .project-overlay__layout {grid-template-columns:1fr;}
    .project-overlay__media {position:relative;order:-1;height:auto;min-height:0;padding:5.5rem 1.5rem 2rem;border-left:0;border-bottom:1px solid var(--line);}
    .project-overlay__media img {max-height:45svh;}
    .project-overlay__copy {padding:2.5rem 1.5rem 4rem;}
    .project-overlay__copy h2 {font-size:clamp(2.4rem,9vw,4rem);}
}
@media(prefers-reduced-motion:reduce) {.project-overlay__curtain span,.project-overlay__content {transition:none!important;}}
@media print {.project-overlay {display:none!important;} body.project-overlay-open,html:root:has(.project-overlay[open]) {overflow:visible;}}
