/* Original Valentine heart — no date envelope or external animation assets. */
.lyw-recipient[data-product="valentine"] {
  --lv-light: color-mix(in srgb, var(--wow-soft,#f0b7d0) 42%, white);
  --lv-shadow: color-mix(in srgb, var(--wow-accent-dark,#89315b) 30%, transparent);
  --lr-hold-progress: 0;
}
.lyw-recipient[data-product="valentine"] .lv-opener {
  gap: 14px; padding: 22px 16px 28px; overflow: hidden;
}
.lyw-recipient[data-product="valentine"] .lv-opening-art {
  width: min(345px, calc(100cqw - 38px)); height: auto; aspect-ratio: 240 / 220;
  margin: 3px 0 6px; perspective: 1000px; isolation: isolate;
}
.lyw-recipient .lv-heart {
  position: absolute; inset: 0; display: block; width: 100%; height: 100%;
  border: 0; padding: 0; background: transparent; transform-style: preserve-3d;
  touch-action: pan-y; user-select: none; -webkit-user-select: none;
  filter: drop-shadow(0 22px 20px var(--lv-shadow));
}
.lyw-recipient .lv-heart:focus-visible { outline-offset: 8px; border-radius: 34%; }
.lyw-recipient .lv-heart-surface,
.lyw-recipient .lv-heart-whole,
.lyw-recipient .lv-heart-half { position: absolute; inset: 0; display: block; pointer-events: none; }
.lyw-recipient .lv-heart-surface svg { display: block; width: 100%; height: 100%; overflow: visible; }
.lyw-recipient .lv-heart-whole { z-index: 4; }
.lyw-recipient .lv-heart-half { z-index: 4; opacity: 0; }
.lyw-recipient .lv-heart-half.is-left { clip-path: polygon(0 0, 50% 0, 50% 100%, 0 100%); transform-origin: 20% 60%; }
.lyw-recipient .lv-heart-half.is-right { clip-path: polygon(50% 0, 100% 0, 100% 100%, 50% 100%); transform-origin: 80% 60%; }
.lyw-recipient .lv-heart-glow {
  position: absolute; z-index: -1; inset: 9%; border-radius: 50%; pointer-events: none;
  background: radial-gradient(ellipse, #ffe8b7b0 2%, color-mix(in srgb, var(--wow-soft,#f0b7d0) 60%, transparent) 42%, transparent 72%);
  filter: blur(12px); opacity: calc(.3 + var(--lr-hold-progress) * .65);
  transform: scale(calc(1 + var(--lr-hold-progress) * .25));
}
.lyw-recipient .lv-heart-aura { position: absolute; inset: 22% 10% 0; border-radius: 50%; box-shadow: 0 0 60px 8px color-mix(in srgb, var(--wow-soft,#f0b7d0) 25%, transparent); pointer-events: none; }
.lyw-recipient[data-scene="opener"]:not(.is-holding):not(.is-hold-complete):not(.is-hold-cancelling) .lv-heart-whole { animation: lv-heartbeat 3.2s ease-in-out infinite; }
.lyw-recipient.is-holding .lv-heart-whole { transform: scale(calc(1 + var(--lr-hold-progress) * .045)); }
.lyw-recipient .lv-hold-ring { position: absolute; z-index: 6; inset: 0; pointer-events: none; opacity: calc(var(--lr-hold-progress) * .9); }
.lyw-recipient .lv-hold-ring svg { width: 100%; height: 100%; overflow: visible; }
.lyw-recipient .lv-hold-ring path { fill: none; stroke: #fff4d4; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: calc(100 - var(--lr-hold-progress) * 100); filter: drop-shadow(0 0 5px #fff1bb); }
.lyw-recipient .lv-heart-note {
  position: absolute; z-index: 3; inset: 22% 19% 18%; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 18px; opacity: 0; border: 1px solid var(--wow-line,#e5c6d7);
  border-radius: 9px; background: var(--wow-paper,#fffdf9); box-shadow: 0 12px 40px var(--lv-shadow), inset 0 0 0 8px var(--wow-paper,#fffdf9), inset 0 0 0 9px var(--wow-line,#e5c6d7);
}
.lyw-recipient .lv-note-heart { width: 48px; height: 45px; color: var(--wow-accent,#ad4d79); }
.lyw-recipient .lv-note-rule { display: block; width: 38%; height: 1px; background: var(--wow-line,#e5c6d7); }
.lyw-recipient[data-product="valentine"] .lr-open-hint { max-width: 26ch; font-size: 15px; font-weight: 600; padding: 11px 20px; color: var(--wow-accent,#ad4d79); background: color-mix(in srgb, var(--wow-paper,#fffdf9) 75%, transparent); box-shadow: 0 4px 20px color-mix(in srgb, var(--wow-accent,#ad4d79) 12%, transparent); }
.lyw-recipient[data-product="valentine"] .lr-open-hint::after { display: none; }
.lyw-recipient[data-product="valentine"] .lr-opening-art::before { animation: none; }
.lyw-recipient:not(.has-gsap).is-opening .lv-heart-whole { animation: lv-heart-part .01s .28s both; }
.lyw-recipient:not(.has-gsap).is-opening .lv-heart-half.is-left { animation: lv-open-left 1.2s .28s both; }
.lyw-recipient:not(.has-gsap).is-opening .lv-heart-half.is-right { animation: lv-open-right 1.2s .28s both; }
.lyw-recipient:not(.has-gsap).is-opening .lv-heart-note { animation: lv-note-reveal 1.25s .38s both; }
.lyw-recipient:not(.has-gsap).is-opening .lv-hold-ring { opacity: 0; }
.lyw-recipient .lv-clip-def { position: absolute; width: 0; height: 0; overflow: hidden; pointer-events: none; }
.lyw-recipient .lr-scratch-card.lv-scratch-heart {
  inset: 0; width: 100%; height: 100%; border: 0; border-radius: 0; transform: none;
  background: radial-gradient(ellipse at 30% 20%, white, var(--wow-surface,#fae6ef)); box-shadow: none;
}
.lyw-recipient .lv-scratch-heart .lr-scratch-under { gap: 10px; padding: 25% 12% 17%; }
.lyw-recipient .lv-scratch-heart .lv-scratch-reveal { width: 65px; height: 58px; color: var(--wow-accent,#ad4d79); }
.lyw-recipient .lv-scratch-heart .lv-scratch-note { max-width: 12ch; color: var(--wow-accent-dark,#89315b); font-size: 22px; line-height: 1.15; }
.lyw-recipient .lv-secret { width: min(100%, 430px); margin: 0 auto; padding: 20px 24px 30px; }
.lyw-recipient .lv-secret-emblem { position: relative; width: 114px; aspect-ratio: 240 / 220; margin: 0 auto 12px; filter: drop-shadow(0 9px 10px var(--lv-shadow)); }
.lyw-recipient .lv-secret .lr-title { font-size: clamp(27px, 7cqw, 36px); line-height: 1.14; }
.lyw-recipient .lv-secret-hint { margin: 16px auto 0; padding: 12px 16px; color: var(--wow-muted,#8b657b); background: var(--wow-surface,#fae6ef); border: 1px solid var(--wow-line,#e5c6d7); border-radius: 14px; font-size: 14px; overflow-wrap: anywhere; }
.lyw-recipient .lv-secret-form { margin-top: 22px; text-align: start; }
.lyw-recipient .lv-secret-field { display: grid; gap: 7px; color: var(--wow-ink,#422537); font-size: 13px; font-weight: 600; }
.lyw-recipient .lv-secret-field input {
  width: 100%; min-width: 0; height: 56px; padding: 12px 16px; border: 1px solid var(--wow-line,#e5c6d7);
  border-radius: 16px; color: var(--wow-ink,#422537); background: var(--wow-background,#fff8fb);
  font: 20px/1.3 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; text-align: center;
}
.lyw-recipient .lv-secret-field input:focus { outline: 2px solid var(--wow-accent,#ad4d79); outline-offset: 2px; }
.lyw-recipient .lv-secret-field input:disabled { opacity: .7; }
.lyw-recipient .lv-secret-error { min-height: 1.5em; margin: 7px 2px 14px; color: var(--wow-accent-dark,#89315b); font-size: 13px; }
.lyw-recipient .lv-unlock { min-height: 56px; font-size: 17px; }
.lyw-recipient .lv-secret .lr-back { margin: 18px auto 0; }
.lyw-recipient.is-compact[data-product="valentine"] .lv-opener { gap: 8px; padding: 12px 14px 18px; }
.lyw-recipient.is-compact[data-product="valentine"] .lv-opening-art { width: min(265px, calc(100cqw - 30px), 68cqh); margin: 0; }
.lyw-recipient.is-compact[data-product="valentine"] .lr-open-hint { padding: 9px 15px; font-size: 12px; }
.lyw-recipient.is-compact .lv-secret { padding: 12px 18px 22px; }
.lyw-recipient.is-compact .lv-secret-emblem { width: 64px; margin-bottom: 8px; }
.lyw-recipient.is-compact .lv-secret .lr-title { font-size: 24px; }
.lyw-recipient.is-compact .lv-secret-form { margin-top: 13px; }
.lyw-recipient.is-compact .lv-secret-hint { margin-top: 12px; padding: 8px 10px; font-size: 12px; }
.lyw-recipient.is-compact .lv-secret-field input { height: 46px; font-size: 18px; }
.lyw-recipient.is-compact .lv-unlock { min-height: 46px; font-size: 15px; }
.lyw-recipient.is-compact .lv-secret-error { margin-bottom: 8px; }
.lyw-recipient.is-compact .lv-secret .lr-back { margin-top: 10px; }
@keyframes lv-heartbeat { 0%, 46%, 100% { transform: scale(1) rotate(-2deg); } 12% { transform: scale(1.045) rotate(0deg); } 23% { transform: scale(1.01) rotate(-1deg); } 32% { transform: scale(1.035) rotate(0deg); } }
@keyframes lv-heart-part { to { opacity: 0; } }
@keyframes lv-open-left { 0% { opacity: 1; transform: translateX(0) rotate(0); } 65%,100% { opacity: 0; transform: translateX(-32%) rotate(-16deg) rotateY(-32deg); } }
@keyframes lv-open-right { 0% { opacity: 1; transform: translateX(0) rotate(0); } 65%,100% { opacity: 0; transform: translateX(32%) rotate(16deg) rotateY(32deg); } }
@keyframes lv-note-reveal { 0% { opacity: 0; transform: scale(.75); } 55% { opacity: 1; transform: translateY(-10%) scale(1.26); } 100% { opacity: 1; transform: translateY(-12%) scale(1.85); } }
@media (prefers-reduced-motion: reduce) {
  .lyw-recipient .lv-heart-whole, .lyw-recipient .lv-heart-half, .lyw-recipient .lv-heart-note { animation: none !important; }
  .lyw-recipient .lv-heart-glow { filter: none; }
}
/* Dark outer scenes still keep the secret form legible; paper keeps its own ink. */
.lyw-recipient .lv-secret .lr-title { color: var(--wow-ink,#422537); }
.lyw-recipient[data-product="valentine"][data-theme="night"] :is(.lr-name,.lr-eyebrow,.lr-signature,.lv-secret-error) { color: var(--wow-muted,#b6b4c4); }
@container (max-height:480px) {
  .lyw-recipient:not(.is-compact)[data-product="valentine"] .lv-opening-art { width: min(280px, calc(100cqw - 38px), 66cqh); }
  .lyw-recipient:not(.is-compact)[data-product="valentine"] .lv-opener { gap: 9px; padding-block: 12px 20px; }
}
