/**
 * dato-hero.css
 * Styling for the DATO hero slider (custom HTML module + dato-hero.js).
 *
 * Sizing model
 * ------------
 * dato-hero.js scales every text metric (font-size, line-height, margins,
 * padding, border-width) from a reference design of
 * data-startwidth x data-startheight using ONE uniform factor, and positions
 * captions with percentage offsets. The pixel values below are therefore only
 * the reference/pre-JS values - do not add responsive font-size overrides in
 * media queries, they would fight the script.
 *
 * The title and subtitle are intentionally locked to a single line
 * (white-space: nowrap). dato-hero.js shrinks their font further when needed
 * so a long line fits the slider width instead of wrapping.
 */

/* ---------- layout shell ---------- */

.forcefullwidth_wrapper_tp_banner,
.forcefullwidth_wrapper_tp_banner *,
.forcefullwidth_wrapper_tp_banner *::before,
.forcefullwidth_wrapper_tp_banner *::after {
  box-sizing: border-box;
}

/*
 * Height is owned by dato-hero.js, which sets an exact pixel height on the
 * wrapper, the slider and the forcer from the measured container width.
 *
 * The clamp() below is only a pre-JS placeholder to avoid a layout jump on
 * first paint. It must NOT be !important: a vw-based height and the script's
 * container-width-based height disagree (scrollbars, padded containers,
 * fractional pixels), which used to leave a thin strip of exposed background
 * under the slide while resizing.
 */
.forcefullwidth_wrapper_tp_banner {
  height: clamp(350px, 61.4vw, 700px);
  overflow: hidden;
  position: relative !important;
  width: 100% !important;
}

.forcefullwidth_wrapper_tp_banner > .rev_slider_wrapper {
  height: 100%;
  inset: 0 !important;
  margin: 0 !important;
  overflow: hidden !important;
  position: absolute !important;
  width: 100% !important;
  z-index: 0;
}

.forcefullwidth_wrapper_tp_banner > .tp-fullwidth-forcer {
  height: 100% !important;
  width: 100%;
}

.rev_slider {
  display: block;
  height: 100%;
  overflow: hidden;
  position: relative;
  width: 100%;
}

.rev_slider > ul.tp-revslider-mainul {
  display: block !important;
  height: 100% !important;
  list-style: none !important;
  margin: 0 !important;
  max-height: none !important;
  overflow: hidden !important;
  padding: 0 !important;
  position: relative;
  width: 100% !important;
}



/* ---------- slides ---------- */

.rev_slider > ul > li.tp-revslider-slidesli {
  inset: 0;
  margin: 0 !important;
  opacity: 0;
  overflow: hidden;
  padding: 0 !important;
  position: absolute !important;
  visibility: hidden;
  width: 100% !important;
}

.rev_slider > ul > li.active-revslide {
  opacity: 1;
  visibility: visible;
}

.rev_slider .slotholder {
  height: 100% !important;
  inset: 0;
  position: absolute;
  width: 100% !important;
}

/*
 * Bleed the background half a pixel past every edge. Fractional layout heights
 * can otherwise leave a hairline of the container background colour visible
 * along the bottom edge while resizing.
 */
.rev_slider .tp-bgimg {
  background-position: center top;
  background-repeat: no-repeat;
  background-size: cover;
  inset: -0.5px;
  position: absolute;
  height: auto !important;
  width: auto !important;
}

.rev_slider img {
  max-width: none !important;
}

/* ---------- transition overlays (box / slot effects) ---------- */

.dato-slot-overlay {
  inset: 0;
  overflow: hidden;
  perspective: 1200px;
  pointer-events: none;
  position: absolute;
  transform-style: preserve-3d;
  z-index: 50;
}

.dato-slot-cell {
  backface-visibility: hidden;
  position: absolute;
  transform-origin: 50% 50%;
  transform-style: preserve-3d;
  will-change: transform, opacity;
}

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

.rev_slider .tp-caption {
  box-sizing: border-box;
  opacity: 0;
  position: absolute;
  transition: opacity 700ms ease, transform 700ms ease;
  visibility: hidden;
  white-space: nowrap;
  z-index: 1;
}

.rev_slider .tp-caption.dato-caption-visible {
  opacity: 1;
  visibility: visible;
}

.rev_slider .tp-caption.dato-no-animation {
  transition: none !important;
}

.tp-caption.sl-desc,
.sl-desc {
  background: transparent;
  border: 0;
  color: #f2f2f2;
  font-family: Roboto, sans-serif;
  font-size: 20px;
  font-weight: 400;
  line-height: 30px;
  margin: 0;
  padding: 1px 4px 0;
  text-align: center;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
}

/*
 * Title and subtitle never wrap. dato-hero.js reduces their font-size
 * further on narrow viewports so the single line still fits.
 */
.tp-caption.sl-title,
.sl-title {
  background: transparent;
  border: 0;
  color: #fff;
  font-family: SFProDisplay, Roboto, sans-serif;
  font-size: 60px;
  font-weight: 700;
  letter-spacing: -1px;
  line-height: 70px;
  margin: 0 0 20px;
  padding: 0;
  text-shadow: none;
  text-transform: uppercase;
  white-space: nowrap !important;
}

.tp-caption.sub-title,
.sub-title {
  background: transparent;
  border: 0;
  color: #fff;
  font-family: SFProDisplay, Roboto, sans-serif;
  font-size: 50px;
  font-weight: 400;
  letter-spacing: -1px;
  line-height: 36px;
  margin: 0 0 10px;
  padding: 0;
  text-shadow: none;
  text-transform: uppercase;
  white-space: nowrap !important;
}

/* ---------- buttons ---------- */

.tp-caption.slider-button2,
.slider-button2,
.tp-caption.slider-button3,
.slider-button3 {
  background: #fff;
  border: 2px solid #fff;
  border-radius: 30px;
  color: #222;
  font-family: Arial, sans-serif;
  font-size: 17px;
  font-weight: 400;
  line-height: 25px;
  padding: 11px 40px;
  text-transform: none;
  white-space: nowrap;
}

.tp-caption.slider-button2,
.slider-button2 {
  color: #000;
}

.tp-caption a,
.tp-caption .sl-button {
  color: inherit;
  text-decoration: none;
  text-shadow: none;
  transition: color 200ms ease;
}

.tp-caption.slider-button2:hover,
.tp-caption.slider-button3:hover {
  background: transparent;
  color: #fff;
}

/* ---------- logos ---------- */

.tp-caption.tp-fade img {
  display: block;
  height: auto;
  max-width: none !important;
  width: 210px;
}

.rev_slider .tp-caption.agency-logo .logo-image {
  display: block;
  height: auto !important;
  max-width: none !important;
  width: 140px;
}

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

.rev_slider_wrapper .tparrows {
  align-items: center;
  appearance: none;
  background: rgba(0, 0, 0, .4);
  border: 0;
  border-radius: 50%;
  color: #fff;
  cursor: pointer;
  display: flex;
  height: 44px;
  justify-content: center;
  padding: 0;
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  transition: background-color 200ms ease;
  width: 44px;
  z-index: 60;
}

.rev_slider_wrapper .tparrows:hover {
  background: rgba(0, 0, 0, .75);
}

.rev_slider_wrapper .tparrows:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 3px;
}

.rev_slider_wrapper .tp-leftarrow {
  left: 20px;
}

.rev_slider_wrapper .tp-rightarrow {
  right: 20px;
}

.rev_slider_wrapper .tparrows > span::before {
  border-bottom: 2px solid currentColor;
  border-left: 2px solid currentColor;
  content: "";
  display: block;
  height: 11px;
  transform: rotate(45deg);
  width: 11px;
}

.rev_slider_wrapper .tp-rightarrow > span::before {
  margin-left: -5px;
  transform: rotate(225deg);
}

/* ---------- progress bar ---------- */

.rev_slider_wrapper .tp-bannertimer {
  animation: none;
  background: rgba(0, 0, 0, .15);
  height: 5px;
  left: 0;
  position: absolute;
  top: 0;
  transform-origin: left center;
  width: 100%;
  z-index: 61;
}

@keyframes dato-rev-timer {
  from { width: 0; }
  to { width: 100%; }
}

/* ---------- narrow viewports ---------- */
/* Only chrome sizing here. Text metrics are handled by dato-hero.js. */

@media (max-width: 767.98px) {
  .rev_slider_wrapper .tparrows {
    height: 38px;
    width: 38px;
  }

  .rev_slider_wrapper .tp-leftarrow {
    left: 8px;
  }

  .rev_slider_wrapper .tp-rightarrow {
    right: 8px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .rev_slider .tp-caption {
    transition-duration: 1ms;
  }

  .rev_slider_wrapper .tp-bannertimer {
    display: none;
  }
}
