:root {
  --slp-accent: #596246;
  --slp-ink: #202329;
  --slp-muted: #74746f;
  --slp-surface: #ffffff;
  --slp-lane: #eceae4;
}

.slp-shooter { transition: transform 720ms cubic-bezier(.22,.85,.28,1); }
.slp-shooting-box-label { fill: var(--slp-muted); font-size: 9px; font-weight: 900; }
.slp-shot-line { stroke: var(--slp-accent); stroke-dasharray: 4 5; stroke-linecap: round; stroke-width: 3; }
.slp-shot-pulse { animation: slp-pulse 700ms ease-out; transform-box: fill-box; transform-origin: center; }
.slp-positioned-marker { animation: slp-positioned-marker-pop 720ms ease-out; }
.slp-command { animation: slp-icon-pop 620ms ease-out; transform-box: fill-box; transform-origin: center; }
.slp-standby-ring { animation: slp-standby 900ms ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.slp-beep-wave { animation: slp-beep 700ms ease-out infinite; }

@keyframes slp-pulse { from { opacity: 1; transform: scale(.72); } to { opacity: 1; transform: scale(1); } }
@keyframes slp-positioned-marker-pop { from { opacity: 0; } to { opacity: 1; } }
@keyframes slp-icon-pop { 0% { opacity: 0; transform: scale(.82); } 40% { opacity: 1; transform: scale(1.08); } 100% { opacity: 1; transform: scale(1); } }
@keyframes slp-standby { 0%,100% { opacity: .35; transform: scale(.92); } 50% { opacity: 1; transform: scale(1.04); } }
@keyframes slp-beep { from { opacity: .95; transform: translateX(0); } to { opacity: .18; transform: translateX(4px); } }

@media (prefers-reduced-motion: reduce) {
  .slp-shooter { transition: none; }
  .slp-shot-pulse,
  .slp-positioned-marker,
  .slp-command,
  .slp-standby-ring,
  .slp-beep-wave { animation: none; }
}
