* {
  box-sizing: border-box;
}

body {
  background-color: #111;
  min-height: 100vh;
  margin: 0;
  overflow: hidden;
  font-family: 'Courier New', Courier, monospace;
  position: relative;
}

/* ========================================= */
/* OVERLAY */
/* ========================================= */

body:after {
  background: radial-gradient(transparent, #111);
  bottom: 0;
  content: '';
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  pointer-events: none;
}

/* ========================================= */
/* GRID */
/* ========================================= */

.grid {
  filter: blur(2px);
}

.grid:before {
  background:
    repeating-linear-gradient(
      0deg,
      #ff3860 0,
      #ff3860 2px,
      transparent 2px,
      transparent 40px
    ),
    repeating-linear-gradient(
      90deg,
      #ff3860 0,
      #ff3860 2px,
      transparent 2px,
      transparent 40px
    );

  content: '';
  height: 100vh;
  position: absolute;
  top: 0;
  width: 100vw;
  opacity: 0.2;
}

/* ========================================= */
/* DATE */
/* ========================================= */

.date {
  position: absolute;
  top: 10%;
  left: 50%;
  transform: translateX(-50%);

  z-index: 15;

  display: inline-block;

  padding: 6px 18px;

  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 3px;
  color: #fff;

  border: 1px solid rgba(255, 56, 96, 0.7);
  border-radius: 999px;

  background: rgba(255, 56, 96, 0.08);

  backdrop-filter: blur(8px);

  box-shadow:
    0 0 8px rgba(255, 56, 96, 0.35),
    inset 0 0 8px rgba(255, 56, 96, 0.15);

  pointer-events: none;
}

/* ========================================= */
/* TEXT CONTAINER */
/* ========================================= */

.text-container {
  position: absolute;
  width: 100%;
  text-align: center;

  top: 20%;
  left: 50%;

  transform: translateX(-50%);

  z-index: 10;

  pointer-events: none;
}

/* ========================================= */
/* TITULOS */
/* ========================================= */

h1 {
  margin: 0.3rem 0;

  color: #ff3860;

  text-transform: uppercase;

  letter-spacing: 4px;

  text-shadow:
    0 0 10px #ff3860,
    0 0 20px #ff3860,
    0 0 40px rgba(255, 56, 96, 0.5);

  transition: all 0.5s ease;
}

/* TITULO PRINCIPAL */

.text-container h1 {
  font-size: 4.2rem;
}

/* TEXTO ABAIXO */

.text-text2 h1 {
  font-size: 2rem;
  letter-spacing: 3px;

  text-shadow:
    0 0 8px #ff3860,
    0 0 16px #ff3860,
    0 0 30px rgba(255, 56, 96, 0.4);
}

/* ========================================= */
/* TROCA DE TEXTOS */
/* ========================================= */

/* ESTADO NORMAL */

.text-container .text-normal,
.text-text2 .text-normal {
  display: block;
}

.text-container .text-love,
.text-text2 .text-love {
  display: none;
}

/* ESTADO LOVE */

input:checked ~ .text-container .text-normal,
input:checked ~ .text-text2 .text-normal {
  display: none;
}

input:checked ~ .text-container .text-love,
input:checked ~ .text-text2 .text-love {
  display: block;
}

/* ========================================= */
/* EKG */
/* ========================================= */

.ekg {
  position: absolute;

  left: 50%;
  top: 55%;

  transform: translate(-50%, -50%);

  max-width: 600px;
}

@media (min-width: 768px) {
  .ekg {
    max-width: 500px;
  }
}

.ekg:nth-of-type(1),
.ekg:nth-of-type(3) {
  filter: blur(10px);
}

.ekg path {
  stroke: #ff3860;

  animation: draw 1s infinite ease-out forwards;
}

.ekg--novelty {
  display: none;
}

.ekg--novelty path {
  animation-duration: 1.2s;
}

/* TROCA EKG */

input:checked ~ .ekg--original {
  display: none;
}

input:checked ~ .ekg--novelty {
  display: block;
}

/* ========================================= */
/* TEXTO INFERIOR */
/* ========================================= */

.text-text2 {
  position: absolute;

  width: 100%;

  top: 78%;
  left: 50%;

  transform: translateX(-50%);

  text-align: center;

  z-index: 10;

  pointer-events: none;
}

/* ========================================= */
/* BOTÃO */
/* ========================================= */

label {
  position: fixed;

  right: 50px;
  bottom: 20px;

  width: 50px;
  height: 50px;

  display: flex;
  align-items: center;
  justify-content: center;

  cursor: pointer;

  z-index: 20;

  font-size: 2rem;

  filter: drop-shadow(0 0 5px #ff3860);
}

input {
  position: fixed;

  right: 40px;
  bottom: 36px;

  margin: 4px;

  cursor: pointer;

  z-index: 20;

  opacity: 0;
}

/* ========================================= */
/* ANIMAÇÃO */
/* ========================================= */

@keyframes draw {
  75% {
    opacity: 1;
    stroke-dashoffset: 0;
  }

  100% {
    opacity: 0;
    stroke-dashoffset: 0;
  }
}