:root {
  --mono-ease-smooth: cubic-bezier(0.2, 0.8, 0.2, 1);
  --mono-ease-soft: cubic-bezier(0.22, 1, 0.36, 1);
  --mono-ease-emph: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Base layout */
#tm-main {
  opacity: 1;
  transition: opacity 1ms ease;
}

/* Curtain base */
.mono-swup-curtain {
  position: fixed;
  inset: 0;
  background: #000;
  z-index: 999999; /* set below 980 to go under nav */
  pointer-events: none;
  will-change: transform;

  /* Center children */
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Split curtains */
.mono-curtain--split-left,
.mono-curtain--split-right {
  width: 50%;
  height: 100%;
  top: 0;
  bottom: 0;
}

.mono-curtain--split-left {
  left: 0;
  right: auto;
}

.mono-curtain--split-right {
  right: 0;
  left: auto;
}

@media (max-width: 1024px) {
  .mono-curtain--split-left,
  .mono-curtain--split-right {
    width: 50%;
  }

  .mono-curtain--split-left {
    left: 0;
    right: auto;
  }

  .mono-curtain--split-right {
    right: 0;
    left: auto;
  }

  body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-left,
  body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-left,
  body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-left,
  body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-left,
  body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-left,
  body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-left {
    display: none;
  }

  .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-left,
  .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-left {
    display: none;
  }

  body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-right,
  body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-right,
  body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-right,
  body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-right,
  body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-right,
  body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-right {
    width: 100%;
    left: 0;
    right: 0;
  }

  .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--split-right,
  .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--split-right {
    width: 100%;
    left: 0;
    right: 0;
  }

  .mono-curtain--split-seamless.mono-curtain--dir-up .mono-swup-curtain-image,
  .mono-curtain--split-seamless.mono-curtain--dir-down .mono-swup-curtain-image {
    width: 100%;
    left: 0;
    right: 0;
  }
}

/* Curtain title */
/* The title itself */
.mono-swup-curtain-title {
  display: block;

  /* Typography */
  font-size: clamp(2.5rem, 6vw, 6rem);
  font-weight: 400;
  line-height: 1.05;
  letter-spacing: 0.02em;
  text-align: center;
  text-transform: uppercase;

  /* Color – usually subtle contrast */
  color: #fff;

  /* Prevent layout shifts */
  white-space: nowrap;

  /* Optional refinement */
  text-rendering: geometricPrecision;
  -webkit-font-smoothing: antialiased;
}

.mono-swup-curtain-title:empty {
  display: none;
}

/* Split title alignment (treat as single title cut in half) */
.mono-curtain--split-left .mono-swup-curtain-title,
.mono-curtain--split-right .mono-swup-curtain-title {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 200%;
}

.mono-curtain--split-left .mono-swup-curtain-title {
  left: 0;
  right: auto;
}

.mono-curtain--split-right .mono-swup-curtain-title {
  left: -100%;
  right: auto;
}

/* Curtain image */
/* Image layer */
.mono-swup-curtain-image {
  position: absolute;
  inset: 0;

  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;

  opacity: 0.5;
  mix-blend-mode: normal;
}

/* Split image alignment (treat as single image cut in half) */
.mono-curtain--split-left,
.mono-curtain--split-right {
  overflow: hidden;
}

.mono-curtain--split-left .mono-swup-curtain-image {
  width: 200%;
  height: 100%;
  left: 0;
  right: auto;
}

.mono-curtain--split-right .mono-swup-curtain-image {
  width: 200%;
  height: 100%;
  right: 0;
  left: auto;
}

@media (max-width: 1024px) {
  .mono-curtain--split-left.mono-curtain--dir-up .mono-swup-curtain-image,
  .mono-curtain--split-left.mono-curtain--dir-down .mono-swup-curtain-image,
  .mono-curtain--split-right.mono-curtain--dir-up .mono-swup-curtain-image,
  .mono-curtain--split-right.mono-curtain--dir-down .mono-swup-curtain-image {
    width: 100%;
    left: 0;
    right: 0;
  }

  .mono-curtain--split-left.mono-curtain--dir-up .mono-swup-curtain-title,
  .mono-curtain--split-left.mono-curtain--dir-down .mono-swup-curtain-title,
  .mono-curtain--split-right.mono-curtain--dir-up .mono-swup-curtain-title,
  .mono-curtain--split-right.mono-curtain--dir-down .mono-swup-curtain-title {
    width: 100%;
    left: 0;
    right: 0;
  }
}

/* Curtain motion states */

/* Down */
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-down {
  transform: translateY(-100%);
}
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-down {
  transform: translateY(0);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-down {
  transform: translateY(100%);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-down.mono-curtain--reverse {
  transform: translateY(-100%);
}

/* Up */
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-up {
  transform: translateY(100%);
}
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-up {
  transform: translateY(0);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-up {
  transform: translateY(-100%);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-up.mono-curtain--reverse {
  transform: translateY(100%);
}

/* Left */
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-left {
  transform: translateX(100%);
}
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-left {
  transform: translateX(0);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-left {
  transform: translateX(-100%);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-left.mono-curtain--reverse {
  transform: translateX(100%);
}

/* Split overrides for horizontal travel (theater curtain) */
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-left,
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-right {
  transform: translateX(-100%);
}
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-left,
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-right {
  transform: translateX(0);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-left,
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-right {
  transform: translateX(-100%);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-left.mono-curtain--reverse,
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-left.mono-curtain--dir-right.mono-curtain--reverse {
  transform: translateX(-100%);
}

body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-left,
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-right {
  transform: translateX(100%);
}
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-left,
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-right {
  transform: translateX(0);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-left,
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-right {
  transform: translateX(100%);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-left.mono-curtain--reverse,
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--split-right.mono-curtain--dir-right.mono-curtain--reverse {
  transform: translateX(100%);
}

/* Right */
body.mono-curtain--state-idle .mono-curtain--directional.mono-curtain--dir-right {
  transform: translateX(-100%);
}
body.mono-curtain--state-cover .mono-curtain--directional.mono-curtain--dir-right {
  transform: translateX(0);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-right {
  transform: translateX(100%);
}
body.mono-curtain--state-reveal .mono-curtain--directional.mono-curtain--dir-right.mono-curtain--reverse {
  transform: translateX(-100%);
}
