.shadow-awake-fx {
  position: fixed; inset: 0; z-index: 1000; pointer-events: none;
  background: radial-gradient(ellipse at var(--feet-x, 50%) var(--feet-y, 58%), transparent 16%, #13091cbb 100%);
}
.shadow-awake-stage {
  position: absolute; left: var(--feet-x, 50%); top: var(--feet-y, 58%);
  width: min(72vw, 330px); height: min(54vh, 260px);
  transform: translate(-50%, -94%);
}
.shadow-awake-stage i { display: block; position: absolute; opacity: 0; }
.shadow-awake-ring {
  bottom: 0; inset-inline: 4%; height: 25%; border-radius: 50%;
  border: 2px solid #dfadff; background: radial-gradient(ellipse, #341050a0 42%, #a755f2a0);
  box-shadow: 0 0 28px #b05bff, inset 0 0 20px #ba79ff;
  animation: shadow-awake-spread .85s ease-out forwards;
}
.shadow-awake-mist {
  bottom: 6%; inset-inline: 6%; height: 82%;
  background: radial-gradient(ellipse at 45% 72%, #e7a0ff 1%, #aa59e9b5 20%, transparent 66%),
    radial-gradient(ellipse at 65% 61%, #63349e 12%, transparent 70%);
  filter: blur(13px); animation: shadow-awake-rise .85s ease-out forwards;
}
.shadow-awake-guard {
  bottom: 10%; left: 61%; width: 34%; height: 76%;
  background: linear-gradient(#b47bfa, #2c154e 31%, #0d071c 82%);
  clip-path: polygon(43% 1%,58% 1%,67% 11%,67% 25%,81% 29%,92% 46%,84% 67%,74% 65%,70% 98%,56% 98%,49% 74%,43% 98%,27% 98%,24% 66%,13% 67%,7% 47%,17% 31%,34% 25%,33% 12%);
}
.shadow-awake-fx.revealed .shadow-awake-guard { animation: shadow-awake-guard 1.35s ease-out forwards; }
.shadow-awake-fx.revealed .shadow-awake-mist { opacity: 0; animation: shadow-awake-dissolve .45s ease-out; }
.shadow-awake-fx.revealed .shadow-awake-ring { opacity: 0; animation: shadow-awake-dissolve 1.15s ease-out; }
.shadow-awake-fx p {
  position: absolute; left: 50%; bottom: max(15%, env(safe-area-inset-bottom));
  transform: translateX(-50%); margin: 0; width: max-content; max-width: 86vw;
  box-sizing: border-box; padding: .65em 1.15em; border: 1px solid #c39aef;
  border-radius: .5em; background: #180e28ed; color: #f4dcff;
  font: bold clamp(1rem, 4vw, 1.55rem)/1.35 system-ui, sans-serif; text-align: center;
}
.shadow-awake-fx.reduced { background: transparent; }
.shadow-awake-fx.reduced .shadow-awake-stage { display: none; }
@keyframes shadow-awake-spread { from { opacity: 0; transform: scale(.16); } to { opacity: .86; transform: scale(1); } }
@keyframes shadow-awake-rise { from { opacity: 0; transform: translateY(27%) scale(.5); } to { opacity: .94; transform: translateY(0) scale(1); } }
@keyframes shadow-awake-guard { 0% { opacity: 0; transform: translateY(18%); } 32%, 66% { opacity: .88; transform: translateY(0); } 100% { opacity: 0; transform: translateY(-4%); } }
@keyframes shadow-awake-dissolve { from { opacity: .86; } to { opacity: 0; } }
