html[data-gallery="3d"]{scrollbar-width:none;background:#060608}html[data-gallery="3d"]::-webkit-scrollbar{display:none}html.is-lightbox-open{overflow:hidden}html:not([data-gallery="3d"]) .gallery-stage,html[data-gallery="3d"] .gallery-grid{display:none}body.gallery-3d{background:#060608}.is-lightbox-open .site-header{opacity:0;pointer-events:none}.gallery-track{position:relative;height:calc(100vh + (var(--count) + 1) * 80vh)}.gallery-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;color:#f2efe9}.gallery-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:pan-y}.gallery-vignette,.gallery-grain{position:absolute;inset:0;pointer-events:none}.gallery-vignette{background:radial-gradient(ellipse 75% 70% at 50% 48%,transparent 55%,rgba(0,0,0,.55) 100%),linear-gradient(180deg,rgba(0,0,0,.35) 0%,transparent 14%,transparent 80%,rgba(0,0,0,.45) 100%)}.gallery-grain{opacity:.06;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.gallery-intro{position:absolute;left:max(1.5rem,calc((100vw - var(--content-width)) / 2));right:1.5rem;top:50%;translate:0 calc(-50% - (1 - var(--intro, 1)) * 48px);opacity:var(--intro, 1);pointer-events:none}.gallery-intro>*{animation:gallery-rise 1.3s cubic-bezier(.2,.8,.2,1) both}.gallery-kicker{margin:0;font-size:.72rem;letter-spacing:.32em;text-transform:uppercase;color:#f5f2eb99}.gallery-title{margin:.2em 0 .15em -.04em;font-family:var(--serif);font-weight:400;font-size:clamp(4.5rem,14vw,11rem);line-height:.92;letter-spacing:-.035em;animation-delay:.12s!important}.gallery-lede{margin:0;max-width:27rem;font-size:1rem;line-height:1.65;color:#f5f2ebad;animation-delay:.24s!important}.gallery-scroll-hint{position:absolute;left:50%;bottom:2.25rem;translate:-50% 0;margin:0;display:flex;flex-direction:column;align-items:center;gap:.75rem;font-size:.66rem;letter-spacing:.32em;text-transform:uppercase;color:#f5f2eb8c;opacity:var(--intro, 1);pointer-events:none;animation:gallery-rise 1.3s cubic-bezier(.2,.8,.2,1) .6s both}.gallery-scroll-hint span{width:1px;height:3rem;background:linear-gradient(180deg,transparent,rgba(245,242,235,.8));transform-origin:top;animation:gallery-scroll-line 2.2s cubic-bezier(.6,0,.2,1) infinite}.gallery-hud{position:absolute;inset:0;pointer-events:none;transition:opacity .4s ease}.is-lightbox-open .gallery-hud,.is-lightbox-open .gallery-intro,.is-lightbox-open .gallery-scroll-hint,.is-lightbox-open .gallery-outro{opacity:0!important}.gallery-hud>*{pointer-events:auto}.gallery-caption{position:absolute;left:max(1.5rem,calc((100vw - var(--content-width)) / 2));bottom:clamp(1.5rem,5vh,3rem);max-width:min(30rem,calc(100vw - 6rem));display:grid;gap:.35rem;padding:0;border:0;background:none;color:inherit;text-align:left;cursor:pointer}.gallery-caption[hidden]{display:none}.gallery-caption-no{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.7rem;letter-spacing:.18em;color:#f5f2eb80}.gallery-caption-title{font-family:var(--serif);font-size:clamp(1.6rem,3vw,2.4rem);line-height:1.1;letter-spacing:-.01em}.gallery-caption-meta{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;color:#f5f2eb9e}.gallery-caption-cta{justify-self:start;margin-top:.6rem;font-size:.7rem;letter-spacing:.24em;text-transform:uppercase;padding-bottom:.2rem;border-bottom:1px solid rgba(245,242,235,.35);color:#f5f2ebcc;transition:border-color .2s ease,color .2s ease}.gallery-caption:hover .gallery-caption-cta,.gallery-caption:focus-visible .gallery-caption-cta{color:#fff;border-color:#fff}.gallery-caption:focus-visible,.gallery-dot:focus-visible,.gallery-switch:focus-visible{outline:1px solid rgba(245,242,235,.7);outline-offset:6px}.gallery-timeline{position:absolute;right:clamp(1rem,3vw,2.5rem);top:50%;translate:0 -50%;display:flex;flex-direction:column;align-items:flex-end;gap:1.1rem}.gallery-timeline-year{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.gallery-timeline-label{margin-bottom:.35rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.64rem;letter-spacing:.16em;color:#f5f2eb73}.gallery-dot{position:relative;width:1.4rem;height:.9rem;padding:0;border:0;background:none;cursor:pointer}.gallery-dot:after{content:"";position:absolute;right:0;top:50%;width:.55rem;height:1px;background:#f5f2eb59;transition:width .4s cubic-bezier(.2,.8,.2,1),background .3s ease}.gallery-dot:hover:after{width:.9rem;background:#f5f2ebbf}.gallery-dot[aria-current]:after{width:1.4rem;background:#fff}.gallery-switch{position:absolute;right:clamp(1rem,3vw,2.5rem);bottom:clamp(1.5rem,5vh,3rem);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:#f5f2eb99;border-bottom:1px solid rgba(245,242,235,.25);padding-bottom:.2rem;transition:color .2s ease}.gallery-switch:hover{color:#fff}.gallery-outro{position:absolute;inset:0;display:grid;place-content:center;text-align:center;opacity:0}.gallery-outro-title{margin:0;font-family:var(--serif);font-style:italic;font-size:clamp(2rem,5vw,3.6rem);letter-spacing:-.01em}.gallery-outro-links{display:flex;justify-content:center;gap:1.75rem;margin:1.5rem 0 0}.gallery-outro-links>*{padding:0 0 .2rem;border:0;border-bottom:1px solid rgba(245,242,235,.3);background:none;color:#f5f2ebb8;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;cursor:pointer}.gallery-outro-links>*:hover{color:#fff;border-color:#fff}@property --row-target{syntax: "<length>"; inherits: true; initial-value: 360px;}.photos-page{--wall-pad: clamp(12px, 2.5vw, 40px);padding-top:var(--wall-pad)}.photos-empty{margin-block:2rem 0;color:var(--muted)}.gallery-grid-switch{position:fixed;right:clamp(1rem,2.5vw,2.5rem);bottom:calc(clamp(1rem,2.5vw,2rem) + env(safe-area-inset-bottom));z-index:15;display:none;align-items:center;gap:.5rem;padding:.7rem 1.1rem;border:1px solid rgba(245,242,235,.14);border-radius:999px;background:#0e0e10b8;backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);box-shadow:0 12px 32px #00000038;color:#f5f2eb;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;animation:gallery-rise .9s cubic-bezier(.2,.8,.2,1) .8s both;transition:background .2s ease,transform .2s ease}.gallery-grid-switch:hover{background:#0e0e10e6;transform:translateY(-2px)}.gallery-grid-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px}html[data-webgl] .gallery-grid-switch{display:inline-flex}.photo-wall{--row-target: clamp(240px, min(30vw, 60vh), 640px);--wall-gap: clamp(6px, .7vw, 12px);display:flex;flex-wrap:wrap;gap:var(--wall-gap);width:min(100%,2600px);margin:0 auto;padding:0 var(--wall-pad);list-style:none}.photo-wall:after{content:"";flex-grow:1000000}.photo-tile{flex:var(--aspect) 1 calc(var(--aspect) * var(--row-h, var(--row-target)));min-width:0}.photo-tile-button{position:relative;display:block;width:100%;padding:0;border:0;background:none;color:inherit;text-align:left;cursor:zoom-in}.photo-tile-button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.photo-tile-frame{display:block;overflow:hidden;aspect-ratio:var(--aspect);background:var(--tile-color)}.photo-tile-frame img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1),opacity .7s ease}.photo-tile.is-loading img{opacity:0}.photo-tile-caption{display:grid;gap:.15rem;padding:.6rem .1rem 0}.photo-tile-title{overflow:hidden;font-family:var(--serif);font-size:1.05rem;line-height:1.3;white-space:nowrap;text-overflow:ellipsis}.photo-tile-meta{overflow:hidden;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;color:var(--muted)}@media(hover:hover)and (pointer:fine){.photo-tile-caption{position:absolute;inset:auto 0 0;padding:3rem 1.1rem .9rem;background:linear-gradient(0deg,rgba(8,8,10,.62),transparent);color:#f5f2eb;opacity:0;pointer-events:none;transition:opacity .32s ease}.photo-tile-meta{color:#f5f2ebb8}.photo-tile-button:hover .photo-tile-caption,.photo-tile-button:focus-visible .photo-tile-caption{opacity:1}.photo-tile-button:hover img{transform:scale(1.025)}}@media(min-width:721px)and (max-width:1100px){.photo-wall{--row-target: clamp(240px, 40vw, 420px)}}@media(max-width:720px){.photos-page{--wall-pad: 0px}.photo-wall{gap:1.5rem}.photo-tile{flex:1 1 100%}.photo-tile-caption{padding-inline:.75rem}}@media(prefers-reduced-motion:reduce){.photo-tile-frame img{transition:none}}.lightbox{--inset-top: 68px;--inset-right: 14px;--inset-bottom: min(250px, 36vh);--inset-left: 14px;position:fixed;inset:0;width:100vw;height:100vh;height:100svh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:transparent;color:#f2efe9;overflow:hidden}.lightbox::backdrop{background:transparent}.lightbox--plain{background:#08080af0}.lightbox--plain::backdrop{background:#08080a99;backdrop-filter:blur(8px)}.lightbox-stage{position:absolute;inset:0;cursor:zoom-out}.lightbox-img{display:none;position:absolute;top:var(--inset-top);right:var(--inset-right);bottom:var(--inset-bottom);left:var(--inset-left);width:calc(100% - var(--inset-left) - var(--inset-right));height:calc(100% - var(--inset-top) - var(--inset-bottom));max-width:none;object-fit:contain}.lightbox--plain .lightbox-img{display:block}.lightbox-label,.lightbox-nav,.lightbox-hint{opacity:0;translate:0 10px;transition:opacity .5s ease,translate .6s cubic-bezier(.2,.8,.2,1)}.lightbox.is-ready .lightbox-label,.lightbox.is-ready .lightbox-nav,.lightbox.is-ready .lightbox-hint{opacity:1;translate:0 0}.lightbox.is-ready .lightbox-nav{transition-delay:80ms}.lightbox.is-ready .lightbox-hint{transition-delay:.6s}.lightbox-label{position:absolute;left:14px;right:14px;bottom:14px;max-height:calc(var(--inset-bottom) - 28px);overflow:auto;padding:1.1rem 1.25rem;background:#f3f0e9;color:#1c1a17;box-shadow:0 1px #fff9 inset,0 24px 60px #00000073}.lightbox-label-no{margin:0;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.66rem;letter-spacing:.2em;color:#1c1a1780}.lightbox-label-title{margin:.45rem 0 .2rem;font-family:var(--serif);font-weight:400;font-size:1.45rem;line-height:1.15}.lightbox-label-meta{margin:0;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:#1c1a1799}.lightbox-label-spec{display:grid;gap:.4rem;margin:1rem 0 0;padding-top:.9rem;border-top:1px solid rgba(28,26,23,.14);font-size:.78rem}.lightbox-label-spec[hidden]{display:none}.lightbox-label-spec div{display:grid;grid-template-columns:4.6rem 1fr;gap:.5rem}.lightbox-label-spec dt{font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:#1c1a1780;padding-top:.12rem}.lightbox-label-spec dd{margin:0;font-variant-numeric:tabular-nums}.lightbox-nav{position:absolute;left:14px;top:14px;display:flex;align-items:center;gap:.25rem}.lightbox-counter{min-width:4.5rem;text-align:center;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.72rem;letter-spacing:.14em;color:#f2efe9b3}.lightbox-btn,.lightbox-close{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;height:2.4rem;min-width:2.4rem;padding:0 .8rem;border:1px solid rgba(242,239,233,.18);border-radius:999px;background:#0a0a0c59;backdrop-filter:blur(10px);color:#f2efe9;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;cursor:pointer;transition:background .2s ease,border-color .2s ease}.lightbox-btn:hover,.lightbox-close:hover{background:#f2efe91f;border-color:#f2efe973}.lightbox-btn:focus-visible,.lightbox-close:focus-visible{outline:1px solid rgba(242,239,233,.8);outline-offset:3px}.lightbox-close{position:absolute;top:14px;right:14px}.lightbox-hint{display:none;position:absolute;left:var(--inset-left);bottom:28px;margin:0;font-size:.66rem;letter-spacing:.2em;text-transform:uppercase;color:#f2efe966}@media(min-width:960px){.lightbox{--inset-top: 76px;--inset-right: 380px;--inset-bottom: 76px;--inset-left: 76px}.lightbox-label{left:auto;right:48px;bottom:var(--inset-bottom);width:284px;max-height:calc(100% - 2 * var(--inset-bottom) - 4rem);padding:1.6rem 1.6rem 1.4rem}.lightbox-label-title{font-size:1.75rem}.lightbox-nav{left:auto;right:48px;top:var(--inset-top);width:284px;justify-content:space-between}.lightbox-close{top:22px;right:28px}.lightbox-hint{display:block}.lightbox--plain .lightbox-hint{display:none}}@media(max-width:720px){.gallery-timeline{display:none}.gallery-caption{bottom:4.5rem}.gallery-switch{left:1.5rem;right:auto}}@keyframes gallery-rise{0%{opacity:0;transform:translate3d(0,28px,0)}}@keyframes gallery-scroll-line{0%{transform:scaleY(0);opacity:1}60%{transform:scaleY(1);opacity:1}to{transform:scaleY(1);opacity:0}}
