body {
    margin: 0;
    padding: 0;
    height: 100vh;
    width: 100vw;
    font-family: 'Bebas Neue', sans-serif;
    overflow: hidden;
    background: black;
}

.Overlay {
    position: fixed;
    inset: 0;
    background: black;
    z-index: 9999;
}

.IntroScreen {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    color: white;
    text-align: center;
    cursor: pointer;
    z-index: 20;
}

.IntroTitle { font-size: 6vw; animation: Pulse 1.8s infinite; }
.IntroSubtitle { font-size: 2vw; margin-top: 1vw; opacity: .8; animation: Pulse 1.8s infinite; }

.Message {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    font-size: 4.5vw;
    color: white;
    text-shadow: 0 0 15px white;
    opacity: 0;
    transition: opacity 1s ease-in-out;
}

.HighlightOrange { color: #ff6b4a; text-shadow: 0 0 15px #ff6b4a; }
.HighlightPurple { color: #8927d5; text-shadow: 0 0 15px #8927d5; }

.Logo {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) scale(.5);
    opacity: 0;
    width: 400px;
    transition: opacity 1s ease-in-out, transform 1s ease-in-out;
}

.Credits {
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    width: 80%;
    text-align: center;
    font-size: 3vw;
    line-height: 5vw;
    color: white;
    top: 100vh;
    opacity: 0;
}

.ChristmasScreen {
    position: absolute;
    inset: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    flex-direction: column;
    opacity: 0;
    transition: opacity 2s ease-in-out;
    color: white;
    z-index: 10;
}

.ChristmasText {
    font-size: 4vw;
    text-align: center;
    margin-bottom: 4vw;
    text-shadow: 0 0 20px white;
}

.Snow {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
}

.SnowDot {
    position: absolute;
    top: -10px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: white;
    box-shadow: 0 0 6px white;
    opacity: .9;
    animation: SnowFall linear infinite;
}

.christmas-tree {
    position: absolute;
    bottom: 60px;
    opacity: 0;
}

.christmas-tree.left { left: 10%; }
.christmas-tree.right { right: 10%; }

.tree,
.tree-details,
.treelights,
.balls,
.star,
.shadow {
    opacity: 0;
}

.tree {
    position: absolute;
    width: 20px;
    border-right: 5px solid transparent;
    border-left: 5px solid transparent;
    border-bottom: 55px solid #823723;
    height: 0;
}

.tree:before {
    content: "";
    position: absolute;
    background-color: #823723;
    border-radius: 50%;
    width: 30px;
    height: 10px;
    top: 50px;
    left: -5px;
}

.tree:after {
    content: "";
    position: absolute;
    border-right: 75px solid transparent;
    border-left: 75px solid transparent;
    border-bottom: 200px solid #107261;
    width: 0;
    height: 0;
    top: -180px;
    left: -65px;
}

.tree-details {
    position: absolute;
    width: 150px;
    height: 10px;
    background-color: #107261;
    border-radius: 50%;
    top: 15px;
    left: -65px;
    z-index: 1;
}

.tree-details:before {
    content:"";
    position: absolute;
    background-color: #0a897c;
    border-radius:50%;
    width: 5px;
    height: 5px;
    top:-10px;
    left:20px;
    box-shadow: 50px -50px #0a897c, 30px -70px #0a897c, 40px -130px #0a897c, 70px -5px #0a897c, 85px -75px #0a897c;
    opacity: 0;
    animation: DropDetails 0.6s forwards 1s;
}

.treelights {
    position: absolute;
}

.row-one, .row-two {
    position: absolute;
    border-radius: 50%;
    background-color: #e9d8a6;
}

.row-one {
    width: 10px;
    height: 10px;
    top: -120px;
    left: -15px;
    box-shadow: 10px 10px #e9d8a6,25px 15px #e9d8a6,40px 18px #e9d8a6,54px 15px #e9d8a6;
}

.row-two {
    width: 10px;
    height: 10px;
    left: -42px;
    top: -45px;
    box-shadow: 10px 10px #e9d8a6,25px 17px #e9d8a6,40px 24px #e9d8a6,55px 28px #e9d8a6,70px 30px #e9d8a6,85px 29px #e9d8a6,100px 25px #e9d8a6,112px 20px #e9d8a6;
}

.balls {
    position: absolute;
    background-color: #f34653;
    width: 15px;
    height: 15px;
    border-radius: 50%;
    z-index: 2;
    box-shadow: -20px -55px #f34653,25px -70px #f34653;
}

.balls:before {
    content: "";
    position: absolute;
    background-color: #f34653;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    left: -40px;
    top: -10px;
    box-shadow: 100px 10px #f34653,25px -80px #f34653,60px -120px #f34653;
}

.balls:after {
    content: "";
    position: absolute;
    background-color: #94d2bd;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    top: -40px;
    left: 40px;
    box-shadow: -35px -35px #94d2bd,-35px -105px #94d2bd,-60px 45px #94d2bd;
}

.star {
    position: absolute;
    width: 0;
    height: 0;
    border-right: 25px solid transparent;
    border-bottom: 17.5px solid #f9c819;
    border-left: 25px solid transparent;
    transform: rotate(-35deg);
    top: -190px;
    left: -9px;
}

.star:before {
    content: "";
    position: absolute;
    border-bottom: 20px solid #f9c819;
    border-left: 7.5px solid transparent;
    border-right: 7.5px solid transparent;
    top: -12.5px;
    left: -17.5px;
    transform: rotate(-35deg);
}

.star:after {
    content: "";
    position: absolute;
    top: .75px;
    left: -26.25px;
    border-right: 25px solid transparent;
    border-bottom: 17.5px solid #f9c819;
    border-left: 25px solid transparent;
    transform: rotate(-70deg);
}

.shadow {
    position: absolute;
    border-radius: 50%;
    background-color: rgba(0,0,0,.7);
    width: 50px;
    height: 20px;
    z-index: -1;
    top: 55px;
    left: -10px;
}

.lights {
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  position: absolute;
  z-index: 1;
  margin: -15px 0 0 0;
  padding: 0;
  pointer-events: none;
  width: 100%;
  opacity: 0;
}

.lights li {
  position: relative;
  animation-fill-mode: both;
  animation-iteration-count: infinite;
  list-style: none;
  margin: 20px;
  padding: 0;
  display: inline-block;
  width: 12px;
  height: 28px;
  border-radius: 50%;
  background: rgba(10, 137, 37, 1);
  box-shadow: 0px 4.67px 24px 3px rgba(10, 137, 37, 1);
  animation-name: flash-1;
  animation-duration: 2s;
}

.lights li:nth-child(2n+1) {
  background: rgba(255, 107, 74, 1);
  box-shadow: 0px 4.67px 24px 3px rgba(255, 107, 74, 0.5);
  animation-name: flash-2;
  animation-duration: 0.4s;
}

.lights li:nth-child(4n+2) {
  background: rgba(137, 39, 213, 1);
  box-shadow: 0px 4.67px 24px 3px rgba(137, 39, 213, 1);
  animation-name: flash-3;
  animation-duration: 1.1s;
}

.lights li:nth-child(odd) {
  animation-duration: 1.8s;
}

.lights li:nth-child(3n+1) {
  animation-duration: 1.4s;
}

.lights li::before {
  content: "";
  position: absolute;
  background: #222;
  width: 10px;
  height: 9.33px;
  border-radius: 3px;
  top: -4.67px;
  left: 1px;
}

.lights li::after {
  content: "";
  position: absolute;
  top: -14px;
  left: 9px;
  width: 52px;
  height: 18.67px;
  border-bottom: solid #222 2px;
  border-radius: 50%;
}

.lights li:last-child::after {
  content: none;
}

.lights li:first-child {
  margin-left: -40px;
}

@keyframes Pulse {
    0% { opacity: .3; }
    50% { opacity: 1; }
    100% { opacity: .3; }
}

@keyframes SnowFall {
    from { transform: translateY(-10px); }
    to { transform: translateY(110vh); }
}

@keyframes Drop {
    0% { transform: translateY(-470px) scaleY(.9); opacity: 0; }
    100% { transform: translateY(0) scaleY(1); opacity: 1; }
}

@keyframes DropStar {
    0% { transform: translateY(-470px) scaleY(.9) rotate(-35deg); opacity: 0; }
    100% { transform: translateY(0) scaleY(1) rotate(-35deg); opacity: 1; }
}

@keyframes DropDetails {
    0% { transform: translateY(-40px); opacity: 0; }
    60% { transform: translateY(10px); opacity: 1; }
    100% { transform: translateY(0); opacity: 1; }
}

@keyframes Scale {
    from { transform: scaleX(1); }
    to { transform: scaleX(3); }
}

@keyframes flash-1 {
  0%, 100% {
    background: rgba(10, 137, 37, 1);
    box-shadow: 0px 4.67px 24px 3px rgba(10, 137, 37, 1);
  }
  50% {
    background: rgba(10, 137, 37, 0.4);
    box-shadow: 0px 4.67px 24px 3px rgba(10, 137, 37, 0.2);
  }
}

@keyframes flash-2 {
  0%, 100% {
    background: rgba(255, 107, 74, 1);
    box-shadow: 0px 4.67px 24px 3px rgba(255, 107, 74, 1);
  }
  50% {
    background: rgba(255, 107, 74, 0.4);
    box-shadow: 0px 4.67px 24px 3px rgba(255, 107, 74, 0.2);
  }
}

@keyframes flash-3 {
  0%, 100% {
    background: rgba(137, 39, 213, 1);
    box-shadow: 0px 4.67px 24px 3px rgba(137, 39, 213, 1);
  }
  50% {
    background: rgba(137, 39, 213, 0.4);
    box-shadow: 0px 4.67px 24px 3px rgba(137, 39, 213, 0.2);
  }
}

@media (max-width: 768px) {
    .IntroTitle { font-size: 10vw; }
    .IntroSubtitle { font-size: 4vw; }
    .Message { font-size: 6vw; }
    .ChristmasText { font-size: 6vw; }
    .Credits { font-size: 4vw; line-height: 6vw; }
}

@media (max-width: 480px) {
    .IntroTitle { font-size: 12vw; }
    .IntroSubtitle { font-size: 5vw; }
    .Message { font-size: 7vw; }
    .ChristmasText { font-size: 7vw; }
    .Credits { font-size: 5vw; line-height: 7vw; }
}