@keyframes pulsate {
    0% {transform: scale(0.6, 0.6); opacity: 0.0;}
    50% {opacity: 1.0;}
    100% {transform: scale(1, 1); opacity: 0.0;}
}

@keyframes heart-pulse {
    0% {transform: scale(0.75, 0.75);}
    30% {transform: scale(1, 1);}
}

.pulse-base {
    position: relative;
    height: 120px;
    width: 120px;
    border: 15px solid #222;
    border-radius: 50%;
    margin: 0 auto;
}

.pulse-circle {
    background: red;
}

.pulse-base:before {
    content:"";
    border: 15px solid rgba(255,255,255,0.3);
    border-radius: 50%;
    height: 120px;
    width: 120px;
    position: absolute;
    left: -15px;
    bottom: -15px;
    animation: pulsate 1.6s ease-out;
    animation-iteration-count: infinite;
    opacity: 0.0;
    z-index: 99;
}

.heart {
    font-size: 90px;
    line-height: 1;
    color: red;
    margin: 0 auto;
    padding: 0;
    animation: heart-pulse 0.8s ease-out alternate;
    animation-iteration-count: infinite;
}

.cbody {
    background-color: #1a1d23;
    color: #ecf0f1;
    height: 120px;
}

.panel {
    margin: 40px auto;
    display: flex
}

.col {
    width: 33.33%;
    text-align: center;
}

footer {
    font-family: sans-serif;
    font-size: 12.8px;
    position: fixed;
    left: 50%;
    transform: translateX(-50%);
    border-radius: 5px 5px 0 0;
    bottom: 0;
    width: 100%;
    max-width: 320px;
    background-color: rgba(0, 0, 0, 0.5);
    color: #aaa;
    padding: 12px 16px;
    text-align: center;
}

footer a {
    color: #eee;
    text-decoration: none;
}