﻿/* ==========================================================================
   Akadverse Pro — Gallery Widget
   Fully isolated, responsive, no overflow/collision.
   ========================================================================== */

/* -- Custom Properties (docs) ---------------------------------------------- */
/* --akv-gal-cols / --akv-gal-cols-t / --akv-gal-cols-m / --akv-gal-gap      */

/* ── Wrapper ─────────────────────────────────────────────────────────── */
.akv-gallery-wrapper { width: 100%; max-width: 100%; box-sizing: border-box; overflow: hidden; }
.akv-gallery-inner   { position: relative; width: 100%; max-width: 100%; box-sizing: border-box; }

/* ── Heading ─────────────────────────────────────────────────────────── */
.akv-gallery-heading { margin-bottom: clamp(20px, 4vw, 36px); }
.akv-gallery-title {
  margin: 0 0 8px;
  font-size: clamp(1.4rem, 4vw, 2.4rem);
  font-weight: 700;
  color: #2d1248;
  line-height: 1.2;
  word-break: break-word;
}
.akv-gallery-subtitle {
  margin: 0;
  font-size: clamp(0.82rem, 2vw, 1rem);
  color: #777;
  line-height: 1.6;
  word-break: break-word;
}

/* ── Filter Buttons ──────────────────────────────────────────────────── */
.akv-gallery-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-bottom: 20px;
  max-width: 100%;
}
.akv-filter-btn {
  padding: 7px 16px;
  border-radius: 50px;
  border: 1.5px solid #c0608a;
  background: transparent;
  color: #c0608a;
  font-size: clamp(0.75rem, 2vw, 0.88rem);
  font-weight: 600;
  cursor: pointer;
  letter-spacing: 0.02em;
  transition: background 0.22s, color 0.22s, transform 0.15s;
  white-space: nowrap;
  line-height: 1.4;
  box-sizing: border-box;
}
.akv-filter-btn:hover  { background: rgba(192,96,138,0.1); transform: translateY(-1px); }
.akv-filter-btn.active { background: #c0608a; color: #fff; border-color: #c0608a; }

/* ── Grid Layout ─────────────────────────────────────────────────────── */
.akv-gallery-layout-grid .akv-gallery-track {
  display: grid;
  grid-template-columns: repeat(var(--akv-gal-cols,3), 1fr);
  gap: var(--akv-gal-gap, 8px);
  width: 100%;
}

/* ── Masonry Layout ──────────────────────────────────────────────────── */
.akv-gallery-layout-masonry .akv-gallery-track {
  columns: var(--akv-gal-cols, 3);
  column-gap: var(--akv-gal-gap, 8px);
  width: 100%;
}
.akv-gallery-layout-masonry .akv-gallery-item       { break-inside: avoid; margin-bottom: var(--akv-gal-gap, 8px); }
.akv-gallery-layout-masonry .akv-gallery-item-inner  { padding-bottom: 0 !important; aspect-ratio: unset !important; }
.akv-gallery-layout-masonry .akv-gallery-item-inner img { position: static !important; width: 100%; display: block; }

/* ── Grid Span ───────────────────────────────────────────────────────── */
.akv-gallery-item-span-2 { grid-column: span 2; }
.akv-gallery-item-span-3 { grid-column: span 3; }

/* ── Gallery Item ────────────────────────────────────────────────────── */
.akv-gallery-item-inner {
  position: relative;
  overflow: hidden;
  display: block;
  width: 100%;
}
.akv-gallery-item-inner img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s ease;
  display: block;
}
.akv-gallery-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 1;
}
.akv-gallery-item-inner:hover .akv-gallery-overlay { opacity: 1; }
.akv-gallery-zoom-icon { color: #fff; cursor: pointer; }
.akv-gallery-caption {
  color: #fff;
  font-size: clamp(0.7rem, 2vw, 0.85rem);
  text-align: center;
  padding: 0 8px;
  line-height: 1.4;
  word-break: break-word;
}

/* ── Hover Effects ───────────────────────────────────────────────────── */
.akv-hover-zoom    .akv-gallery-item-inner:hover img { transform: scale(1.08); }
.akv-hover-fade    .akv-gallery-item-inner:hover img { opacity: 0.6; }
.akv-hover-slideup .akv-gallery-item-inner:hover img { transform: translateY(-5%); }

/* ── Shine ───────────────────────────────────────────────────────────── */
.akv-gallery-shine {
  position: absolute; top:-100%; left:-100%;
  width:60%; height:200%;
  background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.35) 50%, transparent 60%);
  transform: skewX(-20deg); transition: transform 0s;
  pointer-events: none; z-index: 2;
}
.akv-hover-shine .akv-gallery-item-inner:hover .akv-gallery-shine {
  transform: skewX(-20deg) translateX(400%); transition: transform 0.6s ease;
}

/* ── Carousel Layout ─────────────────────────────────────────────────── */
.akv-gallery-layout-carousel .akv-gallery-inner { overflow: hidden; }
.akv-gallery-layout-carousel .akv-gallery-track {
  display: flex;
  transition: transform 0.45s cubic-bezier(0.25,0.46,0.45,0.94);
  will-change: transform;
}
.akv-gallery-layout-carousel .akv-gallery-item {
  flex: 0 0 calc(100% / var(--akv-slide-show,3));
  padding: 0 calc(var(--akv-slide-gap,8px) / 2);
  box-sizing: border-box;
  min-width: 0;
}

/* ── Arrows ──────────────────────────────────────────────────────────── */
.akv-gallery-arrow {
  position: absolute; top:50%; transform: translateY(-50%);
  width: 40px; height: 40px; border-radius: 50%;
  background: rgba(0,0,0,0.45); color:#fff; border:none; cursor:pointer;
  z-index:5; display:flex; align-items:center; justify-content:center;
  transition: background 0.2s;
  flex-shrink: 0;
}
.akv-gallery-arrow:hover { background: rgba(0,0,0,0.7); }
.akv-arrow-prev { left: 8px; }
.akv-arrow-next { right: 8px; }

/* ── Dots ────────────────────────────────────────────────────────────── */
.akv-gallery-dots { display:flex; justify-content:center; gap:6px; margin-top:12px; flex-wrap:wrap; }
.akv-gallery-dot {
  width:8px; height:8px; border-radius:50%;
  background: rgba(0,0,0,0.2); border:none; cursor:pointer;
  transition: background 0.2s, transform 0.2s; flex-shrink:0;
}
.akv-gallery-dot.active { background: #c0608a; transform: scale(1.25); }

/* ── Lightbox ────────────────────────────────────────────────────────── */
.akv-lightbox {
  position:fixed; inset:0; z-index:99999;
  background: var(--akv-lb-bg, rgba(0,0,0,0.92));
  display:flex; align-items:center; justify-content:center; flex-direction:column;
}
.akv-lb-hidden { display:none !important; }
.akv-lb-content {
  position:relative; display:flex; flex-direction:column; align-items:center;
  max-width: min(90vw, 1200px); max-height:80vh; box-sizing:border-box;
}
@keyframes akvLbFade { from{opacity:0;transform:scale(0.95)} to{opacity:1;transform:scale(1)} }
.akv-lb-img {
  max-width:100%; max-height:75vh; object-fit:contain; border-radius:4px;
  animation: akvLbFade 0.25s ease;
  display: block;
}
.akv-lb-caption {
  color: rgba(255,255,255,0.8); font-size:0.9rem; margin-top:12px;
  text-align:center; max-width:80vw; word-break:break-word;
}
.akv-lb-prev, .akv-lb-next {
  position:fixed; top:50%; transform:translateY(-50%);
  background: rgba(255,255,255,0.12); border:none; color:#fff;
  width:44px; height:44px; border-radius:50%; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  transition:background 0.2s; z-index:2;
}
.akv-lb-prev:hover, .akv-lb-next:hover { background: rgba(255,255,255,0.25); }
.akv-lb-prev { left:12px; }
.akv-lb-next { right:12px; }
.akv-lb-topbar {
  position:fixed; top:0; left:0; right:0;
  display:flex; align-items:center; gap:12px; padding:12px 16px; z-index:3;
  background: linear-gradient(180deg, rgba(0,0,0,0.5) 0%, transparent 100%);
}
.akv-lb-counter { margin-right:auto; color:rgba(255,255,255,0.8); font-size:0.85rem; font-weight:500; }
.akv-lb-download {
  display:flex; align-items:center; justify-content:center;
  width:36px; height:36px; border-radius:50%;
  background: rgba(255,255,255,0.12); color:#fff; text-decoration:none;
  transition:background 0.2s;
}
.akv-lb-download:hover { background: rgba(255,255,255,0.26); }
.akv-lb-download svg  { stroke:#fff; }
.akv-lb-topbar .akv-lb-close { position:static; top:auto; right:auto; width:36px; height:36px; flex-shrink:0; }
.akv-lb-close {
  position:absolute; top:16px; right:16px;
  background: rgba(255,255,255,0.12); border:none; color:#fff;
  width:36px; height:36px; border-radius:50%; font-size:1.4rem; line-height:1;
  cursor:pointer; display:flex; align-items:center; justify-content:center;
  transition:background 0.2s;
}
.akv-lb-close:hover { background: rgba(255,255,255,0.28); }
body.akv-lb-open { overflow:hidden; }

/* ── Load More ───────────────────────────────────────────────────────── */
.akv-lm-hidden      { display:none !important; }
.akv-load-more-wrap { display:flex; justify-content:center; margin-top:clamp(20px,4vw,32px); }
.akv-load-more-btn {
  display:inline-flex; align-items:center; gap:8px;
  padding: clamp(11px,2vw,14px) clamp(24px,5vw,40px);
  background:#c0608a; color:#fff; border:none; border-radius:50px;
  font-size:clamp(0.85rem,2vw,0.95rem); font-weight:600; cursor:pointer;
  letter-spacing:0.03em; transition:transform 0.2s, box-shadow 0.2s, opacity 0.2s;
  line-height:1.4; white-space:nowrap; max-width:100%; box-sizing:border-box;
}
.akv-load-more-btn:hover:not(:disabled) { transform:translateY(-2px); box-shadow:0 6px 20px rgba(192,96,138,0.3); }
.akv-load-more-btn:disabled,
.akv-load-more-btn.akv-lm-done          { opacity:0.5; cursor:default; transform:none; box-shadow:none; }

/* ── Entrance Animations ─────────────────────────────────────────────── */
.akv-entrance-fadeIn .akv-gallery-item,
.akv-entrance-fadeInUp .akv-gallery-item,
.akv-entrance-zoomIn .akv-gallery-item,
.akv-entrance-stagger .akv-gallery-item { opacity:0; transition:opacity 0.5s ease, transform 0.5s ease; }

.akv-entrance-fadeIn   .akv-gallery-item.akv-animated { opacity:1; }
.akv-entrance-fadeInUp .akv-gallery-item              { transform:translateY(24px); }
.akv-entrance-fadeInUp .akv-gallery-item.akv-animated { opacity:1; transform:translateY(0); }
.akv-entrance-zoomIn   .akv-gallery-item              { transform:scale(0.9); }
.akv-entrance-zoomIn   .akv-gallery-item.akv-animated { opacity:1; transform:scale(1); }
.akv-entrance-stagger  .akv-gallery-item              { transform:translateY(20px); }
.akv-entrance-stagger  .akv-gallery-item.akv-animated { opacity:1; transform:translateY(0); }

/* ── Responsive ──────────────────────────────────────────────────────── */
@media (max-width: 1024px) {
  .akv-gallery-layout-grid    .akv-gallery-track { grid-template-columns: repeat(var(--akv-gal-cols-t,2),1fr); }
  .akv-gallery-layout-masonry .akv-gallery-track { columns: var(--akv-gal-cols-t,2); }
  .akv-gallery-layout-carousel .akv-gallery-item { flex: 0 0 calc(100% / var(--akv-slide-show-t,2)); }
}
@media (max-width: 767px) {
  .akv-gallery-layout-grid    .akv-gallery-track { grid-template-columns: repeat(var(--akv-gal-cols-m,2),1fr); }
  .akv-gallery-layout-masonry .akv-gallery-track { columns: var(--akv-gal-cols-m,2); }
  .akv-gallery-layout-carousel .akv-gallery-item { flex: 0 0 calc(100% / var(--akv-slide-show-m,1)); }
  .akv-gallery-item-span-2, .akv-gallery-item-span-3 { grid-column: span 1; }
  .akv-lb-prev { left:4px; } .akv-lb-next { right:4px; }
  .akv-lb-prev, .akv-lb-next { width:36px; height:36px; }
}
@media (max-width: 480px) {
  .akv-gallery-layout-grid    .akv-gallery-track { grid-template-columns: repeat(2,1fr); gap: 4px; }
  .akv-gallery-layout-masonry .akv-gallery-track { columns: 2; column-gap: 4px; }
}

/* ── Elementor Editor ────────────────────────────────────────────────── */
.elementor-editor-active .akv-entrance-fadeIn .akv-gallery-item,
.elementor-editor-active .akv-entrance-fadeInUp .akv-gallery-item,
.elementor-editor-active .akv-entrance-zoomIn .akv-gallery-item,
.elementor-editor-active .akv-entrance-stagger .akv-gallery-item { opacity:1 !important; transform:none !important; }
.elementor-editor-active .akv-lm-hidden      { display:block !important; opacity:1 !important; }
.elementor-editor-active .akv-load-more-wrap { display:none !important; }