:root{--lm-heart-size:220px;--lm-heart-glow:rgba(255,38,125,.48)}
.lm-heart{position:relative;display:grid;place-items:center;width:var(--lm-heart-size);aspect-ratio:1;margin-inline:auto;isolation:isolate;transform-origin:50% 56%}
.lm-heart__image{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 18px 38px var(--lm-heart-glow));user-select:none;-webkit-user-drag:none}
.lm-heart::before,.lm-heart::after{content:"";position:absolute;inset:12%;border-radius:50%;z-index:-1;pointer-events:none}
.lm-heart::before{background:radial-gradient(circle,rgba(255,111,180,.28),rgba(139,92,255,.12) 45%,transparent 72%);filter:blur(16px);animation:lm-heart-aura 3.2s ease-in-out infinite}
.lm-heart::after{inset:-4%;border:1px solid rgba(255,255,255,.12);opacity:.5;animation:lm-heart-ring 7s linear infinite}
.lm-heart--idle{animation:lm-heart-beat 3s ease-in-out infinite}
.lm-heart--compact{--lm-heart-size:72px}
.lm-heart--hero{--lm-heart-size:330px}
.lm-heart--result{--lm-heart-size:255px}
.lm-heart--report{--lm-heart-size:215px}
.lm-heart--bridge{--lm-heart-size:116px}
.lm-heart__content{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:.15em;color:#fff;text-shadow:0 2px 15px rgba(45,0,35,.8);z-index:2;font-weight:900;pointer-events:none}
.lm-heart__content strong{font-size:clamp(2.3rem,18%,5rem);letter-spacing:-.08em}.lm-heart__content span{font-size:1.2rem}.lm-heart__content small{position:absolute;top:65%;font-size:.62rem;letter-spacing:.11em;text-transform:uppercase}
.lm-heart[data-state="analyzing"]{animation:lm-heart-analyze .9s ease-in-out infinite alternate}.lm-heart[data-state="analyzing"]::after{border-color:rgba(255,111,180,.65);border-width:2px;animation-duration:1.2s}
.lm-heart[data-state="success"]{animation:lm-heart-success .8s cubic-bezier(.2,.8,.2,1) both}.lm-heart[data-state="success"]::before{animation:lm-heart-flash .9s ease-out both}
.lm-heart:hover .lm-heart__image{filter:drop-shadow(0 22px 46px rgba(255,38,125,.68));transform:translateY(-2px)}
.lm-heart__image{transition:filter .28s ease,transform .28s ease}
@keyframes lm-heart-beat{0%,100%{transform:scale(1)}45%{transform:scale(1.025)}52%{transform:scale(1.055)}62%{transform:scale(1)}}
@keyframes lm-heart-aura{50%{transform:scale(1.1);opacity:.72}}
@keyframes lm-heart-ring{to{transform:rotate(360deg)}}
@keyframes lm-heart-analyze{to{transform:scale(1.06) rotate(1deg);filter:saturate(1.15)}}
@keyframes lm-heart-success{0%{transform:scale(.84);opacity:.4}55%{transform:scale(1.1)}100%{transform:scale(1);opacity:1}}
@keyframes lm-heart-flash{0%{opacity:0;transform:scale(.65)}45%{opacity:1}100%{opacity:.45;transform:scale(1.35)}}
@media(max-width:600px){.lm-heart--hero{--lm-heart-size:260px}.lm-heart--result{--lm-heart-size:215px}.lm-heart--report{--lm-heart-size:175px}}
@media(prefers-reduced-motion:reduce){.lm-heart,.lm-heart::before,.lm-heart::after{animation:none!important}.lm-heart__image{transition:none!important}}
