@keyframes bounceIn {
    from {
        opacity: 0;
        transform: scale(0.5);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes fillUp {
    from {
        transform: scaleX(0);
    }
    to {
        transform: scaleX(1);
    }
}

@keyframes picImage {
    from {
        opacity: 0;
        transform: scale(1.2) translateY(-1rem);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

@keyframes picShadow {
    from {
        opacity: 0;
        transform: scale(1.2) translateY(4rem);
    }
    to {
        opacity: 1;
        transform: scale(1.1) translateY(0);
    }
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-1rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideUp {
    from {
        opacity: 0;
        transform: translateY(1rem);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes zoomOut {
    from {
        opacity: 0;
        transform: scale(1.05);
    }
    to {
        opacity: 0.2;
        transform: scale(1);
    }
}

@keyframes steam {
    0% {
        background-position: 0 0;
    }
    50% {
        background-position: 400% 0;
    }
    100% {
        background-position: 0 0;
    }
}

.picture-shadow,
.picture-image,
.name,
.job,
.hr,
.description,
.contact,
.social li,
.design-button,
.project-button {
    animation-duration: 1s;
    animation-timing-function: cubic-bezier(0, 0.5, 0, 1);
    animation-fill-mode: both;
}

.picture-shadow,
.picture-image {
    animation-duration: 750ms;
    animation-timing-function: cubic-bezier(0, 0.5, 0.25, 1.25);
}

.wallpaper,
.picture-shadow,
.picture-image {
    opacity: 0;
}

.contact, .design-button, .project-button {
    animation-name: bounceIn;
}

.picture.is-loaded .picture-shadow {
    animation-name: picShadow;
}

.picture.is-loaded .picture-image {
    animation-name: picImage;
}

.name {
    animation-name: slideDown;
}

.job {
    animation-name: slideUp;
}

.hr {
    animation-name: fillUp;
}

.description {
    animation-name: slideUp;
}

.social li {
    animation-duration: 500ms;
    animation-name: slideUp;
    animation-timing-function: cubic-bezier(0.5, 0, 0.5, 1.5);
}

.name {
    animation-delay: 100ms;
}

.job {
    animation-delay: 200ms;
}

.hr {
    animation-delay: 300ms;
}

.description {
    animation-delay: 400ms;
}

.picture-image {
    animation-delay: 500ms;
}

.contact {
    animation-delay: 600ms;
}

.social li:nth-child(1) {
    animation-delay: 800ms;
}

.social li:nth-child(2) {
    animation-delay: 900ms;
}

.social li:nth-child(3) {
    animation-delay: 1s;
}

.social li:nth-child(4) {
    animation-delay: 1.1s;
}

.social li:nth-child(5) {
    animation-delay: 1.2s;
}

.card:hover::before, .card:hover::after {
    animation: steam 20s linear infinite;
    background-image: linear-gradient(45deg, #fb0094, #0000ff, #00ff00, #ffff00, #ff0000, #fb0094,
    #0000ff, #00ff00, #ffff00, #ff0000);
    background-size: 400%;
    border-radius: 8px;
    content: '';
    height: calc(100%);
    position: absolute;
    width: calc(100%);
    z-index: -1;
}

.projects, .designs {
    opacity: 1;
    transition: opacity 2s;
}

.projects.hide, .designs.hide {
    opacity: 0;
}