.ba{gap:var(--space-4);display:grid}.ba-frame{aspect-ratio:16/9;border:3px solid var(--color-ink);background:var(--color-surface-sunken);box-shadow:10px 10px 0 var(--hazard-500);-webkit-user-select:none;user-select:none;touch-action:pan-y;cursor:ew-resize;position:relative;overflow:hidden}.ba-frame img{object-fit:cover;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.ba-before-wrap{will-change:clip-path;z-index:2;position:absolute;inset:0}.ba-before-wrap img{filter:saturate(.7)contrast(1.08)sepia(.22)}.ba-after-img{filter:saturate(.85)contrast(1.02)}.ba-label{top:var(--space-4);z-index:3;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;pointer-events:none;padding:.35rem .8rem;font-weight:500;position:absolute}.ba-label--before{left:var(--space-4);background:var(--carbon-950);color:var(--hazard-500);border:1px solid var(--hazard-500)}.ba-label--after{right:var(--space-4);background:var(--hazard-500);color:var(--carbon-950);border:1px solid var(--carbon-950)}.ba-handle{z-index:4;will-change:transform;width:0;position:absolute;top:0;bottom:0}.ba-handle-line{background:repeating-linear-gradient(-45deg, var(--hazard-500) 0 8px, var(--carbon-950) 8px 16px);width:6px;box-shadow:0 0 0 1px var(--carbon-950), 0 0 20px #13161b59;position:absolute;top:0;bottom:0;left:-3px}@supports (color:lab(0% 0 0)){.ba-handle-line{box-shadow:0 0 0 1px var(--carbon-950), 0 0 20px lab(7.19015% -.368543 -3.62587/.35)}}.ba-grip{background:var(--hazard-500);border:3px solid var(--carbon-950);width:52px;height:52px;color:var(--carbon-950);transition:transform var(--duration-fast) var(--ease-out-quart);border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;left:0;transform:translate(-50%,-50%);box-shadow:0 6px 20px #13161b59;box-shadow:0 6px 20px lab(7.19015% -.368543 -3.62587/.35)}.ba-frame:active .ba-grip,.ba-frame.is-dragging .ba-grip{transform:translate(-50%,-50%)scale(1.12)}.ba-frame:focus-visible{outline:3px solid var(--hazard-500);outline-offset:2px}.ba-caption{justify-content:space-between;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--color-text-dim);text-transform:uppercase;flex-wrap:wrap;display:flex}.gallery-filters{gap:var(--space-2);margin-bottom:var(--space-8);flex-wrap:wrap;display:flex}.gallery-filter{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-ink);background:var(--color-surface);border:2px solid var(--color-ink);transition:color var(--duration-fast), border-color var(--duration-fast), background var(--duration-fast);border-radius:999px;padding:.55rem 1.1rem}.gallery-filter:hover{background:var(--color-surface-sunken)}.gallery-filter[aria-pressed=true]{background:var(--hazard-500);color:var(--color-ink);font-weight:500}.gallery-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr));display:grid}.gallery-item{aspect-ratio:4/3;border:1px solid var(--color-border);background:var(--color-surface-sunken);cursor:zoom-in;isolation:isolate;padding:0;position:relative;overflow:hidden}.gallery-item img{object-fit:cover;filter:saturate(.85)contrast(1.02);width:100%;height:100%;transition:transform var(--duration-slow) var(--ease-out-expo), filter var(--duration-normal)}.gallery-item:hover img,.gallery-item:focus-visible img{filter:saturate()contrast(1.05);transform:scale(1.05)}.gallery-item .gallery-tag{z-index:2;padding:var(--space-3) var(--space-4);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--concrete-100);text-align:left;opacity:0;transition:opacity var(--duration-normal), transform var(--duration-normal) var(--ease-out-expo);background:linear-gradient(#0000,#000000d1);background:linear-gradient(#0000,lab(0% 0 0/.82));font-size:.68rem;position:absolute;bottom:0;left:0;right:0;transform:translateY(6px)}.gallery-item:hover .gallery-tag,.gallery-item:focus-visible .gallery-tag{opacity:1;transform:none}.lightbox{z-index:300;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:var(--gutter);background:#f6f5f3f2;background:lab(96.5357% -.00891089 1.14337/.95);place-items:center;display:grid;position:fixed;inset:0}.lightbox figure{gap:var(--space-4);max-width:min(72rem,100%);display:grid}.lightbox img{border:1px solid var(--color-border-strong);width:auto;max-width:100%;max-height:78vh;margin-inline:auto}.lightbox figcaption{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);text-align:center}.lightbox-close{top:var(--space-6);right:var(--space-6);background:var(--color-surface);border:1px solid var(--color-border-strong);width:48px;height:48px;color:var(--color-text);box-shadow:var(--shadow-raise);transition:border-color var(--duration-fast), background var(--duration-fast);border-radius:50%;place-items:center;display:grid;position:absolute}.lightbox-close:hover,.lightbox-close:focus-visible{border-color:var(--carbon-950);background:var(--hazard-500)}.lightbox-nav{background:var(--color-surface);border:1px solid var(--color-border-strong);width:48px;height:48px;color:var(--color-text);box-shadow:var(--shadow-raise);transition:border-color var(--duration-fast), background var(--duration-fast);border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-nav:hover,.lightbox-nav:focus-visible{border-color:var(--carbon-950);background:var(--hazard-500)}.lightbox-nav--prev{left:var(--space-6)}.lightbox-nav--next{right:var(--space-6)}.project-grid{gap:var(--space-4);display:grid}@media (min-width:640px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.project-grid{grid-template-columns:repeat(3,1fr)}}.project-card{text-align:left;background:var(--color-surface);border:2px solid var(--color-ink);cursor:pointer;width:100%;transition:border-color var(--duration-normal) ease, box-shadow var(--duration-normal) ease, transform var(--duration-normal) var(--ease-out-expo);padding:0;display:grid;overflow:hidden}.project-card:hover,.project-card:focus-visible{box-shadow:8px 8px 0 var(--hazard-500);transform:translate(-3px,-3px)}.project-media{aspect-ratio:4/3;border-bottom:3px solid var(--color-ink);background:var(--color-surface-sunken);display:block;overflow:hidden}.project-media img{object-fit:cover;width:100%;height:100%;transition:transform var(--duration-slow) var(--ease-out-expo)}.project-card:hover .project-media img{transform:scale(1.04)}.project-meta{gap:var(--space-2);padding:var(--space-4) var(--space-4) var(--space-6);display:grid}.project-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.project-tag{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink);background:var(--hazard-500);padding:.18rem .6rem;font-size:.66rem}.project-tag--service{background:var(--color-surface-sunken);color:var(--color-text-muted);border:1px solid var(--color-border-strong)}.project-name{font-family:var(--font-display);font-weight:800;font-size:var(--text-lg);text-transform:uppercase;color:var(--color-text);line-height:1.15}.project-location{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-dim)}.gallery-filterbar{gap:var(--space-3);margin-bottom:var(--space-8);display:grid}.gallery-filterbar .gallery-filters{align-items:center;margin-bottom:0}.filter-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--color-text-dim);min-width:4.5rem}.gallery-empty{font-family:var(--font-mono);color:var(--color-text-muted);padding:var(--space-12) 0}.lightbox-summary{margin-top:var(--space-2);text-transform:none;letter-spacing:0;font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-muted);max-width:52ch;margin-inline:auto;display:block}
