/*
  Custom Gallery Extension – grid styles
  Compatible with Elementor containers/widgets.
*/

:root{
  --cge-gap: 0px;
}

/* Grid wrapper */
.cge-gallery-grid{
  width: 100%;
  max-width: 100%;
  box-sizing: border-box;
  display: grid;
  gap: var(--cge-gap, 0px) !important;
  padding: 0;
  margin: 0;
  grid-auto-flow: dense;
}

/* Items */
.cge-gallery-grid__item{
  display: block;
  position: relative;
  overflow: hidden;
  min-width: 0;
}

/* Media */
.cge-gallery-grid img,
.cge-gallery-grid video{
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  pointer-events: none;
  display: block;
}

/* Overlay */
.cge-gallery-grid__item-overlay{
  opacity: 0;
  background-color: rgba(0,0,0,0.40);
  color: #fff;
  position: absolute;
  inset: 0;
  z-index: 10;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  transition: opacity 0.22s ease;
  cursor: pointer;
  text-align: center;
  padding: 14px;
  gap: 0;
}

.cge-gallery-grid__item:hover .cge-gallery-grid__item-overlay{ opacity: 1; }

/* Typography */
.cge-gallery-grid__item-title,
.cge-gallery-grid__item-heading{
  font-family: 'Oswald', system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  font-weight: 400;
  color: #fff !important;
  margin: 0 0 10px 0;
  letter-spacing: 0.02em;
  text-transform: none !important;
  line-height: 1.05;
}

.cge-gallery-grid__item-subtitles{
  display: flex;
  flex-direction: column;
  gap: 0; /* no extra spacing between subtitle lines */
}

.cge-gallery-grid__item-subtitle{
  font-family: 'Oswald', system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  font-weight: 400;
  color: #fff !important;
  margin: 0;
  line-height: 1.05;
}

/* Disabled items */
.cge-gallery-grid__item--disabled{ cursor: default; }
.cge-gallery-grid__item--disabled .cge-gallery-grid__item-overlay{ cursor: default; }

/* ===== Desktop (>=1025px) ===== */
@media (min-width: 1025px){
  .cge-gallery-grid{
    grid-template-columns: repeat(8, minmax(0, 1fr));
    grid-auto-rows: minmax(80px, 340px);
  }

  /* Sizes */
  .cge-gallery-grid__item.horizontal{ grid-column-end: span 2; grid-row-end: span 1; }
  .cge-gallery-grid__item.large{ grid-column-end: span 2; grid-row-end: span 2; }
  .cge-gallery-grid__item.horizontal-large{ grid-column-end: span 3; grid-row-end: span 2; }
  .cge-gallery-grid__item.big-square{ grid-column-end: span 3; grid-row-end: span 3; }
  .cge-gallery-grid__item.horizontal-big{ grid-column-end: span 4; grid-row-end: span 2; }

  .cge-gallery-grid__item-title,
  .cge-gallery-grid__item-heading{ font-size: 18px; }
  .cge-gallery-grid__item-subtitle{ font-size: 12px; }
}

/* ===== Tablet portrait (768–1024) ===== */
@media (min-width: 768px) and (max-width: 1024px){
  .cge-gallery-grid{
    grid-template-columns: repeat(2, minmax(0, 1fr));
    /* 9:16 feel (portrait): tall but not absurd */
    grid-auto-rows: clamp(280px, 42vw, 520px);
  }

  /* Movement tiles: default stays 1 col, the others take both columns, max 2 rows */
  .cge-gallery-grid__item.horizontal{ grid-column-end: span 2; grid-row-end: span 1; }
  .cge-gallery-grid__item.large{ grid-column-end: span 2; grid-row-end: span 2; }
  .cge-gallery-grid__item.horizontal-large{ grid-column-end: span 2; grid-row-end: span 2; }
  .cge-gallery-grid__item.big-square{ grid-column-end: span 2; grid-row-end: span 2; }
  .cge-gallery-grid__item.horizontal-big{ grid-column-end: span 2; grid-row-end: span 2; }

  /* Tablet: slightly larger font vs mobile */
  .cge-gallery-grid__item-title,
  .cge-gallery-grid__item-heading{ font-size: 16px; }
  .cge-gallery-grid__item-subtitle{ font-size: 11px; }
}

/* ===== Tablet landscape (881–1024, optional 3 columns) ===== */
@media (min-width: 881px) and (max-width: 1024px){
  .cge-gallery-grid{
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-auto-rows: clamp(240px, 28vw, 420px);
  }

  /* With 3 cols, keep motion but don’t exceed 2 rows */
  .cge-gallery-grid__item.horizontal{ grid-column-end: span 2; grid-row-end: span 1; }
  .cge-gallery-grid__item.large{ grid-column-end: span 2; grid-row-end: span 2; }
  .cge-gallery-grid__item.horizontal-large{ grid-column-end: span 3; grid-row-end: span 2; }
  .cge-gallery-grid__item.big-square{ grid-column-end: span 3; grid-row-end: span 2; }
  .cge-gallery-grid__item.horizontal-big{ grid-column-end: span 3; grid-row-end: span 2; }
}

/* ===== Mobile (<=767) ===== */
@media (max-width: 767px){
  .cge-gallery-grid{
    grid-template-columns: minmax(0, 1fr);
    grid-auto-rows: auto;
    align-items: start;
  }

  .cge-gallery-grid__item,
  .cge-gallery-grid__item.horizontal,
  .cge-gallery-grid__item.large,
  .cge-gallery-grid__item.horizontal-large,
  .cge-gallery-grid__item.big-square,
  .cge-gallery-grid__item.horizontal-big{
    grid-column: 1 / -1 !important;
    grid-row: auto !important;
    height: auto !important;
    aspect-ratio: auto !important;
  }

  .cge-gallery-grid img,
  .cge-gallery-grid video{
    width: 100%;
    height: auto !important;
    aspect-ratio: auto !important;
    object-fit: contain;
  }

  .cge-gallery-grid__item-title,
  .cge-gallery-grid__item-heading{ font-size: 14px; margin-bottom: 8px; }
  .cge-gallery-grid__item-subtitle{ font-size: 10px; }
}

@media (max-width: 360px){
  .cge-gallery-grid{ grid-template-columns: 1fr; }
}

/* ===== Stagger fade-in (enabled per gallery) ===== */
.cge-gallery-grid[data-stagger="1"] .cge-gallery-grid__item{
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 420ms ease, transform 420ms ease;
  will-change: opacity, transform;
}
.cge-gallery-grid[data-stagger="1"] .cge-gallery-grid__item.is-visible{
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce){
  .cge-gallery-grid[data-stagger="1"] .cge-gallery-grid__item{
    opacity: 1;
    transform: none;
    transition: none;
  }
}
