/**
 * UUCG Slideshow — frontend
 * Token-aligned with uua-congregation-2027.
 */

.uucg-ss {
  --ss-ink: var(--uucg-ink, #2a221f);
  --ss-ink-soft: var(--uucg-ink-soft, #4a3f3a);
  --ss-cream: var(--uucg-cream, #fbf6f0);
  --ss-cream-deep: var(--uucg-cream-deep, #f3e8dc);
  --ss-surface: var(--uucg-surface-strong, rgba(255, 253, 250, 0.94));
  --ss-glass: var(--uucg-glass, rgba(255, 255, 255, 0.55));
  --ss-glass-border: var(--uucg-glass-border, rgba(255, 255, 255, 0.65));
  --ss-glass-dark: var(--uucg-glass-dark, rgba(42, 34, 31, 0.55));
  --ss-primary: var(--uucg-primary, #5c4d8a);
  --ss-primary-soft: var(--uucg-primary-soft, #ebe6f5);
  --ss-accent: var(--uucg-accent, #c45c26);
  --ss-gold: var(--uucg-gold, #e6a93a);
  --ss-radius: var(--uucg-radius, 1.25rem);
  --ss-radius-pill: var(--uucg-radius-pill, 999px);
  --ss-shadow: var(--uucg-shadow, 0 10px 30px rgba(42, 34, 31, 0.08), 0 2px 8px rgba(42, 34, 31, 0.04));
  --ss-shadow-lg: var(--uucg-shadow-lg, 0 22px 50px rgba(42, 34, 31, 0.12), 0 6px 16px rgba(42, 34, 31, 0.06));
  --ss-ease: var(--uucg-ease, cubic-bezier(0.22, 1, 0.36, 1));
  --ss-duration: var(--uucg-duration, 0.45s);
  --ss-duration-fast: var(--uucg-duration-fast, 0.22s);
  --ss-aspect: var(--uucg-ss-aspect, 21 / 9);

  position: relative;
  display: block;
  margin: 0 0 2rem;
  padding: 0;
  width: 100%;
  isolation: isolate;
}

.uucg-ss__viewport {
  position: relative;
  width: 100%;
  aspect-ratio: var(--ss-aspect);
  background: var(--ss-cream-deep);
  overflow: hidden;
  box-shadow: var(--ss-shadow);
  border: 1px solid var(--ss-glass-border);
  transition: box-shadow var(--ss-duration) var(--ss-ease);
}

.uucg-ss:hover .uucg-ss__viewport {
  box-shadow: var(--ss-shadow-lg);
}

.uucg-ss--rounded .uucg-ss__viewport {
  border-radius: var(--ss-radius);
}

.uucg-ss__track {
  position: relative;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
}

.uucg-ss__slide {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  opacity: 0;
  transition: opacity var(--ss-duration) var(--ss-ease);
  will-change: opacity;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--ss-cream-deep);
}

.uucg-ss__slide[hidden] {
  display: none;
}

/* fade effect (default) */
.uucg-ss--fade .uucg-ss__slide.is-active {
  opacity: 1;
  z-index: 1;
}

/* slide effect */
.uucg-ss--slide .uucg-ss__slide {
  opacity: 1;
  transform: translateX(100%);
  transition: transform var(--ss-duration) var(--ss-ease);
  z-index: 0;
}
.uucg-ss--slide .uucg-ss__slide.is-active {
  transform: translateX(0);
  z-index: 1;
}
.uucg-ss--slide .uucg-ss__slide.is-prev {
  transform: translateX(-100%);
}

.uucg-ss__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  user-select: none;
  -webkit-user-drag: none;
}

/* ----- captions ----- */

.uucg-ss__caption {
  margin: 0;
  font-family: var(--uucg-display, "Fraunces", Georgia, serif);
  font-weight: 500;
  line-height: 1.35;
  letter-spacing: 0.005em;
}

.uucg-ss__caption--overlay {
  position: absolute;
  left: 1.25rem;
  right: 1.25rem;
  bottom: 1.25rem;
  padding: 0.85rem 1.1rem;
  background: var(--ss-glass-dark);
  color: var(--ss-cream);
  border-radius: var(--ss-radius-sm, 0.85rem);
  backdrop-filter: blur(var(--uucg-blur, 18px));
  -webkit-backdrop-filter: blur(var(--uucg-blur, 18px));
  border: 1px solid rgba(255, 255, 255, 0.18);
  font-size: clamp(0.95rem, 1.2vw, 1.1rem);
  max-width: min(60ch, calc(100% - 2.5rem));
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  pointer-events: none;
  z-index: 2;
}

.uucg-ss__caption--below {
  display: block;
  margin-top: 0.85rem;
  color: var(--ss-ink-soft);
  font-size: 0.98rem;
  text-align: left;
}

/* ----- arrows ----- */

.uucg-ss__arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: var(--ss-radius-pill);
  border: 1px solid var(--ss-glass-border);
  background: var(--ss-surface);
  color: var(--ss-ink);
  font-size: 1.6rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: var(--ss-shadow);
  backdrop-filter: blur(var(--uucg-blur, 18px));
  -webkit-backdrop-filter: blur(var(--uucg-blur, 18px));
  transition:
    transform var(--ss-duration-fast) var(--ss-ease),
    background var(--ss-duration-fast) var(--ss-ease),
    opacity var(--ss-duration-fast) var(--ss-ease);
  opacity: 0;
  padding: 0;
}

.uucg-ss:hover .uucg-ss__arrow,
.uucg-ss:focus-within .uucg-ss__arrow {
  opacity: 1;
}

.uucg-ss__arrow:hover,
.uucg-ss__arrow:focus-visible {
  background: var(--ss-cream);
  outline: none;
  transform: translateY(-50%) scale(1.06);
}

.uucg-ss__arrow:focus-visible {
  box-shadow: 0 0 0 3px var(--ss-primary-soft), var(--ss-shadow);
}

.uucg-ss__arrow--prev {
  left: 0.9rem;
}
.uucg-ss__arrow--next {
  right: 0.9rem;
}

/* always show arrows on touch devices */
@media (hover: none) {
  .uucg-ss__arrow {
    opacity: 1;
  }
}

/* ----- dots ----- */

.uucg-ss__dots {
  display: flex;
  justify-content: center;
  gap: 0.5rem;
  margin-top: 0.9rem;
}

.uucg-ss__dot {
  width: 0.6rem;
  height: 0.6rem;
  padding: 0;
  border: none;
  border-radius: var(--ss-radius-pill);
  background: var(--ss-cream-deep);
  cursor: pointer;
  transition:
    background var(--ss-duration-fast) var(--ss-ease),
    transform var(--ss-duration-fast) var(--ss-ease),
    width var(--ss-duration-fast) var(--ss-ease);
}

.uucg-ss__dot:hover,
.uucg-ss__dot:focus-visible {
  background: var(--ss-accent);
  outline: none;
  transform: scale(1.15);
}

.uucg-ss__dot.is-active {
  background: var(--ss-primary);
  width: 1.4rem;
}

.uucg-ss__dot:focus-visible {
  box-shadow: 0 0 0 3px var(--ss-primary-soft);
}

/* ----- narrow viewports ----- */

@media (max-width: 640px) {
  .uucg-ss__viewport {
    aspect-ratio: 4 / 3;
  }
  .uucg-ss__caption--overlay {
    left: 0.85rem;
    right: 0.85rem;
    bottom: 0.85rem;
    padding: 0.7rem 0.9rem;
    font-size: 0.95rem;
  }
  .uucg-ss__arrow {
    width: 2.2rem;
    height: 2.2rem;
    font-size: 1.3rem;
  }
  .uucg-ss__arrow--prev {
    left: 0.5rem;
  }
  .uucg-ss__arrow--next {
    right: 0.5rem;
  }
}

/* ----- reduced motion ----- */

@media (prefers-reduced-motion: reduce) {
  .uucg-ss__slide,
  .uucg-ss--slide .uucg-ss__slide,
  .uucg-ss__arrow,
  .uucg-ss__dot,
  .uucg-ss__viewport {
    transition: none !important;
  }
}

/* ----- a11y focus ring on viewport itself ----- */

.uucg-ss__viewport:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--ss-primary-soft), var(--ss-shadow);
}
