/* ---------- Gallery hero ---------- */
.gallery-hero { padding-top: calc(var(--space-3xl) + 20px); padding-bottom: var(--space-lg); }
.gallery-hero h1 { font-size: var(--fs-h1); max-width: 20ch; }
.gallery-hero .lede { margin-top: var(--space-sm); color: var(--color-text-secondary); max-width: 56ch; }

/* ---------- Filters ---------- */
.filter-row { display: flex; flex-wrap: wrap; gap: 10px; margin: var(--space-lg) 0 var(--space-xl); }
.filter-btn {
  padding: 9px 18px; border-radius: 999px; border: 1px solid var(--color-border); background: var(--color-white);
  font-size: var(--fs-small); font-weight: 700; color: var(--color-bark); transition: all var(--dur-fast) var(--ease);
}
.filter-btn:hover { border-color: var(--color-brass); }
.filter-btn.is-active { background: var(--color-emerald-700); border-color: var(--color-emerald-700); color: var(--color-ivory); }

/* ---------- Masonry-ish grid ---------- */
.full-gallery-grid {
  column-count: 3; column-gap: var(--space-sm);
}
.full-gallery-grid .ph-photo {
  break-inside: avoid; margin-bottom: var(--space-sm); transition: opacity var(--dur-base) var(--ease), transform var(--dur-base) var(--ease);
}
.full-gallery-grid .ph-photo.is-hidden { display: none; }
@media (max-width: 900px) { .full-gallery-grid { column-count: 2; } }
@media (max-width: 560px) { .full-gallery-grid { column-count: 1; } }
