/* Grid */
.gallery-grid{
  display:grid;
  gap:18px;
  grid-template-columns:repeat(3,1fr);
}
@media (max-width:991px){ .gallery-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:575px){ .gallery-grid{ grid-template-columns:1fr; } }

/* Tile: same size for all, hide overflow for big images */
.gallery-item{
  display:block;
  position:relative;
  overflow:hidden;            /* hides overflow of large images */
  border-radius:10px;
  background:#eee;
  /* Choose ONE of these sizing strategies: */
  aspect-ratio: 4 / 3;        /* modern browsers (recommended) */
  /* If you need fixed height instead, comment aspect-ratio and use:
  height: 260px;
  */
}

.gallery-item img{
  width:100%;
  height:100%;
  object-fit:cover;           /* crops to fill tile */
  object-position:center;     /* centers subject */
  display:block;
  transform:scale(1);
  transition:transform .35s ease;
}
.gallery-item:hover img{ transform:scale(1.06); }

/* Lightbox base (same as before) */
.lightbox{ position:fixed; inset:0; background:rgba(0,0,0,.8); display:none; opacity:0; transition:opacity .25s; z-index:1050; }
.lightbox.open{ display:block; opacity:1; }
.lb-close{ position:absolute; top:16px; right:18px; background:transparent; color:#fff; border:0; font-size:34px; cursor:pointer; }
.lb-stage{ position:absolute; top:50%; left:50%; transform:translate(-50%,-56%); width:min(92vw,1100px); height:min(68vh,720px); display:grid; grid-template-columns:48px 1fr 48px; align-items:center; }
.lb-prev,.lb-next{ background:rgba(255,255,255,.15); border:0; color:#fff; font-size:28px; width:42px; height:42px; border-radius:50%; cursor:pointer; }
.lb-prev:hover,.lb-next:hover{ background:rgba(255,255,255,.3); }
.lb-image-wrap{ position:relative; overflow:hidden; background:#111; height:100%; display:flex; align-items:center; justify-content:center; border-radius:10px; }
.lb-image{ max-width:100%; max-height:100%; transform-origin:center; transition:transform .15s ease; }
.lb-caption{ position:absolute; left:50%; bottom:26px; transform:translateX(-50%); width:min(92vw,1100px); color:#fff; display:flex; gap:14px; align-items:baseline; justify-content:space-between; }
.lb-title{ font-size:20px; margin:0; }
.lb-subtitle{ margin:0; opacity:.9; }
.lb-zoom{ position:absolute; right:22px; bottom:22px; display:flex; gap:8px; align-items:center; background:rgba(0,0,0,.45); padding:8px 10px; border-radius:8px; color:#fff; }
.lb-zoom button{ background:#fff; color:#111; border:0; padding:6px 10px; border-radius:6px; font-weight:700; cursor:pointer; }
.lb-zoom-level{ min-width:52px; text-align:center; }
body.lb-no-scroll{ overflow:hidden; }
