.gallery-page{background:radial-gradient(ellipse at 85% 6%,#251d30 0,transparent 35%),var(--bg)}
.gallery-shell{max-width:1800px;margin:auto;padding:clamp(1.1rem,3.7vh,2.5rem) var(--pad) 2rem}
.gallery-owner{margin-left:auto;color:var(--muted);font-size:.9rem}
.gallery-page nav{display:flex;gap:1.5rem}.gallery-page nav a{display:flex;align-items:center;min-height:44px}.gallery-page nav [aria-current]{color:var(--accent)}
.gallery-page main{display:block;padding:clamp(3rem,7vw,7rem) 0 4rem}
.gallery-intro{margin-bottom:3rem}.gallery-intro h1{font-size:clamp(5rem,17vw,16rem);line-height:.9;letter-spacing:-.075em;margin:1.5rem 0 2rem}
.gallery-subline{display:flex;justify-content:space-between;align-items:center;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:1.5rem}.gallery-subline p{margin:0;font-size:clamp(1rem,2vw,1.4rem)}
#photo-count,.photo-meta,.viewer-bottom,.viewer-bar{font-family:OP Mono,monospace;font-size:.7rem;letter-spacing:.04em}#photo-count{color:var(--muted)}
.photo-grid{columns:3;column-gap:clamp(1rem,3vw,3rem)}
.photo-card{display:block;break-inside:avoid;margin:0 0 clamp(1.8rem,4vw,4rem);position:relative}
.photo-card:nth-child(3n+2){padding-top:2rem}.photo-frame{display:block;position:relative;overflow:hidden;background:#191a18}
.photo-frame img{display:block;width:100%;height:auto;transition:transform .35s,filter .35s}
.photo-frame:after{content:'';position:absolute;inset:0;border:1px solid #ffffff10;pointer-events:none}
.photo-card:hover img{transform:scale(1.025)}.photo-card:hover .photo-frame:after{border-color:var(--accent);box-shadow:inset 3px 0 #b785ff66;animation:frame-shift .28s steps(2) 1}
.photo-meta{display:flex;justify-content:space-between;gap:1rem;padding-top:.8rem;color:var(--muted)}.photo-meta span:last-child{color:var(--accent)}
@keyframes frame-shift{25%{transform:translateX(3px);border-top-width:8px}70%{transform:translateX(-3px);border-bottom-width:6px}}
.gallery-page footer{align-items:center}.gallery-page footer .section-label{margin:0}.gallery-page footer a{min-height:44px;display:flex;align-items:center;color:var(--accent)}
#gallery-message:empty{display:none}#gallery-message{color:var(--muted)}
#viewer{width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;padding:1rem clamp(1rem,3vw,3rem);border:0;background:#0b0c0bf5;color:var(--ink);overflow:hidden}
#viewer[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:1rem}#viewer::backdrop{background:#000d}
.viewer-bar,.viewer-bottom{display:flex;align-items:center;justify-content:space-between;gap:1rem}.viewer-bar button,.viewer-bottom button{background:transparent;border:1px solid var(--line);min-width:48px;min-height:44px;padding:.65rem 1rem;cursor:pointer}.viewer-bar button:hover,.viewer-bottom button:hover{border-color:var(--accent);color:var(--accent)}
#viewer-image{width:100%;height:100%;object-fit:contain;min-height:0}#viewer-name{overflow-wrap:anywhere;text-align:center}body:has(#viewer[open]){overflow:hidden}
@media(min-width:1500px){.photo-grid{columns:4}}
@media(max-width:900px){.photo-grid{columns:2}.photo-card:nth-child(3n+2){padding-top:0}}
@media(max-width:550px){.photo-grid{columns:1}.gallery-owner{display:none}.gallery-page nav{margin-left:auto;font-size:.9rem}.gallery-intro{margin-bottom:2rem}.gallery-intro h1{font-size:23vw}.gallery-page footer{flex-direction:row;flex-wrap:wrap;gap:.8rem}.gallery-page footer .section-label{width:100%}.gallery-page footer a:last-child{margin-left:auto}}
