.gallery-section {
  margin-bottom: 0;
}

.gallery-region-wrap {
  gap: 1.3rem;
}

.gallery-region {
  position: relative;
  overflow: hidden;
  padding: clamp(1rem, 2.4vw, 1.55rem);
  border-radius: 10px;
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, 0.72);
  box-shadow: var(--shadow-light);
}

.gallery-region--mexico {
  border-top: 5px solid var(--green);
}

.gallery-region--cambodia {
  border-top: 5px solid var(--blue);
}

.gallery-region-header {
  margin-bottom: 1rem;
}

.gallery-region-kicker {
  margin: 0 0 0.25rem;
  color: #6b7280;
  font-size: 0.72rem;
  font-weight: 850;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

.gallery-region-title {
  color: var(--ink);
  font-size: clamp(1.4rem, 2.8vw, 2.25rem);
  line-height: 1;
  letter-spacing: -0.045em;
}

.gallery-region-count {
  padding: 0.32rem 0.54rem;
  border-radius: 6px;
  background: rgba(22, 32, 47, 0.06);
  color: #475569;
  font-weight: 800;
}

.project-gallery--all {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.project-gallery--mexico {
  grid-template-columns: minmax(190px, 0.75fr) minmax(220px, 1fr) minmax(280px, 1.35fr);
}

.project-gallery--cambodia {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.project-gallery--all .project-photo {
  border-radius: 8px;
  border: 1px solid rgba(22, 32, 47, 0.14);
  background: #0f172a;
  box-shadow: none;
}

.project-gallery--all .project-photo img {
  min-height: 240px;
  max-height: none;
  aspect-ratio: 4 / 3;
  transition: transform 420ms ease, filter 260ms ease;
}

.project-gallery--mexico .project-photo img {
  min-height: 320px;
}

.project-photo--portrait img {
  aspect-ratio: 3 / 4;
}

.project-photo--wide img {
  aspect-ratio: 16 / 9;
}

.project-gallery--all .project-photo:hover img,
.project-gallery--all .project-photo:focus-within img {
  transform: scale(1.04);
  filter: saturate(1.03) contrast(1.02);
}

.project-gallery--all .project-photo:hover,
.project-gallery--all .project-photo:focus-within {
  transform: translateY(-5px);
  border-color: rgba(201, 87, 27, 0.38);
  box-shadow: 0 24px 45px rgba(22, 32, 47, 0.18);
}

.photo-lightbox__dialog {
  width: min(1180px, 100%);
}

.photo-lightbox__nav,
.photo-lightbox__close {
  border-radius: 7px;
  background: rgba(20, 52, 87, 0.82);
}

body.js-enhanced .hero-content,
body.js-enhanced .hero-visual {
  opacity: 0;
  transform: translateY(18px);
}

body.js-enhanced.js-ready .hero-content,
body.js-enhanced.js-ready .hero-visual {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 620ms ease, transform 620ms ease;
}

body.js-enhanced.js-ready .hero-visual {
  transition-delay: 110ms;
}
