:root {
    --black: black;
    --charcoal: #0f1010;
    --dark-grey: #333;
    --mid-grey: #666;
    --light-grey: #999;
    --white: white;
    --accent-colour: #808fff;
    --headline-font: parabolica, sans-serif;
    --body-font: parabolica, sans-serif;
    --horizontal-shift: 6px;
    --section-padding-top: 60px;
}

* {
    margin: 0;
    padding: 0;
    transition: 0.5s;
}

html {
    scroll-behavior: smooth;
}

body {
    font-family: var(--body-font);
    font-weight: 400;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--headline-font);
    font-weight: 700;
}

h1 {
    font-size: calc(40px + (72 - 40) * (100vw - 400px) / (1800 - 400));
    margin-bottom: 3rem;
}

h2 {
    font-size: calc(32px + (48 - 32) * (100vw - 400px) / (1800 - 400));
    margin-bottom: 1.5rem;
}

h3 {
    font-size: calc(20px + (28 - 20) * (100vw - 400px) / (1800 - 400));
}

p {
    font-size: calc(16px + (20 - 16) * (100vw - 400px) / (1800 - 400));
    font-weight: 400;
    margin-bottom: 2rem;
}

li {
    font-size: calc(16px + (20 - 16) * (100vw - 400px) / (1800 - 400));
}

a {
    font-size: calc(16px + (20 - 16) * (100vw - 400px) / (1800 - 400));
    text-decoration: none;
    color: var(--black);
}

a:visited {
    color: var(--black);
}

.btn {
    background-color: var(--black);
    border: none;
    color: var(--white);
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: calc(16px + (20 - 16) * (100vw - 400px) / (1800 - 400));
    width: fit-content;
}

.btn:hover {
    background-color: var(--accent-colour);
    color: var(--black);
}

.btn:visited {
    color: var(--white);
}

.btn:hover:visited {
    color: var(--black);
}

img {
    width: 100%;
}

header {
    position: fixed;
    width: 100%;
    z-index: 10;
}

nav {
    overflow: hidden;
    background: var(--white);
    height: 80px;
}

.navexpanded {
    height: 190px;
}


nav ul {
    display: flex;
    list-style-type: none;
    flex-wrap: wrap;
    text-align: center;
}

nav ul>li {
    margin-top: 14px;
    flex-basis: 100%;
}

nav ul li a {
    text-decoration: none;
    color: var(--black);
    padding: 10px 20px;
    display: inline-block;
}

nav ul li a:hover {
    text-decoration: none;
    color: var(--accent-colour) !important;
    background: transparent !important;
}

#logo {
    margin-right: auto;
    flex-basis: 50%;
    text-align: left;
}

#logo a {
    font-weight: bold;
    padding-left: 20px;
}

#logo img {
    height: 3rem;
    width: auto;
}

#menu-icon,
#close-icon {
    margin-left: auto;
    flex-basis: 50%;
    text-align: right;
    font-size: 40px;
    margin-top: 0px;
}

#close-icon {
    display: none;
}

.navexpanded #close-icon {
    display: inline-block;
}

.navexpanded #menu-icon {
    display: none;
}

#logo a:hover,
#menu-icon a:hover,
#close-icon a:hover {
    background: none;
}

section {
    display: grid;
    min-height: calc(100vh - var(--section-padding-top));
    padding-top: var(--section-padding-top);
    grid-template-columns: 5% 1fr 5%;
    align-content: start;
}

section>* {
    grid-column: 2;
}

.two-columns {
    display: grid;
    grid-template-columns: 1fr;
    grid-gap: 2rem;
    margin-bottom: 2rem;
}

.two-columns-fixed {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-gap: 2rem;
    margin-bottom: 2rem;
}

.three-columns {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-gap: 2rem;
    margin-bottom: 2rem;
}

.featured {
    grid-column: 1/-1;
}

.auto-height {
    min-height: auto;
}

#introduction {
    align-content: center;

}

@keyframes blurFadeIn {
    from {
        opacity: 0;
        filter: blur(12px);
        transform: translateY(15px);
    }

    to {
        opacity: 1;
        filter: blur(0);
        transform: translateY(0);
    }
}

#introduction h1 {
    animation: blurFadeIn 2.0s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

#introduction .btn {
    opacity: 0;
    animation: blurFadeIn 2.0s cubic-bezier(0.25, 1, 0.5, 1) forwards;
    animation-delay: 0.3s;
}

#portfolio a:hover h3,
#portfolio a:hover p {
    padding-left: var(--horizontal-shift);
}

#about ul {
    list-style: none;
}

#about .intro-paragraph {
    font-size: calc(20px + (28 - 20) * (100vw - 400px) / (1800 - 400));
    grid-column: 1/-1;
}

#about h2 {
    padding-top: 3rem;
}

#about {
    min-height: auto;
    padding-bottom: 2rem;
}

#skills {
    min-height: auto;
    padding-bottom: 2rem;
}

#contact {
    min-height: auto;
}

#contact ul {
    display: flex;
    list-style-type: none;
    margin-bottom: 1rem;
    margin-top: 3rem;
}

#contact p:last-of-type {
    font-size: 16px;
}

#contact ul li a {
    text-decoration: none;
    color: var(--accent-colour);
    margin: 0 20px 0 0;
    font-size: 32px;
}

#contact ul li a:hover {
    text-decoration: none;
    color: var(--mid-grey);
}

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: -1px;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.inverted-colours {
    background: var(--charcoal);
    color: var(--white);
}

.inverted-colours a,
.inverted-colours a:visited {
    color: var(--white);
}

.inverted-colours .btn,
.inverted-colours .btn:visited {
    color: var(--black);
    background: var(--white);
}

.inverted-colours .btn:hover,
.inverted-colours .btn:hover:visited {
    color: var(--black);
    background: var(--accent-colour);
}

/* Small devices (i.e. tablets in portrait) */
@media (min-width: 600px) {
    nav {
        height: 80px;
    }

    .navexpanded {
        height: 80px;
    }

    .navexpanded #close-icon {
        display: none;
    }

    nav ul {
        flex-direction: row;
        align-items: center;
        height: 100%;
    }

    nav ul>li {
        flex-basis: auto;
        margin-top: 0;
    }

    #logo {
        flex-basis: auto;
    }

    #menu-icon {
        display: none;
    }

    section {
        grid-template-columns: 15% 1fr 15%;
    }

    .two-columns {

        grid-template-columns: 1fr 1fr;

    }

    .three-columns {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

/* Medium devices (i.e. tablets in landscape) */

@media (min-width: 900px) {}

/* Large devices (i.e. desktop) */

@media (min-width: 1200px) {}

/* X-Large devices (i.e. big desktop) */

@media (min-width: 1800px) {}