
/* LUVEX entry logo animation */
.luvex-intro{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;background:#030307;overflow:hidden;opacity:1;visibility:visible;transition:opacity .7s ease,visibility .7s ease;}
.luvex-intro::before{content:"";position:absolute;width:min(65vw,720px);height:min(65vw,720px);border-radius:50%;background:radial-gradient(circle,rgba(86,48,255,.18),rgba(0,0,0,0) 68%);filter:blur(18px);animation:introGlow 2.2s ease-in-out infinite alternate;}
.luvex-intro.is-leaving{opacity:0;visibility:hidden;pointer-events:none;}
.luvex-intro-inner{position:relative;width:min(42vw,430px);min-width:240px;aspect-ratio:1;display:grid;place-items:center;}
.luvex-intro-logo{position:relative;width:72%;height:auto;z-index:3;object-fit:contain;filter:drop-shadow(0 0 22px rgba(100,80,255,.34));animation:introLogo 1.25s cubic-bezier(.16,1,.3,1) both;}
.luvex-intro-ring{position:absolute;border:1px solid rgba(255,255,255,.82);border-radius:50%;transform:rotate(-18deg) skewX(-7deg);box-shadow:0 0 12px rgba(255,255,255,.08);}
.luvex-intro-ring.r1{inset:5%;width:90%;height:48%;animation:introOrbitA 2.2s cubic-bezier(.55,.08,.35,.94) infinite;}
.luvex-intro-ring.r2{inset:24% 5%;width:90%;height:48%;transform:rotate(18deg) skewX(7deg);animation:introOrbitB 2.7s cubic-bezier(.55,.08,.35,.94) infinite;}
.luvex-intro-word{position:absolute;bottom:3%;font-size:clamp(11px,1vw,15px);letter-spacing:.42em;color:rgba(255,255,255,.78);font-weight:700;z-index:4;animation:introText 1.5s .25s ease both;}
.luvex-intro-bar{position:absolute;bottom:7%;width:120px;height:1px;background:linear-gradient(90deg,transparent,#fff,transparent);animation:introBar 1.6s .4s ease both;}
@keyframes introLogo{0%{opacity:0;transform:scale(.58) translateY(18px);filter:blur(10px) drop-shadow(0 0 0 rgba(100,80,255,0));}65%{opacity:1;transform:scale(1.04) translateY(0);filter:blur(0) drop-shadow(0 0 28px rgba(100,80,255,.48));}100%{transform:scale(1);}}
@keyframes introOrbitA{0%{transform:rotate(-18deg) skewX(-7deg) scale(.82);opacity:.2;}45%{opacity:.95;}100%{transform:rotate(342deg) skewX(-7deg) scale(1.04);opacity:.25;}}
@keyframes introOrbitB{0%{transform:rotate(18deg) skewX(7deg) scale(1.02);opacity:.25;}50%{opacity:.95;}100%{transform:rotate(-342deg) skewX(7deg) scale(.84);opacity:.25;}}
@keyframes introText{from{opacity:0;transform:translateY(12px);letter-spacing:.8em;}to{opacity:1;transform:none;letter-spacing:.42em;}}
@keyframes introBar{from{width:0;opacity:0;}to{width:120px;opacity:1;}}
@keyframes introGlow{from{transform:scale(.85);opacity:.45;}to{transform:scale(1.12);opacity:.8;}}
@media(max-width:600px){.luvex-intro-inner{width:min(72vw,330px);}.luvex-intro-logo{width:76%;}.luvex-intro-ring.r1{height:43%;}.luvex-intro-ring.r2{height:43%;}}
@media(prefers-reduced-motion:reduce){.luvex-intro-logo,.luvex-intro-ring,.luvex-intro-word,.luvex-intro-bar,.luvex-intro::before{animation:none!important;}.luvex-intro-logo{opacity:1;}}

/* Show the intro only once per browser tab/session on the homepage.
   Refreshing the homepage will not replay it. */
html.luvex-intro-seen .luvex-intro{display:none!important;}
