:root{
  --ia-glow: rgba(160, 110, 255, 0.55);
  --ia-glow2: rgba(60, 220, 255, 0.45);
  --ia-gold: rgba(255, 210, 120, 0.35);
  --ia-neon: rgba(80, 200, 255, 0.60);
}

.ia-wrap{ position:relative; display:inline-block; border-radius:18px; isolation:isolate; }
.ia-wrap > .ia-target{ position:relative; z-index:2; border-radius:18px; }
.ia-overlay{ pointer-events:none; position:absolute; inset:-14px; border-radius:28px; z-index:1; }
.ia-hidden{ display:none!important; }

@keyframes ia-rotate{ from{transform:rotate(0deg);} to{transform:rotate(360deg);} }
@keyframes ia-breathe{ 0%{opacity:.45;} 50%{opacity:1;} 100%{opacity:.45;} }

/* palace_magic */
.ia-palace .ia-overlay{
  filter: drop-shadow(0 0 14px var(--ia-glow)) drop-shadow(0 0 22px var(--ia-glow2));
}
.ia-palace .ia-overlay::before{
  content:""; position:absolute; inset:0; border-radius:28px;
  background:
    radial-gradient(120px 60px at 20% 10%, rgba(255,255,255,0.16), transparent 60%),
    radial-gradient(140px 80px at 80% 90%, rgba(255,255,255,0.10), transparent 65%),
    conic-gradient(from 0deg,
      rgba(160,110,255,0.00),
      rgba(160,110,255,0.35),
      rgba(60,220,255,0.32),
      rgba(255,210,120,0.22),
      rgba(160,110,255,0.00)
    );
  mask: radial-gradient(closest-side, transparent 62%, #000 70%);
  opacity:0.95;
  animation: ia-rotate 5.5s linear infinite;
}
.ia-palace .ia-overlay::after{
  content:""; position:absolute; inset:10px; border-radius:22px;
  border:1px solid rgba(255,255,255,0.25);
  background:
    repeating-conic-gradient(from 0deg,
      rgba(255,255,255,0.00) 0 18deg,
      rgba(255,255,255,0.20) 18deg 19deg,
      rgba(255,255,255,0.00) 19deg 36deg
    );
  mask: radial-gradient(closest-side, transparent 60%, #000 68%);
  opacity:0.55;
  animation: ia-rotate 9s linear infinite reverse;
}
.ia-palace .ia-spark{
  position:absolute; width:6px; height:6px; border-radius:999px;
  background: rgba(255,255,255,0.95);
  box-shadow: 0 0 10px rgba(255,255,255,0.75), 0 0 18px var(--ia-glow), 0 0 22px var(--ia-glow2);
  opacity:0;
  animation: ia-spark 1.8s ease-in-out infinite;
}
@keyframes ia-spark{
  0%{ transform:translate(0,0) scale(0.5); opacity:0; }
  20%{ opacity:1; }
  60%{ opacity:0.9; }
  100%{ transform:translate(var(--dx), var(--dy)) scale(0.9); opacity:0; }
}

/* neon_pulse */
.ia-neon .ia-overlay{ inset:-10px; border-radius:26px; }
.ia-neon .ia-overlay::before{
  content:""; position:absolute; inset:0; border-radius:26px;
  background: radial-gradient(120px 60px at 30% 15%, rgba(255,255,255,0.16), transparent 60%);
  border:2px solid rgba(255,255,255,0.12);
  box-shadow: 0 0 14px rgba(255,255,255,0.20), 0 0 22px var(--ia-neon), 0 0 40px rgba(160,110,255,0.25);
  opacity:.75;
  animation: ia-breathe 2.6s ease-in-out infinite;
}

/* scanlines */
.ia-scan .ia-overlay{
  inset:-12px; border-radius:27px;
  filter: drop-shadow(0 0 14px rgba(255,255,255,0.18)) drop-shadow(0 0 26px rgba(120,180,255,0.22));
}
.ia-scan .ia-overlay::before{
  content:""; position:absolute; inset:0; border-radius:27px;
  border:1px solid rgba(255,255,255,0.18);
  background:
    linear-gradient(to bottom, rgba(255,255,255,0.00), rgba(255,255,255,0.06), rgba(255,255,255,0.00)),
    repeating-linear-gradient(to bottom,
      rgba(0,0,0,0.00) 0px,
      rgba(0,0,0,0.00) 6px,
      rgba(255,255,255,0.06) 7px
    );
  opacity:0.65;
  animation: ia-scanmove 3.2s linear infinite;
}
@keyframes ia-scanmove{
  from{ background-position:0 0, 0 0; }
  to  { background-position:0 120px, 0 42px; }
}

/* orbit_dots */
.ia-orbit .ia-overlay{ inset:-16px; border-radius:30px; }
.ia-orbit .ia-orb{
  position:absolute; left:50%; top:50%;
  width:100%; height:100%;
  transform: translate(-50%,-50%);
  border-radius:30px;
  animation: ia-rotate 4.8s linear infinite;
}
.ia-orbit .ia-ring{
  position:absolute; inset:0; border-radius:30px;
  border: 1px dashed rgba(255,255,255,0.18);
  opacity:0.5;
}
.ia-orbit .ia-dot{
  position:absolute; width:7px; height:7px; border-radius:999px;
  background: rgba(255,255,255,0.9);
  box-shadow: 0 0 14px rgba(255,255,255,0.55), 0 0 24px rgba(140,200,255,0.35);
  opacity:0.9;
}