/* Shared stratum palette and ambient particles for route and event screens. */
:is(.rt-stage,.ev-stage)[data-s="1"]{--ac:#a8e47c;--ac2:#e8c57a}
:is(.rt-stage,.ev-stage)[data-s="2"]{--ac:#79e8ff;--ac2:#ff8a9a}
:is(.rt-stage,.ev-stage)[data-s="3"]{--ac:#cfeeff;--ac2:#b9a6ff}
:is(.rt-stage,.ev-stage)[data-s="4"]{--ac:#ffb7c9;--ac2:#ffd66b}
:is(.rt-fx,.ev-fx){position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
:is(.rt-fx,.ev-fx) i{position:absolute;display:block}
:is(.rt-stage,.ev-stage)[data-s="1"] :is(.rt-fx,.ev-fx) i{width:5px;height:5px;border-radius:50%;background:#e9ff9a;box-shadow:0 0 8px 3px rgba(210,255,120,.7);animation:ev-fly var(--d) ease-in-out var(--dl) infinite alternate}
@keyframes ev-fly{0%{transform:translate(0,0);opacity:.1}30%{opacity:1}60%{opacity:.4}100%{transform:translate(var(--dx),var(--dy));opacity:.9}}
:is(.rt-stage,.ev-stage)[data-s="2"] :is(.rt-fx,.ev-fx) i{bottom:-20px;width:var(--sz);height:var(--sz);border-radius:50%;border:1px solid rgba(200,245,255,.7);background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.7) 0 12%,rgba(160,230,255,.12) 40%,transparent 70%);animation:ev-rise var(--d) linear var(--dl) infinite}
@keyframes ev-rise{0%{transform:translate(0,0);opacity:0}10%{opacity:.9}100%{transform:translate(var(--dx),-110vh);opacity:.2}}
:is(.rt-stage,.ev-stage)[data-s="3"] :is(.rt-fx,.ev-fx) i{top:-10px;width:var(--sz);height:var(--sz);border-radius:50%;background:#fff;opacity:.85;animation:ev-fall var(--d) linear var(--dl) infinite}
@keyframes ev-fall{to{transform:translate(var(--dx),110vh)}}
:is(.rt-stage,.ev-stage)[data-s="4"] :is(.rt-fx,.ev-fx) i{top:-14px;width:calc(var(--sz) * 1.6);height:var(--sz);border-radius:100% 0 100% 0;background:linear-gradient(135deg,#fff0f5,#ffa9c0);opacity:.9;animation:ev-petal var(--d) linear var(--dl) infinite}
@keyframes ev-petal{0%{transform:translate(0,0) rotate(0)}50%{transform:translate(calc(var(--dx) * .5),55vh) rotate(200deg)}100%{transform:translate(var(--dx),110vh) rotate(420deg)}}


@media(prefers-reduced-motion:reduce){:is(.rt-fx,.ev-fx) i{animation:none!important}}
