/* TZ3 · Limbo display layer. Visual only; pairs with limbo-fx.js. */
.limbo-stage.lfx-on{--lfx-heat:0;isolation:isolate}
.limbo-stage.lfx-on .limbo-orbit{border-color:#59caff26}
.limbo-stage.lfx-on .limbo-orbit::before{content:"";position:absolute;inset:-1px;border-radius:50%;
  background:conic-gradient(from 0deg,transparent 0 72%,#6fe3ff55 86%,#d9fbff 90%,transparent 91%);
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 1px));
          mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 1px));
  opacity:.45;animation:lfx-spin 14s linear infinite}
.limbo-stage.lfx-on .orbit-two::before{animation-duration:22s;animation-direction:reverse;opacity:.3}
.lfx-glow{position:absolute;left:50%;top:50%;width:min(720px,120%);aspect-ratio:1;transform:translate(-50%,-52%);
  border-radius:50%;pointer-events:none;z-index:0;opacity:calc(.35 + var(--lfx-heat)*.5);
  background:radial-gradient(closest-side,#3fb8ff40,#2a7dd51c 55%,transparent 72%);transition:opacity .35s,background .35s}
.lfx-ring{position:absolute;left:50%;top:46%;width:220px;height:220px;margin:-110px 0 0 -110px;border-radius:50%;
  border:2px solid #7be5ff;opacity:0;pointer-events:none;z-index:0}
.lfx-ring.go{animation:lfx-ring .8s cubic-bezier(.2,.7,.3,1) forwards}
.lfx-sparks{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}
.limbo-stage.lfx-on .limbo-result strong{transition:color .25s,text-shadow .25s,transform .25s;will-change:transform}
/* waiting for the server: calm pulse, no number change */
.limbo-stage.lfx-pending .limbo-orbit::before{animation-duration:2.2s;opacity:.85}
.limbo-stage.lfx-pending .orbit-two::before{animation-duration:3.4s}
.limbo-stage.lfx-pending .limbo-result strong{animation:lfx-breathe 1.1s ease-in-out infinite}
.limbo-stage.lfx-pending .track::after{content:"";position:absolute;inset:0;border-radius:20px;
  background:linear-gradient(90deg,transparent,#8fe9ff40,transparent);background-size:40% 100%;background-repeat:no-repeat;
  animation:lfx-scan 1.1s linear infinite}
/* rise */
.limbo-stage.lfx-rising .limbo-orbit::before{animation-duration:1.6s;opacity:.95}
.limbo-stage.lfx-rising .limbo-result strong{transform:scale(calc(1 + var(--lfx-heat)*.05));
  text-shadow:0 0 calc(30px + var(--lfx-heat)*50px) #62d5ff88}
.limbo-stage.lfx-rising .track i,.limbo-stage.lfx-rising .track b{transition:none!important}
.track i.lfx-reset,.track i.lfx-reset+b{transition:width .28s ease-out,left .28s ease-out}
.lfx-target{position:absolute;top:-7px;bottom:-7px;width:3px;margin-left:-1.5px;border-radius:2px;background:#ffd36b;
  box-shadow:0 0 10px #ffc94d99;pointer-events:none;transition:left .25s,background .25s,box-shadow .25s}
.lfx-target::after{content:"";position:absolute;left:50%;top:-6px;width:9px;height:9px;margin-left:-4.5px;
  background:inherit;clip-path:polygon(50% 100%,0 0,100% 0)}
.limbo-stage.lfx-passed .track i{background:linear-gradient(90deg,#3fd3a0,#c6ff7a)!important}
.limbo-stage.lfx-passed .lfx-target{background:#b8ff7a;box-shadow:0 0 14px #b8ff7a}
/* landing */
.limbo-stage.lfx-land .limbo-result strong{animation:lfx-land .55s cubic-bezier(.2,.9,.25,1.25)}
.limbo-stage.lfx-win .lfx-glow{background:radial-gradient(closest-side,#4dffb455,#2bd59a22 55%,transparent 72%);opacity:.95}
.limbo-stage.lfx-win .lfx-ring{border-color:#9dffb8}
.limbo-stage.lfx-on .limbo-result strong.win{color:#8dffc4;text-shadow:0 0 60px #7dffc066}
.limbo-stage.lfx-loss .lfx-glow{background:radial-gradient(closest-side,#ff5c7a33,#a8304a18 55%,transparent 72%);opacity:.8}
.limbo-stage.lfx-loss .lfx-ring{border-color:#ff8da5}
.limbo-stage.lfx-loss.lfx-land .limbo-result strong{animation:lfx-shake .45s ease-out}
.limbo-stage.lfx-loss .track i{background:linear-gradient(90deg,#4a6fa0,#ff8da5)!important}
.limbo-stage.lfx-loss .lfx-target{background:#ff8da5;box-shadow:0 0 12px #ff5c7a}
.limbo-stage.lfx-on .flash-pill{transition:color .25s,border-color .25s,background .25s}
.limbo-stage.lfx-on .flash-pill.win{background:#123f37}
.limbo-stage.lfx-on .flash-pill.loss{background:#3d1a28}
@keyframes lfx-spin{to{transform:rotate(360deg)}}
@keyframes lfx-breathe{50%{opacity:.72;transform:scale(.985)}}
@keyframes lfx-scan{from{background-position:-40% 0}to{background-position:140% 0}}
@keyframes lfx-ring{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(2.6)}}
@keyframes lfx-land{0%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes lfx-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(7px)}60%{transform:translateX(-4px)}80%{transform:translateX(2px)}}
@media (prefers-reduced-motion:reduce){
  .limbo-stage.lfx-on .limbo-orbit::before,.limbo-stage.lfx-pending .limbo-result strong,.limbo-stage.lfx-pending .track::after,
  .lfx-ring.go,.limbo-stage.lfx-land .limbo-result strong{animation:none!important}
}
