#mic {
    aspect-ratio: 1/1;
    position: relative;
    width: 50%;
    height: auto;
    display: flex;
    justify-content: center;
    align-items: center;
}

#micBtn {
    z-index: 1;
    width: calc(100% / 3 * 2);
    height: calc(100% / 3 * 2);
    border-radius: 50%;
    background-color: var(--box-bg);
    border: 4px solid #333;
    cursor: pointer;
    transition: all .8s ease-out;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.7);
}

#micBtn.listening,
#micBtn:hover {
    border-color: var(--shade);
    box-shadow: 0 0 20px var(--glow);
}

#wave {
    position: absolute;
    z-index: 99;
    pointer-events: none;
    width: 100%;
    height: 100%;
    border-radius: 50%;
}

#shockwave {
    position: absolute;
    z-index: 1;
    width: calc(100% / 3 * 2);
    height: calc(100% / 3 * 2);
    border-radius: 50%;
    border: 5px solid var(--shade);
    box-shadow: 0 0 10px var(--glow), inset 0 0 100px var(--glow);
    opacity: 0;
    pointer-events: none;
}

#shockwave.fire {
    /* cubic-bezier(0.1, 0.8, 0.3, 1) makes it explode outward fast, then gently slow down */
    animation: burst 5s cubic-bezier(0.1, 0.8, 0.3, 1) forwards;
}

@keyframes burst {
    0% {
        transform: scale(1);
        opacity: 0.8;
    }

    100% {
        transform: scale(10);
        opacity: 0;
        border-width: 1px;
    }
}