.gallery-shell { width: min(1560px, calc(100% - 80px)); margin: auto; }
.gallery-header { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 24px; min-height: 100px; border-bottom: 1.5px solid var(--ink); padding-right: 140px; }
.home-link { font-weight: 700; text-decoration: none; }
.archive-label { font-size: 11px; letter-spacing: .14em; }
.gallery-header .language-switch { top: 32px; }
.gallery-main { display: block; padding: 0; }
.gallery-intro { display: flex; justify-content: space-between; align-items: end; gap: 30px; padding: 48px 0 38px; border-bottom: 4px solid var(--ink); margin-bottom: 30px; }
.gallery-intro h1 { margin: 0; font-size: clamp(52px,7.5vw,112px); letter-spacing: -.065em; line-height: 1; font-weight: 800; }
.gallery-guide { max-width: 290px; }
.gallery-guide p { font-size: 14px; }
/* Reserve 2/3 of a card at the right for the three-phase row offset. */
.photo-wall { position: relative; --gap: 8px; --columns: 4; --card: calc((100% - (var(--columns) - 1)*var(--gap)) / (var(--columns) + .666666667)); display: flex; flex-wrap: wrap; gap: var(--gap); padding: 6px 0 48px; }
.photo-card { position: relative; flex: 0 0 var(--card); width: var(--card); aspect-ratio: 4/3; padding: 0; border: 0; background: transparent; perspective: 1200px; text-align: left; cursor: pointer; --pointer-color: var(--accent); }
.photo-card.row-start { margin-left: calc(var(--card) * var(--offset)); }
.photo-card.row-end { margin-right: calc(var(--card) * (0.666666667 - var(--offset)) - 1px); }
.card-turn { display: block; position: absolute; inset: 0; transform-style: preserve-3d; transition: transform .65s cubic-bezier(.22,.7,.2,1); }
.photo-card[aria-pressed="true"] .card-turn { transform: rotateY(180deg); }
.card-face { position: absolute; inset: 0; backface-visibility: hidden; -webkit-backface-visibility: hidden; border: 1px solid #0003; overflow: hidden; }
.card-front { background: #ece6d6; transition: box-shadow .25s, border-color .25s; }
.card-front img { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.82) brightness(.94); transition: filter .3s, transform .5s; }
.card-back { transform: rotateY(180deg); background: var(--paper); color: var(--accent); border: 4px solid var(--accent); padding: clamp(14px,2vw,30px); display: flex; flex-direction: column; justify-content: flex-start; }

.back-title { display:block; font-size:clamp(15px,1.4vw,20px); font-weight:700; line-height:1.3; white-space:nowrap; }
.back-copy { display:block; font-size:clamp(11px,1vw,14px); line-height:1.6; margin-top: 8px; }

.photo-card:focus-visible { outline: 3px solid var(--accent); outline-offset: 5px; }
.photo-card:focus-visible .card-front,.photo-card:hover .card-front { border-color:var(--accent); box-shadow:0 0 0 3px var(--accent),0 8px 22px #046e5c28; }
.photo-card:hover img,.photo-card:focus-visible img { filter:saturate(1) brightness(1.06); transform:scale(1.025); }

@media(max-width:1000px) { .photo-wall { --columns:3; } .gallery-shell { width:calc(100% - 48px); } .archive-label { display:none; } }
@media(max-width:620px) { .gallery-shell { width:calc(100% - 28px); } .gallery-header { min-height:80px; } .gallery-header .language-switch { top:22px; } .gallery-intro { padding:32px 0 24px; align-items:start; flex-direction:column; gap:24px; } .gallery-guide { max-width:100%; } .photo-wall { --columns:2; --gap:6px; } .photo-card { aspect-ratio:3/4; } .card-back { padding:12px; } .back-copy { font-size:12px; }  }
@media(prefers-reduced-motion:reduce) { .card-turn,.card-front,.card-front img { transition:none; } }

.photography-page { overflow-x: clip; }
.row-filler { position: absolute; border: 4px solid var(--accent); background: var(--paper); pointer-events: none; }
html:has(.photography-page) { overflow-x: clip; }
.photography-page { position: relative; }
