.gallery { background: #faf7ff; }
.gallery-heading { display: flex; justify-content: space-between; align-items: end; gap: 40px; max-width: var(--max); margin: auto; }
.gallery-heading h2 { font-size: clamp(36px, 4.6vw, 64px); line-height: 1.15; }
.gallery-heading p { max-width: 500px; color: var(--muted); margin: 0 0 22px; }
.gallery-heading .section-kicker { color: var(--blue); margin-bottom: 18px; }
.gallery-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; }
.gallery-actions a { color: var(--blue); font-weight: 750; margin-right: 10px; }
.gallery-actions button { width: 44px; height: 44px; border: 1px solid #d7c7ef; border-radius: 50%; color: var(--blue-deep); background: #fff; cursor: pointer; font-size: 22px; }
.gallery-actions button:disabled { opacity: .35; cursor: default; }
.photo-strip { display: grid; grid-auto-flow: column; grid-auto-columns: clamp(310px, 35vw, 490px); gap: 22px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-color: #bca7e6 #eee7f7; scrollbar-width: thin; padding: 8px 0 20px; margin: 42px auto 0; max-width: var(--max); }
.photo-card { margin: 0; min-width: 0; scroll-snap-align: start; }
.photo-link { display: block; position: relative; border-radius: 16px; overflow: hidden; background: #e8e1f2; cursor: zoom-in; }
.photo-link img { display: block; width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; transition: transform 250ms ease; }
.photo-link:hover img { transform: scale(1.025); }
.photo-link:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }
.photo-card figcaption { padding: 12px 2px 0; color: var(--blue-deep); font-size: 15px; }
.gallery-hint { color: var(--muted); font-size: 13px; max-width: var(--max); margin: 14px auto 0; }
.album-page { background: #faf7ff; }
.album-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 18px; padding: 26px var(--pad); border-bottom: 1px solid #e6dcf2; }
.album-header strong { font-size: 20px; }
.album-header a { color: var(--blue-deep); }
.album-main { padding: 70px var(--pad); max-width: 1560px; margin: auto; }
.album-main h1 { font-family: var(--display); font-size: clamp(38px, 6vw, 76px); line-height: 1.2; margin: 0 0 24px; letter-spacing: -.04em; }
.album-intro { color: var(--muted); max-width: 700px; margin: 0 0 44px; font-size: 18px; }
.photo-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 34px 22px; }
.album-footer { padding: 32px var(--pad); border-top: 1px solid #e6dcf2; color: var(--muted); font-size: 13px; }
.photo-dialog { width: min(1180px, calc(100vw - 32px)); max-width: none; padding: 16px; border: 0; border-radius: 18px; background: #171321; color: #fff; max-height: calc(100dvh - 24px); }
.photo-dialog::backdrop { background: rgba(10, 6, 22, .9); }
.photo-dialog[open] { display: grid; gap: 12px; }
.photo-dialog-top, .photo-dialog-bottom { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.photo-dialog button { color: #fff; background: #30273e; border: 1px solid #665a78; border-radius: 10px; min-width: 44px; min-height: 44px; padding: 8px 14px; cursor: pointer; }
.photo-dialog img { width: 100%; height: min(70dvh, 760px); object-fit: contain; }
.photo-dialog p { margin: 0; text-align: center; }
.photo-dialog a { color: #d9c7ff; font-size: 13px; }
body.photo-open { overflow: hidden; }
@media (max-width: 800px) { .gallery-heading { display: block; }.gallery-heading > div + div { margin-top: 24px; }.photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }.album-main { padding-top: 44px; } }
@media (max-width: 500px) { .photo-strip { grid-auto-columns: 82%; gap: 14px; margin-top: 28px; }.photo-grid { grid-template-columns: 1fr; gap: 28px; }.gallery-heading h2 { font-size: 38px; }.photo-dialog { padding: 12px; }.photo-dialog img { height: min(58dvh, 600px); }.photo-dialog-bottom { flex-wrap: wrap; }.photo-dialog-bottom p { flex: 1; font-size: 14px; } }
@media (prefers-reduced-motion: reduce) { .photo-link img { transition: none; } }
