/* Exhibit RSGDX — custom-banner.css — v10 (v10: slide transition switched
   from a left/right translating track to a plain crossfade — the snappy
   left/right motion read as less premium, and a fade felt calmer/more
   in line with the rest of the site. Slides are now stacked absolutely
   inside the track and toggle visibility via opacity + the is-active
   class, controlled by custom-banner.js.)
   (prior: v9 — desktop height trimmed slightly so the next section peeks
   at the bottom of the viewport instead of the slider owning the entire
   screen; added a dedicated tablet band (768–1199px) between the desktop
   and mobile breakpoints — tablets previously fell through to the desktop
   "100vh minus header" height, which reads as far too tall for a
   portrait/landscape tablet viewport and made the banner image look
   stretched/oddly cropped.)
   (prior: title font-size settings/responsiveness, buttons, arrows, dark overlay, lights toggle — all working)
   HOMEPAGE BANNER SLIDER
   Buttons use the shared .exhibitrsgdx-btn classes from custom-style.css.
   ========================================================================== */

#exhibitrsgdx-main .exhibitrsgdx-slider {
	position: relative;
	width: 100%;
	/* Slightly less than the full viewport height minus the actual header
	   height (measured by custom-banner.js and set as
	   --exhibitrsgdx-header-height, falls back to an estimate if JS
	   hasn't run yet) — the 8vh reduction is just enough for the next
	   section to peek at the bottom of the screen as a scroll cue. */
	height: calc(92vh - var(--exhibitrsgdx-header-height, 140px));
	min-height: 420px;
	overflow: hidden;
	background: var(--exhibitrsgdx-color-surface);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__track {
	position: relative;
	width: 100%;
	height: 100%;
}

/* Slides stack directly on top of each other and crossfade via opacity —
   the inactive slide stays in the layout (not display:none) so its
   opacity transition can actually run both ways at once. z-index keeps
   the incoming (is-active) slide on top while both are mid-fade, and
   pointer-events is off on hidden slides so they can't be clicked/tabbed
   into accidentally. */
#exhibitrsgdx-main .exhibitrsgdx-slider__slide {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	background-size: cover;
	background-position: center;
	background-color: var(--exhibitrsgdx-color-surface);
	display: flex;
	align-items: flex-end;
	opacity: 0;
	z-index: 1;
	pointer-events: none;
	transition: opacity 1s ease;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__slide.is-active {
	opacity: 1;
	z-index: 2;
	pointer-events: auto;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__slide::before {
	content: "";
	position: absolute;
	inset: 0;
	/* Darkness is configurable in Settings → Banner Settings — set as
	   --exhibitrsgdx-banner-overlay inline on the slider element. Flat
	   dark layer (so even a white banner image keeps white text legible
	   everywhere) plus a stronger left-side gradient behind the text. */
	background:
		linear-gradient(90deg, rgba(0,0,0, var(--exhibitrsgdx-banner-overlay, 0.65)) 0%, rgba(0,0,0, calc(var(--exhibitrsgdx-banner-overlay, 0.65) * 0.55)) 55%, rgba(0,0,0, calc(var(--exhibitrsgdx-banner-overlay, 0.65) * 0.3)) 100%);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__content {
	position: relative;
	z-index: 2;
	max-width: 1400px;
	width: 100%;
	height: 100%;
	margin: 0 auto;
	padding: 0 var(--exhibitrsgdx-space-6);
	padding-bottom: var(--exhibitrsgdx-space-6);
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__subtext {
	color: #fff;
	font-size: var(--exhibitrsgdx-banner-subtext-size, 1rem);
	font-weight: 400;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	margin-bottom: var(--exhibitrsgdx-space-3);
	text-shadow: 0 2px 8px rgba(0,0,0,0.4);
}

/* Title is deliberately the one place font-size goes well beyond the
   normal type scale — it's a banner, it should dominate. clamp() keeps
   it responsive; the upper bound is settings-controllable so the exact
   "how big" is tunable without editing CSS. */
/* Title is deliberately the one place font-size goes well beyond the
   normal type scale — it's a banner, it should dominate. The exact size
   is entirely settings-controlled — no hidden minimum here, whatever
   you set in Banner Settings is exactly what renders. */
#exhibitrsgdx-main .exhibitrsgdx-slider__title {
	color: #fff;
	font-size: var(--exhibitrsgdx-banner-title-size, 120px);
	line-height: 1.02;
	font-weight: 700;
	width: 100%;
	margin-bottom: var(--exhibitrsgdx-space-5);
	text-shadow: 0 2px 12px rgba(0,0,0,0.5);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__buttons {
	display: flex;
	gap: var(--exhibitrsgdx-space-3);
}

/* Banner buttons stay settings-driven via Banner Settings → Button
   Padding — this is a real configurable field, not just a copy of the
   global default, so it needs its own override to keep working. */
#exhibitrsgdx-main .exhibitrsgdx-slider__buttons .exhibitrsgdx-btn {
	padding: var(--exhibitrsgdx-banner-button-padding-v, 6px) var(--exhibitrsgdx-banner-button-padding-h, 20px);
	font-size: 12px;
}

/* --- Lights toggle --- */

#exhibitrsgdx-main .exhibitrsgdx-slider__lights-toggle {
	position: absolute;
	top: var(--exhibitrsgdx-space-4);
	right: var(--exhibitrsgdx-space-4);
	z-index: 4;
	display: flex;
	align-items: center;
	gap: 10px;
	background: var(--exhibitrsgdx-color-primary);
	border: none;
	border-radius: var(--exhibitrsgdx-radius-full);
	padding: 6px 8px 6px 16px;
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.04em;
	cursor: pointer;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__lights-switch {
	position: relative;
	width: 34px;
	height: 18px;
	border-radius: var(--exhibitrsgdx-radius-full);
	background: rgba(255,255,255,0.3);
	flex-shrink: 0;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__lights-switch::before {
	content: "";
	position: absolute;
	top: 2px;
	left: 2px;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: #fff;
	transition: left var(--exhibitrsgdx-transition);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__lights-toggle[aria-pressed="true"] .exhibitrsgdx-slider__lights-switch::before {
	left: 18px;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__lights-toggle[aria-pressed="false"] .exhibitrsgdx-slider__lights-switch {
	background: rgba(0,0,0,0.25);
}

/* --- Arrows / dots --- */

#exhibitrsgdx-main .exhibitrsgdx-slider__arrow {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 3;
	background: rgba(0,0,0,0.35);
	border: none;
	color: #fff;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	font-size: 10px;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background var(--exhibitrsgdx-transition);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__arrow:hover {
	background: var(--exhibitrsgdx-color-primary);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__arrow--prev { left: var(--exhibitrsgdx-space-5); }
#exhibitrsgdx-main .exhibitrsgdx-slider__arrow--next { right: var(--exhibitrsgdx-space-5); }

#exhibitrsgdx-main .exhibitrsgdx-slider__dots {
	position: absolute;
	bottom: var(--exhibitrsgdx-space-5);
	left: 50%;
	transform: translateX(-50%);
	z-index: 3;
	display: flex;
	gap: 10px;
}

#exhibitrsgdx-main .exhibitrsgdx-slider__dot {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: rgba(255,255,255,0.4);
	border: none;
	padding: 0;
	cursor: pointer;
	transition: background var(--exhibitrsgdx-transition);
}

#exhibitrsgdx-main .exhibitrsgdx-slider__dot.is-active {
	background: var(--exhibitrsgdx-color-primary);
}

/* ==========================================================================
   RESPONSIVE — 1200 / 767 / 500
   1200 covers common laptop screens (e.g. most MacBooks) so the banner
   doesn't just get tuned for a large desktop monitor and break on those.
   ========================================================================== */

@media (max-width: 1200px) {
#exhibitrsgdx-main .exhibitrsgdx-slider__title {
		/* max() guarantees a sensible floor — a small title setting can
		   never shrink below this and end up smaller than the subtext */
		font-size: max(2rem, calc(var(--exhibitrsgdx-banner-title-size, 120px) * 0.6));
	}
}

/* Tablet band — 768–1199px. Without this, tablets fell through to the
   desktop "92vh minus header" height, which is far taller than a
   tablet's aspect ratio calls for and made the banner image look
   stretched/oddly cropped. Capped height instead of a vh-based one, so
   it doesn't scale past what actually looks right on a tablet screen. */
@media (max-width: 1199px) and (min-width: 768px) {
#exhibitrsgdx-main .exhibitrsgdx-slider {
		height: calc(70vh - var(--exhibitrsgdx-header-height, 100px));
		min-height: 480px;
		max-height: 620px;
	}
}

@media (max-width: 767px) {
#exhibitrsgdx-main .exhibitrsgdx-slider {
		height: calc(100vh - var(--exhibitrsgdx-header-height, 70px));
		min-height: 400px;
		max-height: 500px;
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__title {
		font-size: max(1.75rem, calc(var(--exhibitrsgdx-banner-title-size, 120px) * 0.4));
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__subtext {
		font-size: 0.8rem;
	}
	/* Side by side by default (they fit fine) — wrap is just a safety
	   net for a genuinely long custom button label, not the default */
#exhibitrsgdx-main .exhibitrsgdx-slider__buttons {
		flex-wrap: wrap;
	}

	/* Arrows were overlapping the title/buttons text — moved to the
	   top-left corner instead (lights toggle already owns top-right) */
#exhibitrsgdx-main .exhibitrsgdx-slider__arrow {
		top: var(--exhibitrsgdx-space-4);
		transform: none;
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__arrow--prev {
		left: var(--exhibitrsgdx-space-4);
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__arrow--next {
		left: calc(var(--exhibitrsgdx-space-4) + 38px);
		right: auto;
	}
}

@media (max-width: 500px) {
#exhibitrsgdx-main .exhibitrsgdx-slider {
		min-height: 360px;
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__title {
		font-size: max(1.5rem, calc(var(--exhibitrsgdx-banner-title-size, 120px) * 0.28));
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__subtext {
		font-size: 0.75rem;
	}
#exhibitrsgdx-main .exhibitrsgdx-slider__lights-toggle {
		font-size: 9px;
		padding: 4px 6px 4px 12px;
	}
}