/*!
 * LoveeMotion 1.0 CSS. Đi kèm lovee-motion.js (xem chú thích đầu file đó để biết các thuộc tính data-lm-*).
 * Tùy chỉnh bằng biến: --lm-ease, --lm-dur, --lm-delay, --lm-petal-1/2/3.
 * Chỉ ẩn nội dung khi JS đã chạy (lớp .lm-js trên <html>), nên không có JS thì nội dung vẫn hiện bình thường.
 */
:root{--lm-ease:cubic-bezier(.2,.7,.2,1);--lm-petal-1:#f1cdd3;--lm-petal-2:#e7a3ae;--lm-petal-3:#f4e3c1}

/* Hiện dần khi cuộn */
.lm-js [data-lm]{opacity:0;will-change:opacity,transform;transition:opacity var(--lm-dur,.85s) var(--lm-ease) var(--lm-delay,0ms),transform var(--lm-dur,.85s) var(--lm-ease) var(--lm-delay,0ms),filter var(--lm-dur,.85s) var(--lm-ease) var(--lm-delay,0ms)}
.lm-js [data-lm="fade-up"]{transform:translate3d(0,30px,0)}
.lm-js [data-lm="fade-down"]{transform:translate3d(0,-30px,0)}
.lm-js [data-lm="fade-left"]{transform:translate3d(-40px,0,0)}
.lm-js [data-lm="fade-right"]{transform:translate3d(40px,0,0)}
.lm-js [data-lm="zoom"]{transform:scale(.92)}
.lm-js [data-lm="pop"]{transform:scale(.8);transition-timing-function:cubic-bezier(.34,1.56,.64,1)}
.lm-js [data-lm="blur"]{filter:blur(12px);transform:translate3d(0,14px,0)}
.lm-js [data-lm].lm-in{opacity:1;transform:none;filter:none}

/* Chữ hiện lần lượt (không cắt dấu tiếng Việt vì không dùng mặt nạ) */
.lm-split{display:block}
.lm-split .lm-w{display:inline-block;white-space:nowrap}
.lm-js .lm-split .lm-c{display:inline-block;opacity:0;transform:translate3d(0,.5em,0);filter:blur(6px);transition:opacity .7s var(--lm-ease),transform .8s var(--lm-ease),filter .7s var(--lm-ease);transition-delay:calc(var(--lm-delay,0ms) + var(--i,0) * 45ms)}
.lm-js .lm-split.lm-in .lm-c{opacity:1;transform:none;filter:none}
.lm-js .lm-split .lm-w:not(.lm-c){opacity:1;transform:none;filter:none}

/* Parallax, nghiêng, nút hút */
.lm-parallax{transform:translate3d(0,var(--lm-py,0px),0);will-change:transform}
.lm-tilt{transform:perspective(900px) rotateX(var(--lm-rx,0deg)) rotateY(var(--lm-ry,0deg));transition:transform .25s var(--lm-ease);transform-style:preserve-3d;position:relative}
.lm-tilt .lm-glare{position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.35),transparent 55%);opacity:0;transition:opacity .25s}
.lm-tilt:hover .lm-glare{opacity:1}
.lm-magnetic{transform:translate3d(var(--lm-mx,0px),var(--lm-my,0px),0);transition:transform .25s var(--lm-ease)}

/* Băng chạy ngang */
.lm-marquee{display:flex;overflow:hidden;gap:var(--lm-gap,0)}
.lm-marquee-track{display:flex;flex-shrink:0;align-items:center;gap:var(--lm-gap,2.5rem);padding-right:var(--lm-gap,2.5rem);min-width:100%;justify-content:space-around;animation:lm-marq var(--lm-speed,40s) linear infinite}
.lm-marquee.lm-reverse .lm-marquee-track{animation-direction:reverse}
.lm-marquee:hover .lm-marquee-track{animation-play-state:paused}
@keyframes lm-marq{to{transform:translateX(-100%)}}

/* Cánh hoa, tim rơi */
.lm-petals{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.lm-petal{position:absolute;top:-6%;left:var(--x);width:var(--s);height:var(--s);opacity:.85;animation:lm-fall var(--d) linear var(--dl) infinite,lm-sway calc(var(--d) / 2.2) ease-in-out var(--dl) infinite alternate;will-change:transform}
.lm-paused .lm-petal{animation-play-state:paused}
.lm-petal.lm-v0{background:var(--lm-petal-1)}.lm-petal.lm-v1{background:var(--lm-petal-2)}.lm-petal.lm-v2{background:var(--lm-petal-3)}
.lm-petal.lm-petal{border-radius:70% 0 70% 0}
.lm-petal.lm-heart{background:none!important;width:auto;height:auto;font-size:var(--s);line-height:1;border-radius:0}
.lm-petal.lm-heart::before{content:"♥";color:var(--lm-petal-2)}
.lm-petal.lm-heart.lm-v0::before{color:var(--lm-petal-1)}.lm-petal.lm-heart.lm-v2::before{color:#d9b779}
.lm-petal.lm-sparkle{background:none!important;width:auto;height:auto;font-size:var(--s);line-height:1}
.lm-petal.lm-sparkle::before{content:"✦";color:#d9b779}
@keyframes lm-fall{from{transform:translate3d(0,-8vh,0) rotate(var(--r))}to{transform:translate3d(0,112vh,0) rotate(calc(var(--r) + 540deg))}}
@keyframes lm-sway{from{margin-left:calc(var(--sw) * -1)}to{margin-left:var(--sw)}}

/* Đường nối vẽ dần theo cuộn: đặt background gradient dùng --lm-p */
[data-lm-line]{--lm-p:0}
.lm-line-fill{transform-origin:top;transform:scaleY(var(--lm-p,0))}
.lm-line-fill-x{transform-origin:left;transform:scaleX(var(--lm-p,0))}

/* Gợn sóng */
.lm-ripple-host{position:relative;overflow:hidden}
.lm-ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.45);transform:scale(0);animation:lm-rip .65s ease-out forwards;pointer-events:none}
@keyframes lm-rip{to{transform:scale(1);opacity:0}}

/* Tiện ích chuyển động thường dùng */
.lm-float{animation:lm-float 6s ease-in-out infinite}
.lm-float.lm-d2{animation-duration:7.5s;animation-delay:-2s}
.lm-float.lm-d3{animation-duration:9s;animation-delay:-4s}
@keyframes lm-float{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-12px,0)}}
.lm-pulse{animation:lm-pulse 2.4s ease-in-out infinite}
@keyframes lm-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
.lm-shimmer{background-size:200% 100%;animation:lm-shim 3.2s linear infinite}
@keyframes lm-shim{to{background-position:-200% 0}}
.lm-spin-slow{animation:lm-spin 40s linear infinite}
@keyframes lm-spin{to{transform:rotate(360deg)}}

@media (prefers-reduced-motion:reduce){
  .lm-js [data-lm],.lm-js .lm-split .lm-c{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  .lm-parallax,.lm-tilt,.lm-magnetic{transform:none!important}
  .lm-marquee-track,.lm-petal,.lm-float,.lm-pulse,.lm-shimmer,.lm-spin-slow{animation:none!important}
  .lm-petals{display:none}
}
