/* ─── The guests' heart (loved.js). In the phone, sized in cqw (the phone is the container); in the window, in px ─── */
.lv{--e2:cubic-bezier(.34,1.3,.5,1);position:absolute;left:5.333%;top:2.717%;width:89.333%;height:94.746%;z-index:1;display:grid;place-items:center;border-radius:12.2cqw;overflow:hidden;pointer-events:none}
.rb-ph .rb-ph__bz{z-index:2}
.lv>*{grid-area:1/1}
.lv-dim{position:absolute;inset:0;opacity:0;background:rgba(9,8,11,.34);-webkit-backdrop-filter:blur(7px) saturate(120%);backdrop-filter:blur(7px) saturate(120%)}
.lv-dim--deep{background:rgba(5,4,7,.74);-webkit-backdrop-filter:blur(9px) saturate(110%);backdrop-filter:blur(9px) saturate(110%)}
/* the middle of the phone as it shows in its window (the window crops the phone's foot) */
.lv-stack{position:relative;display:grid;justify-items:center;gap:3cqw;margin-top:-20%}
.lv-chip{display:inline-flex;align-items:center;gap:.55em;padding:.85em 1.3em .85em 1.1em;border-radius:99px;background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);color:#1A1A1A;font:600 5cqw/1 'Schibsted Grotesk',system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:0;box-shadow:0 2cqw 8cqw -3cqw rgba(0,0,0,.4)}
.lv-chip__h{width:1.15em;height:1.15em;fill:#7A1F2B}
.lv-3d{display:block;width:96cqw;aspect-ratio:1;opacity:0;margin-bottom:-6cqw}
/* 4–6: no phone, the heart floats in the window */
.v2 .v2-gu .rb-gu__ph[data-free] .rb-ph{visibility:hidden}
.lv--free{inset:0;left:0;top:0;width:100%;height:100%;border-radius:0;overflow:visible}
.lv--free .lv-stack{width:100%;margin-top:-2%;gap:14px}
.lv--free .lv-3d{width:auto;max-width:100%;height:clamp(280px,29vw,390px);aspect-ratio:1/1.12}
.lv--free .lv-chip{font-size:13px}
/* the entrances, once the window has opened */
.is-in .lv-dim{animation:lvin .9s var(--e) .3s both}
.is-in .lv-chip{animation:lvup .9s var(--e) .75s both}
.is-in .lv-chip__h{animation:lvbeat 2.8s ease-in-out 1.8s infinite}
.is-in .lv-3d{animation:lvpop 1.05s var(--e2) .45s both}
.lv-lq{position:absolute;inset:0;width:100%;height:100%;display:block;opacity:0}
.is-in .lv-lq{animation:lvin 1.1s var(--e) .35s both}
@keyframes lvin{from{opacity:0}to{opacity:1}}
@keyframes lvup{from{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}
@keyframes lvpop{0%{opacity:0;transform:scale(.6)}50%{opacity:1;transform:scale(1.04)}75%{transform:scale(.99)}100%{opacity:1;transform:scale(1)}}
@keyframes lvbeat{0%,40%,100%{transform:scale(1)}8%{transform:scale(1.1)}16%{transform:scale(1)}24%{transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){.lv *{animation:none!important;opacity:1!important}}
