/* ===========================
   GALLERY
   =========================== */
.gal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1.5rem; }
.gal-card { background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; transition: transform .3s ease, box-shadow .3s ease; }
.gal-card:hover { transform: translateY(-4px); box-shadow: 0 12px 32px rgba(0,0,0,.15); }
.gal-card a { text-decoration: none; color: inherit; display: block; }
.gal-thumb { position: relative; width: 100%; aspect-ratio: 16/10; overflow: hidden; background-color: var(--gc, var(--gray-light)); display: flex; align-items: center; justify-content: center; }
.gal-thumb img { width:100%; height:100%; object-fit:cover; transition:transform .4s ease; display:block; }
.gal-card:hover .gal-thumb img { transform:scale(1.05); }
.gal-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.6), transparent); display: flex; align-items: flex-end; padding: 1rem; }
.gal-count { color: #fff; font-size: .85rem; font-weight: 600; background: rgba(0,0,0,.5); padding: .25rem .75rem; border-radius: 20px; }
.gal-body { padding: 1rem; display: flex; align-items: center; gap: .75rem; }
.gal-icon { font-size: 1.5rem; flex-shrink: 0; }
.gal-body h3 { font-size: .95rem; margin: 0 0 .25rem; color: var(--dark); }
.gal-body p { font-size: .8rem; color: var(--gray-dark); margin: 0; }

/* Lightbox */
.lightbox { position: fixed; inset: 0; background: rgba(0,0,0,.92); z-index: 2000; display: flex; align-items: center; justify-content: center; opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility .3s ease; }
.lightbox.open { opacity: 1; visibility: visible; }
.lb-close { position: absolute; top: 1rem; left: 1rem; background: none; border: none; color: #fff; font-size: 1.8rem; cursor: pointer; z-index: 10; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: background .2s; }
.lb-close:hover { background: rgba(255,255,255,.15); }
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(255,255,255,.12); border: none; color: #fff; font-size: 2.5rem; cursor: pointer; z-index: 10; width: 50px; height: 80px; display: flex; align-items: center; justify-content: center; border-radius: 8px; transition: background .2s; }
.lb-nav:hover { background: rgba(255,255,255,.25); }
.lb-prev { right: 1rem; }
.lb-next { left: 1rem; }
.lb-viewport { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; padding: 2rem; }
.lb-viewport .lb-slide { display: none; max-width: 90vw; max-height: 85vh; }
.lb-viewport .lb-slide.active { display: flex; align-items: center; justify-content: center; }
.lb-viewport .lb-slide img { max-width: 100%; max-height: 85vh; object-fit: contain; border-radius: 4px; box-shadow: 0 4px 24px rgba(0,0,0,.4); }
.lb-caption { position: absolute; bottom: 1.5rem; left: 50%; transform: translateX(-50%); color: #fff; font-size: .95rem; background: rgba(0,0,0,.6); padding: .5rem 1.25rem; border-radius: 20px; }

/* Gallery sub-pages */
.gal-hero { position:relative; min-height:90px; padding-top:5rem; display:flex; align-items:center; justify-content:center; overflow:hidden; background:linear-gradient(135deg,var(--gh-bg,var(--red)),#000); }
.gal-hero-bg { position:absolute; inset:0; background-size:cover; background-position:center; opacity:.25; }
.gal-hero-content { position:relative; z-index:1; text-align:center; color:var(--text-on-dark); padding:.6rem 1rem; }
.gal-hero-icon { font-size:1.5rem; display:block; margin-bottom:.2rem; }
.gal-hero-content h1 { font-size:1.1rem; font-weight:800; margin-bottom:.25rem; }
.gal-hero-content p { font-size:.75rem; opacity:.85; margin-bottom:0; max-width:600px; margin-left:auto; margin-right:auto; }
.gal-hero-count { display:none; }
.gal-sub-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:1rem; }
.gal-sub-item { border-radius:8px; overflow:hidden; box-shadow:0 2px 12px rgba(0,0,0,.08); transition:transform .3s ease,box-shadow .3s ease; aspect-ratio:4/3; }
.gal-sub-item:hover { transform:scale(1.03); box-shadow:0 6px 20px rgba(0,0,0,.15); }
.gal-sub-item a { display:block; width:100%; height:100%; }
.gal-sub-item img { width:100%; height:100%; object-fit:cover; }
.empty-msg { text-align:center; padding:3rem; color:var(--gray-dark); font-size:1.1rem; }

/* Gallery slider */
.gal-slider { position:relative; width:100%; border-radius:var(--radius); overflow:hidden; box-shadow:0 8px 40px rgba(0,0,0,.15); background:transparent; }
.gal-slider-wrapper { position:relative; width:100%; height:min(600px,70vh); overflow:hidden; background:transparent; }
.gal-slide { position:absolute; inset:0; opacity:0; transition:opacity .6s ease, transform .6s ease; transform:scale(1.05); cursor:pointer; }
.gal-slide.active { opacity:1; transform:scale(1); z-index:1; }
.gal-slide img { width:100%; height:100%; object-fit:contain; }
.gal-slide-caption { position:absolute; bottom:0; left:0; right:0; padding:2rem; background:linear-gradient(transparent,rgba(0,0,0,.7)); color:var(--text-on-dark); font-size:1rem; font-weight:600; }
.gal-slider-btn { display:none; }
.gal-slider-dots { position:absolute; bottom:1rem; left:50%; transform:translateX(-50%); z-index:2; display:flex; gap:.5rem; }
.gal-slider-dots span { width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,.4); cursor:pointer; transition:all .3s; }
.gal-slider-dots span.active { background:#fff; width:28px; border-radius:5px; }
@media (max-width:768px) {
  .gal-slider-wrapper { height:250px; background:transparent; }
  .gal-hero { min-height:70px; }
  .gal-hero-content h1 { font-size:.95rem; }
  .gal-hero-icon { font-size:1.2rem; }
}
