@keyframes pulse-live { 0% { box-shadow: 0 0 0 0 rgba(214, 0, 0, 0.7); box-shadow: 0 0 0 0 rgba(227, 45, 34, 0.7); } 70% { box-shadow: 0 0 0 12px rgba(214, 0, 0, 0); box-shadow: 0 0 0 12px rgba(227, 45, 34, 0); } 100% { box-shadow: 0 0 0 0 rgba(214, 0, 0, 0); box-shadow: 0 0 0 0 rgba(227, 45, 34, 0); } } @mixin pulse-dot { &::after { content: ''; top: 50%; position: absolute; display: block; border-radius: 50%; background-color: #d60000; background-color: rgb(227, 45, 34); border-radius: 50%; transform: translate(-50%, -50%); animation: pulse-live 2s infinite; height: 16px; width: 16px; } }