.gallery-main{padding:1.9rem 2.2vw 2rem}
.gallery-title{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.6rem}
.gallery-title h1{margin:0;font-size:clamp(2rem,3.4vw,3.5rem);line-height:1.15;letter-spacing:-.04em}
.gallery-title h1 span{display:inline-block;margin-left:.7rem;font-size:clamp(1rem,1.8vw,1.5rem);font-weight:400;letter-spacing:0}
.gallery-title p{font-size:.8rem;color:#555;margin:0;white-space:nowrap}
.photo-wall{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;align-items:start;position:relative}
.photo-wall.is-masonry{display:block}
.photo-wall.is-masonry .photo{position:absolute;left:0;top:0}
.photo{display:block;overflow:hidden;line-height:0;position:relative;background:#dfdcd5;text-decoration:none}
.photo img{height:auto;width:100%;display:block;filter:brightness(var(--photo-brightness,1))}
.photo[hidden]{display:none}
.photo-expand{position:absolute;bottom:9px;right:9px;display:grid;place-items:center;width:30px;height:30px;background:rgba(0,0,0,.65);color:#fff;font:20px/1 Arial;opacity:0;transition:opacity .16s}
.photo:hover .photo-expand,.photo:focus-visible .photo-expand{opacity:1}
.photo:focus-visible{outline:3px solid #111;outline-offset:3px;z-index:1}
.gallery-more{text-align:center;margin-top:2rem}
.gallery-more p{font-size:.8rem;color:#555;margin:.75rem 0 0}
.gallery-more p:empty{display:none}
#load-more{background:transparent;padding:.8rem 2rem;border:1px solid #777;font:inherit;cursor:pointer}
.photo-viewer{position:fixed;inset:0;width:100vw;max-width:none;height:100vh;height:100dvh;max-height:none;margin:0;padding:0;border:0;color:#fff;background:#111;overflow:hidden}
.photo-viewer[open]{display:grid;grid-template-rows:64px minmax(0,1fr) 68px}
.photo-viewer::backdrop{background:#111}
.viewer-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,env(safe-area-inset-right)) 0 max(20px,env(safe-area-inset-left));border-bottom:1px solid #333}
.viewer-toolbar span{font-size:.9rem;font-variant-numeric:tabular-nums}
.photo-viewer button{font:inherit;cursor:pointer;color:#fff;background:transparent;border:1px solid #666;min-height:44px;min-width:48px;padding:8px 14px}
.photo-viewer button:hover{background:#333}
.photo-viewer button:focus-visible{outline:2px solid var(--acid);outline-offset:3px}
.viewer-stage{position:relative;min-height:0;display:flex;align-items:center;justify-content:center;padding:18px 4vw;touch-action:pan-y pinch-zoom}
#viewer-image{display:block;width:100%;height:100%;object-fit:contain;filter:brightness(var(--photo-brightness,1))}
#viewer-image[hidden]{display:none}
.viewer-bottom{display:grid;grid-template-columns:48px 1fr 48px;gap:1rem;align-items:center;padding:8px max(20px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}
#viewer-caption{margin:0;text-align:center;font-size:.9rem;max-height:48px;overflow:auto}
#viewer-error{font-size:.95rem;text-align:center}
#viewer-error a{color:#fff}
.gallery-page:has(.photo-viewer[open]){overflow:hidden}
.gallery-page footer a{text-underline-offset:4px}
@media(min-width:1700px){.photo-wall{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media(max-width:1000px){.photo-wall{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.gallery-main{padding:1.4rem 12px 2rem}.photo-wall{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.gallery-title{margin-bottom:1.2rem;align-items:center}.gallery-title h1{font-size:2rem}.gallery-title h1 span{display:block;margin:5px 0 0;font-size:1rem}.viewer-stage{padding:10px}.photo-viewer[open]{grid-template-rows:60px minmax(0,1fr) 68px}}
@media(prefers-reduced-motion:reduce){.photo-expand{transition:none}.gallery-page{scroll-behavior:auto}}
