/* 
 Notes on the classes:

 1. The .carousel-left and .carousel-right is used to indicate where
    the active slide is heading.
 2. .active is the current slide.
 3. .active.carousel-left and .active.carousel-right is the current
    slide in its in-transition state. Only one of these occurs at a time.
 4. .carousel-next.carousel-left and .carousel-prev.carousel-right
    is the upcoming slide in transition.
*/

/* Default Values */

:root {
  --animationDuration: .7s;
  --animationTiming: ease;
  --animationChange: 7s;
  --navyBlue: #2E5894;
  --Raleway: 'Raleway';
}

.carousel {
  position: sticky;
  top: 110px;
  display: flex;
  width: 100%;
  height: calc(var(--vh, 1vh) * 100 - 160px);
  background-color: black;
}

/* Carousel Controls */

.carousel-indicators {
  display: none;
}

.carousel-arrow {
  border: solid white;
  border-width: 0 3px 3px 0;
  display: inline-block;
  padding: 0;
  width: 20px;
  height: 20px;
  position: absolute;
  top: 50%;
  z-index: 4;
  cursor: pointer;
  opacity: 0;
  transition: opacity .5s ease;
}

.carousel-arrow.left {
  left: 2.5%;
  transform: rotateZ(135deg);
}
.carousel-arrow.right {
  right: 2.5%;
  transform: rotateZ(315deg);
}

.carousel:hover .carousel-arrow { opacity: 1; }

.carousel-status-bar {
  position: absolute;
  top: 0;
  left: 0;
  height: 7px;
  width: 100%;
  background-color: var(--navyBlue);
  z-index: 1;
}

.carousel-status-bar.start {
  animation: statusBarLoad var(--animationChange) linear forwards;
}

.carousel-scrollDownIcon {
  position: absolute;
  bottom: 30px;
  left: 50%;
  width: 4%;
  height: auto;
  z-index: 1;
  box-shadow: inset 1px 1px 20px 20px #7f7f7f00;
  transform: translateX(-50%);
  animation: mouseScrollDown 2s ease-in-out forwards;
  animation-iteration-count: infinite;
}

@keyframes mouseScrollDown {
  0% { bottom: 20px; }
  50% { bottom: 10px; }
  100% { bottom: 20px; }
}

@keyframes statusBarLoad {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(0); }
}

.carousel-item-container {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: inherit;
}

.carousel-heading {
  position: relative;
  top: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: inherit;
  z-index: 3;
  color: white;
  display: flex;
  align-items: center;
  display: none;
}

.carousel-heading  h1 {
  font-size: 4.5rem;
  user-select: none;
  text-shadow: 1px 1px 8px #000;
  font-style: italic;
  position: absolute;
  top: 30%;
  left: 13%;
  text-transform: uppercase;
}

.carousel-heading .typeWriter {
  border-right: 1px solid white;
  padding-right: .5rem;
}

.carousel-caption {
  display: flex;
  position: relative;
  z-index: 4;
  align-items: center;
  justify-content: center;
  height: inherit;
  width: 100%;
}

.carousel-caption h2 {
  color: white;
  z-index: 4;
  font-size: 5rem;
  font-family: var(--Raleway);
  margin: .5% 0 0;
  text-align: left;
  line-height: 4.5rem;
  font-weight: 700;
  position: absolute;
  left: 10vw;
  user-select: none;
  text-shadow: 1px 1px 4px #000000d4;
}

.carousel-caption h2 .h2-color { color: var(--navyBlue); }

.carousel-caption h2 span {
  transform-origin: top;
  display: block;
  opacity: 0;
  width: fit-content;
  margin: 0;
  margin-left: var(--mlH2);
}

#h2-resized-home { font-size: 2.5rem; }

.carousel-caption h2 span:first-child { 
  transform: rotate3d(1,0,0,93deg); 
  text-transform: uppercase;
  color: #009efd;
}

.carousel-caption h2 span:not(:first-child) { font-size: 3.5rem; } 

.carousel-caption h2 span:nth-child(2) { transform: translateX(-100%);  }
.carousel-caption h2 span:nth-child(3) { transform: translateX(100%); }

.carousel-slide-link {
  width: max-content;
  position: absolute;
  left: calc(10vw + var(--mlH2));
  z-index: 10;
  font-family: var(--Raleway);
  bottom: -10%;
  padding: 10px 8px 10px 12px;
  text-transform: uppercase;
  text-decoration: none;
  color: white;
  border: 2px solid var(--navyBlue);
  font-size: 0.9rem;
  font-weight: 700;
  display: block;
  overflow: hidden;
  text-shadow: 1px 1px 4px #000000d4;
}

@keyframes slideTop {
  0% { bottom: -10%; opacity: 0; }
  100% { bottom: 15vh; opacity: 1;}
}

.carousel-slide-link::after {
  content: "\27a1";
  margin-left: 3rem;
  padding-right: 0.6rem;
  width: auto;
  display: inline-block;
}

.carousel-slide-link::before {
  content: " ";
  position: absolute;
  height: 100%;
  width: 85px;
  top: 0;
  transform: skewX(-25deg);
  background-color: #0000002e;
  z-index: -1;
  right: -30px;
}

.carousel-slide-link span {
  height: 100%;
  width: 0;
  display: block;
  position: absolute;
  top: 0;
  left: 0;
  background-color: var(--navyBlue);
  z-index: -2;
  transition: width .3s linear;
}

.carousel-slide-link:hover span { width: 100%; }

.slide-down { animation: slideDown 1s cubic-bezier(0.39, 0.58, 0.57, 1) 1s forwards; }
.slide-left { animation: slideLeft 1s cubic-bezier(0.39, 0.58, 0.57, 1) 1.4s forwards; }
.slide-right { animation: slideRight 1s cubic-bezier(0.39, 0.58, 0.57, 1) 1.8s forwards; }
.slide-top { animation: slideTop 1s cubic-bezier(0, 0.43, 0.67, 0.96) 2.2s forwards; }

/* Carousel Items*/
.carousel-item {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 0;
  height: 100%;
  perspective: 1000px;
  display: flex;
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}

.carousel-item > picture img {
  height: auto;
  width: 100%;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.carousel-cover {
  position: absolute;
  z-index: 1;
  top: 0;
  left: -60vw;
  height: 100%;
  transform: skew(-20deg);
  transition: left .5s ease;
  background-color: rgba(0,0,0,.6);
}

.carousel-item-container .carousel-item > .carousel-caption > .carousel-cover { width: 65vw; }
.carousel-item-container .carousel-item ~ .carousel-item > .carousel-caption > .carousel-cover { width: 50vw; }

.carousel-cover.slide-right { animation: slideRightCover .7s cubic-bezier(0.45, 0.05, 0.55, 0.95) forwards; }

@keyframes slideRightCover {
  0% { left: -60vw; }
  100%{ left: 10vw; }
}

.active {
  display: block;
  /* transition: all 1s ease-in-out; */
}

.disabled { display: none; }

/* From right to left */
.carousel-right { transform: translateX(100%); }
.carousel-prev.right { animation: prevRight var(--animationDuration) var(--animationTiming)  forwards; }
.carousel-next.right { animation: nextRight var(--animationDuration) var(--animationTiming)  forwards; }

/* From left to right */
.carousel-left { transform: translateX(-100%); }
.carousel-prev.left { animation: prevLeft var(--animationDuration) var(--animationTiming)  forwards; }
.carousel-next.left { animation: nextLeft var(--animationDuration) var(--animationTiming)  forwards; }

@keyframes slideDown {
  0% { transform: rotate3d(1,0,0,93deg); opacity: 0; }
  50% { transform: rotate3d(1,0,0,-20deg); }
  100% { transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); opacity: 1;}
}

@keyframes slideLeft {
  0% { transform:translateX(-100%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1;}
}

@keyframes slideRight {
  0% { transform: translateX(100%); opacity: 0; }
  100% { transform: translateX(0); opacity: 1;}
}

@keyframes nextRight {
  from { transform: scale(2); opacity: 0; }
  to { transform: scale(1); opacity: 1;}
}

@keyframes prevRight {
  from { transform: scale(1); opacity: 1 }
  to { transform: scale(2);opacity: 0 }
}

@keyframes nextLeft { 
  from { transform: scale(2);  opacity:0; }
  to { transform: scale(1); opacity: 1;}
}

@keyframes prevLeft {
  from { transform: scale(1); opacity: 1; }
  to { transform: scale(2); opacity: 0;}
}

@media (max-width:1366px) {
  .carousel-caption h2 {
	font-size: 3.5rem;
	line-height: 3.5rem;
  }
  
  .carousel-caption h2 span:not(:first-child) { font-size: 2.5rem; } 
  
  .carousel-slide-link {
    font-size: .8rem;
    padding: 9.6px 4.8px 9.6px 8.8px;
  }
}