*:after,
*:before {
    box-sizing: border-box;
}

section {
  margin: 0;
}

/* Animations, from -100% so we get a nice amount of motion on both sides */
@keyframes anim-parallax-y {
  from { 
    transform: translateY(calc(-100% * var(--offset) * var(--multiplier)));
  }
  to {
    transform: translateY(calc(100% * var(--offset) * var(--multiplier)));
  }
}

@keyframes anim-parallax-x {
  from { 
    transform: translateX(calc(-100% * var(--offset) * var(--multiplier)));
  }
  to {
    transform: translateX(calc(100% * var(--offset) * var(--multiplier)));
  }
}

/* Base frame setup */
.frame {
  --multiplier: 1;
  display: flex;
  position: absolute;
  align-items: center;
  width: 100%;
  min-height: 25%;

  background: var(--color-light);
  background-image: var(--texture-noise);
  border-radius: 0;

  /* Commment this out to get a better visual for how the layers are behaving */
  overflow: clip;

  img {
    position: absolute;
    top: 0 !important;
    inset: 0;
    left: 0;
    width: 100%;
  }

  .parallax-large-bg {
    position: absolute;
    top: 0 !important;
    inset: 0;
    left: -45rem;
    width: 150%;
  }
}


.standard-parallax-layer {
  height: 465px;
  min-height: auto;
}

.rewards-parallax-layer {
  height: 0;
  min-height: 4.60%;
}

.standard-rewards-parallax-layer {
  height: 0;
  min-height: 11%;
}

.frame-vertical {
  --multiplier: 1;
  display: flex;
  position: absolute;
  align-items: center;
  width: 100%;
  height: auto;
  background: var(--color-light);
  background-image: var(--texture-noise);
  border-radius: 0;
  /* Commment this out to get a better visual for how the layers are behaving */
  overflow: clip;
  margin-top: -20rem;

  /* img {
    position: absolute;
    top: 27px;
    inset: 0;
    width: 60%;
    height: auto;
  } */
}

.parallax-tall > div > img.parallax-image {
  left: -140%;
  height: 115%;
  width: auto !important;
}

.fr-parallax-img>div>img {
  position: relative;
  width: 100%;
  left: 0%;
}

/* Parallax Cards */
.cards-parallax {
  z-index: 9999;
  position: absolute;
  height: 1500px;
  top: -70rem;
}

.parallax-content > .vertical-cards {
    height: 800px;
}

.cards-parallax-text {
    position: relative;
    top: -3.5rem;
}

.co-below-parallax {
    position: relative;
    top: -18rem;
}

/* Wrapping the animation with a supports to check browser compatibility */
/* Attach these classes to the frame, so the animation gets applied to every img within. */
@supports (animation-timeline: view()) {
  .parallax-y {
    img {
        @media(prefers-reduced-motion: no-preference) {
            animation: anim-parallax-y linear forwards;
            animation-timeline: view();
            animation-range: entry 0% exit 100%;
        }
    }
  }
}
@supports (animation-timeline: view()) {
  .parallax-x {
    img {
        @media(prefers-reduced-motion: no-preference) {
            animation: anim-parallax-x linear forwards;
            animation-timeline: view();
            animation-range: entry 0% exit 100%;
        }
    }
  }
}

/* A little message for folks that can't see the parralax */
@supports not (animation-timeline: view()) {
  .supports {
    display: block;
    text-align: center;
    padding: .5em;
    margin: 0 auto;
    font-size: var(--step--2);

    &::after{
      content: "🚫 Sorry, animation-timeline: view() isn't supported in your browser.";
    }
  }
}

/* Some basic helper classes */
.frame-a4 {
  aspect-ratio: 1.414 / 1;
}

.frame-square {
  aspect-ratio: 1 / 1;
}

.parallax-wrapper {
  position: relative;
  margin: 1vh 0 0 0;
}

.parallax-row {
  position: absolute;
  width: 100%;
  top: -43.5rem;
}

.rays {
  mix-blend-mode: color-dodge;
}

.filter-mutedGreen {
  filter: sepia(100%) hue-rotate(100deg) saturate(50%);
}

.filter-softSepia {
  filter: sepia(20%);
}

.filter-blue {
  filter: sepia(100%) hue-rotate(180deg) saturate(300%);
}

.filter-dark {
  position: absolute;
  inset: 0;
  background-color: rgba(0, 0, 0, 0.5);
  pointer-events: none;
  z-index: 1;
}

.parallax-depth {
  position: absolute;
  inset: 0;
  pointer-events: none;
  box-shadow: inset 0px 0px 20px 20px rgb(0 0 0 / 20%);
  z-index: 0;
}

.parallax-depth-0 {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}

.parallax-content {
  display: flex;
  align-items: center;
  height: 650px;
}

.parallax-img-container {
  width: 100vw;
  min-height: 100%;
  height: max-content;
  display: inline-block;
}

.parallax-img-container img {
    object-fit: cover;
}

.standard-parallax-layer img {
  object-fit: cover;
  height: 150%;
  top: -5rem !important;
}

.parallax-content-vertical {
    display: flex;
    align-items: center;
    height: 1200px;
}

.parallax-content-children {
    display: flex;
    align-items: center;
    height: auto !important;
}

.loyalty-parallax-container {
  display: flex;
  align-items: center;
  min-height: 600px;
  overflow: visible;
  margin-bottom: 50rem;
}

.parallax-content-vertical {
  display: flex;
  align-items: center;
  height: 1300px;
}

.loyalty-text {
  display: flex;
  position: absolute;
  width: 100%;
  height: 600px;
  right: 30%;
  align-items: center;
  justify-content: flex-end;
  margin-top: 40rem;
}

/* Rotating Parallax */
div .rotating-parallax {
    display: grid;
    place-items: center;
    min-height: 100vh;
    width: 100vw;
    overflow-x: hidden;
    height: 300vh;
    background: var(--surface-2);
}

.rotating-parallax-ul, .rotate-img img {
    animation: scale-up both ease-in;
    animation-timeline: scroll(root);
}

.rotating-parallax-ul {
    --big-tile-size: 50vmin;
    --scale: 0.4;
    --rotation: 350deg;
    --tile-size: calc(var(--big-tile-size) / 3);
    list-style-type: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: 1vmin;
    grid-template: repeat(9, var(--tile-size)) / repeat(9, var(--tile-size));
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(var(--scale));
}

@keyframes scale-up {
    0% {
        transform: translate(-50%, -50%) scale(var(--scale)) rotate(0deg);
    }
    100% {
        transform: translate(-50%, -50%) scale(1) rotate(var(--rotation));  
    }
}

.rotate-img img {
    --rotation: -270deg;
    --scale: 1;
    height: 200%;
    min-width: 200%;
    aspect-ratio: 1;
    object-fit: cover;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.rotating-parallax-li  {
    padding: 0;
    position: relative;
    background: hsl(0 0% 75% / 0.2);
    max-inline-size: 100%;
}

.rotating-parallax-li {
    grid-column: var(--x1, auto) / var(--x2, auto);
    grid-row: var(--y1, auto) / var(--y2, auto);
}

.rotating-parallax-li {
    border-radius: var(--radius-2);
    overflow: hidden;
}

@media screen and (max-width:2560px) {
  .parallax-content {
    min-height: 100%;
  }

  .cards-parallax-text {
    top: -3.5rem;
  }

  .frame-vertical {
    img {
      top: -40px;
      width: 125%;
      left: -16%;
    }
  }

  .loyalty-parallax-container {
    margin-bottom: 30rem;
  }

  .loyalty-text {
    margin-top: 28rem;
  }
}

@media screen and (max-width: 2048px) {
  .parallax-content {
    height: 465px;
  }

  .parallax-content-vertical {
    display: flex;
    align-items: center;
    height: 1160px;
  }

  .frame-vertical {
      width: 100%;
  }

  .frame-vertical {
    img {
      top: -5px;
      width: 130%;
      left: -20%;
    }
  }

  .parallax-wrapper {
    position: relative;
    margin: 1vh 0 0 0;
  }

  .parallax-row {
    position: absolute;
    width: 100%;
    top: -31.5rem;
  }
}

@media screen and (max-width:1920px) {
  .frame {
    img {
      width: 100%;
    }
  }

  .standard-parallax-layer img {
    object-fit: contain;
    overflow-x: hidden;
  }

  .cards-parallax-text {
    top: -24.5rem;
  }

  .parallax-content-vertical {
    display: flex;
    align-items: center;
    height: 1160px;
  }

  .frame-vertical {
      width: 100%;
  }

  .frame-vertical {
    img {
      top: 6rem !important;
      width: 125%;
      left: -15%;
      overflow-x: hidden;
    }
  }

  .fr-parallax-img>div>img {
    width: 300%;
    left: 0%;
  }

  .loyalty-parallax-container {
    max-height: 85vh;
  }

  .loyalty-text {
    right: 15%;
  }
}

@media screen and (max-width:1280px) {
  .frame img {
    width: 106% !important;
    height: auto;
  }

  .frame-vertical {
    max-width: 100%;
  }

  .frame-vertical {
    img {
      top: -16px;
      width: 78%;
      left: -21.5%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 375px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
    justify-content: center;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 49rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  .loyalty-parallax-container .frame:not(.frame-vertical) img.parallax-image {
    width: 280% !important;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 143% !important;
    height: auto;
    left: -1.5%;
  }

  .loyalty-text {
    width: 100%;
    right: auto;
    margin-top: 65rem;
    justify-content: center;
  }
}

@media screen and (max-width:1024px) {
  .frame img {
    width: 150% !important;
    height: auto;
  }

  .frame-vertical {
    max-width: 100%;
  }

  .frame-vertical {
    img {
      top: -16px;
      width: 78%;
      left: -21.5%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 375px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
    justify-content: center;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 49rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  .loyalty-parallax-container .frame:not(.frame-vertical) img.parallax-image {
    width: 280% !important;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 200% !important;
    height: auto;
    left: -21.5%;
  }

  .loyalty-text {
    width: 100%;
    right: auto;
    margin-top: 70rem;
    justify-content: center;
  }
}

@media screen and (max-width:820px) {
  .frame img {
    width: 200% !important;
    height: auto;
    left: -37%;
  }

  .frame-vertical {
    max-width: 100%;
  }

  .frame-vertical {
    img {
      top: -16px;
      width: 78%;
      left: -24.8%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 375px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 49rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  .loyalty-parallax-container .frame:not(.frame-vertical) img.parallax-image {
    width: 280% !important;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 225% !important;
    height: auto;
    left: -30.35%;
  }

  .loyalty-text {
    width: 95%;
    right: 10px;
    margin-top: 65rem;
  }
}

@media screen and (max-width:768px) {
  .frame img {
    width: 200% !important;
    height: auto;
    left: -37%;
  }

  .frame-vertical {
    max-width: 100%;
  }

  .frame-vertical {
    img {
      top: -16px;
      width: 78%;
      left: -24.8%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 375px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 49rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  .loyalty-parallax-container .frame:not(.frame-vertical) img.parallax-image {
    width: 280% !important;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 225% !important;
    height: auto;
    left: -30.35%;
  }

  .loyalty-text {
    width: 95%;
    right: 10px;
    margin-top: 65rem;
  }
}

@media screen and (max-width:540px) {
  .frame img {
    width: 200% !important;
    height: auto;
    left: -37%;
  }

  .frame-vertical {
    max-width: 85%;
  }

  .frame-vertical {
    img {
      top: 30px;
      width: 78%;
      left: -24.8%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 525px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 49rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  .loyalty-parallax-container .frame:not(.frame-vertical) img.parallax-image {
    width: 225% !important;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 150% !important;
    height: auto;
  }

  .loyalty-text {
    width: 95%;
    right: 10px;
    margin-top: 65rem;
  }
}

@media screen and (max-width:430px) {
  .frame img {
    width: 100% !important;
    height: auto;
    left: 0;
  }

  .standard-parallax-layer {
    height: 290px;
  }

  .frame-vertical {
    max-width: 85%;
  }

  .frame-vertical {
    img {
      top: 90px;
      width: 78%;
      left: -24.8%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 525px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 37rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  .loyalty-parallax-container .frame:not(.frame-vertical) img.parallax-image {
    width: 225% !important;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 140% !important;
    height: auto;
    left: -19.35%; 
  }

  .loyalty-text {
    width: 95%;
    right: 10px;
    margin-top: 43rem;
  }
}

@media screen and (max-width: 375px) {
  .frame img {
    width: auto !important;
    height: 100%;
  }

  .frame-vertical {
    max-width: 100%;
  }

  .frame-vertical {
    img {
      top: 35px;
      width: 78%;
      left: -34%;
    }
  }

  .cards-parallax-text {
    top: -19.5rem;
  }

  .parallax-content {
    height: 460px;
  }

  .parallax-content-vertical {
    max-height: 85vh;
  }

  .parallax-tall>div>img.parallax-image {
    left: -140%;
    height: 115%;
    width: auto !important;
  }

  .fr-parallax-img>div>img {
    width: 280%;
    left: -8%;
  }

  .loyalty-parallax-container {
    min-height: 0;
    max-height: 120vh;
    margin-top: 15rem;
    margin-bottom: 49rem;
  }

  .loyalty-parallax-container .parallax-content {
    height: 730px;
  }

  [data-val-ltype="--vertical"] img.parallax-image {
    width: 140% !important;
    height: auto;
    left: -28.35%; 
  }

  .loyalty-text {
    width: 95%;
    right: 10px;
    margin-top: 65rem;
  }
}