/* ############################ */
/* ########## GLOBAL ########## */
/* ############################ */

:root {
    --bright-text: #f3f1e9;
    --bright-bg: #f3f1e9;
    --dark-text: #000;
    --dark-bg: #000;
    --dark-grey: #2e2e2e;
    --light-grey: #5f5f5f;
}

*, *::before, *::after {
    -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */
    -moz-box-sizing: border-box;    /* Firefox, other Gecko */
    box-sizing: border-box;         /* Opera/IE 8+ */
    margin: 0;
    padding: 0;
    scroll-behavior: smooth;
}

p, a, h1, h2, h3, span, form {
    font-family: 'Lato', 'Raleway', 'Ubuntu', 'Sans-serif';
    color: var(--bright-text);
    white-space: nowrap;
    
    margin: 0;
    padding: 0;
}

h1 {
    font-size: 3em;
    font-weight: 300;
    line-height: 0.9em;
    letter-spacing: 0.15em;
}

h2 {
    font-size: 2em;
    font-weight: 300;
    line-height: 0.9em;
    letter-spacing: 0.2em;
}

h3 {
    font-size: 1.5em;
    font-weight: 300;
    letter-spacing: 0.1em;
    color: var(--dark-text);
}

h4 {
    font-family: 'Raleway', 'Ubuntu', 'Sans-serif';
    font-size: 1.5em;
    font-weight: 500;
    line-height: 0.9em;
    letter-spacing: 0.15em;
}

.site-font {
    font-family: 'Lato';
}

html {
    height: 100%;

    /* Prevents URL bar disappearing from mobile */
    overflow: hidden;
}

body {
    background-color: var(--dark-bg);
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
    background-attachment: fixed;

    width: 100vw;
    height: 100%;

    overflow: hidden;
}

a {
    text-decoration: none;
    color: #DDDDDD;
}

button, input[type="submit"], input[type="reset"] {
	background: none;
    box-shadow: none;

	border: none;
	padding: 0;

	font: inherit;
	cursor: pointer;
	outline: none; 
}

.pack-h {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    vertical-align: middle;
}

.dividing-item {
    background: var(--dark-text);

    height: 2px;
    width: 100%;
}

.expanding-vertical-space {
    height: 0;
    width: 100%;
}

#median-h, #median-v {
    background-color: red;

    position: absolute;

    z-index: 2;
}

#median-h {
    height: 2px;
    width: 100%;

    top: 50%;
}

#median-v {
    height: 100%;
    width: 2px;

    left: 50%;
}



/* ############################## */
/* ########## SPECIFIC ########## */
/* ############################## */

/* ########## SECTIONS ########## */

/* page container */

.frame {
    height: 100%;
    width: 100%;

    scroll-snap-type: y mandatory;
    scroll-behavior: smooth;
    overflow-y: scroll;
    overflow-x: hidden;

    transition: 0.5s ease-in-out;
}

section {
    position: relative;

    display: flex;
    flex-direction: column;
    align-items: center;

    width: 100%;
    height: 100%;

    scroll-snap-align: start;
    scroll-snap-stop: always;
}


/* hero section */

#hero-section {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;

    text-align: center;

    height: 100%;
    width: 100%;

    overflow: hidden;
}

#hero-title-container {
    position: relative;

    -webkit-user-select: none; /* Safari */
    -ms-user-select: none; /* IE 10 and IE 11 */
    user-select: none; /* Standard syntax */
    
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;

    min-height: 75%;
    width: 100%;

    border-bottom: 3px solid transparent;
    border-right: 4px solid transparent;

    animation: show-border 0.4s 0.4s forwards linear;
}

#hero-title-wrapper {
    max-height: 100%;

    filter: blur(0.5rem);
    -webkit-filter: blur(0.5rem);

    animation: unblur-title 0.5s forwards linear;
}

.main-title {
    transition: all 0.3s linear;
}

.hero-title {
    margin: 10px 0;
}

button .hero-title:hover {
    color: #fff;
    /* text-shadow: 0px 5px 15px #fff; */
    filter: drop-shadow(0 0 0.5rem var(--bright-text));
    font-weight: 300;
}

#expanding-desc-container {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    vertical-align: middle;

    height: 0px;

    transform: scaleY(0);

    overflow: hidden;

    animation: show-brackets 0.8s 0.5s forwards ease;
}

.bracket p {
    font-size: 8em;
    font-weight: 100;
    line-height: 0.9em;

    transform: translateY(-5%);
}

#expanding-desc {
    display: flex;
    flex-direction: column;
    justify-content: space-around;

    width: 0;

    overflow: hidden;

    animation: expand-brackets 0.7s 1.45s forwards linear;
}

#expanding-desc button {
    padding: 0;
    margin: -5px 0;
}

.hero-title-div {
    position: relative;

    overflow: hidden;
}

#about-button {
    opacity: 0;

    height: auto;
    width: auto;

    padding: 0.7em 1.5em;

    border: 2px solid var(--bright-bg);
    border-radius: 20px;
    
    animation: fade-in 1s forwards ease;
    transition: all 0.3s ease;
}

#about-button span {
    letter-spacing: 0.3em;
}

#about-desc-section {
    position: absolute;

    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;

    background-color: var(--dark-bg);
    opacity: 0;

    left: 0;

    height: 100%;
    width: 100%;

    padding-bottom: 1em;

    transform: translateX(-100%);
    transition: transform 0.3s ease-out, opacity 1s ease-in;
}

#about-desc-section.about-expanded {
    opacity: 1;

    transform: translateX(0);
    transition: transform 0.3s ease-out;
}

#about-title {
    background-color: var(--bright-bg);
    color: var(--dark-text);
    font-size: 1.5em;

    width: 100%;

    padding: 0.2em;

    border-top: 3px solid var(--dark-text);
    border-bottom: 3px solid var(--dark-text);
}

#about-desc {
    font-size: 1.2em;
    font-weight: 300;
    white-space: normal;
    word-wrap: break-word;
    text-align: left;
    -webkit-user-select: text; /* Safari */
    user-select: text; /* Standard syntax */

    flex-grow: 1;

    width: 100%;

    padding: 2em 1em 2em;

    border-top: 3px solid var(--bright-text);
}

#about-exit-cont {
    display: flex;

    margin: 1em auto;
}

#about-exit {
    display: flex;
    justify-content: center;
}

#about-exit img {
    background-color: var(--bright-bg);

    max-height: 40px;
    max-width: 40px;
    aspect-ratio: 1;

    border: 2px solid var(--bright-text);
    border-radius: 50%;

    transition: all 0.3s ease;
}

#about-exit img:hover {
    border: 2px solid var(--dark-text);
}


/* SIDE PANEL */

.hero-side-panel {
    background-color: var(--bright-bg);

    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    vertical-align: middle;

    flex-grow: 0;

    height: 0;
    width: 100%;

    padding: 0 30px;

    border-top: 0;
    border-left: 0;

    animation: grow-panel 0.8s 0.5s forwards ease-out;
}

.button-rack {
    background: var(--bright-bg);

    display: flex;
    flex-direction: row;
    justify-content: space-around;
    align-items: center;
    vertical-align: middle;

    height: auto;
    width: 100%;

    max-height: 50px;
    max-width: auto;
}

.hero-panel-button {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: end;
    align-items: center;

    max-height: 0;

    margin: 0 5px;

    opacity: 0;

    border-radius: 50%;

    animation: show-button 1.4s forwards ease;
    transition: all 0.4s ease;
}

.hero-panel-button img {
    height: 100%;
    width: 100%;
    max-height: 50px;
    max-width: 50px;

    aspect-ratio: 1;
}

#button-4-pop-up {
    position: absolute;
    display: block;

    background-color: var(--dark-bg);

    text-align: center;

    bottom: -60%;

    padding: 0.2em 0.5em;

    border-radius: 10px;

    opacity: 0;
    
    z-index: 1;

    transition: opacity 0.2s linear;
}

.hero-logo-cont {
    background-color: var(--dark-bg);

    display: flex;
    justify-content: center;
    align-items: center;
    vertical-align: middle;
    
    aspect-ratio: 1;

    border-radius: 50%;
}

.hero-logo {
    color: var(--bright-text);
    font-weight: 300;

    -webkit-user-select: none; /* Safari */
    -ms-user-select: none; /* IE 10 and IE 11 */
    user-select: none; /* Standard syntax */
}

.scroll-down-button {
    display: flex;
    justify-content: center;
    align-items: center;
    vertical-align: middle;

    max-height: 80px;
    max-width: 80px;
    aspect-ratio: 1;

    padding: 0.5em;

    border-radius: 50%;

    overflow: hidden;

    transition: all 0.5s ease;
}

.scroll-icon {
    height: 3em;

    margin: -0.6em;
}

#hero-scroll-down {
    opacity: 0;
    
    animation: animate-scroll 1.5s 2.3s forwards linear;
}


/* gallery */

.category-header, .category-footer {
    background-color: var(--bright-bg);
    
    display: flex;
    flex-direction: row;
    align-items: center;

    width: 100%;

    border-top: 4px solid var(--dark-bg);
}

.category-header {
    justify-content: center;

    padding: 0.4em;

    border-bottom: 4px solid var(--dark-bg);
}

.gallery-frame {
    position: relative;

    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    flex-grow: 1;

    width: 100%;

    overflow: hidden;

    border-top: 4px solid var(--bright-bg);
    border-bottom: 4px solid var(--bright-bg);
}

.side-scroll {
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;

    bottom: 1em;

    aspect-ratio: 1 !important;

    padding: 0.5em;

    border-radius: 50%;

    z-index: 1;
}

.left-scroll {
    left: 1em;
}

.right-scroll {
    right: 1em;
}

.side-scroll img {
    height: 30px;
    width: 30px;
}

.gallery {
    position: relative;
    display: flex;
    align-items: center;

    width: 100%;
    height: 100%;

    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    overflow-x: scroll;
    overflow-y: hidden;
}

.category-footer {
    justify-content: center;
}

.category-footer * {
    color: var(--dark-text);
}

.scroll-to-section {
    height: 100%;
    
    padding: 0 1em;

    border-left: 1px solid var(--dark-bg);
    border-right: 1px solid var(--dark-bg);
}

.category-selected {
    background-color: var(--dark-bg);
}

.category-selected span {
    color: var(--bright-text);
}


/* card */

.card-container {
    position: relative;
    flex-shrink: 0;

    width: 100%;
    height: 100%;

    filter: brightness(1) blur(0);
    -webkit-filter: brightness(1) blur(0);

    border-radius: 1.5em;
    
    transition: all 250ms ease;
    transform-origin: left;
    perspective: 1000px;

    scroll-snap-align: start;
    scroll-snap-stop: always;
}

.card {
    position: relative;

    background-color: var(--bright-bg);

    width: 100%;
    height: 100%;

    border: 2px solid var(--dark-bg);
    border-radius: inherit;

    transition: transform 1s ease;
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
}

.card * {
    font-family: 'Raleway', 'Ubuntu', 'Sans-serif';
    color: var(--dark-text);
}

.flipped {
    transform: rotateY(180deg);
}

.card-front, .card-back {
    position: absolute;

    display: flex;
    flex-direction: column;
    align-items: center;

    height: 100%;
    width: 100%;

    border-radius: inherit;

    overflow-y: auto;

    backface-visibility: hidden;
}

.card-tags {
    display: flex;
    flex-direction: row;
    justify-content: flex-start;
    flex-wrap: nowrap;

    width: 100%;

    margin-bottom: 0.5em;

    overflow-x: scroll;
}

.card-tags p {
    background-color: var(--dark-grey);

    font-size: 1em;
    color: var(--bright-text);
    font-weight: 500;

    padding: 0.2em 0.5em;
    margin: 0.5em 0.3em 0 0;

    border-radius: 10px;
}


/* card-front specific */

.card-cover {
    width: 95%;

    margin-top: 0.5em;

    border: 2px solid var(--dark-bg);
    border-radius: 1.5em;
}

.card-content {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    flex-grow: 1;

    word-break: break-word;

    width: 100%;
    max-width: 100%;

    padding: 0 1.2em 1em;

    border-bottom-left-radius: inherit;
    border-bottom-right-radius: inherit;

    transform-origin: left;
    transition: transform 0.5s ease;
}

.card-title {
    position: relative;

    width: max-content;
    max-width: 100%;

    margin: 0.6em 0.2em 10%;
}

.underlined-title::after {
    background: var(--dark-text);

    content: "";
    position: absolute;

    height: 2px;
    width: 110%;

    left: -0.2em;
    bottom: -0.6em;

    transform-origin: left;
    transition: transform 500ms ease;

    overflow: hidden;
}

.card-desc-container {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
    flex-grow: 1;
}

.card-short-desc {
    white-space: normal;

    padding-left: 0.2em;
}

.flip {
    background-color: var(--dark-grey);

    align-self: center;

    width: fit-content;

    padding: 0.4em 0.8em;
    margin-top: 1em;

    border: 2px solid var(--dark-text);
    border-radius: 20px;

    transition: all 0.1s linear;
}

.flip span {
    color: var(--bright-text);
    font-weight: 500;
}


/* card-back specific */

.card-back {
    padding: 1em 1em;

    overflow-y: scroll; 

    transform: rotateY(180deg);
}

.unflip-button {
    position: absolute;

    top: 0.8em;
    right: 0.8em;
}

.unflip-button img {
    height: 40px;
    width: 40px;
}

.card-back .card-title {
    margin-bottom: 5%;
}

.card-long-desc {
    position: relative;

    white-space: normal;

    flex-grow: 1;

    width: 100%;

    margin: 1em 0;

    overflow-y: scroll;
}

.info-banner {
    display: flex;
    flex-direction: column;
    justify-content: space-between;

    width: 100%;
}

.card-back .tag {
    margin-top: 0.5em;
}

.card-links {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;

    margin: 1em 0;
}

.card-link img {
    height: 2em;
    aspect-ratio: 1 !important;
}

.proj-status {
    display: flex;
    flex-direction: column;

    text-align: right;

    width: fit-content;
}


/* CONTACTS SECTION */

#contacts {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    align-items: center;

    height: 100%;
    width: 100%;

    border-top: 4px solid var(--bright-bg);
    border-bottom: 4px solid var(--bright-bg);

    overflow: hidden;
}

#contacts h2 {
    color: var(--dark-text);
    font-weight: 300;
}

.contact-link-container {
    background: var(--bright-bg);

    display: flex;
    flex-direction: column;
    justify-content: space-evenly;
    align-items: center;
    gap: 1em;
    flex-grow: 1;

    width: 100%;

    padding: 1em 0;

    border-top: 4px solid var(--dark-bg);
}

#contact-links {
    display: flex;
    flex-direction: row;
    justify-content: space-evenly;
    align-items: center;

    width: 100%;

    overflow: hidden;
}

#contact-links * {
    max-height: 50px;
}

.form-container {
    background: var(--bright-bg);

    display: flex;
    flex-direction: column;
    justify-content: space-evenly;
    align-items: center;
    gap: 1em;
    flex-grow: 2;

    width: 100%;

    padding: 0.5em 1em 1em;

    border-top: 4px solid var(--dark-bg);
    border-bottom: 4px solid var(--dark-bg);
}

#contact-form {
    display: flex;
    flex-direction: column;
    justify-content: space-evenly;
    align-items: center;
    gap: 1.5em;

    width: 100%;

    overflow: hidden;
}

#contact-form  * {
    color: var(--dark-text);
    text-align: center;
}

#contact-form label {
    display: flex;
    flex-direction: column;
    gap: 0.5em;

    width: 100%;
}

#contact-form  input, textarea {
    background: var(--bright-bg);
    text-align: left;

    width: 100%;

    padding: 0.5em;

    border: 2px solid var(--dark-bg);
    border-radius: 1em;
}

#contact-form textarea {
    text-align: left;

    max-height: 5em;

    overflow-y: scroll;
}

#contact-form select {
    background-color: var(--bright-bg);
    /* font-size: 1.1em; */

    height: 2em;

    border: 2px solid var(--dark-bg);
    border-radius: 1em;
}

#contact-form option {
    background-color: var(--bright-bg);
}

#contact-form-button {
    padding: 0.2em 1em;

    border: 2px solid var(--dark-bg);
    border-radius: 1.5em;

    transition: 0.1s all linear;
}

#contact-form-button:hover {
    background-color: var(--dark-bg);
}

#contact-form-button:hover * {
    color: var(--bright-text);
}

#contacts-home-button {
    display: flex;
    justify-content: center;
    align-items: center;
    vertical-align: middle;
    
    aspect-ratio: 1;

    padding: 0.5em;

    border-radius: 50%;

    overflow: hidden;

    transition: all 0.5s ease;
}



/* ############################## */
/* ########### MEDIA ############ */
/* ############################## */

/* ########## PHONES ########## */
@media only screen and (min-width: 0px) {

    /* generic */
    .hidden-mobile {
        display: none;
    }

    .hidden-laptop {
        display: block;
    }
                    

    /* hero-section */
    #hero-button-1 {animation-delay: 0.7s;}
    #hero-button-2 {animation-delay: 0.9s;}
    #hero-button-3 {animation-delay: 1.1s;}
    #hero-button-4 {animation-delay: 1.3s;}

    .hero-logo-big-cont {
        display: none;
    }

    .hero-logo-small-cont {
        height: 4em;

        opacity: 0;

        border: 2px solid var(--bright-bg);

        animation: fade-in 1s 1.4s forwards linear;
    }

    #hero-logo-small {
        font-size: 3em;
    }

    #about-button {
        animation-delay: 1.4s;
    }


    /* animations */

    /* Remove starting blur effect from the Hero title */
    @keyframes unblur-title {
        100% {
            -webkit-filter: blur(0);
        }
    }

    /* Handles the showing of the hero-title section border */
    @keyframes show-border {
        100% {
            border-bottom: 3px solid var(--bright-bg);
        }
    }

    /* Handles the height-gain of the square brackets */
    @keyframes show-brackets {
        100% {
            height: 9em;

            transform: scaleY(1);
        }
    }

    /* Handles the width-gain of the square brackets */
    @keyframes expand-brackets {
        0% {
            width: 0;
        }
        100% {
            width: 65%;
        }
    }

    /* Make the Hero-side-panel gorw */
    @keyframes grow-panel {
        100% {
            flex-grow: 1;

            padding: 30px 30px 0;

            border-top: 3px solid var(--dark-bg);
        }
    }
}

/* ########## NARROW PHONES ########## */
@media only screen and (max-width: 319px) {

    /* generic */
    h1, h2 {
        letter-spacing: normal;
    }

    h4 {
        font-size: 1.3em;
    }


    /* card front */
    .card-title {
        margin: 0.4em 0.2em 0.8em;
    }

    .underlined-title::after {
        bottom: -0.4em;
    }

    .card-short-desc {
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;  
        overflow: hidden;
    }

    
    /* animations */

    /* Handles the height-gain of the square brackets */
    @keyframes show-brackets {
        100% {
            height: 8em;

            transform: scaleY(1);
        }
    }
}

/* ########## LARGE PHONES ########## */
@media only screen and (min-width: 600px) {

    /* generic */
    h1 {
        font-size: 2.5em;
    }
    
    h2 {
        font-size: 2em;
    }

    h3 {
        font-size: 2em;
        letter-spacing: 0.15em;
    }


    /* page structure */
    .category-header {
        padding: 0.6em;
    }


    /* hero section */
    .bracket p {
        font-size: 8em;
    }

    .hero-logo-small-cont {
        height: 6em;
    }

    #hero-logo-small {
        font-size: 4.5em;
    }

    
    /* animations */

    /* Handles the height-gain of the square brackets */
    @keyframes show-brackets {
        100% {
            height: 8.5em;

            transform: scaleY(1);
        }
    }
}

/* ########## TABLET ########## */
@media only screen and (min-width: 768px) {

    /* generic */
    h1 {
        font-size: 3.5em;
    }

    h2 {
        font-size: 2.5em;
    }

    .scroll-icon {
        height: 3em;
    
        margin: -0.2em;
    }


    /* hero section */
    .bracket p {
        font-size: 9em;
    }

    .hero-logo-small-cont {
        height: 7em;
    }

    #hero-logo-small {
        font-size: 5em;
    }


    /* animations */

    /* Handles the height-gain of the square brackets */
    @keyframes show-brackets {
        100% {
            height: 9.5em;

            transform: scaleY(1);
        }
    }
    
}

/* ########## LAPTOP ########## */
@media only screen and ((min-width: 1024px) or (orientation: landscape)) {

    /* generic */
    h1 {
        font-size: 3em;
    }
    
    h3 {
        font-size: 2.5em;
        letter-spacing: 0.2em;
    }

    .hidden-mobile {
        display: block;
    }

    .hidden-laptop {
        display: none;
    }

    .centering-item {
        height: 2em;

        opacity: 0;
    }

    .hoverable:hover {
        transform: translate(0, -1rem);
    }


    /* page structure */
    .category-header {
        padding: 0.4em;
        white-space: 1;
    }

    .category-footer {
        height: 4em;
    }


    /* hero section */
    #hero-section {
        flex-direction: row;
    }

    #block-title {
        content: 'BLOCKCHAIN DEVELOPMENT';
    }

    #hero-title-container {
        height: 100%;
        width: 70%;

        border-bottom: 0;

        animation: show-border 0.2s 1.45s forwards linear;
    }

    .bracket p {
        font-size: 9.5em;
    }

    #about-desc {
        font-size: 1.5em;

        padding: 2em 3em 2em;
    }

    .hero-side-panel {
        height: 100%;
        width: 0;

        padding: 30px 0;

        animation: grow-panel 0.75s 1.45s forwards ease-out;
    }

    .hero-panel-button:hover {
        transform: translateY(-20%)
    }

    #hero-button-1 {animation-delay: 1.4s;}
    #hero-button-2 {animation-delay: 1.6s;}
    #hero-button-3 {animation-delay: 1.8s;}
    #hero-button-4 {animation-delay: 2s;}

    .hero-logo-big-cont {
        
        height: 8em;

        opacity: 0;
        display: block;

        border: 4px solid var(--bright-bg);

        -webkit-box-shadow: 0 0 0 4px var(--dark-bg);
        box-shadow: 0 0 0 4px var(--dark-bg);

        animation: fade-in 1s 3s forwards ease;
    }

    #hero-logo-big {
        font-size: 6em;
    }

    .hero-logo-small-cont {
        display: none;
    }
    
    .scroll-down-button:hover {
        animation: scroll-down-button 1s infinite linear;
    }

    .scroll-icon {
        height: 4em;
    }

    #hero-scroll-down {
        animation-delay: 3.4s;
    }

    #about-button {
        border: 1px solid var(--bright-bg);

        animation-delay: 2s;
    }

    #about-button:hover {
        background-color: var(--bright-bg);
    }
    
    #about-button:hover span {
        color: var(--dark-text);
        font-weight: 500;
    }

    #about-desc-section {
        bottom: 0;
    
        height: auto;
        width: 100%;
    
        border-top: 3px solid var(--bright-text);
    
        transform: translateY(100%);
    }

    #about-desc-section.about-expanded {
        transform: translateY(0);
    }


    /* gallery */
    .side-scroll {
        display: none;
    }

    .gallery {
        padding: 0 5%;
    }


    /* card */
    .card-container {
        width: auto;
        height: 90%;
        aspect-ratio: 0.6 !important;
    }

    .card {
        box-shadow: -1rem 0 3rem #000, 1rem 0 3rem #000;
    }

    .highlighted~.card-container, .selected~.card-container {
        transform: translateX(7rem);
    }
    
    .coverable:not(:first-child) {
        margin-left: -7rem;
    }

    .flipped {
        transform: rotateY(180deg) scale(1.1);
    }

    .underlined-title::after {
        transform: scaleX(0);
    }

    .card:hover .underlined-title::after {
        transform: scaleX(1);
    }

    /* card front */
    .card-front {
        overflow: hidden;
    }

    .card-short-desc {
        text-overflow: ellipsis;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;  
        overflow: hidden;
    }

    .flip:hover {
        background-color: var(--dark-bg);
    }


    /* contacts section */
    #contacts {
        flex-direction: row;
    }

    .contact-link-container {
        flex-grow: 0;

        width: 50%;

        padding: 2em 0;
        margin: 2em;

        border: 4px solid var(--dark-bg);
        border-radius: 2em;

        -webkit-box-shadow: 0 0 0 4px var(--bright-bg);
        box-shadow: 0 0 0 4px var(--bright-bg);

        transition: all 0.8s linear;
    }

    #contact-links {
        padding: 2em 0;

        transition: all 0.8s ease;
    }

    /* .contact-link-container:hover {
        max-height: 100%;
    }

    .contact-link-container:hover #contact-links {
        max-height: 100%;

        padding: 2em 0;

        transition: all 0.1s ease;
    } */

    .form-container {
        flex-grow: 0;

        width: 50%;

        padding: 2em;
        margin: 2em;

        border: 4px solid var(--dark-bg);
        border-radius: 2em;

        -webkit-box-shadow: 0 0 0 4px var(--bright-bg);
        box-shadow: 0 0 0 4px var(--bright-bg);

        transition: all 0.5s ease-in-out;
    }

    #contact-form {
        padding-top: 2em;

        transition: all 0.7s ease-in-out;
    }

    /* .form-container:hover, .form-container:focus-within {
        max-height: 85%;
    }

    .form-container:hover #contact-form, .form-container:focus-within #contact-form {
        max-height: 100%;
    } */


    /* animations */

    /* Remove starting blur effect from the Hero title */
    @keyframes unblur-title {
        100% {
            -webkit-filter: blur(0);
        }
    }

    /* Handles the height-gain of the square brackets */
    @keyframes show-brackets {
        100% {
            height: 9.5em;

            transform: scaleY(1);
        }
    }

    /* Handles the width-gain of the square brackets */
    @keyframes expand-brackets {
        0% {
            width: 0;
        }
        100% {
            width: 72%;
        }
    }

    /* Handles the showing of the hero-title section border */
    @keyframes show-border {
        100% {
            border-right: 4px solid var(--bright-bg);
        }
    }

    /* Make the Hero-side-panel gorw */
    @keyframes grow-panel {
        100% {
            flex-grow: 1;

            padding: 30px 30px 0;

            border-left: 4px solid var(--dark-bg);
        }
    }

    /* Makes the scroll-down button float downwards */
    @keyframes scroll-down-button {
        50% {
            transform: translateY(10px);
        }
    }
}

/* ########## LARGE LAPTOP ########## */
@media only screen and (min-width: 1440px) {

    /* generic */
    h1 {
        font-size: 4em;
        font-weight: 100;
    }

    h2 {
        font-size: 3em;
        font-weight: 100;
    }


    /* hero section */
    .bracket p {
        font-size: 11em;
    }

    .hero-logo-big-cont {
        height: 10em;
    }

    #hero-logo-big {
        font-size: 7.5em;
    }


    /* cards */
    .card-container {
        height: 85%;
    }


    /* animations */

    /* Handles the height-gain of the square brackets */
    @keyframes show-brackets {
        100% {
            height: 11em;

            transform: scaleY(1);
        }
    }
}


/* ########## SHORT LAPTOPS ########## */
@media only screen and (min-width: 1024px) and (max-height: 799px) {

    /* generic */
    h4 {
        font-size: 1.2em;
    }

    
    /* cards */
    .card-container p {
        font-size: 0.8em;
    }


    /* card front */
    .card-title {
        margin: 0.4em 0.2em 1em;
    }

    .flip span {
        font-size: 0.9em;
    }

    .card-short-desc {
        -webkit-line-clamp: 2;
    }
}


/* ########## NETBOOKS ########## */
@media only screen and (min-width: 1024px) and (max-height: 699px) {

    /* cards */
    .card-container {
        border-radius: 1em;
    }


    /* card front */
    .card-cover {
        border-radius: 1em;
    }

    .card-content {
        padding-bottom: 0.4em;
    }

    .card-title {
        margin: 0.3em 0.2em 0.8em;
    }

    .underlined-title::after {
        bottom: -0.4em;
    }

    .card-short-desc {
        -webkit-line-clamp: 1;
    }
}


/* ########## LANDSCAPE PHONES ########## */
@media only screen and (orientation: landscape) and (max-device-width: 1023px) {

    /* generic */
    h1 {
        font-size: 2em;
    }
    
    h2 {
        font-size: 1.5em;
    }

    h3 {
        font-size: 1.5em;
    }

    h4 {
        font-size: 1.3em;
    }

    .hidden-mobile {
        display: block;
    }

    .hidden-laptop {
        display: block;
    }

    .hoverable:hover {
        transform: translate(0);
    }

    .hidden-landscape {
        display: none;
    }
    

    /* hero-section */
    .bracket p {
        font-size: 7.5em;
    }

    .hero-panel-button:hover {
        transform: translateY(0);
    }

    #button-4-pop-up {
        font-size: 0.8em;
        
        bottom: -70%;
    }

    .hero-logo-big-cont {
        height: 5em;
    }

    #hero-logo-big {
        font-size: 3.5em;
    }


    /* gallery */
    .gallery-frame {
        border: 0;
    }

    .side-scroll {
        display: block;
    }

    .left-scroll {
        left: auto;
        right: 10%;
    }

    .gallery {
        padding: 0;
    }

    .category-header {
        height: 2.5em;
    }

    .scroll-down-button:hover {
        animation: none;
    }

    .scroll-icon {
        height: 3em;

        margin: -0.8em;
    }

    .category-footer {
        height: 2.5em;
    }


    /* cards */
    .card-container {
        height: 100%;
        width: 100%;

        border-radius: 1em;
    }

    .card {
        box-shadow: none;
    }

    .highlighted~.card-container, .selected~.card-container {
        transform: translateX(0);
    }
    
    .coverable:not(:first-child) {
        margin-left: 0;
    }

    .flipped {
        transform: rotateY(180deg);
    }


    /* card front */
    .card-front {
        flex-direction: row;
    }

    .card-cover {
        height: 95%;
        width: auto;

        margin: 0 0.5em;

        border-radius: 1em;
    }

    .card-content {
        height: 90%;
        padding: 0 1em;
    }

    .card-title {
        margin-bottom: 1em;
    }

    .underlined-title::after {
        transform: scaleX(1);
    }


    /* contacts section */
    #contacts {
        flex-direction: row;
    }

    .contact-link-container {
        max-height: 100%;
    }

    #contact-links {
        width: 90%;
        max-height: 100%;

        border-radius: 1.5em;
    }

    .form-container {
        height: 100%;
        max-height: 100%;

        padding: 0 1em;
        margin: 0;

        border-right: 0;
        border-top: 3px solid var(--dark-bg);
        border-bottom: 3px solid var(--dark-bg);
        border-radius: 0;
    }

    #contact-form {
        gap: 0.5em;

        height: 100%;
        width: 100%;
        max-height: 100%;
    }

    .form-container:hover {
        max-height: 100%;
    }

    .form-container:hover #contact-form {
        max-height: 100%;
    }


    /* animations */

     /* Handles the height-gain of the square brackets */
     @keyframes show-brackets {
        100% {
            height: 7.5em;

            transform: scaleY(1);
        }
    }

    /* Make the Hero-side-panel gorw */
    @keyframes grow-panel {
        100% {
            flex-grow: 1;

            padding: 20px 10px 0;

            border-left: 4px solid var(--dark-bg);
        }
    }
}



/* ############################## */
/* ###### TRANSFORMATIONS ####### */
/* ############################## */

.selected {
    overflow-y: visible;

    animation: step-forward 500ms;
    animation-fill-mode: forwards;
}

.unselected {
    animation: step-backwards 500ms;
    animation-fill-mode: forwards;
}

.shadowed {
    filter: brightness(60%) blur(0.2rem);
    -webkit-filter: brightness(60%) blur(0.2rem);
    z-index: -1;

    /* lets the image stay in foreground even with the negative z-index */
    pointer-events: none;
}

.collapsed {
    height: 0;
    width: 0;
}

.no-padding {
    justify-content: center;
    align-items: center;
    vertical-align: middle;

    padding: 0;
}

.hidden {
    display: none;
}

.transparent {
    visibility: hidden;
}



/* ########## GENERIC ANIMATIONS ########## */

/* Make the "ff" logo grow and appear */
@keyframes fade-in {
    100% {
        opacity: 1;
    }
}

/* Makes each button appear in sequence */
@keyframes show-button {50% {max-height: 50px; opacity: 0;} 100% {max-height: 50px; opacity: 1;}}

/* Makes the hero scroll-down button move */
@keyframes animate-scroll {
    50% {
        opacity: 1;
        transform: translateY(0);
    }
    70% {
        opacity: 0;
        transform: translateY(100%);
    }
    71% {
        opacity: 0;
        transform: translateY(-100%);
    }
    100% {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Handle the coming-forward of the card when flipped */
@keyframes step-forward {
    50% {
        transform: translate(-3rem, 0);

        z-index: 0;
    }
    100% {
        transform: translate(0, 0);

        z-index: 1;
    }
}

/* Handle the going-backwards of the card when unflipped */
@keyframes step-backwards {
    50% {
        transform: translate(-3rem, 0);

        z-index: 1;
    }
    100% {
        transform: translate(0, 0);

        z-index: 0;
    }
}



/* ########## SCROLLBAR ########## */

/* width */
::-webkit-scrollbar {
    display: none;
    width: 10px;
    height: 10px;
}

/* button */
::-webkit-scrollbar-button {
    display : none;
}
  
  /* Track */
::-webkit-scrollbar-track {
    /* background-color: var(--light-grey); */

    border-radius: 10px;
}

::-webkit-scrollbar-track-piece {
    border-radius: 10px;
}
  
  /* Handle */
::-webkit-scrollbar-thumb {
    /* background-color: var(--dark-bg); */

    border-radius: 10px;
}