.psew-aps,
.psew-aps * { box-sizing: border-box; }

.psew-aps {
  --psew-aps-duration: 950ms;
  --psew-aps-shift: 6%;
  --psew-aps-image-scale: 1.10;
  --psew-aps-scroll-y: 0px;
  --psew-aps-pointer-x: 0px;
  --psew-aps-pointer-y: 0px;
  position: relative;
  width: 100%;
  min-height: 760px;
  overflow: hidden;
  isolation: isolate;
  background: #111;
  color: #fff;
  outline: none;
}

.psew-aps__slides,
.psew-aps__slide,
.psew-aps__media,
.psew-aps__picture,
.psew-aps__image,
.psew-aps__overlay { position: absolute; inset: 0; }

.psew-aps__picture {
  display: block;
  width: 100%;
  height: 100%;
}

.psew-aps__slide {
  z-index: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity var(--psew-aps-duration) cubic-bezier(.2,.72,.2,1), visibility var(--psew-aps-duration) linear;
  color: var(--psew-aps-color, #fff);
}

.psew-aps__slide.is-active {
  z-index: 2;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.psew-aps__slide.is-prev,
.psew-aps__slide.is-next,
.psew-aps__slide.is-before,
.psew-aps__slide.is-after { z-index: 1; }

.psew-aps__media {
  overflow: hidden;
  background: #171717;
}

.psew-aps__image {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: var(--psew-aps-image-fit, cover);
  object-position: var(--psew-aps-image-position, center center);
  transform-origin: center center;
  will-change: transform;
  --psew-aps-slide-x: 0%;
  transform:
    translate3d(
      calc(var(--psew-aps-slide-x) + var(--psew-aps-pointer-x)),
      calc(var(--psew-aps-scroll-y) + var(--psew-aps-pointer-y)),
      0
    )
    scale(var(--psew-aps-image-scale));
  transition: transform var(--psew-aps-duration) cubic-bezier(.18,.76,.2,1), filter var(--psew-aps-duration) ease;
}

.psew-aps__slide.is-prev .psew-aps__image,
.psew-aps__slide.is-before .psew-aps__image { --psew-aps-slide-x: calc(var(--psew-aps-shift) * -1); }
.psew-aps__slide.is-next .psew-aps__image,
.psew-aps__slide.is-after .psew-aps__image { --psew-aps-slide-x: var(--psew-aps-shift); }
.psew-aps__slide.is-active .psew-aps__image { --psew-aps-slide-x: 0%; }

.psew-aps__overlay { z-index: 1; background: var(--psew-aps-overlay, rgba(0,0,0,.32)); }

.psew-aps__slide-inner {
  position: relative;
  z-index: 3;
  display: flex;
  width: 100%;
  height: 100%;
  min-height: inherit;
  padding: 72px;
}

.psew-aps__slide--content-top-left .psew-aps__slide-inner { align-items: flex-start; justify-content: flex-start; }
.psew-aps__slide--content-top-center .psew-aps__slide-inner { align-items: flex-start; justify-content: center; }
.psew-aps__slide--content-top-right .psew-aps__slide-inner { align-items: flex-start; justify-content: flex-end; }
.psew-aps__slide--content-center-left .psew-aps__slide-inner { align-items: center; justify-content: flex-start; }
.psew-aps__slide--content-center-center .psew-aps__slide-inner { align-items: center; justify-content: center; }
.psew-aps__slide--content-center-right .psew-aps__slide-inner { align-items: center; justify-content: flex-end; }
.psew-aps__slide--content-bottom-left .psew-aps__slide-inner { align-items: flex-end; justify-content: flex-start; }
.psew-aps__slide--content-bottom-center .psew-aps__slide-inner { align-items: flex-end; justify-content: center; }
.psew-aps__slide--content-bottom-right .psew-aps__slide-inner { align-items: flex-end; justify-content: flex-end; }

.psew-aps__content {
  position: relative;
  width: min(100%, var(--psew-aps-content-width, 680px));
  max-width: var(--psew-aps-content-width, 680px);
  transform: translate3d(var(--psew-aps-content-offset-x, 0px), var(--psew-aps-content-offset-y, 0px), 0);
}
.psew-aps__slide--align-left .psew-aps__content { text-align: left; }
.psew-aps__slide--align-center .psew-aps__content { text-align: center; }
.psew-aps__slide--align-right .psew-aps__content { text-align: right; }

.psew-aps__eyebrow {
  margin: 0 0 16px;
  font-size: 12px;
  line-height: 1.2;
  font-weight: 650;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.psew-aps__heading {
  margin: 0;
  color: inherit;
  font-size: clamp(44px, 6vw, 96px);
  line-height: .94;
  font-weight: 500;
  letter-spacing: -.045em;
  text-wrap: balance;
}

.psew-aps__text {
  max-width: 58ch;
  margin-top: 22px;
  font-size: 17px;
  line-height: 1.62;
  opacity: .94;
}
.psew-aps__slide--align-center .psew-aps__text { margin-left: auto; margin-right: auto; }
.psew-aps__slide--align-right .psew-aps__text { margin-left: auto; }
.psew-aps__text p { margin: 0; }

.psew-aps__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 30px;
}
.psew-aps__slide--align-center .psew-aps__actions { justify-content: center; }
.psew-aps__slide--align-right .psew-aps__actions { justify-content: flex-end; }

.psew-aps__button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-height: 48px;
  padding: 14px 24px;
  border-radius: 2px;
  border: 1px solid transparent;
  font-size: 14px;
  line-height: 1.2;
  font-weight: 650;
  text-decoration: none !important;
  transition: transform 220ms ease, background-color 220ms ease, color 220ms ease, border-color 220ms ease, box-shadow 220ms ease;
}
.psew-aps__button:hover,
.psew-aps__button:focus-visible { transform: translateY(-2px); }
.psew-aps__button--primary { color: #111; background: #fff; }
.psew-aps__button--secondary { color: #fff; background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.70); backdrop-filter: blur(8px); }

/* Staggered artistic reveal. */
.psew-aps__reveal {
  opacity: 0;
  transform: translate3d(0, 32px, 0);
  filter: blur(4px);
  transition: opacity calc(var(--psew-aps-duration) * .82) ease, transform var(--psew-aps-duration) cubic-bezier(.18,.78,.2,1), filter calc(var(--psew-aps-duration) * .75) ease;
}
.psew-aps__slide.is-active .psew-aps__reveal { opacity: 1; transform: translate3d(0,0,0); filter: blur(0); }
.psew-aps__slide.is-active .psew-aps__reveal:nth-child(1) { transition-delay: 90ms; }
.psew-aps__slide.is-active .psew-aps__reveal:nth-child(2) { transition-delay: 150ms; }
.psew-aps__slide.is-active .psew-aps__reveal:nth-child(3) { transition-delay: 210ms; }
.psew-aps__slide.is-active .psew-aps__reveal:nth-child(4) { transition-delay: 270ms; }

.psew-aps__arrow {
  position: absolute;
  z-index: 6;
  top: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  padding: 0;
  border: 1px solid rgba(255,255,255,.26);
  border-radius: 50%;
  color: #fff;
  background: rgba(10,10,10,.22);
  cursor: pointer;
  transform: translateY(-50%);
  backdrop-filter: blur(10px);
  transition: transform 220ms ease, background-color 220ms ease, opacity 220ms ease;
}
.psew-aps__arrow:hover { transform: translateY(-50%) scale(1.06); }
.psew-aps__arrow:disabled { opacity: .3; cursor: default; }
.psew-aps__arrow--prev { left: 22px; }
.psew-aps__arrow--next { right: 22px; }

.psew-aps__pagination {
  position: absolute;
  z-index: 7;
  bottom: 28px;
  color: #fff;
  font-size: 12px;
  line-height: 1;
  letter-spacing: .08em;
}
.psew-aps__pagination--bottom-left { left: 28px; }
.psew-aps__pagination--bottom-center { left: 50%; transform: translateX(-50%); }
.psew-aps__pagination--bottom-right { right: 28px; }

.psew-aps__dots { display: flex; align-items: center; gap: 8px; }
.psew-aps__dot {
  width: 7px; height: 7px; margin: 0; padding: 0; border: 0; border-radius: 999px;
  background: rgba(255,255,255,.42); cursor: pointer;
  transition: width 260ms ease, transform 260ms ease, background-color 260ms ease;
}
.psew-aps__dot.is-active { width: 32px; background: #fff; }

.psew-aps__fraction { display: flex; align-items: center; gap: 12px; font-variant-numeric: tabular-nums; }
.psew-aps__fraction-line { width: 46px; height: 1px; background: currentColor; opacity: .58; }

.psew-aps__progress { display: flex; align-items: center; gap: 12px; min-width: 190px; }
.psew-aps__progress-track { position: relative; display: block; flex: 1; height: 2px; overflow: hidden; background: rgba(255,255,255,.42); }
.psew-aps__progress-bar { position: absolute; inset: 0 auto 0 0; width: 0%; background: #fff; transition: width var(--psew-aps-duration) cubic-bezier(.2,.7,.2,1); }
.psew-aps__progress-count { white-space: nowrap; font-variant-numeric: tabular-nums; }

.psew-aps__button:focus-visible,
.psew-aps__arrow:focus-visible,
.psew-aps__dot:focus-visible,
.psew-aps__tone:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }

@media (max-width: 1024px) {
  .psew-aps { min-height: 650px; }
  .psew-aps__slide-inner { padding: 50px 44px; }
  .psew-aps__content { max-width: min(82vw, var(--psew-aps-content-width, 680px)); }
  .psew-aps__heading { font-size: clamp(40px, 7.5vw, 74px); }
  .psew-aps__arrow--prev { left: 16px; }
  .psew-aps__arrow--next { right: 16px; }
}

@media (max-width: 767px) {
  .psew-aps {
    min-height: 580px;
    --psew-aps-pointer-x: 0px !important;
    --psew-aps-pointer-y: 0px !important;
  }

  /* Mobile-specific media controls. A portrait phone image can be supplied per slide. */
  .psew-aps__image {
    object-position: var(--psew-aps-mobile-image-position, var(--psew-aps-image-position, center center));
    object-fit: var(--psew-aps-mobile-image-fit, var(--psew-aps-image-fit, cover));
    transform:
      translate3d(
        var(--psew-aps-slide-x),
        var(--psew-aps-scroll-y),
        0
      )
      scale(var(--psew-aps-mobile-image-scale, 1.04));
  }
  .psew-aps__overlay { background: var(--psew-aps-mobile-overlay, var(--psew-aps-overlay, rgba(0,0,0,.32))); }

  /* A protected bottom zone prevents content from sitting behind navigation. */
  .psew-aps__slide-inner {
    padding-left: max(20px, env(safe-area-inset-left));
    padding-right: max(20px, env(safe-area-inset-right));
    padding-bottom: calc(var(--psew-aps-mobile-nav-safe, 96px) + env(safe-area-inset-bottom)) !important;
  }

  /* Per-slide phone content placement overrides. */
  .psew-aps__slide--mobile-content-top-left .psew-aps__slide-inner { align-items: flex-start; justify-content: flex-start; }
  .psew-aps__slide--mobile-content-top-center .psew-aps__slide-inner { align-items: flex-start; justify-content: center; }
  .psew-aps__slide--mobile-content-top-right .psew-aps__slide-inner { align-items: flex-start; justify-content: flex-end; }
  .psew-aps__slide--mobile-content-center-left .psew-aps__slide-inner { align-items: center; justify-content: flex-start; }
  .psew-aps__slide--mobile-content-center-center .psew-aps__slide-inner { align-items: center; justify-content: center; }
  .psew-aps__slide--mobile-content-center-right .psew-aps__slide-inner { align-items: center; justify-content: flex-end; }
  .psew-aps__slide--mobile-content-bottom-left .psew-aps__slide-inner { align-items: flex-end; justify-content: flex-start; }
  .psew-aps__slide--mobile-content-bottom-center .psew-aps__slide-inner { align-items: flex-end; justify-content: center; }
  .psew-aps__slide--mobile-content-bottom-right .psew-aps__slide-inner { align-items: flex-end; justify-content: flex-end; }

  .psew-aps__content {
    width: min(100%, var(--psew-aps-mobile-content-width, 100%));
    max-width: var(--psew-aps-mobile-content-width, 100%);
    transform: translate3d(var(--psew-aps-mobile-content-offset-x, 0px), var(--psew-aps-mobile-content-offset-y, 0px), 0);
  }
  .psew-aps__slide--mobile-align-left .psew-aps__content { text-align: left; }
  .psew-aps__slide--mobile-align-center .psew-aps__content { text-align: center; }
  .psew-aps__slide--mobile-align-right .psew-aps__content { text-align: right; }
  .psew-aps__slide--mobile-align-left .psew-aps__actions { justify-content: flex-start; }
  .psew-aps__slide--mobile-align-center .psew-aps__actions { justify-content: center; }
  .psew-aps__slide--mobile-align-right .psew-aps__actions { justify-content: flex-end; }
  .psew-aps__slide--mobile-align-left .psew-aps__text { margin-left: 0; margin-right: auto; }
  .psew-aps__slide--mobile-align-center .psew-aps__text { margin-left: auto; margin-right: auto; }
  .psew-aps__slide--mobile-align-right .psew-aps__text { margin-left: auto; margin-right: 0; }

  .psew-aps__eyebrow { font-size: 10px; letter-spacing: .15em; }
  .psew-aps__heading { font-size: clamp(30px, 9.4vw, 50px); line-height: .98; letter-spacing: -.035em; }
  .psew-aps__text { max-width: 44ch; margin-top: 14px; font-size: 14.5px; line-height: 1.5; }
  .psew-aps__actions { gap: 9px; margin-top: 20px; }
  .psew-aps__button { min-height: 44px; max-width: 100%; padding: 12px 18px; font-size: 13px; }

  .psew-aps__arrow {
    top: auto;
    bottom: calc(16px + env(safe-area-inset-bottom));
    width: 40px;
    height: 40px;
    transform: none;
    touch-action: manipulation;
  }
  .psew-aps__arrow:hover { transform: scale(1.04); }
  .psew-aps__arrow--prev { left: max(16px, env(safe-area-inset-left)); }
  .psew-aps__arrow--next { right: max(16px, env(safe-area-inset-right)); }
  .psew-aps__pagination { bottom: calc(30px + env(safe-area-inset-bottom)); }
  .psew-aps__pagination--bottom-left { left: max(72px, calc(env(safe-area-inset-left) + 72px)); }
  .psew-aps__pagination--bottom-right { right: max(72px, calc(env(safe-area-inset-right) + 72px)); }
  .psew-aps__progress { min-width: 150px; }
  .psew-aps__dot { width: 6px; height: 6px; }
  .psew-aps__dot.is-active { width: 26px; }
}

@media (max-width: 420px) {
  .psew-aps__slide-inner { padding-top: 26px; }
  .psew-aps__heading { font-size: clamp(28px, 9.2vw, 42px); }
  .psew-aps__text { font-size: 14px; }
  .psew-aps__actions { width: 100%; }
  .psew-aps__button { padding-left: 14px; padding-right: 14px; }
  .psew-aps__pagination--fraction { font-size: 11px; }
  .psew-aps__progress { min-width: 128px; gap: 8px; }
}

@media (prefers-reduced-motion: reduce) {
  .psew-aps__slide,
  .psew-aps__image,
  .psew-aps__reveal,
  .psew-aps__button,
  .psew-aps__arrow,
  .psew-aps__dot,
  .psew-aps__progress-bar { transition-duration: .01ms !important; animation-duration: .01ms !important; }
  .psew-aps__image { transform: none !important; }
  .psew-aps__reveal { filter: none !important; }
}

/* Elementor/theme reset protection. */
.elementor-widget-psew_artistic_parallax_slider .psew-aps { display: block; position: relative; width: 100%; }
.elementor-widget-psew_artistic_parallax_slider .psew-aps__slide { margin: 0; padding: 0; max-width: none; }
.elementor-widget-psew_artistic_parallax_slider .psew-aps__slide[aria-hidden="true"] { display: block; }
