:root{--paper:#fff;--ink:#707070;--gold:#ad8949;--active:#2f92cc;--hover:#63d0d4;--menu:20vw;--font:'Fira Sans',sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-weight:200;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}button{border:0;background:none;color:inherit;cursor:pointer;padding:0}button:hover,a:hover{color:var(--hover)}button:focus-visible,a:focus-visible{outline:2px solid var(--active);outline-offset:5px}[hidden]{display:none!important}.skip{position:fixed;top:-100px;left:10px;z-index:99;background:white;padding:10px}.skip:focus{top:5px}
.logo{position:fixed;left:25px;top:45px;color:var(--gold);font-size:25px;line-height:30px;font-weight:400;z-index:5}.sidebar{position:fixed;left:35px;top:140px;width:calc(var(--menu) - 50px);z-index:5;font-size:16.5px;line-height:1.4}.nav-heading{display:block;margin-bottom:19px}#gallery-links{padding-left:16px;font-size:14px;line-height:19px}#gallery-links a{display:block;width:fit-content}#gallery-links a[aria-current="page"]{color:var(--active)}.contact-link{display:block;margin-top:28px}.menu-toggle{display:none}
main{margin-left:var(--menu);min-height:100svh}.photo-stage{position:fixed;left:var(--menu);right:0;top:10svh;bottom:11svh;display:flex;align-items:center;justify-content:center}.photo-stage figure{position:relative;margin:0;max-width:100%;max-height:100%;display:flex;align-items:center;justify-content:center}.hero-photo{display:block;object-fit:contain;max-width:100%;max-height:79svh;width:auto;height:auto;user-select:none;-webkit-user-drag:none;animation:appear 1.4s ease}.photo-stage figcaption{position:absolute;top:calc(100% + 9px);left:0;font-size:13px;line-height:1.4;width:100%;font-weight:200}.photo-stage figcaption strong{font-weight:400}.photo-stage figcaption em{font-weight:200}.image-step{position:absolute;top:0;bottom:0;width:50%;z-index:2;opacity:0;display:flex;align-items:center;padding:24px;color:var(--hover);font-size:45px}.image-step:hover{opacity:1}.image-step.prev{left:0;justify-content:flex-start}.image-step.next{right:0;justify-content:flex-end}.viewer-nav{position:fixed;left:var(--menu);right:0;bottom:14px;height:18px;display:flex;align-items:center;justify-content:center;font-size:13px;gap:66px;z-index:10;background:#ffffffeb}.viewer-nav button{white-space:nowrap}.next-controls{display:flex;align-items:center;gap:10px}.info-icon{font-size:10px;font-weight:500;border:1px solid;border-radius:100%;width:12px;height:12px;display:inline-flex;align-items:center;justify-content:center;margin-right:2px}.grid-icon{width:15px;height:10px;display:inline-block;vertical-align:middle;margin-right:2px;background:repeating-linear-gradient(0deg,transparent 0 4px,white 4px 5px),repeating-linear-gradient(90deg,currentColor 0 4px,transparent 4px 5px)}#counter{white-space:nowrap}
.thumbs{position:relative;margin:80px auto 50px;width:calc(100% - 400px);min-width:280px;display:grid;gap:7px;align-items:start}.thumb-column{display:flex;flex-direction:column;gap:7px}.thumb{position:relative;display:block;width:100%;line-height:0}.thumb img{width:100%;height:auto;display:block;user-select:none;-webkit-user-drag:none}.thumb:after{content:'';position:absolute;inset:0;background:#ffe3d7;opacity:0;transition:opacity .2s}.thumb:hover:after{opacity:.3}.portfolio-index{padding:80px 30px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px}.portfolio-card{position:relative;display:block}.portfolio-card img{width:100%;height:250px;object-fit:cover;display:block}.portfolio-card span{display:block;font-size:16px;margin-top:8px}.contact{max-width:600px;padding:20svh 30px 80px;margin-left:10%;font-size:18px;line-height:1.5}.contact p{margin:0 0 25px}.contact form{margin-top:35px;display:grid;gap:18px}.contact label{display:grid;gap:5px;font-size:14px}.contact input,.contact textarea{background:#fafafa;border:1px solid #ddd;color:#333;padding:10px;width:100%;font-size:16px;border-radius:0}.contact textarea{min-height:120px;resize:vertical}.contact .send{justify-self:start;border:1px solid #999;padding:8px 22px;font-size:14px}.contact .form-note{font-size:14px;line-height:1.5}.error{padding:120px 40px;font-size:18px}@keyframes appear{from{opacity:0}to{opacity:1}}
@media(min-width:1800px){.thumbs{max-width:1214px}}
@media(max-width:1100px){.thumbs{width:calc(100% - 100px)}.sidebar{left:25px}.logo{left:20px}.contact{margin-left:4%}}
@media(max-width:700px){:root{--menu:0px}.logo{position:absolute;top:25px;left:20px;font-size:23px}.menu-toggle{position:absolute;display:block;right:23px;top:25px;font-size:24px;z-index:21}.sidebar{display:none;position:fixed;inset:0;width:100%;padding:105px 35px;background:#fffffffa;font-size:20px;z-index:20}.sidebar.open{display:block}#gallery-links{font-size:18px;line-height:34px}.logo{z-index:21}main{padding-top:0}.photo-stage{top:105px;bottom:105px;left:15px;right:15px}.hero-photo{max-height:calc(100svh - 210px);max-width:100%}.photo-stage figcaption{font-size:13px}.viewer-nav{bottom:24px;gap:24px;font-size:13px}.image-step{padding:8px;font-size:30px}.thumbs{margin:105px auto 35px;width:calc(100% - 30px);min-width:0}.portfolio-index{padding:105px 20px 35px;grid-template-columns:1fr 1fr;gap:12px}.portfolio-card img{height:180px}.contact{padding:110px 25px 45px;margin:0;max-width:none}.contact input,.contact textarea{font-size:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Each portfolio uses its own thumbnail layout. */
.thumbs,.thumb-column{gap:var(--thumb-gap,7px)}
.thumbs-regular,.thumbs-horizontal{width:calc(100% - 60px);max-width:none}
.thumbs-regular .thumb{aspect-ratio:1;overflow:hidden}
.thumbs-regular .thumb img{width:100%;height:100%;object-fit:cover}
.thumbs-horizontal{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start}
.thumbs-horizontal .thumb{max-width:100%;height:250px}
.thumbs-horizontal .thumb img{height:100%;width:100%;object-fit:contain}
@media(max-width:700px){.thumbs-regular,.thumbs-horizontal{width:calc(100% - 30px)}.thumbs-regular{grid-template-columns:repeat(2,minmax(0,1fr))!important}.thumbs-horizontal .thumb{height:180px;width:auto!important}.thumbs-horizontal .thumb img{width:auto;max-width:100%}}

/* Reference: 1920px viewport, first thumbnail x=525/y=160, 300x200 cells. */
.thumbs-regular{margin-top:160px;justify-content:center;grid-auto-rows:200px}
.thumbs-regular .thumb{aspect-ratio:auto;height:200px;display:flex;align-items:center;justify-content:center}
.thumbs-regular .thumb img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
@media(max-width:700px){.thumbs-regular{margin-top:105px;grid-auto-rows:auto}.thumbs-regular .thumb{height:auto;aspect-ratio:3/2}.thumbs-regular .thumb img{max-height:100%;max-width:100%}}

/* The photograph returns to thumbnails; side controls remain separate. */
.photo-stage figure{z-index:3;pointer-events:none}
.hero-photo{pointer-events:auto;cursor:url('/grid-cursor.svg') 12 12,pointer}
.photo-stage figcaption{pointer-events:auto}

.logo{font-size:var(--logo-size,25px)}.sidebar{font-size:var(--menu-size,16.5px)}.photo-stage figcaption{font-size:var(--caption-size,13px)}
.locked-card{height:250px;background:#f6f6f6;display:flex;align-items:center;justify-content:center;font-size:14px;color:#777}

.photo-stage figcaption{font-size:var(--photo-caption-size,var(--caption-size,13px));box-sizing:border-box}.photo-stage figcaption p{margin:0}.caption-close{position:absolute;right:0;top:0;padding:0 5px;font-size:18px;background:inherit}.photo-stage figcaption:has(.caption-close){padding-right:22px}
.thumb{position:relative;overflow:hidden;transform:translateY(var(--parallax-y,0px))}.thumb img{transform:translate(var(--offset-x,0%),var(--offset-y,0%)) scale(var(--thumb-zoom,1));transform-origin:center}.thumbs-regular .thumb-double{grid-column:span 2;grid-row:span 2;height:calc(400px + var(--thumb-gap,18px))}.thumbs-horizontal .thumb-double{height:500px}.thumb-column .thumb-double{width:200%;max-width:none}
@media(max-width:700px){.photo-stage figcaption{font-size:var(--photo-caption-mobile-size,var(--caption-size,13px))}.thumbs-regular .thumb-double{height:auto}}

.thumbs{isolation:isolate}

.gallery-text-block{max-width:1100px;margin:30px auto;white-space:pre-wrap;padding:0 20px;line-height:1.6}.gallery-intro{padding-top:130px;margin-bottom:30px}.thumbs.has-intro{margin-top:0}

.site-footer{position:fixed;left:40px;bottom:14px;font-size:12px;z-index:4;white-space:pre-wrap;max-width:90vw}

/* Use real font weights and vector icons instead of font-dependent symbols. */
.logo{font-weight:500}
.sidebar,.viewer-nav{font-weight:300;-webkit-font-smoothing:auto}
.viewer-nav button{display:inline-flex;align-items:center;gap:3px;line-height:1.2}
.nav-icon{display:block;width:15px;height:15px;flex:0 0 15px}
#previous .nav-icon,#next .nav-icon{width:10px;height:12px;flex-basis:10px}
.image-step svg{display:block;width:24px;height:36px;flex:none;fill:none;stroke:currentColor;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter}
@media(max-width:700px){.image-step svg{width:18px;height:27px}}
