.text-link { display: inline-flex; gap: 1.2rem; align-items: center; padding-bottom: .55rem; border-bottom: 1px solid rgba(241,217,184,.42); font-size: .68rem; letter-spacing: .11em; }
.text-link span { color: var(--warm); transition: transform .2s; }.text-link:hover span { transform: translate(.2rem, .2rem); }

.gallery-item { position: relative; grid-column: 1 / span 10; }
.gallery-item:nth-child(even) { grid-column: 3 / span 10; }
.gallery-item::before { content: attr(data-year); position: absolute; top: 1.2rem; left: -2rem; z-index: 2; color: var(--warm); font-size: .5rem; letter-spacing: .16em; writing-mode: vertical-rl; }
.photo-frame { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--photo-color, #302a24); box-shadow: 0 2rem 5rem rgba(0,0,0,.25); }
.photo-frame img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.88) contrast(1.02); transition: transform .8s cubic-bezier(.2,.7,.2,1), filter .5s; }.gallery-item:hover img { transform: scale(1.018); filter: saturate(1) contrast(1.02); }
.photo-placeholder { position: absolute; inset: 0; display: grid; place-items: center; overflow: hidden; color: rgba(243,238,229,.62); background: radial-gradient(circle at 30% 32%, rgba(231,168,110,.19), transparent 24%), radial-gradient(circle at 72% 68%, rgba(154,116,82,.2), transparent 27%), linear-gradient(145deg, rgba(255,255,255,.04), transparent 58%); font: italic 1rem Georgia, "Songti SC", serif; }
.photo-placeholder::before { content: ""; position: absolute; width: 35%; aspect-ratio: 1; border: 1px solid rgba(241,217,184,.12); border-radius: 50%; box-shadow: 0 0 0 3rem rgba(241,217,184,.012), 0 0 0 6rem rgba(241,217,184,.009); }
.photo-placeholder span { z-index: 1; padding: .65rem 1rem; background: rgba(17,17,15,.52); backdrop-filter: blur(8px); }
.photo-caption { display: grid; grid-template-columns: auto 1fr auto; gap: 1rem; padding: 1rem .15rem 0; font-size: .65rem; letter-spacing: .07em; }.photo-caption::before { content: attr(data-index); color: var(--warm); }.photo-caption span:last-child { color: var(--muted); text-align: right; }

.primary-action { display: flex; width: min(100%, 48rem); justify-content: space-between; align-items: center; padding: 1.5rem 1.8rem; background: var(--cream); color: var(--night); font: 400 clamp(1rem, 2vw, 1.45rem) Georgia, serif; transition: background .25s; }.primary-action:hover { background: var(--warm); }.primary-action span { color: #7c4c29; }
.qr-placeholder { width: 5.5rem; aspect-ratio: 1; display: grid; place-items: center; border: 1px dashed rgba(241,217,184,.45); color: var(--muted); text-align: center; font-size: .62rem; line-height: 1.5; }
.qr-placeholder img { width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 760px) {
  .gallery-item, .gallery-item:nth-child(even) { grid-column: 1 / -1; }.photo-frame { aspect-ratio: 16 / 10; }.gallery-item::before { display: none; }
}
