/* =====================================================================
   Gallery (/gallery) - page-only styles on top of luminate.css
   ===================================================================== */

.gl-hero { padding-bottom: clamp(32px, 5vw, 56px); }
.gl-hero .lx-lede { max-width: 44ch; }

/* ---------- Photo grid ----------
   4 columns (2 on phones). Big photos span 2 x 2. Row height comes from the
   column width so a big photo always lines up with two rows of small ones. */

.gl-section { padding-top: 0; }
.gl-section .lx-wrap { container-type: inline-size; }
.gl-grid {
  --gl-gap: clamp(8px, 1.2vw, 16px);
  --gl-cols: 4;
  list-style: none; margin: 0; padding: 0;
  display: grid; grid-template-columns: repeat(var(--gl-cols), minmax(0, 1fr)); grid-auto-flow: dense;
  gap: var(--gl-gap);
}
@media (max-width: 760px) { .gl-grid { --gl-cols: 2; } }
.gl-item--big { grid-column: span 2; grid-row: span 2; }

.gl-tile {
  display: block; position: relative; overflow: hidden;
  aspect-ratio: 4 / 3; border-radius: var(--lx-radius-sm); background: var(--lx-raise);
  cursor: zoom-in;
}
@supports (width: 1cqw) {
  .gl-grid { grid-auto-rows: calc((100cqw - (var(--gl-cols) - 1) * var(--gl-gap)) / var(--gl-cols) * .75); }
  .gl-tile { aspect-ratio: auto; height: 100%; }
}
.gl-tile img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--lx-ease), opacity .2s; }
.gl-tile:hover img { transform: scale(1.03); }
.gl-tile:focus-visible { outline-offset: 3px; }

.gl-tag { margin-top: clamp(28px, 4vw, 40px); text-align: center; font-size: 15px; }
.gl-tag strong { color: var(--lx-ink); font-weight: 600; }
.gl-tag a { color: var(--lx-link-dark); }

/* ---------- Lightbox ---------- */

.gl-box {
  width: 100vw; height: 100vh; height: 100dvh; max-width: none; max-height: none;
  margin: 0; padding: 0; border: 0;
  background: rgba(7, 10, 26, .97); color: var(--lx-ink);
  overscroll-behavior: contain;
}
.gl-box::backdrop { background: rgba(7, 10, 26, .85); }
.gl-box-inner {
  position: relative; height: 100%;
  display: grid; place-items: center;
  padding: 64px 88px 32px;
}
.gl-box-figure { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 14px; max-width: 100%; max-height: 100%; min-height: 0; }
.gl-box-img {
  max-width: min(100%, 1200px); max-height: calc(100dvh - 160px); width: auto; height: auto;
  object-fit: contain; border-radius: var(--lx-radius-sm);
  touch-action: pan-y pinch-zoom; user-select: none; -webkit-user-drag: none;
}
.gl-box-caption { font-size: 15px; color: var(--lx-ink-2); text-align: center; max-width: 60ch; }
.gl-box-count { color: var(--lx-ink-3); margin-left: 8px; font-variant-numeric: tabular-nums; white-space: nowrap; }

.gl-box-btn {
  position: absolute; z-index: 2;
  width: 48px; height: 48px; border: 0; border-radius: var(--lx-btn-r); cursor: pointer;
  display: grid; place-items: center; font-size: 17px;
  background: var(--lx-raise); color: #fff; box-shadow: inset 0 0 0 1px var(--lx-line);
  transition: background-color .2s;
}
.gl-box-btn:hover { background: var(--lx-accent); box-shadow: none; }
.gl-box-btn:focus-visible { outline: 2px solid var(--lx-link-dark); outline-offset: 3px; }
.gl-box-prev { left: 20px; top: 50%; transform: translateY(-50%); }
.gl-box-next { right: 20px; top: 50%; transform: translateY(-50%); }
.gl-box-close { top: 12px; right: 20px; }

@media (max-width: 760px) {
  .gl-box-inner { padding: 64px 16px 88px; }
  .gl-box-img { max-height: calc(100dvh - 200px); }
  .gl-box-prev, .gl-box-next { top: auto; bottom: 20px; transform: none; }
  .gl-box-prev { left: calc(50% - 56px); }
  .gl-box-next { right: calc(50% - 56px); }
  .gl-box-close { right: 12px; }
}
body.gl-box-open { overflow: hidden; }

/* =====================================================================
   Gallery refresh: drifting photo hero, theme filters, socials
   ===================================================================== */

/* ---------- Hero: two rows of photos drifting in opposite directions ---------- */

.gl-hero {
  position: relative; isolation: isolate; overflow: hidden;
  min-height: min(78svh, 760px); display: flex; align-items: center; justify-content: center;
  padding: clamp(96px, 12vw, 140px) 0 clamp(64px, 8vw, 96px); text-align: center;
}
.gl-drift { position: absolute; inset: 0; z-index: -1; display: flex; flex-direction: column; justify-content: center; gap: 14px; transform: rotate(-4deg) scale(1.15); }
.gl-drift-row { display: flex; gap: 14px; width: max-content; }
.gl-drift-row img {
  width: clamp(200px, 22vw, 340px); aspect-ratio: 3 / 2; height: auto; object-fit: cover; border-radius: var(--lx-radius-sm);
  opacity: .55; filter: saturate(1.25) brightness(.9);
}
@media (prefers-reduced-motion: no-preference) {
  .gl-drift-row--a { animation: gl-drift 80s linear infinite; }
  .gl-drift-row--b { animation: gl-drift 95s linear infinite reverse; }
}
@keyframes gl-drift { to { transform: translateX(-50%); } }
.gl-hero::after {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background:
    radial-gradient(ellipse at center, rgba(7, 10, 26, .82) 0%, rgba(7, 10, 26, .55) 45%, rgba(7, 10, 26, .3) 75%),
    linear-gradient(to bottom, var(--lx-black), transparent 18%, transparent 78%, var(--lx-black));
}
.gl-hero-content { position: relative; }
.gl-hero .lx-lede { margin: 16px auto 0; max-width: 40ch; color: #fff; }
.gl-follow-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 30px; }

/* ---------- Filters + grid ---------- */

.gl-section { padding-top: clamp(24px, 4vw, 48px); }
.gl-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 24px; margin-bottom: clamp(20px, 3vw, 28px); }
.gl-filters { display: flex; flex-wrap: wrap; gap: 8px; }
.gl-filters button {
  min-height: 40px; padding: 8px 14px; border: 0; border-radius: var(--lx-btn-r); cursor: pointer;
  font: 500 14px/1 var(--lx-font); color: var(--lx-ink-2);
  background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px var(--lx-line);
  transition: background-color .2s, color .2s, box-shadow .2s;
}
.gl-filters button:hover { color: #fff; box-shadow: inset 0 0 0 1px rgba(249, 192, 84, .5); }
.gl-filters button[aria-pressed="true"] { background: var(--lx-gold); color: var(--lx-navy); box-shadow: none; font-weight: 700; }
@media (max-width: 640px) {
  .gl-filters { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 calc(var(--lx-gutter) * -1); padding: 2px var(--lx-gutter); }
  .gl-filters::-webkit-scrollbar { display: none; }
  .gl-filters button { flex: none; }
}

.gl-tile { box-shadow: 0 0 0 1px rgba(249, 192, 84, .14); transition: box-shadow .35s var(--lx-ease); }
.gl-tile:hover { box-shadow: 0 0 0 1px rgba(249, 192, 84, .6), 0 0 30px -6px rgba(249, 192, 84, .45); }
.gl-zoom {
  position: absolute; right: 10px; bottom: 10px; width: 36px; height: 36px; display: grid; place-items: center;
  border-radius: var(--lx-btn-r); background: rgba(0, 0, 51, .7); color: #fff; font-size: 13px;
  opacity: 0; transform: translateY(4px); transition: opacity .25s var(--lx-ease), transform .25s var(--lx-ease);
}
.gl-tile:hover .gl-zoom, .gl-tile:focus-visible .gl-zoom { opacity: 1; transform: none; }
@media (hover: none) { .gl-zoom { opacity: .9; transform: none; } }

.gl-item--follow { grid-column: span 1; }
.gl-follow {
  height: 100%; display: flex; flex-direction: column; justify-content: center; gap: 12px; padding: clamp(16px, 2vw, 24px);
  border-radius: var(--lx-radius-sm); text-align: left;
  background: radial-gradient(ellipse at 20% 0%, rgba(249, 192, 84, .35), transparent 55%), linear-gradient(140deg, #cc0066, #6b2fd6 70%, #000033);
  box-shadow: 0 0 0 1px rgba(249, 192, 84, .4), 0 18px 50px -24px rgba(204, 0, 102, .8);
}
.gl-follow-icon { font-size: 30px; color: #fff; }
.gl-follow p { font-size: 15px; line-height: 1.4; color: rgba(255, 255, 255, .9); }
.gl-follow p strong { display: block; font: 700 1.25rem/1.2 var(--lx-font-display); color: #fff; margin-bottom: 2px; }
.gl-follow .lx-btn { align-self: flex-start; }
@media (max-width: 760px) { .gl-item--follow { grid-column: span 2; } .gl-follow { flex-direction: row; flex-wrap: wrap; align-items: center; } }

/* ---------- Lightbox actions ---------- */

.gl-box-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; }

/* ---------- Follow the lights ---------- */

.gl-socials { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; margin: 0; padding: 0; list-style: none; }
.gl-social-card {
  --brand: var(--lx-gold);
  position: relative; display: flex; flex-direction: column; gap: 4px; height: 100%;
  padding: 22px 20px 20px; border-radius: var(--lx-radius); text-decoration: none; color: #fff;
  background: var(--lx-raise); box-shadow: 0 0 0 1px rgba(255, 255, 255, .08);
  transition: transform .3s var(--lx-ease), box-shadow .3s var(--lx-ease);
}
.gl-social-card > i { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 12px; font-size: 22px; color: #fff; background: var(--brand); margin-bottom: 12px; }
.gl-social-card strong { font: 700 1.1875rem/1.2 var(--lx-font-display); letter-spacing: -0.015em; }
.gl-social-card span { font-size: 14px; color: var(--lx-gold); font-weight: 600; }
.gl-social-card small { font-size: 14px; color: var(--lx-ink-2); line-height: 1.4; margin-top: 4px; flex: 1; }
.gl-social-card b { margin-top: 14px; font-size: 15px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }
.gl-social-card b i { transition: transform .25s var(--lx-ease); }
.gl-social-card:hover { transform: translateY(-4px); box-shadow: 0 0 0 1px var(--brand), 0 20px 50px -20px var(--brand); }
.gl-social-card:hover b i { transform: translateX(3px); }
.gl-social--instagram { --brand: #d62976; }
.gl-social--instagram > i { background: radial-gradient(circle at 30% 110%, #fdc468 0%, #fa7e1e 25%, #d62976 50%, #962fbf 75%, #4f5bd5 100%); }
.gl-social--tiktok { --brand: #25f4ee; }
.gl-social--tiktok > i { background: #000; box-shadow: inset 0 0 0 1px rgba(255,255,255,.2), -2px -2px 0 -1px #25f4ee, 2px 2px 0 -1px #fe2c55; }
.gl-social--facebook { --brand: #1877f2; }
.gl-social--youtube { --brand: #ff0000; }
.gl-social--x { --brand: #8a90a8; }
.gl-social--x > i { background: #000; box-shadow: inset 0 0 0 1px rgba(255,255,255,.25); }
@media (max-width: 1020px) { .gl-socials { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 640px) { .gl-socials { grid-template-columns: 1fr 1fr; } .gl-socials li:last-child { grid-column: 1 / -1; } }

.gl-reels { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 2fr); gap: clamp(24px, 4vw, 56px); align-items: center; margin-top: clamp(48px, 7vw, 80px); }
.gl-reels-text p { margin: 10px 0 20px; max-width: 36ch; }
.gl-reels-text strong { color: var(--lx-gold); }
.gl-reel-list { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.gl-reel-list li { position: relative; }
.gl-reel-list video { width: 100%; aspect-ratio: 9 / 16; height: auto; object-fit: cover; border-radius: var(--lx-radius-sm); background: var(--lx-raise); box-shadow: 0 0 0 1px rgba(249, 192, 84, .25); filter: none; }
.gl-reel-list span { display: block; margin-top: 8px; font-size: 13px; color: var(--lx-ink-2); text-align: center; }
@media (max-width: 860px) {
  .gl-reels { grid-template-columns: 1fr; text-align: center; }
  .gl-reels-text p { margin-left: auto; margin-right: auto; }
  .gl-reel-list { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 42%; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; margin: 0 calc(var(--lx-gutter) * -1); padding: 0 var(--lx-gutter); }
  .gl-reel-list li { scroll-snap-align: start; }
}

/* ---------- Footer social icons (shared) are made bolder in luminate.css ---------- */

/* Phones: the drifting photos fill the whole screen-high hero */
@media (max-width: 760px) {
  .gl-hero { min-height: 100svh; padding: 110px 0 90px; }
  body:has(.lx-banner) .gl-hero { min-height: calc(100svh - var(--lx-banner-h, 48px)); }
  .gl-drift { gap: 12px; transform: rotate(-4deg) scale(1.2); }
  .gl-drift-row { gap: 12px; }
  .gl-drift-row img { width: auto; height: calc(50svh - 18px); aspect-ratio: 3 / 4; opacity: .6; }
  .gl-follow-row .lx-btn { flex: 1 1 100%; max-width: 320px; }
}
@media (max-width: 760px) {
  .gl-hero::after { background: radial-gradient(ellipse at center, rgba(7, 10, 26, .78) 0%, rgba(7, 10, 26, .45) 55%, rgba(7, 10, 26, .2) 85%), linear-gradient(to bottom, var(--lx-black), transparent 14%, transparent 84%, var(--lx-black)); }
}
