/* ════════════════════════════════
   PROMISE — 마무리 편지
   ════════════════════════════════ */

#promise {
  background: linear-gradient(160deg, #fff0f4 0%, #ffecd9 100%);
  text-align: center;
  gap: 18px;
  padding: 80px 28px 100px;
}

.promise-photo {
  width: 180px;
  height: 220px;
  border-radius: 20px;
  object-fit: cover;
  box-shadow: 0 10px 36px rgba(60,20,40,0.16);
  border: 3px solid var(--white);
  margin-bottom: 8px;
}

.promise-ornament {
  font-family: 'Playfair Display', serif;
  font-size: 44px;
  color: var(--rose);
  line-height: 1;
  opacity: 0.35;
  margin-bottom: -8px;
}

.promise-title {
  font-family: 'Noto Serif KR', serif;
  font-size: clamp(20px, 6vw, 28px);
  font-weight: 600;
  line-height: 1.4;
}

.promise-body {
  font-size: 14px;
  color: var(--muted);
  line-height: 2;
  font-weight: 300;
  max-width: 300px;
}

.promise-body strong {
  color: var(--text);
  font-weight: 500;
}

.promise-sig {
  font-family: 'Playfair Display', serif;
  font-style: italic;
  font-size: 20px;
  color: var(--rose-dk);
}

.hearts-burst {
  display: flex;
  gap: 10px;
  justify-content: center;
  font-size: 22px;
}

.hearts-burst span {
  animation: burstFloat 2.4s ease-in-out infinite;
}

.hearts-burst span:nth-child(2) { animation-delay: 0.3s; }
.hearts-burst span:nth-child(3) { animation-delay: 0.6s; }

@keyframes burstFloat {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-9px); }
}
