/* Physical fashion-tech props, shared by Battle V3 and its codex stage. */
.glam-spy-scene { position:fixed; inset:0; z-index:10045; pointer-events:none; overflow:hidden; contain:layout style; }
.glam-spy-scene *, .glam-spy-scene svg { pointer-events:none; }
.glam-spy-object { position:absolute; display:block; transform:translate(-50%,-50%); animation:glamAppear var(--glam-duration) ease-out both; }
.glam-spy-object svg, .glam-spy-object img { width:100%; height:100%; object-fit:contain; overflow:visible; }
.glam-spy-object svg { stroke-linejoin:round; stroke-linecap:round; }
.glam-enamel { fill:var(--dk-c1); stroke:var(--dk-c2); stroke-width:2; }
.glam-dark { fill:var(--dk-c3); stroke:var(--dk-c5); stroke-width:2; }
.glam-silver { fill:#e9edf7; stroke:#fff; stroke-width:1.5; }
path.glam-silver { fill:none; stroke-width:3; }
.glam-lens { fill:var(--dk-c2); stroke:#fff; stroke-width:1.3; filter:drop-shadow(0 0 3px var(--dk-c1)); }
.glam-detail { fill:none; stroke:#fff; stroke-width:2; }
.glam-spy-prop { z-index:5; filter:drop-shadow(0 2px 3px #000b) drop-shadow(0 0 7px var(--dk-c1)); animation-name:glamDeploy; }
.glam-spy-accessory { filter:drop-shadow(0 0 4px var(--dk-c2)); animation-name:glamAccessory; }
.glam-spy-hud { opacity:.6; }
.glam-spy-hud-ring { position:absolute; inset:0; border:2px solid var(--dk-c1); border-right-color:#fff; border-bottom-color:transparent; border-radius:50%; box-shadow:0 0 10px var(--dk-c2), inset 0 0 5px var(--dk-c2); animation:glamRotate 3s linear infinite; }
.glam-spy-hud-ring.is-inner { inset:12%; border-style:dashed; border-color:var(--dk-c2); animation-direction:reverse; }
.glam-spy-hud-sweep { position:absolute; inset:5%; border-radius:50%; background:conic-gradient(from 0deg, transparent 65%, color-mix(in srgb, var(--dk-c1) 45%, transparent) 95%, #fff9); animation:glamRotate 1.5s linear infinite; }
.glam-spy-projectile { z-index:7; filter:drop-shadow(0 0 5px var(--dk-c1)); animation:none; }
.glam-spy-projectile::after { content:""; position:absolute; inset:36% 70% 36% -50%; background:linear-gradient(90deg,transparent,var(--dk-c2)); border-radius:50%; z-index:-1; }
.glam-spy-laser { transform-origin:0 50%; animation:none; }
.glam-spy-laser i { display:block; position:absolute; inset:0; transform-origin:0 50%; background:linear-gradient(90deg,var(--dk-c1),#fff 48%,var(--dk-c2)); box-shadow:0 0 7px var(--dk-c1),0 0 15px var(--dk-c2); animation:glamLaser ease-out both; animation-delay:inherit; animation-duration:inherit; }
.glam-spy-laser b { position:absolute; left:0; top:50%; width:20px; height:20px; translate:-50% -50%; border-radius:50%; background:#fff; box-shadow:0 0 10px var(--dk-c1); animation:glamPulse ease-out both; animation-duration:inherit; animation-delay:inherit; }
.glam-spy-laser.is-cable i { background:repeating-linear-gradient(90deg,#fff 0 6px,var(--dk-c1) 6px 11px); height:3px; }
.glam-spy-target { filter:drop-shadow(0 0 4px var(--dk-c1)); animation-name:glamLock; }
.glam-spy-target > svg { opacity:.8; }
.glam-spy-target--shield { height:auto!important; aspect-ratio:.65; }
.glam-spy-target--shield > svg { position:absolute; width:35%; height:35%; left:32.5%; top:15%; }
.glam-spy-shield { position:absolute; inset:-5%; border:3px solid #e7edf8; border-radius:48% 48% 18% 18%; background:repeating-linear-gradient(60deg,transparent 0 18px,color-mix(in srgb,var(--dk-c1) 24%,transparent) 19px 20px),radial-gradient(ellipse at top,var(--dk-c2),transparent 60%); box-shadow:0 0 12px var(--dk-c1),inset 0 0 18px var(--dk-c2); opacity:.7; }
.glam-spy-target--cuffs { animation-name:glamCuffs; }
.glam-spy-perfume-cloud { animation-name:glamMist; }
.glam-spy-perfume-cloud > i { position:absolute; inset:0; border-radius:50%; background:radial-gradient(ellipse,color-mix(in srgb,var(--dk-c1) 60%,transparent),transparent 70%); }
.glam-spy-perfume-cloud svg { width:22%; height:22%; opacity:.6; }
.glam-spy-scanner > svg { position:absolute; right:0; bottom:0; width:30%; height:30%; }
.glam-spy-satellite { z-index:4; filter:drop-shadow(0 0 4px var(--dk-c2)); animation-name:glamSatellite; }
.glam-spy-art { filter:drop-shadow(0 3px 4px #0008) drop-shadow(0 0 8px var(--dk-c1)); opacity:.8; animation-name:glamArt; }
.glam-spy-art.is-dragon { width:clamp(130px,20vw,330px)!important; height:clamp(130px,20vw,330px)!important; }
.glam-panther-orbit { z-index:8; animation:none; filter:drop-shadow(0 2px 3px #000) drop-shadow(0 0 4px #9317DD); }
.glam-panther { overflow:visible; }
.glam-panther-body, .glam-panther-leg path { fill:#050409; stroke:#4A2748; stroke-width:1.3; }
.glam-panther-tail { fill:none; stroke:#050409; stroke-width:7; stroke-linecap:round; transform-origin:36px 45px; animation:glamTail .45s ease-in-out infinite alternate; }
.glam-panther-leg { transform-origin:60px 54px; animation:glamWalk .32s ease-in-out infinite alternate; }
.glam-panther-leg.is-front { transform-origin:130px 52px; animation-direction:alternate-reverse; }
.glam-panther-leg.is-back { opacity:.75; animation-delay:-.32s; }
.glam-panther-highlight { fill:none; stroke:#7A0392; stroke-width:1.3; opacity:.7; }
.glam-panther-collar { fill:#9317DD; stroke:#dabdff; stroke-width:1; }
.glam-panther-eye.is-gold { fill:#FFF220; filter:drop-shadow(0 0 2px #FFF220); }
.glam-panther-eye.is-violet { fill:#c26bff; filter:drop-shadow(0 0 2px #9317DD); }
.glam-panther-nose { fill:#1c1229; }
.glam-panther-whiskers { fill:none; stroke:#8C7D93; stroke-width:.8; }
.glam-panther-trail { height:40%!important; }
.glam-panther-trail i { position:absolute; inset:0; border:2px solid #9317DD; border-radius:50%; border-top-color:transparent; box-shadow:0 4px 10px #7A0392; animation:glamRotate 3s linear infinite; }
.glam-panther-trail i + i { inset:10%; border-color:#4A2748; border-bottom-color:#c26bff; animation-direction:reverse; }
.glam-spy-scene[data-hero="64"] .glam-enamel { fill:#0a0906; stroke:#EAA751; }
.glam-spy-scene[data-hero="64"] .glam-lens { fill:#FFF220; }
.glam-spy-scene[data-hero="89"] .glam-enamel { fill:#EEDCDE; stroke:#8C7D93; }
.glam-spy-scene[data-hero="89"] .glam-dark { fill:#8C7D93; stroke:#fff; }
@keyframes glamAppear { 0%,100%{opacity:0} 12%,78%{opacity:1} }
@keyframes glamDeploy { 0%{opacity:0;transform:translate(-50%,-20%) scale(.3) rotate(-25deg)} 18%{opacity:1;transform:translate(-50%,-50%) scale(1.08) rotate(5deg)} 35%,78%{opacity:1;transform:translate(-50%,-50%) scale(1)} 100%{opacity:0;transform:translate(-50%,-70%) scale(.8)} }
@keyframes glamAccessory { 0%,100%{opacity:0;transform:translate(-50%,-50%) scale(.5)} 20%,75%{opacity:.8;transform:translate(-50%,-50%) scale(1) rotate(10deg)} }
@keyframes glamRotate { to{rotate:360deg} }
@keyframes glamLaser { 0%{opacity:0;transform:scaleX(0)} 18%,45%{opacity:.9;transform:scaleX(1)} 100%{opacity:0;transform:scaleX(1)} }
@keyframes glamPulse { 0%,100%{opacity:0;scale:.2} 20%,50%{opacity:1;scale:1} }
@keyframes glamLock { 0%{opacity:0;transform:translate(-50%,-50%) scale(1.5) rotate(-20deg)} 20%,65%{opacity:.85;transform:translate(-50%,-50%) scale(1)} 100%{opacity:0;transform:translate(-50%,-50%) scale(.9)} }
@keyframes glamCuffs { 0%{opacity:0;transform:translate(-50%,-50%) scale(1.7) rotate(-35deg)} 30%,70%{opacity:1;transform:translate(-50%,-50%) scale(.9) rotate(10deg)} 100%{opacity:0;transform:translate(-50%,-50%) scale(1)} }
@keyframes glamMist { 0%{opacity:0;transform:translate(-50%,-50%) scale(.2)} 30%{opacity:.85} 100%{opacity:0;transform:translate(-50%,-90%) scale(1.6)} }
@keyframes glamSatellite { 0%,100%{opacity:0;transform:translate(-50%,-50%) scale(.2)} 18%,75%{opacity:.95;transform:translate(-50%,-50%) scale(1) rotate(15deg)} }
@keyframes glamArt { 0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(-18deg)} 25%,65%{opacity:.8;transform:translate(-50%,-50%) scale(1) rotate(8deg)} 100%{opacity:0;transform:translate(-50%,-70%) scale(1.05)} }
@keyframes glamWalk { from{transform:rotate(-18deg)} to{transform:rotate(18deg)} }
@keyframes glamTail { from{transform:rotate(-12deg)} to{transform:rotate(14deg)} }
body.v3-vfx-disabled .glam-spy-scene { display:none!important; }
@media(prefers-reduced-motion:reduce) { .glam-spy-scene { display:none; } }
