@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}
@keyframes backgroundIn {
    from { background-size: 100% 0%; }
    to { background-size: 100% 100%; }
}
@keyframes dropIn {
    from { transform: translateY(-20px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
@keyframes riseIn {
    from { transform: translateY(20px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}
@keyframes slideIn {
    from { transform: translate(-50%, 0) rotate(-30deg); opacity: 0;}
    to { transform: translate(0, 0) rotate(0deg); opacity: 1;}
}
@keyframes scaleIn {
    from { transform: scale(0,1); }
    to { transform: scale(1,1); }
}
@keyframes growIn {
    from { transform: scale(2,1) translate(0, -50%) rotate(-15deg); opacity: 0; }
    to { transform: scale(1,1) translate(0, -50%) rotate(5deg); opacity: 1; }
}

h1, h2 {
    align-self: center;
}
.introduction h1 {
    transform: translateY(-20px);
    opacity: 0;
    filter: drop-shadow(5px 5px 0px black) drop-shadow(0 0 10px black);
}
.introduction h1.visible {
    animation: 0.5s dropIn .25s ease forwards;
}
.languages {
    align-self: center;
}

.home-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    filter: blur(5px);
    z-index: -1;
}
.home-icon {
    width: 250px;
    align-self: center;
    border-radius: 10%;
    filter: drop-shadow(5px 5px 0px black) drop-shadow(0 0 30px var(--primary-color));
}
.home-icon.visible {
    animation: dropIn .5s ease forwards;
}

.introduction {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    padding: 16px;

    overflow-y: hidden;

    background: linear-gradient(to bottom, rgba(100,0,0,0.5), rgba(255,0,0,0));
    background-repeat: no-repeat;
    border-bottom: 1px dashed lightgray;
}
.introduction.visible {
    animation: backgroundIn 1s ease forwards;
}

.project {
    position: relative;
    display: flex;
    flex-direction: row;
    align-items: top;
    gap: 16px;
    padding: 16px;

    overflow: hidden;

    border-bottom: 1px dashed lightgray;
}
.project-background {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    filter: blur(5px);

    transform: translate(0, -50%);

    transition: transform 0.5s ease;

    z-index: -1;
}
.project-background.visible {
    animation: growIn 1s ease forwards;
}


.project-icon {
    width: 250px;
    border-radius: 10%;

    transition: transform 0.5s ease, filter 0.5s ease;
}
.project-icon.visible {
    animation: slideIn .5s ease forwards;
}
.project-icon:hover {
    filter: drop-shadow(0 0 15px var(--primary-color));
}

.project-info {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex-grow: 1;
    background-color: rgba(0,0,0,0.25);
}
.project-info.visible {
    animation: scaleIn .5s ease forwards;
}
.project-name {
    font-size: 1.5em;
    filter: drop-shadow(0px 0px 5px black);
    width: 100%;
}
.project-description {
    font-size: 18px;
    align-content: center;
    text-align: left;
    z-index: 1;
    filter: drop-shadow(0px 0px 5px black);
}