/* Catalogue: open image-led columns, with no enclosing card surfaces. */
body[data-page-type=projects] .project-index {padding-top:clamp(112px,10vw,152px);padding-bottom:clamp(72px,9vw,128px);min-height:0;}
.project-index__intro {display:grid;grid-template-columns:1.15fr .85fr;column-gap:clamp(32px,5vw,80px);align-items:end;margin-bottom:clamp(32px,4vw,56px);}
.project-index__intro>.eyebrow {grid-column:1/-1;}
.project-index__intro h1 {max-width:18ch;margin:20px 0 0;font-size:clamp(2.7rem,5vw,5rem);line-height:1.06;letter-spacing:-.055em;}
.project-index__intro>p:last-child {margin:0;max-width:54ch;color:var(--muted);line-height:1.8;}
.project-filters {display:grid;grid-template-columns:minmax(0,1.5fr) minmax(190px,.8fr) auto auto;align-items:end;gap:20px 24px;padding-block:24px;border-block:1px solid var(--line);}
.project-filters label {display:block;min-width:0;}

.project-filters label>span {display:block;margin-bottom:12px;font:.7rem/1.6 var(--font-mono);color:var(--muted);}
.project-filters :is(input,select) {width:100%;box-sizing:border-box;min-height:48px;padding:10px 12px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;color:var(--fg);font:inherit;}
.project-filters :is(input,select):focus-visible {outline:2px solid var(--public-scene-accent,var(--green));outline-offset:3px;}
body.public-page[data-page-type=projects] .project-filters .button {min-height:48px;margin:0;}
.project-filters__reset {min-height:48px;display:inline-flex;align-items:center;font-size:.8rem;text-underline-offset:5px;}
.project-filters__reset:focus-visible {outline:2px solid var(--public-scene-accent,var(--green));outline-offset:5px;}
.project-catalogue__count {margin:22px 0 32px;color:var(--muted);font:.75rem/1.8 var(--font-mono);}
.project-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(48px,6vw,88px) clamp(28px,4vw,64px);overflow:clip;overflow-clip-margin:8px;}
.project-grid__item {min-width:0;display:flex;flex-direction:column;align-items:start;}
.project-grid__item[hidden],.project-catalogue__empty[hidden] {display:none!important;}
.project-grid__image {position:relative;isolation:isolate;width:100%;aspect-ratio:1.44;overflow:hidden;margin-bottom:28px;background:transparent;}
.project-grid__image::after {
    content:"";position:absolute;inset:8px;z-index:1;pointer-events:none;
    color:var(--public-scene-accent,var(--scene-accent,var(--green)));
    background:linear-gradient(currentColor,currentColor) left top/12px 1px no-repeat,
        linear-gradient(currentColor,currentColor) left top/1px 12px no-repeat,
        linear-gradient(currentColor,currentColor) right bottom/12px 1px no-repeat,
        linear-gradient(currentColor,currentColor) right bottom/1px 12px no-repeat;
    opacity:.2;transition:background-size 360ms cubic-bezier(.2,.7,.2,1),opacity 300ms ease;
}
.project-grid__item:is(:hover,:focus-within) .project-grid__image::after {
    background-size:24px 1px,1px 24px,24px 1px,1px 24px;opacity:.85;
}
.project-grid__image .project-media-link {display:block;width:100%;height:100%;}
.project-grid__image .project-media-link:focus-visible {outline:2px solid var(--public-scene-accent,var(--green));outline-offset:-4px;}
.project-grid__image img {width:100%;height:100%;object-fit:contain;transition:transform 550ms cubic-bezier(.2,.7,.2,1);}
.project-grid__image .project-scroll-window {height:100%;}
.project-grid__image a:where(:hover,:focus-visible)>img {transform:scale(1.025);}
.project-grid__category {margin:0 0 12px;color:var(--public-scene-accent,var(--green));font:.65rem/1.6 var(--font-mono);text-transform:uppercase;letter-spacing:.1em;}
.project-grid__item h2 {margin:0 0 16px;font-size:clamp(1.9rem,3vw,3rem);line-height:1.1;letter-spacing:-.035em;}
.project-grid__item h2 a {color:inherit;text-decoration:none;background:linear-gradient(var(--public-scene-accent,var(--green)),var(--public-scene-accent,var(--green))) left bottom/0 1px no-repeat;transition:background-size 350ms ease;}
.project-grid__item h2 a:is(:hover,:focus-visible) {background-size:100% 1px;}
.project-grid__item h2 a:focus-visible {outline:2px solid var(--public-scene-accent,var(--green));outline-offset:5px;}
body.public-page[data-page-type=projects] .project-grid__summary {font-size:1rem;max-width:60ch;margin:0;color:var(--muted);line-height:1.8;}
.project-grid__actions {display:flex;align-items:center;flex-wrap:wrap;gap:16px 24px;margin-top:auto;padding-top:24px;}
.project-grid__actions>a:not(.button) {font-size:.85rem;text-underline-offset:5px;}
.project-catalogue__empty {padding:48px 0;border-block:1px solid var(--line);max-width:65ch;}
.project-catalogue__empty h2 {margin-top:0;font-size:clamp(1.8rem,3vw,3rem);}
.project-catalogue__empty p {color:var(--muted);line-height:1.8;}
@media(min-width:1600px){.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:1023px){.project-filters{grid-template-columns:repeat(2,minmax(0,1fr));}.project-filters .button{justify-self:start;}.project-filters__reset{justify-self:end;}}
@media(max-width:640px){.project-grid{grid-template-columns:1fr;}.project-filters{gap:20px 16px;}.project-filters label{grid-column:1/-1;}.project-filters .button{min-width:120px;}}
@media(prefers-reduced-motion:reduce){.project-grid__image img,.project-grid__image::after,.project-grid__item h2 a{transition:none;}}
@media print{.project-grid{overflow:visible;}.project-grid__image::after{display:none;}}
@media(max-width:760px){.project-index__intro{grid-template-columns:1fr;gap:24px;}.project-index__intro h1{margin:0;font-size:clamp(2.5rem,8vw,4rem);}.project-index__intro>.eyebrow{margin-bottom:0;}}
