body {
  margin: 0;
  background: black;
  min-height: 100dvh;
  font-family: "Inter", sans-serif;
  font-weight: 800;
  overflow: hidden;
  color: white;
}

/* INTRO */

.intro {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: clamp(60px, 6vw, 80px);
  opacity: 0;
  transition: opacity 1.2s ease;
  text-align: center;
  width: 90%;
}

.intro.show {
  opacity: 1;
}

/* TYPEWRITER */

.typewriter-container {
  position: absolute;
  top: 50%;
  left: 15%;
  transform: translateY(-50%);
  width: 70%;
}

.typewriter-text {
  font-size: clamp(60px, 6vw, 80px);
  line-height: 1.4;
  text-align: left;
  word-wrap: break-word;
}

.typewriter-text span {
  color: white;
  transition: color 0.2s ease;
}

.typewriter-text span.active {
  color: #ff2a4f;
  text-shadow:
    0 0 4px #ff2a4f,
    0 0 8px #ff003c;
}

/* HEART */

.heart-wrapper {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  opacity: 0;
  transition: opacity 1s ease;
  text-align: center;
  width: 90%;
}

.heart-wrapper.show {
  opacity: 1;
}

.heart-container {
  margin-bottom: 30px;
}

.heart-svg {
  width: clamp(500px, 35vw, 800px);
  filter:
    drop-shadow(0 0 5px #ff2a4f)
    drop-shadow(0 0 15px #ff2a4f)
    drop-shadow(0 0 90px #ff003c);
}

#heartPath {
  fill: none;
  stroke: #ff003c;
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.love-text {
  font-size: clamp(60px, 6vw, 80px);
  white-space: pre-line;
  opacity: 0;
  margin-top: 0;
  transition: opacity 0.5s ease;
}

.love-text.show {
  opacity: 1;
}

@keyframes heartbeat {
  0%   { transform: scale(1); }
  20%  { transform: scale(1.04); }
  40%  { transform: scale(1); }
  60%  { transform: scale(1.04); }
  100% { transform: scale(1); }
}

.heart-svg.beat {
  animation: heartbeat 2.2s ease-in-out infinite;
  transform-origin: center;
}

@media (max-width: 768px) {
  .typewriter-container {
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
  }
}
