/* widget: mr-gallery */
.mr-gallery { padding: 104px 0 120px; background: var(--mr-white); }
.mr-gallery__head { gap: 23px; max-width: 768px; }
.mr-gallery__title { color: var(--mr-primary); }
.mr-gallery__head .mr-lead { max-width: 768px; }

/* bento: large (2×2) + two small on the right, then tall + wide */
.mr-gallery__grid {
  display: grid; gap: 24px; margin-top: 96px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-auto-rows: 300px;
}
.mr-gallery__cell--large { grid-column: span 2; grid-row: span 2; }
.mr-gallery__cell--tall { grid-row: span 2; }
.mr-gallery__cell--wide { grid-column: span 2; }

.mr-gallery__item {
  position: relative; display: block; width: 100%; height: 100%; overflow: hidden; cursor: zoom-in;
  border-radius: var(--mr-radius); border: 1px solid rgba(139, 114, 103, .1); background: var(--mr-sand-2);
}
.mr-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--mr-ease); }
.mr-gallery__item::after {
  content: attr(data-caption); position: absolute; left: 0; right: 0; bottom: 0; padding: 48px 24px 20px;
  color: var(--mr-white); font-family: var(--mr-font-display); font-weight: 600; font-size: 1.125rem; line-height: 1.3;
  background: linear-gradient(0deg, rgba(31, 27, 18, .6), rgba(31, 27, 18, 0));
  opacity: 0; transform: translateY(8px); transition: opacity .5s var(--mr-ease), transform .5s var(--mr-ease);
}
.mr-gallery__item:hover img { transform: scale(1.05); }
.mr-gallery__item:hover::after, .mr-gallery__item:focus-visible::after { opacity: 1; transform: none; }

.mr-gallery__cta { display: flex; flex-direction: column; align-items: center; gap: 24px; margin-top: 96px; }
.mr-gallery__wave { width: 100px; height: 12px; color: #7e9896; opacity: .5; margin-bottom: 24px; }
.mr-gallery__cta-title { color: var(--mr-primary); }
.mr-gallery__cta-btn { border-radius: 4px; padding: 16px 32px; font-size: 1rem; line-height: 24px; box-shadow: 0 1px 2px rgba(0, 0, 0, .1); }

@media (max-width: 900px) {
  .mr-gallery__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 240px; gap: 16px; margin-top: 56px; }
  .mr-gallery__cell--large { grid-column: span 2; grid-row: span 1; }
  /* tall + wide sit side by side as two portrait tiles */
  .mr-gallery__cell--tall, .mr-gallery__cell--wide { grid-column: span 1; grid-row: span 2; }
  .mr-gallery__cta { margin-top: 64px; }
}
@media (max-width: 520px) {
  .mr-gallery__grid { grid-auto-rows: 200px; }
}

/* ---------- lightbox ---------- */
.mr-lightbox { width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgba(31, 27, 18, .95); color: #fff; }
.mr-lightbox::backdrop { background: transparent; }
.mr-lightbox[open] { display: grid; place-items: center; animation: mr-lb-in .35s var(--mr-ease); }
@keyframes mr-lb-in { from { opacity: 0; } to { opacity: 1; } }
.mr-lightbox__figure { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 64px 80px; max-width: 100%; }
.mr-lightbox__img { max-width: min(1100px, 100%); max-height: calc(100dvh - 180px); min-width: min(720px, 100%); width: auto; height: auto; object-fit: contain; border-radius: 4px; box-shadow: 0 30px 60px rgba(0, 0, 0, .4); }
.mr-lightbox__caption { font-family: var(--mr-font-display); font-size: 1.25rem; color: rgba(255, 255, 255, .85); text-align: center; }
.mr-lightbox__count { position: absolute; top: 28px; left: 32px; font-family: var(--mr-font-label); font-size: var(--mr-label); letter-spacing: .2em; color: rgba(255, 255, 255, .55); }
.mr-lightbox__btn {
  position: absolute; display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
  border: 1px solid rgba(255, 255, 255, .25); border-radius: 50%; background: transparent; color: #fff; cursor: pointer;
  transition: background-color .2s, color .2s;
}
.mr-lightbox__btn:hover { background: #fff; color: var(--mr-ink); }
.mr-lightbox__btn svg { width: 22px; height: 22px; }
.mr-lightbox__close { top: 20px; right: 24px; }
.mr-lightbox__prev { left: 20px; top: 50%; transform: translateY(-50%); }
.mr-lightbox__next { right: 20px; top: 50%; transform: translateY(-50%); }
@media (max-width: 640px) {
  .mr-lightbox__figure { padding: 72px 16px; }
  .mr-lightbox__img { min-width: 0; }
  .mr-lightbox__prev, .mr-lightbox__next { top: auto; bottom: 20px; transform: none; }
}
