/* v0.9.9 — restrained voyage movement and event cues; NO rule or sound changes. */
.game-stage .voyage-scene .ty-drift-stars{
 position:absolute;inset:-8%;pointer-events:none;opacity:.22;
 background-image:radial-gradient(circle,#e6f8ff 0 1px,transparent 1.6px),radial-gradient(circle,#90b8fa 0 .8px,transparent 1.5px);
 background-size:245px 197px,179px 151px;background-position:17px 20px,86px 71px;
 animation:ty-drift-stars 85s linear infinite;mix-blend-mode:screen;
}
@keyframes ty-drift-stars{from{transform:translate3d(0,0,0)}to{transform:translate3d(-26px,13px,0)}}
/* Preserve the existing Foxy route and directional spotlight. Only pulse the engines while traveling. */
.game-stage.spotlight-traveling .foxy-ship-glow,.game-stage .foxy-orbit-marker.ty-ship-boost .foxy-ship-glow{
 opacity:.65;filter:blur(8px);background:#8bfcff;
 animation:ty-thruster-pulse .26s ease-in-out infinite alternate;
}
.game-stage.spotlight-traveling .ship-trail-mid{
 stroke-width:6;opacity:.94;stroke-dasharray:19 5;animation:ty-route-accelerate .37s linear infinite;
}
.game-stage.spotlight-traveling .ship-trail-tip{stroke-width:4.2;opacity:1}
.game-stage.spotlight-traveling .foxy-orbit-marker .foxy-realtime-display{filter:drop-shadow(0 0 5px #6ffbf8a6)}
@keyframes ty-route-accelerate{to{stroke-dashoffset:-24}}
@keyframes ty-thruster-pulse{from{transform:scale(.96) rotate(-14deg);opacity:.42}to{transform:scale(1.34) rotate(-14deg);opacity:.77}}
/* Context-based attack/ability animations use public events only. Noninteractive and <1.3s. */
.game-stage .combat-fx{pointer-events:none;overflow:hidden;contain:layout style;z-index:12}
.ty-cinematic{position:absolute;pointer-events:none;z-index:1;
 --ty-color:#70e4f2;--ty-glow:#57deed4f;
}
.ty-cinematic-attack{--ty-color:#ff6b85;--ty-glow:#ff315244}
.ty-cinematic-chaos{--ty-color:#d79afd;--ty-glow:#9459f86c}
.ty-cinematic-order{--ty-color:#b992f5;--ty-glow:#865de85c}
.ty-cinematic-shield{--ty-color:#ffd17c;--ty-glow:#ffd17c55}
.ty-cinematic-reflect{--ty-color:#68f0f5;--ty-glow:#24c9ee5c}
.ty-cinematic-stack{--ty-color:#82e9e2;--ty-glow:#63fae447}
.ty-cinematic-reverse{--ty-color:#90c1ff;--ty-glow:#7ba7f044}
.ty-cinematic-skip{--ty-color:#94dfad;--ty-glow:#6be99955}
.ty-cinematic-wild{--ty-color:#c7a1ff;--ty-glow:#a161f755}
.ty-cinematic-panic,.ty-cinematic-caught{--ty-color:#ffb06c;--ty-glow:#f97b3563}
.ty-cinematic:not(.ty-cinematic-beam){left:var(--ty-x);top:var(--ty-y);
 display:flex;flex-direction:column;align-items:center;gap:0;
 transform:translate(-50%,-50%);animation:ty-cinematic-in 1.12s ease-out both;
}
.ty-cinematic-ring{width:clamp(58px,8vw,96px);height:clamp(58px,8vw,96px);
 border:2px solid var(--ty-color);box-shadow:0 0 14px var(--ty-glow),inset 0 0 11px var(--ty-glow);
 border-radius:50%;display:block;background:radial-gradient(circle,var(--ty-glow),transparent 72%);
 animation:ty-cinematic-ring .92s ease-out both;
}
.ty-cinematic-badge{position:relative;margin-top:-16px;display:flex;align-items:center;gap:5px;
 padding:5px 9px;border:1px solid var(--ty-color);border-radius:7px;
 background:#0c142be8;color:#f3f8ff;font:900 clamp(8px,1vw,11px)/1.2 system-ui,sans-serif;
 letter-spacing:.045em;white-space:nowrap;box-shadow:0 5px 14px #010718a8;
}
.ty-cinematic-glyph{color:var(--ty-color);font-size:1.24em}
.ty-cinematic-beam{left:var(--ty-x);top:var(--ty-y);height:3px;width:var(--ty-length);
 transform-origin:left center;transform:rotate(var(--ty-angle)) scaleX(0);
 border-radius:4px;background:linear-gradient(90deg,transparent 0%,var(--ty-color) 48%,#fff 83%,transparent 100%);
 box-shadow:0 0 9px var(--ty-color);animation:ty-cinematic-beam .82s ease-out both;
}
.ty-beam-shield{--ty-color:#ffd17c}.ty-beam-reflect{--ty-color:#68f0f5}
.ty-beam-chaos{--ty-color:#c19dff}.ty-beam-order{--ty-color:#b992f5}
.ty-beam-attack{--ty-color:#ff6b85}.ty-beam-panic,.ty-beam-caught{--ty-color:#ffb06c}
@keyframes ty-cinematic-beam{0%{opacity:0;transform:rotate(var(--ty-angle)) scaleX(0)}24%{opacity:.95}65%{opacity:.9;transform:rotate(var(--ty-angle)) scaleX(1)}100%{opacity:0;transform:rotate(var(--ty-angle)) scaleX(1)}}
@keyframes ty-cinematic-ring{0%{opacity:0;transform:scale(.48)}27%{opacity:.95;transform:scale(1.1)}74%{opacity:.8;transform:scale(1)}100%{opacity:0;transform:scale(1.18)}}
@keyframes ty-cinematic-in{0%{opacity:0}14%{opacity:1}72%{opacity:1}100%{opacity:0}}
/* PANIC is urgent but never hides its button, cards, or speech. */
.game-stage.ty-panic-wait .battle-message{border-color:#ffbf7a!important;box-shadow:0 0 12px #ffad4350,inset 0 1px 0 #ffe4b321}
.game-stage.ty-panic-live .battle-message{border-color:#ffc06d!important;box-shadow:0 0 0 1px #f6a96460,0 0 17px #ed875446!important}
.game-stage.ty-panic-live #panic:not(:disabled),.game-stage.ty-panic-live #panic.ty-go:not(:disabled){
 border:2px solid #ffe2a0!important;box-shadow:0 0 0 2px #e77b6877,0 0 18px #fb855d7f!important;
 animation:ty-panic-beat .59s ease-in-out infinite alternate;
}
.game-stage.ty-panic-live .player-panel,.game-stage.ty-panic-live .opponent{transition:box-shadow .22s}
@keyframes ty-panic-beat{from{filter:brightness(1)}to{filter:brightness(1.2)}}
@media (pointer:coarse) and (orientation:landscape) and (max-height:760px){
 .game-stage .ty-cinematic-ring{width:50px;height:50px}
 .game-stage .ty-cinematic-badge{font-size:8px;padding:3px 5px;margin-top:-13px}
 .game-stage .voyage-scene .ty-drift-stars{opacity:.12}
}
@media(prefers-reduced-motion:reduce){
 .game-stage .voyage-scene .ty-drift-stars{animation:none}
 .game-stage.spotlight-traveling .foxy-ship-glow,.game-stage .foxy-orbit-marker.ty-ship-boost .foxy-ship-glow,
 .game-stage.spotlight-traveling .ship-trail-mid,.game-stage.ty-panic-live #panic:not(:disabled){animation:none}
 .ty-cinematic{animation:none!important;display:none!important}
}
