/* Fixed brand oval; only its inner star rotates and morphs. */
.lumina-loading{position:fixed;inset:0;z-index:100000;display:grid;place-items:center;pointer-events:auto;contain:strict}
.lumina-loading[hidden]{display:none}.lumina-loading__veil{position:absolute;inset:0;width:100%;height:100%}.lumina-loading__mark{width:100px;height:80px;position:relative}.lumina-loading__label{position:absolute;top:calc(50% + 65px);font:10px var(--font-mono,monospace);letter-spacing:.24em;color:#676479;transition:opacity .3s}
.lumina-loading__color{animation:lumina-color 3.8s ease-in-out infinite alternate}
@keyframes lumina-color{0%{stop-color:#D76F68}45%{stop-color:#C2848E}100%{stop-color:#FDE5A3}}
.lumina-enter-text{background-image:linear-gradient(90deg,var(--reveal-ink) 0%,var(--reveal-ink) 33%,var(--reveal-flash) 43%,var(--reveal-flash) 49%,transparent 56%);background-size:calc(var(--reveal-width,100%) * 3) 100%;background-repeat:no-repeat;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:lumina-text-in 1050ms linear both}
.lumina-enter-image{animation:lumina-image-in 1500ms linear both}
@keyframes lumina-text-in{from{background-position:calc(var(--reveal-start,0px) - var(--reveal-width,100%) * 2) 0;opacity:.3}to{background-position:var(--reveal-start,0px) 0;opacity:1}}
@keyframes lumina-image-in{0%{clip-path:circle(0% at 50% 50%);opacity:0}35%{clip-path:circle(60% at 50% 50%);opacity:.3}65%{clip-path:circle(69% at 50% 50%);opacity:.65}85%{clip-path:circle(73% at 50% 50%);opacity:.9}100%{clip-path:circle(75% at 50% 50%);opacity:1}}
@media(prefers-reduced-motion:reduce){.lumina-loading{display:none}.lumina-enter-text,.lumina-enter-image{animation:none;background:none;-webkit-text-fill-color:currentColor}}
/* V12: visibly moving color field, stationary oval silhouette. */
#lumina-loader-color stop:nth-child(1){animation:lumina-color 2.6s ease-in-out infinite alternate}
#lumina-loader-color stop:nth-child(2){animation:lumina-color 2.6s -.9s ease-in-out infinite alternate}
#lumina-loader-color stop:nth-child(3){animation:lumina-color 2.6s -1.8s ease-in-out infinite alternate}
.lumina-text-label{display:inline}
.lumina-loading__sparks{position:absolute;inset:0;pointer-events:none;overflow:hidden}.lumina-loading__sparks i{position:absolute;left:50%;top:50%;font:18px serif;color:#f3f8ff;opacity:0;text-shadow:0 0 12px #ffffff80}.is-opening .lumina-loading__sparks i{animation:lumina-spark 1100ms calc(250ms + var(--delay)) cubic-bezier(.16,1,.3,1) both}@keyframes lumina-spark{0%{opacity:0;transform:rotate(var(--angle)) translateX(20px) scale(.2)}20%{opacity:.9}100%{opacity:0;transform:rotate(var(--angle)) translateX(min(48vw,520px)) scale(.6)}}
/* Text wrappers inherit the control rather than surrounding card metadata. */
.lumina-text-label{color:inherit!important;font:inherit!important;letter-spacing:inherit!important;margin:0!important;padding:0!important;border:0!important;align-self:auto!important}
.lumina-enter-text,.lumina-enter-image{animation-delay:var(--reveal-delay,0ms)}

/* Reveal the existing gradient price through a mask, without recoloring it. */
.lumina-enter-price{-webkit-mask-image:linear-gradient(90deg,#000 33%,#0009 45%,transparent 56%);mask-image:linear-gradient(90deg,#000 33%,#0009 45%,transparent 56%);-webkit-mask-size:300% 100%;mask-size:300% 100%;animation:lumina-price-in 1050ms linear both;animation-delay:var(--reveal-delay,0ms)}
@keyframes lumina-price-in{from{-webkit-mask-position:100% 0;mask-position:100% 0;opacity:.2}to{-webkit-mask-position:0% 0;mask-position:0% 0;opacity:1}}
@media(prefers-reduced-motion:reduce){.lumina-enter-price{animation:none;mask:none;-webkit-mask:none}}
/* Preserve card hover transforms; only opacity/mask participates in entry. */
[data-surface-reveal="pending"]{opacity:0}
[data-surface-reveal="enter"]{mask-image:linear-gradient(100deg,#000 33%,#0009 45%,transparent 56%);mask-size:300% 100%;animation:lumina-surface-in 1050ms var(--surface-delay,0ms) ease-out both}
@keyframes lumina-surface-in{from{mask-position:100% 0;opacity:0}to{mask-position:0 0;opacity:1}}
@media(prefers-reduced-motion:reduce){[data-surface-reveal]{opacity:1!important;animation:none!important;mask:none!important}}
