/* Cadence motion integrations: original timings and geometry, scoped to Gipsz-Tech. */
:root{--out:cubic-bezier(.16,1,.3,1);--inout:cubic-bezier(.76,0,.24,1)}
[data-fade]{opacity:1;transform:none}html.motion-enhanced [data-fade]{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}html.motion-enhanced [data-fade].is-in{opacity:1;transform:none}
/* Clip-Path Reveals: shutter, aperture, line wipe. */
html.motion-enhanced .cr-media{clip-path:inset(100% 0 0 0);transition:clip-path 1.5s var(--inout)}html.motion-enhanced .cr-media video{transform:scale(1.2);transition:transform 3.4s var(--out)}html.motion-enhanced .cr-media.is-in{clip-path:inset(0)}html.motion-enhanced .cr-media.is-in video{transform:none}html.motion-enhanced .cr-aperture{clip-path:inset(50%);transition:clip-path 1.4s var(--inout)}html.motion-enhanced .cr-aperture>img{transform:scale(1.4);transition:transform 2.2s var(--out),opacity .18s}html.motion-enhanced .cr-aperture.is-in{clip-path:inset(0)}html.motion-enhanced .cr-aperture.is-in>img{transform:none}html.motion-enhanced .cr-label{clip-path:inset(0 100% 0 0);transition:clip-path 1.3s var(--inout)}html.motion-enhanced .cr-label.is-in{clip-path:inset(0)}html.motion-enhanced .is-resetting,html.motion-enhanced .is-resetting *{transition:none!important}
/* Connected Grid: original eight-column, shared-corner layout. */
.connected-grid{--gap:clamp(24px,3.4vw,48px);display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:var(--gap);padding-top:10px;padding-bottom:5vh;align-items:start}.connected-grid .cg-item{opacity:1;transform:none;padding:0;grid-column:var(--c)/span var(--s);grid-row:var(--r);min-width:0}.connected-grid .cg-img{aspect-ratio:3/2;border-radius:2px;overflow:hidden;background:#d8d9d1;will-change:transform}.connected-grid .cg-img img{filter:none;transition:none;will-change:transform}.connected-grid figcaption{margin-top:18px}.connected-grid .cg-img .project-arrow{transform:none;right:15px;bottom:15px;width:40px;height:40px;font-size:22px}.connected-grid .cg-item:nth-child(2n){padding:0}.connected-grid .cg-img:hover img{filter:none}.reference-index-label{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:45px;margin-top:50px;margin-bottom:32px}.reference-index-label>span:last-child{font-size:8px;color:var(--muted);letter-spacing:.08em}/* clip, not hidden: it clips the same, but is no scroll container, so the sticky tunnel stage inside still sticks (hidden stays for browsers without clip) */.projects{overflow:hidden;overflow:clip}
/* Sharp Slider: native horizontal snapping, full-opacity photographs. */
.carousel-intro{display:flex;align-items:center;gap:28px;padding-top:30px;border-top:1px solid var(--line)}.carousel-intro>p{font-size:11px;color:var(--muted)}.carousel-actions{display:flex;gap:8px;margin-left:auto}.carousel-actions button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:transparent;font-size:18px;transition:background .2s}.carousel-actions button:hover{background:var(--ink);color:var(--paper)}.pc-wrap{--card-w:min(72vw,960px);position:relative;margin:32px calc(-1 * var(--pad)) 26px}.pc-viewport{position:relative;width:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;cursor:grab;outline-offset:-5px!important}.pc-viewport::-webkit-scrollbar{display:none}.pc-viewport.dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}.pc-track{position:relative;display:flex;gap:clamp(16px,2vw,32px);width:max-content;padding-inline:calc((100vw - var(--card-w)) / 2)}.pc-card{position:relative;flex:0 0 var(--card-w);width:var(--card-w);aspect-ratio:16/10;scroll-snap-align:center;overflow:hidden;border:0;border-radius:2px;background:#bfc3b7;padding:0;cursor:inherit}.pc-card-inner{position:relative;width:100%;height:100%;overflow:hidden}.pc-card img{display:block;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none;pointer-events:none}.pc-drag-hint{display:none}.carousel-caption{display:flex;align-items:center;gap:24px;margin-top:0;padding-bottom:10px}.carousel-caption>span{font-size:10px;color:var(--copper)}.carousel-caption h3{font-size:27px;letter-spacing:-.045em}.carousel-caption>.text-link{background:none;margin:0 0 0 auto;padding:8px 0;font-size:11px;border-color:var(--line)}
/* Hover Preview List: original scale swap, cursor lag and row movement. */
.service-list summary{transition:color 320ms,padding-left 320ms cubic-bezier(.22,1,.36,1)}@media(hover:hover) and (pointer:fine){.service-list:hover summary:not(:hover){color:#8e8e8e}.service-list summary:hover{padding-left:12px}.service-list summary:hover h3{color:var(--copper)}}.hp-preview{position:fixed;top:0;left:0;width:clamp(180px,24vw,320px);aspect-ratio:4/5;pointer-events:none;opacity:0;z-index:35;will-change:transform}.hp-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:4px;box-shadow:0 18px 70px #0002}.hp-label{position:absolute;z-index:4;left:17px;bottom:17px;background:#252e29cc;color:white;padding:7px 9px;font-size:7px;letter-spacing:.1em}
/* Annotation Lines: three step-built callouts on the supplied structure image. */
.construction-detail{margin-top:120px}.construction-detail h2{font-size:clamp(32px,3.8vw,62px)}.al-comp{--ratio:1.4;--gap:.12;--col:.43;--h:min(580px,calc((100vw - 2 * var(--pad)) / (var(--ratio) + var(--gap) + var(--col))));--eyebrow:max(8px,calc(var(--h)*.0154));--text:max(12px,calc(var(--h)*.034));position:relative;width:calc(var(--h)*(var(--ratio) + var(--gap) + var(--col)));height:var(--h);margin:0 auto}.al-photo{position:absolute;top:0;left:0;width:calc(var(--h)*var(--ratio));height:100%;overflow:hidden;background:#d7d8d0}.al-photo img{width:100%;height:100%;object-fit:cover}.al-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.al-lines--photo line,.al-lines--photo .ring{fill:none;stroke:#fff;stroke-width:1.6}.al-lines--photo .dot{fill:#fff}.al-lines--page line{stroke:var(--copper);stroke-width:1.2}.al-labels{position:absolute;inset:0;pointer-events:none}.al-label{position:absolute;left:calc(var(--h)*(var(--ratio) + var(--gap)));top:calc(var(--y)*100% - var(--eyebrow)/2);width:calc(var(--h)*var(--col));opacity:1;will-change:opacity,transform}.al-eyebrow{display:block;margin-bottom:calc(var(--eyebrow)*.9);font-size:var(--eyebrow);font-weight:500;line-height:1;letter-spacing:.12em;color:var(--copper)}.al-text{display:block;font-size:var(--text);line-height:1.35;letter-spacing:-.035em;text-wrap:balance}.annotation-note{font-size:8px;letter-spacing:.1em;color:var(--muted);margin-top:25px}
/* Scroll Ticker: opposing, endlessly wrapped photo rows. */
.motion-wall{background:var(--dark);color:var(--paper);overflow:hidden;padding-top:36px}.wall-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.wall-heading .eyebrow{font-size:9px}.wall-heading button{background:none;color:#c4cbbf;padding:10px;border:1px solid #ffffff35;border-radius:25px;font-size:9px}.st-stage{position:relative;width:100%;height:clamp(350px,43vw,680px);overflow:hidden;touch-action:pan-y;cursor:grab}.st-stage.is-dragging{cursor:grabbing}.st-frame{position:absolute;left:0;top:0;height:900px;transform-origin:0 0}.st-wall{position:absolute;inset:0;opacity:1;will-change:opacity}.st-item{position:absolute;left:0;height:300px;overflow:hidden;border-radius:3px;background:#4b564b;box-shadow:0 30px 70px #0002;will-change:transform}.st-item img{width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none}
/* Word Push: original masked drop/push, 600ms cubic curve. */
.wp-stage{--push:600ms;--ease:cubic-bezier(.22,1,.36,1);--line-height:1.25;display:grid;place-items:center;padding:25px var(--pad) 70px;overflow:hidden;min-height:130px}.wp-line{display:flex;font-size:64px;line-height:var(--line-height);letter-spacing:-.02em;white-space:nowrap}.wp-mask{position:relative;display:block;height:calc(var(--line-height)*1em);clip-path:inset(0 -2em 0 -.4em)}.wp-lead{display:block;font-weight:400;transform:translateY(-100%);transition:transform var(--push) var(--ease);will-change:transform}.wp-slot{margin-left:.24em;color:#d19b6e}.wp-word{position:absolute;top:0;left:0;font-weight:500;transform:translateY(-100%);transition:transform var(--push) var(--ease);will-change:transform}.wp-lead.is-in,.wp-word.is-in{transform:translateY(0)}.wp-lead.is-out,.wp-word.is-out{transform:translateY(100%)}
@media(max-width:847px){.connected-grid{grid-template-columns:1fr;gap:50px}.connected-grid .cg-item{grid-column:1;grid-row:auto}.connected-grid .cg-img{aspect-ratio:1.18}.carousel-intro{flex-wrap:wrap;gap:12px}.carousel-intro>p{order:3;width:100%;font-size:10px}.carousel-caption{gap:12px}.carousel-caption h3{font-size:21px}.carousel-caption>.text-link{font-size:9px}.pc-wrap{--card-w:84vw;margin-top:24px;margin-bottom:22px}.pc-card{aspect-ratio:4/3}.carousel-actions button{width:44px;height:44px}.carousel-caption>.text-link{min-height:44px;font-size:11px}.construction-detail{margin-top:75px}.construction-detail .section-head h2{font-size:34px}.al-comp{--ratio:.95;--gap:.08;--col:.5;--h:calc((100vw - 2 * var(--pad)) / (var(--ratio) + var(--gap) + var(--col)))}.al-label{font-size:11px}.al-eyebrow{font-size:7px;letter-spacing:.02em}.al-text{font-size:13px}.annotation-note{font-size:6px}.reference-index-label{margin-top:35px;padding-top:30px}.reference-index-label>span:last-child{font-size:6px}.wall-heading .eyebrow{font-size:7px}.wall-heading button{font-size:8px}.wp-stage{padding-bottom:45px}.hp-preview{display:none}}
@media(max-width:420px){.carousel-caption{flex-wrap:wrap}.carousel-caption>.text-link{margin-left:37px}.carousel-actions button{width:44px;height:44px}}
@media(prefers-reduced-motion:reduce){html.motion-enhanced .reveal{clip-path:none!important;transform:none!important;opacity:1!important}html.motion-enhanced .cr-media video,html.motion-enhanced .cr-aperture>img{transform:none!important}.hp-preview{display:none}.connected-grid .cg-img,.connected-grid .cg-img img{transform:none!important}html.motion-enhanced [data-fade]{opacity:1;transform:none}.wp-lead,.wp-word{transition:none}.st-item{will-change:auto}}
/* Complete reference collection, with progressive loading of the index. */
.gallery-more{display:flex;justify-content:space-between;align-items:center;margin-top:50px;padding-top:28px;border-top:1px solid var(--line)}.gallery-more p{font-size:11px;color:var(--muted)}.gallery-more button{padding:15px 22px;border-color:var(--ink);display:flex;gap:45px;align-items:center}.gallery-more button[hidden]{display:none}.gallery-more button span{font-size:22px}.pc-card-inner,.lightbox-image{position:relative}.project-open{isolation:isolate}.lightbox-image{overflow:hidden}.project-filters{justify-content:flex-start;gap:8px;flex-wrap:wrap}.connected-grid .cg-item[hidden]{display:none}
@media(max-width:760px){.gallery-more{gap:15px}.gallery-more button{padding:12px;font-size:10px;gap:20px}.gallery-more p{font-size:9px}.project-filters{gap:6px}.project-filters button{padding:9px 13px;font-size:9px}}

/* Never expose a stale lightbox bitmap while the selected full-size image decodes. */
.lightbox-image.is-loading img{visibility:hidden!important}.lightbox-image #lightbox-status{position:absolute;inset:0;display:grid;place-items:center;padding:35px;text-align:center;font-size:13px;color:var(--paper);pointer-events:none}.lightbox-image #lightbox-status:empty{display:none}

/* A cached preview stays visible while the viewport-sized WebP arrives. */
.lightbox-image.has-preview #lightbox-status{inset:auto 20px 12px;padding:7px 12px;background:#151c17dd;border-radius:4px;font-size:11px}
