/* Telos Nexus motion kit — generated by tools/motion_kit.py; edit there. */
.tnm-b, .tnm-d { transform-box: fill-box; transform-origin: center; }
.tnm-lockup { transition: transform 1.2s cubic-bezier(.22,.8,.24,1); transform: translate3d(var(--dx, 0), var(--dy, 0), 0); }
.tnm-spin { transform: rotate(var(--spin, 0deg)); transition: transform .9s cubic-bezier(.22,.8,.24,1); overflow: visible; }
.tnm-routes { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.tnm-grid line { stroke: rgb(201 167 255 / .05); stroke-width: 1; vector-effect: non-scaling-stroke; }
.tnm-trace { fill: none; stroke: rgb(156 92 255 / .38); stroke-width: 1.6; stroke-linejoin: round; vector-effect: non-scaling-stroke; }
.tnm-node { fill: #C9A7FF; }
.tnm-pulse { fill: none; stroke: #F3EAFF; stroke-width: 2.4; stroke-linecap: round; stroke-dasharray: 0 1000; opacity: 0; }
@media (prefers-reduced-motion: no-preference) {
  .js .tnm-mk--head .tnm-b { animation: tnm-blade 1.1s cubic-bezier(.22,.8,.24,1) both; }
  .js .tnm-mk--head .tnm-b2 { animation-delay: .08s; } .js .tnm-mk--head .tnm-b3 { animation-delay: .16s; } .js .tnm-mk--head .tnm-b4 { animation-delay: .24s; }
  .js .tnm-mk--head .tnm-d { animation: tnm-drop .7s cubic-bezier(.22,.8,.24,1) both .55s; }
  .js .tnm-mk--head .tnm-d2 { animation-delay: .62s; } .js .tnm-mk--head .tnm-d3 { animation-delay: .69s; } .js .tnm-mk--head .tnm-d4 { animation-delay: .76s; }

  .js [data-tnm]:not(.tnm-live) .tnm-mk--close .tnm-b,
  .js [data-tnm]:not(.tnm-live) .tnm-mk--close .tnm-d,
  .js [data-tnm]:not(.tnm-live) .tnm-word { opacity: 0; }
  .js .tnm-live .tnm-mk--close .tnm-b1 { animation: tnm-ne 1.3s cubic-bezier(.22,.8,.24,1) both .1s; }
  .js .tnm-live .tnm-mk--close .tnm-b2 { animation: tnm-se 1.3s cubic-bezier(.22,.8,.24,1) both .2s; }
  .js .tnm-live .tnm-mk--close .tnm-b3 { animation: tnm-sw 1.3s cubic-bezier(.22,.8,.24,1) both .3s; }
  .js .tnm-live .tnm-mk--close .tnm-b4 { animation: tnm-nw 1.3s cubic-bezier(.22,.8,.24,1) both .4s; }
  .js .tnm-live .tnm-mk--close .tnm-d { animation: tnm-drop .8s cubic-bezier(.22,.8,.24,1) both 1.05s; }
  .js .tnm-live .tnm-mk--close .tnm-d2 { animation-delay: 1.15s; } .js .tnm-live .tnm-mk--close .tnm-d3 { animation-delay: 1.25s; } .js .tnm-live .tnm-mk--close .tnm-d4 { animation-delay: 1.35s; }
  .js .tnm-live .tnm-word { animation: tnm-wipe 1.2s cubic-bezier(.22,.8,.24,1) both 1.35s; }

  .js [data-tnm]:not(.tnm-live) .tnm-trace { stroke-dasharray: 2400; stroke-dashoffset: 2400; }
  .js [data-tnm]:not(.tnm-live) .tnm-node { opacity: 0; }
  .js .tnm-live .tnm-trace { stroke-dasharray: 2400; animation: tnm-draw 1.8s cubic-bezier(.22,.8,.24,1) both; animation-delay: calc(.2s + var(--i, 0) * 140ms); }
  .js .tnm-live .tnm-node { animation: tnm-fade .5s ease both; animation-delay: calc(1.4s + var(--i, 0) * 140ms); }
  .js .tnm-live .tnm-pulse { animation: tnm-streak 3.4s cubic-bezier(.5,0,.25,1) infinite; animation-delay: calc(2s + var(--k, 0) * 430ms); }
  .tnm-paused .tnm-pulse { animation-play-state: paused !important; }
}
@keyframes tnm-blade { from { opacity: 0; transform: rotate(-80deg) scale(.4); } }
@keyframes tnm-drop { from { opacity: 0; transform: scale(0); } }
@keyframes tnm-ne { from { opacity: 0; transform: translate(260px, -260px) rotate(-60deg); } }
@keyframes tnm-se { from { opacity: 0; transform: translate(260px, 260px) rotate(-60deg); } }
@keyframes tnm-sw { from { opacity: 0; transform: translate(-260px, 260px) rotate(-60deg); } }
@keyframes tnm-nw { from { opacity: 0; transform: translate(-260px, -260px) rotate(-60deg); } }
@keyframes tnm-wipe { from { opacity: 1; clip-path: inset(0 100% 0 0); } to { opacity: 1; clip-path: inset(0 0 0 0); } }
@keyframes tnm-draw { from { stroke-dashoffset: 2400; } to { stroke-dashoffset: 0; } }
@keyframes tnm-fade { from { opacity: 0; } }
@keyframes tnm-streak {
  0% { stroke-dasharray: 0 1000; stroke-dashoffset: 0; opacity: 0; }
  8% { opacity: 1; }
  15% { stroke-dasharray: 90 1000; }
  85% { stroke-dasharray: 90 1000; opacity: 1; }
  100% { stroke-dasharray: 0 1000; stroke-dashoffset: -1000; opacity: 0; }
}
