/* ==========================================================================
   UGC Portfolio — Data-driven video categories, horizontal rails, modal
   ========================================================================== */

/* ══════════════════════════════════════════════════════════════════════════
   STICKY CATEGORY NAV
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Portfolio Section Heading ───────────────────────────────────────────── */
.ugc-section-heading {
  text-align: center;
  padding: var(--space-16) var(--space-6) var(--space-4);
  background: var(--color-bg, #FAF8F5);
}

.ugc-section-title {
  font-family: var(--font-display);
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 300;
  color: var(--color-text);
  line-height: 1.1;
}

.ugc-nav {
  position: relative;
  z-index: 10;
  background: var(--color-bg, #FAF8F5);
  border-bottom: 1px solid var(--color-divider);
}

.ugc-nav-inner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--space-4) var(--space-6);
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}

.ugc-nav-inner::-webkit-scrollbar { display: none; }

.ugc-nav-item {
  flex-shrink: 0;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--color-muted);
  text-decoration: none;
  padding: var(--space-3) var(--space-6);
  border-radius: var(--radius-full);
  border: 1px solid transparent;
  transition: none;
  white-space: nowrap;
}

.ugc-nav-item:hover { color: var(--color-text); }

.ugc-nav-item.active {
  color: #fff;
  background: var(--color-accent);
  border-color: var(--color-accent);
}

/* ══════════════════════════════════════════════════════════════════════════
   CATEGORY SECTION
   ══════════════════════════════════════════════════════════════════════════ */

.ugc-cat {
  background: var(--color-bg, #FAF8F5);
  min-height: 500px;
  scroll-margin-top: 140px;
  padding-bottom: var(--space-10);
}

@media (max-width: 767px) {
  .ugc-cat {
    scroll-margin-top: 60px;
  }
}

.ugc-cat + .ugc-cat {
  border-top: 1px solid var(--color-divider);
}

/* ── Empty category — compact layout ──────────────────────────────────── */
.ugc-cat--empty {
  min-height: auto;
  padding-bottom: var(--space-4);
}

.ugc-cat--empty .ugc-cat-header {
  padding: var(--space-8) var(--space-6) var(--space-4);
}

.ugc-cat--empty .ugc-cat-name {
  font-size: clamp(1.5rem, 4vw, 2.5rem);
}

.ugc-cat--empty .ugc-cat-desc {
  font-size: var(--text-xs);
  margin-bottom: 0;
}

.ugc-cat--empty .ugc-rail {
  padding-bottom: var(--space-4);
}

.ugc-cat--empty .ugc-empty-box {
  aspect-ratio: auto;
  width: 100%;
  max-width: 320px;
  padding: var(--space-8) var(--space-6);
  margin: 0 auto;
  border-radius: var(--radius-lg);
  border: 1px dashed var(--color-divider);
  background: transparent;
}

@media (max-width: 768px) {
  .ugc-cat--empty .ugc-cat-header {
    padding: var(--space-6) var(--space-4) var(--space-3);
  }
  .ugc-cat--empty .ugc-cat-name {
    font-size: clamp(1.2rem, 5vw, 1.8rem);
  }
  .ugc-cat--empty .ugc-empty {
    width: 100%;
  }
}

/* ── Section Header ─────────────────────────────────────────────────────── */

.ugc-cat-header {
  max-width: 1400px;
  margin: 0 auto;
  padding: var(--space-16) var(--space-6) var(--space-8);
  text-align: center;
}

.ugc-cat-number {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 500;
  color: var(--color-accent);
  letter-spacing: 0.3em;
  display: block;
  margin-bottom: var(--space-2);
}

.ugc-cat-name {
  font-family: var(--font-display);
  font-size: clamp(3rem, 8vw, 7rem);
  font-weight: 300;
  font-style: italic;
  color: var(--color-text);
  line-height: 1.05;
  margin-bottom: var(--space-3);
}

.ugc-cat-desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-muted);
  max-width: 500px;
  margin-left: auto;
  margin-right: auto;
  line-height: 1.6;
}

/* ══════════════════════════════════════════════════════════════════════════
   HORIZONTAL SCROLL RAIL
   ══════════════════════════════════════════════════════════════════════════ */

.ugc-rail-wrap {
  position: relative;
}

.ugc-rail {
  display: flex;
  gap: var(--space-4);
  overflow-x: auto;
  padding: 0 var(--space-6) var(--space-8);
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.ugc-rail::-webkit-scrollbar { display: none; }

/* ── Scroll Arrows ──────────────────────────────────────────────────────── */

.ugc-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-70%);
  z-index: 5;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 50%;
  color: #fff;
  font-size: 1.25rem;
  cursor: pointer;
  transition: background var(--duration-fast) ease, opacity var(--duration-fast) ease;
}

.ugc-arrow:hover {
  background: rgba(0, 0, 0, 0.75);
}

.ugc-arrow--left  { left: var(--space-2); }
.ugc-arrow--right { right: var(--space-2); }

.ugc-arrow[hidden] { display: none; }

@media (max-width: 768px) {
  .ugc-arrow { display: none !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   VIDEO CARD (9:16, 240px wide)
   ══════════════════════════════════════════════════════════════════════════ */

.ugc-card {
  flex-shrink: 0;
  width: 240px;
  scroll-snap-align: start;
  cursor: pointer;
}

.ugc-card-media {
  position: relative;
  width: 240px;
  aspect-ratio: 9 / 16;
  background: var(--color-surface-2, #F5F0EB);
  overflow: hidden;
}

.ugc-card-poster {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.ugc-card-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 400ms ease;
}

.ugc-card-video.playing { opacity: 1; }

/* ── Hover Overlay ──────────────────────────────────────────────────────── */

.ugc-card-hover {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  background: rgba(0, 0, 0, 0.45);
  opacity: 0;
  transition: opacity 250ms ease;
  z-index: 2;
}

.ugc-card:hover .ugc-card-hover { opacity: 1; }

.ugc-card-hover svg {
  width: 24px;
  height: 24px;
  fill: #fff;
}

.ugc-card-hover-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: #fff;
  letter-spacing: 0.1em;
}

.ugc-card-hover-brand {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-accent);
}

/* ── Caption Ticker ─────────────────────────────────────────────────────── */

.ugc-card-ticker {
  width: 240px;
  overflow: hidden;
  padding: var(--space-2) 0;
  white-space: nowrap;
}

.ugc-card-ticker span {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: rgba(255, 255, 255, 0.4);
  animation: ugcTicker var(--ticker-dur, 6s) linear infinite;
  padding-left: 100%;
}

.ugc-card:hover .ugc-card-ticker span {
  animation-play-state: paused;
}

@keyframes ugcTicker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-100%); }
}

/* ── Placeholder (card fallback) ────────────────────────────────────────── */

.ugc-card-ph {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-2, #F5F0EB);
}

.ugc-card-ph span {
  color: var(--color-accent);
  font-size: var(--text-lg);
  opacity: 0.5;
}

/* ── Empty State ────────────────────────────────────────────────────────── */

.ugc-empty {
  flex-shrink: 0;
  width: 240px;
  scroll-snap-align: start;
}

.ugc-empty-box {
  width: 240px;
  aspect-ratio: 9 / 16;
  background: var(--color-surface-2, #F5F0EB);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
}

.ugc-empty-title {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-style: italic;
  color: var(--color-muted);
  opacity: 0.7;
}

.ugc-empty-sub {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-muted);
  opacity: 0.5;
  text-align: center;
  max-width: 180px;
}

/* ══════════════════════════════════════════════════════════════════════════
   VIDEO MODAL
   ══════════════════════════════════════════════════════════════════════════ */

.ugc-modal {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-6);
  opacity: 0;
  pointer-events: none;
  transition: opacity 300ms ease;
}

.ugc-modal.active {
  opacity: 1;
  pointer-events: auto;
}

.ugc-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.92);
}

.ugc-modal-close {
  position: absolute;
  top: var(--space-4);
  right: var(--space-4);
  z-index: 3;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  color: #fff;
  font-size: 1.75rem;
  cursor: pointer;
  opacity: 0.6;
  transition: opacity var(--duration-fast) ease;
}

.ugc-modal-close:hover { opacity: 1; }

/* ── Panel (two-column) ─────────────────────────────────────────────────── */

.ugc-modal-panel {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: var(--space-6);
  max-width: 920px;
  width: 100%;
  max-height: 88vh;
  transform: translateY(30px);
  opacity: 0;
  transition: transform 380ms cubic-bezier(0.16, 1, 0.3, 1), opacity 380ms cubic-bezier(0.16, 1, 0.3, 1);
}

.ugc-modal.active .ugc-modal-panel {
  transform: translateY(0);
  opacity: 1;
}

.ugc-modal.closing .ugc-modal-panel {
  transform: translateY(30px);
  opacity: 0;
  transition-duration: 280ms;
}

/* ── Video Column ───────────────────────────────────────────────────────── */

.ugc-modal-video {
  aspect-ratio: 9 / 16;
  max-height: 80vh;
  background: #000;
  border-radius: var(--radius-md);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

.ugc-modal-player,
.ugc-modal-iframe {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border: none;
}

/* ── Stats Column ───────────────────────────────────────────────────────── */

.ugc-modal-stats {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: var(--space-4) 0;
  overflow-y: auto;
}

.ugc-modal-title {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: 300;
  color: #fff;
  line-height: 1.2;
  margin-bottom: var(--space-2);
}

.ugc-modal-brand {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-accent);
  margin-bottom: var(--space-4);
}

.ugc-modal-divider {
  height: 1px;
  background: rgba(255, 255, 255, 0.08);
  margin-bottom: var(--space-4);
}

.ugc-modal-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-4);
  margin-bottom: var(--space-6);
}

.ugc-stat-num {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: 300;
  color: #fff;
}

.ugc-stat-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: rgba(255, 255, 255, 0.4);
  margin-top: var(--space-1);
}

.ugc-modal-ig-btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: 500;
  letter-spacing: 0.05em;
  color: var(--color-accent);
  text-decoration: none;
  padding: var(--space-2) var(--space-4);
  border: 1px solid rgba(201, 169, 138, 0.3);
  border-radius: var(--radius-full);
  transition: background var(--duration-fast) ease, border-color var(--duration-fast) ease;
  margin-bottom: var(--space-4);
}

.ugc-modal-ig-btn:hover {
  background: rgba(201, 169, 138, 0.1);
  border-color: var(--color-accent);
}

.ugc-modal-caption {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-style: italic;
  color: rgba(255, 255, 255, 0.4);
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ══════════════════════════════════════════════════════════════════════════
   SCROLL REVEAL
   ══════════════════════════════════════════════════════════════════════════ */

.ugc-cat-name {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity 600ms var(--ease-out), transform 600ms var(--ease-out);
}

.ugc-cat-desc {
  opacity: 0;
  transition: opacity 400ms var(--ease-out) 200ms;
}

.ugc-card {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 400ms var(--ease-out), transform 400ms var(--ease-out);
  transition-delay: calc(var(--si, 0) * 100ms + 300ms);
}

.ugc-cat.revealed .ugc-cat-name {
  opacity: 1;
  transform: translateX(0);
}

.ugc-cat.revealed .ugc-cat-desc { opacity: 1; }

.ugc-cat.revealed .ugc-card {
  opacity: 1;
  transform: translateY(0);
}

/* ══════════════════════════════════════════════════════════════════════════
   RESPONSIVE
   ══════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  .ugc-modal {
    padding: var(--space-3);
    align-items: flex-start;
    padding-top: var(--space-6);
  }

  .ugc-modal-panel {
    grid-template-columns: 1fr;
    gap: var(--space-4);
    max-height: 92vh;
    max-width: 100%;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    border-radius: var(--radius-lg);
    background: var(--color-bg, #FAF8F5);
    padding: var(--space-4);
  }

  .ugc-modal-video {
    aspect-ratio: 9 / 16;
    max-height: 45vh;
    width: 100%;
    border-radius: var(--radius-md);
  }

  .ugc-modal-stats {
    padding: 0;
    color: var(--color-fg);
  }

  .ugc-modal-title {
    color: var(--color-fg);
  }

  .ugc-modal-brand {
    color: var(--color-muted);
  }

  .ugc-modal-divider {
    border-color: var(--color-border);
  }

  .ugc-stat-num {
    color: var(--color-fg);
  }

  .ugc-stat-label {
    color: var(--color-muted);
  }

  .ugc-modal-ig-btn {
    color: var(--color-accent);
  }

  .ugc-modal-caption {
    color: var(--color-muted);
  }

  .ugc-modal-close {
    top: var(--space-2);
    right: var(--space-2);
    background: rgba(0,0,0,0.50);
    z-index: 10;
  }

  .ugc-cat-header {
    padding: var(--space-8) var(--space-4) var(--space-4);
  }

  .ugc-rail {
    padding: 0 var(--space-4) var(--space-6);
    gap: var(--space-3);
  }
}

@media (max-width: 480px) {
  .ugc-modal-video {
    max-height: 40vh;
  }

  .ugc-modal-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ══════════════════════════════════════════════════════════════════════════
   REDUCED MOTION
   ══════════════════════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce) {
  .ugc-cat-name,
  .ugc-cat-desc,
  .ugc-card {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .ugc-card-ticker span { animation: none !important; }

  .ugc-modal,
  .ugc-modal-panel {
    transition: none !important;
  }
}
