:root {
  --bg: #FFF8EF;
  --ink: #3B3150;
  --ink-soft: #6E6585;
  --coral: #FF7B89;
  --butter: #FFD166;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--bg); height: 100%; }
body {
  font-family: 'Nunito', system-ui, sans-serif;
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
.confetti-canvas { position: fixed; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 50; }

.blob { position: fixed; border-radius: 50%; filter: blur(70px); pointer-events: none; }
.blob.b1 { width: 480px; height: 480px; top: -180px; right: -160px; background: #FFE1D6; }
.blob.b2 { width: 420px; height: 420px; bottom: -180px; left: -160px; background: #DDF7EE; }

.page {
  position: relative; z-index: 1;
  min-height: 100vh; min-height: 100svh;
  max-width: 620px; margin: 0 auto; padding: 32px 22px 48px;
  display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center;
}

.art { position: relative; width: 100%; max-width: 300px; margin-bottom: 18px; }
.art::before {
  content: ''; position: absolute; left: 50%; top: 48%; width: 84%; aspect-ratio: 1;
  translate: -50% -50%; border-radius: 50%; background: #FFF0C7;
}
.gift { position: relative; display: block; width: 100%; overflow: visible; cursor: pointer; outline: none; }
.tap { position: relative; font-family: 'Caveat', cursive; font-size: 1.5rem; color: var(--ink-soft); margin-top: -4px; }

.hi { font-family: 'Fredoka', sans-serif; font-weight: 500; font-size: 1.15rem; color: var(--ink-soft); margin-bottom: 8px; }
h1 {
  font-family: 'Fredoka', sans-serif; font-weight: 600; letter-spacing: -.01em;
  font-size: clamp(1.9rem, 5.4vw, 2.9rem); line-height: 1.15; margin-bottom: 16px;
}
.name { color: var(--coral); position: relative; white-space: nowrap; }
.name::after {
  content: ''; position: absolute; left: -2px; right: -2px; bottom: .02em; height: .22em;
  background: var(--butter); border-radius: 99px; z-index: -1; opacity: .8;
}
.note { font-size: 1.1rem; line-height: 1.7; color: var(--ink-soft); max-width: 460px; }
.sign { font-family: 'Caveat', cursive; font-size: 1.9rem; color: var(--coral); margin-top: 22px; rotate: -3deg; }

/* ===== hafif süslemeler ===== */
.deco { position: fixed; inset: 0; pointer-events: none; z-index: 0; overflow: hidden; }
.d { position: absolute; display: block; }
.d.dot { border-radius: 50%; }
.d.sq { border-radius: 4px; }
.d.ring { border-radius: 50%; background: transparent !important; border: 3px solid currentColor; }
.d svg { display: block; width: 100%; height: 100%; }

.beat { display: inline-block; animation: beat 2.4s ease-in-out infinite; }
@keyframes beat { 0%, 60%, 100% { transform: scale(1); } 70% { transform: scale(1.22); } 80% { transform: scale(1); } 88% { transform: scale(1.14); } }

.tap-heart {
  position: fixed; z-index: 40; pointer-events: none; font-size: 22px; line-height: 1;
  transform: translate(-50%, -50%);
}

@media (prefers-reduced-motion: reduce) { .beat { animation: none; } }
