/** GalleryPress: an editorial canvas for photography. Scoped to plugin surfaces. */
.gp-gallery {
    --gp-ink: #152b43;
    --gp-muted: #647487;
    box-sizing: border-box;
    max-width: 1440px;
    margin: 0 auto 48px;
    padding: clamp(28px, 4vw, 64px) clamp(20px, 3vw, 48px);
    color: var(--gp-ink);
    background: linear-gradient(150deg, #f5f8fc 0%, #fff 55%, #f8fafc 100%);
    border-radius: 0 0 24px 24px;
}
.gp-gallery *, .gp-lightbox * { box-sizing: border-box; }
.gp-gallery .gp-collection-header { position: static; width: auto; padding: 0; background: transparent; box-shadow: none; border: 0; display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 32px; text-align: left; }
.gp-collection-eyebrow { margin: 0 0 10px; color: #617a96; font: 600 10px/1.5 system-ui, sans-serif; letter-spacing: .2em; text-transform: uppercase; }
.gp-gallery .gp-collection-title { margin: 0; color: var(--gp-ink); font: 400 clamp(30px, 3.6vw, 52px)/1.16 "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif; letter-spacing: -.02em; font-kerning: normal; text-wrap: balance; }
.gp-collection-meta { display: flex; flex-shrink: 0; flex-direction: column; align-items: flex-end; gap: 8px; font: 400 12px/1.5 system-ui, sans-serif; }
.gp-photo-count { display: inline-flex; padding: 5px 12px; border: 1px solid #dce4ee; border-radius: 30px; background: #ffffffb3; color: #445b73; }
.gp-collection-hint { color: var(--gp-muted); }
.gp-collection-hint span { margin-left: 6px; }
.gp-gallery-grid { --gp-effective-columns: var(--gp-columns, 4); display: grid; grid-template-columns: repeat(var(--gp-effective-columns), minmax(0, 1fr)); gap: var(--gp-gap, 16px); align-items: start; }
.gp-gallery .gp-gallery-item { position: relative; display: block; min-width: 0; margin: 0; overflow: hidden; border-radius: 12px; background: #e8edf3; isolation: isolate; box-shadow: 0 3px 12px #132d4910; transition: box-shadow .3s, transform .3s; }
.gp-gallery-item a { display: block; color: inherit; text-decoration: none; }
.gp-gallery .gp-gallery-item img { display: block; width: 100%; height: auto; margin: 0; border-radius: 0; transition: transform .55s cubic-bezier(.2,.65,.3,1), opacity .3s; }
.gp-gallery .gp-gallery-item video { display: block; width: 100%; height: auto; margin: 0; border-radius: 0; }
/* A video item always shows a play badge, so it is not mistaken for a still. */
.gp-video-badge { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: #0b213d80; color: #fff; font: 20px/1 system-ui; pointer-events: none; z-index: 1; }
.gp-gallery.gp-thumb-small.gp-layout-responsive .gp-gallery-item video { width: auto; max-width: min(150px, 100%); height: auto; }
.gp-gallery.gp-thumb-medium.gp-layout-responsive .gp-gallery-item video { width: auto; max-width: min(300px, 100%); height: auto; }
.gp-gallery-item a:focus-visible { outline: 3px solid #308ce8; outline-offset: -4px; }
.gp-photo-open { position: absolute; right: 12px; top: 12px; display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid #ffffff70; border-radius: 50%; background: #0b213d80; backdrop-filter: blur(8px); color: white; font: 20px/1 system-ui; opacity: 0; transform: translateY(4px); transition: opacity .25s, transform .25s; pointer-events: none; }
.gp-gallery-item:hover .gp-photo-open, .gp-gallery-item:focus-within .gp-photo-open { opacity: 1; transform: none; }
.gp-gallery-item:hover { box-shadow: 0 8px 24px #132d4926; }
.gp-hover-zoom:hover img, .gp-hover-zoom:focus-within img { transform: scale(1.045); }
.gp-hover-fade:hover img { opacity: .8; }
.gp-hover-slide-up:hover img { transform: translateY(-4px) scale(1.025); }
.gp-hover-overlay a::after { content: ''; position: absolute; inset: 0; background: #10253e24; opacity: 0; transition: opacity .3s; pointer-events: none; }
.gp-hover-overlay:hover a::after { opacity: 1; }
.gp-gallery-caption { position: absolute; bottom: 0; left: 0; width: 100%; margin: 0; padding: 36px 16px 14px; background: linear-gradient(transparent, #0b1a30d9); color: #fff; font: 400 13px/1.5 system-ui, sans-serif; pointer-events: none; }
/* Columns form real masonry without stretching photographs or waiting for scripts. */
.gp-layout-masonry .gp-gallery-grid { display: block; columns: var(--gp-effective-columns); column-gap: var(--gp-gap, 16px); }
.gp-layout-masonry .gp-gallery-item { break-inside: avoid; margin: 0 0 var(--gp-gap, 16px); }
/* Script-positioned masonry (GT3/Isotope-style): once main.js measures and
   places items, CSS columns no longer lay them out at all, so Safari has
   nothing to rebalance. Without scripts, the column rules above still apply. */
.gp-layout-masonry .gp-gallery-grid.gp-masonry-js { position: relative; columns: auto; column-gap: 0; }
.gp-layout-masonry .gp-gallery-grid.gp-masonry-js .gp-gallery-item { position: absolute; margin: 0 0 var(--gp-gap, 16px); }
.gp-layout-portfolio .gp-gallery-item { aspect-ratio: 4 / 3; }
.gp-layout-portfolio .gp-gallery-item a, .gp-layout-portfolio .gp-gallery-item img { height: 100%; object-fit: cover; }
.gp-layout-carousel { overflow: hidden; }
.gp-layout-carousel .gp-gallery-grid { display: flex; transition: transform .4s; }
.gp-layout-carousel .gp-gallery-item { flex: 0 0 auto; }
.gp-carousel-nav { display: flex; justify-content: center; gap: 12px; margin: -24px 0 36px; }
.gp-carousel-btn { border: 1px solid #dce4ee; border-radius: 24px; padding: 10px 20px; color: #152b43; background: #fff; cursor: pointer; }
.gp-carousel-btn:disabled { opacity: .4; cursor: default; }
.gp-layout-justified .gp-gallery-grid { display: flex; flex-wrap: wrap; }
.gp-layout-justified .gp-gallery-item { flex: 1 1 240px; }
.gp-layout-justified .gp-gallery-item img { height: 220px; object-fit: cover; }
.gp-layout-single-thumb .gp-gallery-grid, .gp-layout-image-viewer .gp-gallery-grid { grid-template-columns: minmax(0, 1fr); max-width: 960px; margin: auto; }
.gp-layout-single-thumb .gp-gallery-item:not(:first-child) { display: none; }
/* Viewer sits above theme chrome, with a quiet backdrop and generous image space. */
.gp-lightbox[hidden], .gp-lightbox [hidden] { display: none !important; }
.gp-lightbox { position: fixed; inset: 0; z-index: 999999; display: flex; align-items: center; justify-content: center; color: #fff; font-family: system-ui, sans-serif; }
.gp-lightbox-overlay { position: absolute; inset: 0; background: var(--gp-viewer-color, #07101c); opacity: var(--gp-viewer-opacity, .95); backdrop-filter: blur(18px); }
.gp-lightbox-toolbar { position: absolute; inset: 20px 28px auto; display: flex; align-items: center; justify-content: space-between; z-index: 2; }
.gp-lightbox-counter { color: #b9c7d9; font-size: 13px; font-variant-numeric: tabular-nums; letter-spacing: .12em; }
.gp-lightbox .gp-lightbox-content { position: relative; width: auto; height: auto; max-width: calc(100vw - 160px); margin: 64px 0; text-align: center; pointer-events: none; }
.gp-lightbox .gp-lightbox-image { display: block; max-width: 100%; width: auto; height: auto; max-height: calc(100dvh - 180px); margin: auto; border-radius: 8px; box-shadow: 0 24px 80px #0006; pointer-events: auto; }
.gp-lightbox-caption { margin: 16px 0 0; color: #d9e2ee; font-size: 13px; line-height: 1.5; }
.gp-lightbox button { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid #ffffff30; border-radius: 50%; background: #ffffff0a; color: #fff; cursor: pointer; font: 24px/1 system-ui; transition: background .2s; }
.gp-lightbox button:hover { background: #ffffff22; }
.gp-lightbox button:focus-visible { outline: 2px solid #a8d3ff; outline-offset: 4px; }
.gp-lightbox-prev, .gp-lightbox-next { position: absolute; top: calc(50% - 22px); z-index: 2; }
.gp-lightbox-prev { left: 24px; } .gp-lightbox-next { right: 24px; }
.gp-lightbox-help { position: absolute; bottom: 16px; margin: 0; color: #8fa1b8; font-size: 11px; letter-spacing: .04em; }
.gp-gallery-listing, .gp-albums-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 24px; }
.gp-gallery-preview, .gp-album-card { overflow: hidden; border: 1px solid #e2e8f0; border-radius: 16px; box-shadow: 0 4px 20px #152b430a; }
.gp-album-thumbnail img { display: block; width: 100%; height: auto; }
.gp-album-info, .gp-gallery-preview-title { padding: 16px; margin: 0; }
.gp-album-title a, .gp-gallery-preview-title a { color: #152b43; text-decoration: none; }
.gp-gallery-image-count, .gp-album-count { display: block; padding: 0 16px 16px; color: #647487; font: 12px/1.5 system-ui; }
.gp-error, .gp-no-galleries, .gp-no-albums, .gp-no-gallery { padding: 32px; text-align: center; color: #647487; }
@media (max-width: 900px) {
    .gp-gallery-grid { --gp-effective-columns: min(var(--gp-tablet, 2), var(--gp-columns, 4)); }
    .gp-gallery .gp-collection-header { align-items: flex-end; flex-direction: row; gap: 16px; margin-bottom: 24px; }
    .gp-gallery .gp-collection-meta { flex-direction: column; align-items: flex-end; gap: 8px; max-width: 50%; text-align: right; }
}
@media (max-width: 600px) {
    .gp-gallery-grid { --gp-effective-columns: min(var(--gp-mobile, 1), var(--gp-columns, 4)); }
    .gp-gallery { border-radius: 0; }
    .gp-gallery .gp-gallery-item { border-radius: 10px; }
    .gp-photo-open { opacity: 1; transform: none; width: 30px; height: 30px; }
    .gp-collection-meta { flex-wrap: wrap; font-size: 11px; }
    .gp-lightbox .gp-lightbox-content { max-width: calc(100vw - 24px); }
    .gp-lightbox .gp-lightbox-image { max-height: calc(100dvh - 240px); }
    .gp-lightbox-toolbar { inset: 16px 16px auto; }
    .gp-lightbox-prev, .gp-lightbox-next { top: auto; bottom: 58px; }
    .gp-lightbox-help { bottom: 22px; font-size: 10px; }
}
@media (prefers-reduced-motion: reduce) {
    .gp-gallery *, .gp-lightbox * { transition: none !important; animation: none !important; }
}

/* Layout modes have distinct behavior even for uniformly sized photographs. */
/* Responsive grid keeps each photograph's own aspect ratio: no square
   frame and no cover crop, so a landscape photo stays landscape and a
   portrait stays portrait. The heading above the grid is untouched. */
.gp-layout-responsive .gp-gallery-item { aspect-ratio: auto; }
.gp-layout-responsive .gp-gallery-item a { height: auto; }
.gp-layout-responsive .gp-gallery-item img { height: auto; object-fit: contain; }
.gp-layout-responsive .gp-gallery-item video { height: auto; object-fit: contain; }
/* Thumbnail size changes only the thumbnail's displayed width, centered
   in its column; columns, gaps and the collection heading do not move. */
.gp-gallery.gp-thumb-small.gp-layout-responsive .gp-gallery-item a { display: flex; justify-content: center; }
.gp-gallery.gp-thumb-small.gp-layout-responsive .gp-gallery-item img { width: auto; max-width: min(150px, 100%); height: auto; }
.gp-gallery.gp-thumb-medium.gp-layout-responsive .gp-gallery-item a { display: flex; justify-content: center; }
.gp-gallery.gp-thumb-medium.gp-layout-responsive .gp-gallery-item img { width: auto; max-width: min(300px, 100%); height: auto; }
.gp-gallery .gp-gallery-item[hidden] { display: none; }
.gp-layout-image-viewer .gp-carousel-nav { position: relative; margin: 20px 0 0; align-items: center; }

/* Collection header controls are scoped to each heading. */
.gp-gallery .gp-collection-header { padding: var(--gp-header-padding, 0); background: var(--gp-header-bg, transparent); margin-bottom: var(--gp-header-gap, 32px); border-radius: 12px; }
.gp-gallery .gp-collection-title { color: var(--gp-header-title, #152b43); font-family: var(--gp-header-font, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif); font-size: clamp(min(30px, var(--gp-header-size, 52px)), 3.6vw, var(--gp-header-size, 52px)); }
.gp-collection-header .gp-collection-eyebrow, .gp-collection-header .gp-collection-hint, .gp-collection-header .gp-photo-count { color: var(--gp-header-text, #647487); }
/* Tablet headings use the configured size in either orientation. */
@media (min-width: 601px) {
    .gp-gallery .gp-collection-title { font-size: var(--gp-header-size, 52px); }
}
.gp-collection-header .gp-collection-meta:only-child { margin-left: auto; }

.gp-collection-header > div { min-width: 0; }
.gp-collection-header .gp-collection-title, .gp-collection-header .gp-collection-eyebrow, .gp-collection-header .gp-collection-hint { overflow-wrap: anywhere; }

/* Fullscreen and direct manipulation stay inside the photo stage. */
.gp-lightbox-tools { display: flex; gap: 8px; }
.gp-lightbox-stage { display: grid; place-items: center; width: calc(100vw - 160px); height: calc(100dvh - 180px); overflow: hidden; touch-action: none; pointer-events: auto; user-select: none; }
.gp-lightbox .gp-lightbox-stage .gp-lightbox-image { max-width: 100%; max-height: 100%; transform-origin: center; cursor: zoom-in; -webkit-user-drag: none; }
.gp-lightbox.gp-is-zoomed .gp-lightbox-image { cursor: grab; }
.gp-lightbox.gp-is-zoomed .gp-lightbox-stage:active .gp-lightbox-image { cursor: grabbing; }
.gp-lightbox:fullscreen { width: 100%; height: 100%; background: #07101c; }
.gp-lightbox.gp-is-fullscreen .gp-lightbox-content { max-width: calc(100vw - 24px); margin: 0; }
.gp-is-fullscreen .gp-lightbox-stage { width: calc(100vw - 24px); height: calc(100dvh - 96px); }
.gp-is-fullscreen .gp-lightbox-caption, .gp-is-fullscreen .gp-lightbox-help { display: none; }
.gp-lightbox-toolbar { top: max(16px, env(safe-area-inset-top)); right: max(16px, env(safe-area-inset-right)); left: max(16px, env(safe-area-inset-left)); }
@media (max-width: 600px) {
    .gp-lightbox-stage { width: calc(100vw - 24px); height: calc(100dvh - 240px); }
    .gp-is-fullscreen .gp-lightbox-stage { height: calc(100dvh - 160px); }
    .gp-lightbox-help { max-width: calc(100vw - 32px); text-align: center; }
    .gp-lightbox-prev, .gp-lightbox-next { bottom: max(58px, calc(env(safe-area-inset-bottom) + 42px)); }
}

/* Keep the outgoing bitmap visible until its decoded replacement fades in. */
.gp-lightbox-stage { position: relative; }
.gp-lightbox .gp-lightbox-outgoing { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; border-radius: 8px; object-fit: contain; pointer-events: none; }

/* Respect image orientation, including theme CSS that otherwise fills the frame. */
.gp-lightbox .gp-lightbox-stage .gp-lightbox-image { object-fit: contain; aspect-ratio: auto; min-width: 0; min-height: 0; image-orientation: from-image; }
.gp-lightbox-stage { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
@media (max-width: 600px) {
    .gp-gallery.gp-layout-responsive .gp-gallery-item,
    .gp-gallery.gp-layout-portfolio .gp-gallery-item { aspect-ratio: auto; }
    .gp-gallery.gp-layout-responsive .gp-gallery-item a,
    .gp-gallery.gp-layout-portfolio .gp-gallery-item a { height: auto; }
    .gp-gallery .gp-gallery-item img { height: auto; object-fit: contain; image-orientation: from-image; }
}
@media (orientation: landscape) and (max-height: 600px) {
    .gp-lightbox .gp-lightbox-content { margin: 0; max-width: calc(100vw - 120px); }
    .gp-lightbox-stage { width: calc(100vw - 120px); height: calc(100dvh - 110px); }
    .gp-is-fullscreen .gp-lightbox-stage { width: calc(100vw - 120px); height: calc(100dvh - 72px); }
    .gp-lightbox-caption { max-width: 80vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-top: 8px; }
    .gp-lightbox-help { display: none; }
}

/* Edge-to-edge photo area; controls float above it and fade away when idle. */
.gp-lightbox .gp-lightbox-content,
.gp-lightbox.gp-is-fullscreen .gp-lightbox-content { width: 100%; height: 100%; max-width: none; margin: 0; }
.gp-lightbox .gp-lightbox-stage { width: 100%; height: 100%; }
.gp-lightbox .gp-lightbox-stage .gp-lightbox-image { border-radius: 0; box-shadow: none; }
.gp-lightbox .gp-lightbox-stage .gp-lightbox-video { display: block; max-width: 100%; max-height: 100%; width: auto; height: auto; border-radius: 0; pointer-events: auto; }
.gp-lightbox .gp-lightbox-stage .gp-lightbox-video[hidden] { display: none; }
.gp-lightbox .gp-lightbox-outgoing { border-radius: 0; }
.gp-lightbox .gp-lightbox-caption { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; padding: 32px 72px max(18px, env(safe-area-inset-bottom)); max-width: none; color: #fff; background: linear-gradient(transparent, #0009); text-shadow: 0 1px 6px #000; }
.gp-lightbox .gp-lightbox-help { display: none; }
.gp-lightbox-toolbar, .gp-lightbox-prev, .gp-lightbox-next, .gp-lightbox-caption { opacity: 1; transition: opacity .35s ease; }
/* No gradient card behind the top controls: the counter and buttons sit
   directly over the photo, so the sky at the top of a photo is not darkened
   by a full-width gradient strip. Buttons keep their own circular
   backgrounds, and the counter keeps a text shadow for readability. */
.gp-lightbox .gp-lightbox-toolbar { padding: 8px 10px; border-radius: 0; background: none; }
.gp-lightbox .gp-lightbox-counter { text-shadow: 0 1px 6px #000; }
.gp-lightbox .gp-lightbox-prev, .gp-lightbox .gp-lightbox-next { top: calc(50% - 22px); bottom: auto; background: #0004; }
.gp-lightbox.gp-controls-hidden .gp-lightbox-toolbar,
.gp-lightbox.gp-controls-hidden .gp-lightbox-prev,
.gp-lightbox.gp-controls-hidden .gp-lightbox-next,
.gp-lightbox.gp-controls-hidden .gp-lightbox-caption { opacity: 0; pointer-events: none; }
.gp-lightbox.gp-controls-hidden, .gp-lightbox.gp-controls-hidden .gp-lightbox-image { cursor: none; }
@media (max-width: 600px) {
    .gp-lightbox .gp-lightbox-toolbar { left: max(8px, env(safe-area-inset-left)); right: max(8px, env(safe-area-inset-right)); top: max(8px, env(safe-area-inset-top)); }
    .gp-lightbox .gp-lightbox-prev { left: 8px; }
    .gp-lightbox .gp-lightbox-next { right: 8px; }
    .gp-lightbox .gp-lightbox-caption { font-size: 12px; }
}
.gp-lightbox .gp-lightbox-overlay { transition: opacity .35s ease; }
.gp-lightbox.gp-controls-hidden .gp-lightbox-overlay { opacity: 1; }

/* Full page grid; JavaScript accounts for theme gutters and scrollbars. */
.gp-gallery.gp-full-width { position: relative; left: var(--gp-page-offset, 0px); width: var(--gp-page-width, 100%); max-width: none; padding-left: 0; padding-right: 0; margin-left: 0; margin-right: 0; border-radius: 0; }
/* Full-width margin is inside the thumbnail grid, on both sides, so the
   gallery section itself stays full width and the thumbnails move inward.
   Scoped per device, like the width rules below, so a tablet/mobile full
   choice does not inset thumbnails on desktop, and vice versa. */
.gp-gallery.gp-full-width .gp-collection-header { margin-left: clamp(20px, 3vw, 48px); margin-right: clamp(20px, 3vw, 48px); }
/* Editor previews stay within the preview panel. */
.gp-layout-preview .gp-gallery.gp-full-width { left: 0; width: 100%; }
/* Separate per-device grid widths. These sit after .gp-full-width so a
   tablet/mobile choice overrides the desktop class before JS runs, and
   when JS is unavailable; JS still refines the full-width offset/width. */
@media (max-width: 900px) and (min-width: 601px) {
    .gp-gallery.gp-width-tablet-full { position: relative; left: var(--gp-page-offset, 0px); width: var(--gp-page-width, 100%); max-width: none; padding-left: 0; padding-right: 0; margin-left: 0; margin-right: 0; border-radius: 0; }
    .gp-gallery.gp-width-tablet-full .gp-collection-header { margin-left: clamp(20px, 3vw, 48px); margin-right: clamp(20px, 3vw, 48px); }
    .gp-gallery.gp-width-tablet-contained { position: relative; left: 0; width: auto; max-width: 1440px; margin: 0 auto 48px; padding-left: clamp(20px, 3vw, 48px); padding-right: clamp(20px, 3vw, 48px); border-radius: 0 0 24px 24px; }
    .gp-gallery.gp-width-tablet-contained .gp-collection-header { margin-left: 0; margin-right: 0; }
}
@media (max-width: 600px) {
    .gp-gallery.gp-width-mobile-full { position: relative; left: var(--gp-page-offset, 0px); width: var(--gp-page-width, 100%); max-width: none; padding-left: 0; padding-right: 0; margin-left: 0; margin-right: 0; border-radius: 0; }
    .gp-gallery.gp-width-mobile-full .gp-collection-header { margin-left: clamp(20px, 3vw, 48px); margin-right: clamp(20px, 3vw, 48px); }
    .gp-gallery.gp-width-mobile-contained { position: relative; left: 0; width: auto; max-width: 1440px; margin: 0 auto 48px; padding-left: clamp(20px, 3vw, 48px); padding-right: clamp(20px, 3vw, 48px); }
    .gp-gallery.gp-width-mobile-contained .gp-collection-header { margin-left: 0; margin-right: 0; }
}
/* Full-width margin inside the thumbnail grid, left and right. */
@media (min-width: 901px) {
    .gp-gallery.gp-width-desktop-full .gp-gallery-grid { padding-left: var(--gp-full-margin, 0px); padding-right: var(--gp-full-margin, 0px); }
}
@media (max-width: 900px) and (min-width: 601px) {
    .gp-gallery.gp-width-tablet-full .gp-gallery-grid { padding-left: var(--gp-full-margin, 0px); padding-right: var(--gp-full-margin, 0px); }
}
@media (max-width: 600px) {
    .gp-gallery.gp-width-mobile-full .gp-gallery-grid { padding-left: var(--gp-full-margin, 0px); padding-right: var(--gp-full-margin, 0px); }
}
/* Hidden lightbox captions: hide the whole caption bar, not just its text,
   so its gradient background does not remain at the bottom of the photo. */
.gp-lightbox.gp-hide-captions .gp-lightbox-caption { display: none; }

/* Infinite scroll: the sentinel is only a scroll target, and the status
   line is only visible while a batch is loading or failed. */
.gp-infinite-sentinel { height: 1px; }
.gp-infinite-status:empty { display: none; }
.gp-infinite-status, .gp-infinite-fallback { text-align: center; color: #647487; padding: 16px 0; }

/* First-batch reveal: a paginated gallery hides its grid until its photos
   are preloaded, so masonry columns never show half-loaded blank slots. */
.gp-gallery.gp-loading .gp-gallery-grid { display: none; }

