@import url('https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Source+Sans+Pro:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Quattrocento+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');

:root {

    --column-width: calc(100vw / 12) ;
    --main-link-color: black;
    --hover-link-color: orange;
    --gutter-width: 10px;

    --bg-color: #ffffff;

    --column-width-2: calc(var(--column-width) * 2);
    --column-width-3: calc(var(--column-width) * 3);
    --column-width-4: calc(var(--column-width) * 4);
    --column-width-5: calc(var(--column-width) * 5);
    --column-width-6: calc(var(--column-width) * 6);
    --column-width-7: calc(var(--column-width) * 7);
    --column-width-8: calc(var(--column-width) * 8);
    --column-width-9: calc(var(--column-width) * 9);
    --column-width-10: calc(var(--column-width) * 10);
    --column-width-11: calc(var(--column-width) * 11);
    --column-width-12: calc(var(--column-width) * 12);
}

.mobile-hidden      {    display: none; }
.mobile-4           {    width:var(--column-width-4);}
.mobile-5           {    width:var(--column-width-5);}
.mobile-6           {    width:var(--column-width-6);}
.mobile-12          {    width:var(--column-width-12);}

* {
    box-sizing: border-box;
    -webkit-font-smoothing: antialiased;
}

html, body {
    !overflow: hidden;
    !font-family: "IBM Plex Sans", sans-serif;

    background-color: var(--bg-color);
    box-sizing: border-box;
    padding: 0;
    margin: 0;
    font-family: "Quattrocento Sans", sans-serif;
    scroll-behavior: smooth;
    text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.004);
}

p:first-of-type {
    margin-top: 0;
}

main {
    display: grid;
    grid-template-columns: 1fr var(--column-width-11) 1fr;
    grid-template-areas:
            "left menu-mobile right"
            "left content right";
}

a {
    text-decoration: none;
    color: var(--main-link-color);
    padding-bottom: 1px;
    border-bottom:1px solid black;
}

a:hover {
    border-bottom: 2px solid black;
}

/**
    Columns
 */
#left {
    grid-area: left;
}

#right {
    grid-area: right;
}

#menu-mobile {
    grid-area: menu-mobile;
    width:100%;
    height:60px;
    color:white;
    display:flex;
}

#menu-mobile .hamburger {
    width:50px;
    height:70%;
    padding:10px;
    display:flex;
    flex-direction: column;
    justify-content: space-between;
    align-self: center;
    position: relative;
}

.menu-items {

    background-color:black;
    color:white;
    position: fixed;
    left:0;
    top:60px;
    width:100vw;
    height:100vh;
    z-index:10;

    transition: transform 0.2s ease-in;
    transform:translate(-150%);
    font-family: "Quattrocento Sans", sans-serif;
    color:white;
}

.menu-items ul {
    margin:0;
    padding:0;
    padding-left:10px;
    padding-top:40px;
    list-style: none;
    width:70%;
    font-size:24px;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.menu-items ul li {
    width:100%;
    padding:20px;
    color:white;
}

.menu-items ul li a {
    color:white;
    padding-bottom:10px;
}

.menu-items ul li a:hover {
    border-bottom:1px solid white !important;
}

.hamburger input[type=checkbox] {
    z-index:5px;
    height:35px;
    width:45px;
    top:0;
    right:0;
    cursor:pointer;
    opacity:0;
    position: absolute;
}

.hamburger input[type=checkbox]:checked ~ .menu-items {
    transform:translate(0%);
}
.hamburger input[type=checkbox]:checked ~ .line-1 {
    display:none;
}
.hamburger input[type=checkbox]:checked ~ .line-2 {
    transform-origin: 0% 0%;
    transform: rotate(40deg);
}

.hamburger input[type=checkbox]:checked ~ .line-3 {
    transform-origin: 0% 100%;
    transform: rotate(-40deg);
}

.hamburger .lines {
    width:100%;
    height:4px;
    border-radius: 10px;
    background-color: #3b3b3b;
    display: block;
    transition: transform 0.1s ease-in;
}

p.logo {
    margin:0;
    padding-top: calc( 1 * var(--gutter-width) + 5px);
    !margin-bottom: calc(1 * var(--gutter-width));
    display:flex;
    flex-grow: 1;
    height:60px;
}

p.logo img {
    max-height:35px;
}

/*
#menu {
    display:none;
    background-color: var(--bg-color);
    overflow:hidden;
    grid-area: menu-mobile;
    position: sticky;
    top:0px;
    width:100%;
    height:60px;
}

#menu a:hover {
    border-bottom:1px solid black;
}
#menu ul {
    font-size: 12px;
    list-style-type: none;
    padding: 0;
    margin: 0;
}

#menu ul li {
    height: 21px;
}*/

#menu {
    display:none;
}

#menu a, #menu-mobile a {
    border:none;
}


/** Used on subpage */
#center {
    margin-top: calc(3 * var(--gutter-width));
    !grid-area: center;
    grid-area: content;
    display: flex;
    align-items: start;
    justify-content: start;
    flex-wrap: wrap;
    overflow: auto;
    height:auto;
    max-width: 100%;

    /*justify-content: start;
    justify-items: start;
    align-items: start;*/
}

#content {
    grid-area: content;
    width:100%;
    display:flex;
    flex-wrap: wrap;
    height: 80vh;
    !padding-bottom:40px;
}

/*#content img {
    max-width:100%;
    !padding-bottom:40px;
}*/

.header-fixed, #banner {
    display:none;
}

.gallery {
    animation: 1.5s ease-out 0s 1 slideInFromRight;
    text-align: center;
}
.gallery img {
    max-width: 100%;
    margin-bottom: 2em;
}

.gallery img:first-child {
    margin-top: 60px;
}

div.header {
    display: flex;
    margin: 0;
    padding: 0;
    min-height:200px;
    flex-wrap:wrap;
}

.abstract {
    animation: 1s ease-out 0s 1 slideInFromLeft;
    align-self: start;
    font-family: "Source Sans Pro", sans-serif;
    font-size: 16px;
    padding-top:20px;
    padding-bottom: 2em;
    border-bottom: 1px solid black;
    line-height: 1.5;
    width: var(--column-width-10);
}

.abstract h2 {
    font-weight: bold;
    font-style: normal;
}

.abstract img {
    max-width:100%;
}

.title {
    font-size: 20px;
    font-family: "Source Sans Pro", sans-serif;
    color: #3b3b3b;
    !min-width: var(--column-width-10);
}

.title h2 {
    padding: 0;
    margin: 0;
    font-size: 30px;
    line-height: 1;
}

.bio {
    font-size:16px;
    line-height:1.5;
    font-family: 'Source Sans Pro';
    margin-bottom:40px;
    padding:40px;
    background-color:pink;
    display:flex;
}

.highlight {
    position:relative;
    display:flex;
    margin:0 0 40px 0;
}

.highlight img {
    padding-bottom:0;
    max-width:100%;
}

.highlight section {

    background-image: linear-gradient(to top, rgba(0,0,0,0.7) 0 40%, rgba(0,0,0,0));

    position: absolute;
    align-self:end;

    font-family: 'Source Sans Pro';
    padding:40px;
    color:white;
    font-size:18px;
    line-height: 1.5;
    width:100%;
}

.highlight section h3 {
    font-size:22px;
    color:white;
    margin:0;
    padding:0;
    padding-bottom:10px;
    margin-bottom:20px;
    border-bottom:1px solid white;
}

.highlight-small section h3 {
    text-transform: uppercase;
    font-size:18px;
}

.highlight a {
    color:white;
    border:none;
}

/** Medium */
@media (min-width: 576px) {

    .medium-2 {     width:var(--column-width-2);    }
    .medium-3 {     width:var(--column-width-3);    }
    .medium-4 {     width:var(--column-width-4);    }
    .medium-5 {     width:var(--column-width-5);    }
    .medium-6 {     width:var(--column-width-6);    }
    .medium-7 {     width:var(--column-width-7);    }
    .medium-8 {     width:var(--column-width-8);    }

    .medium-visible { display: block }
}

@media (min-height: 400px) {
    #content {
        height: 85vh;
    }
}

@media (min-height: 600px) {
    #content {
        height: 90vh;
    }
}

/** Large */
@media (min-width: 960px) and (min-height: 600px) {

    .large-1    {     width:var(--column-width-1);    }
    .large-2    {     width:var(--column-width-2);    }
    .large-3    {     width:var(--column-width-3);    }
    .large-4    {     width:var(--column-width-4);    }
    .large-5    {     width:var(--column-width-5);    }
    .large-6    {     width:var(--column-width-6);    }
    .large-8    {     width:var(--column-width-8);    }
    .large-9    {     width:var(--column-width-9);    }
    .large-10   {     width:var(--column-width-10);    }
    .large-11   {     width:var(--column-width-11); }
    .large-12   {     width:var(--column-width-12);    }

    main {
        grid-template-columns: 1fr var(--column-width-3) var(--column-width-9) 1fr;
        grid-template-areas:
                "left top top right"
                "left banner banner right"
                "left menu content right";
    }

    #content {
        grid-area: content;
        width:99%;
        min-height:100vh;
        display:flex;
        flex-wrap: wrap;
        !padding-top:40px;
    }

    #content img {
        max-width:100%;
       ! padding-bottom:40px;
    }

    #menu-mobile {
        display:none;
    }
    #menu {
        background-color: transparent;
        grid-area: menu;
        display: flex;
        justify-content: start;
        flex-flow: column;
        position: sticky;
        align-self: start;
        top:0px;
        margin-top:40px;
        height:auto;
        z-index:100;
        margin:40px;
    }

    #menu ul {
        text-transform: uppercase;
        font-size: 11px;
        list-style-type: none;
        letter-spacing: 0.025em;
        padding: 0;
        margin: 0;
    }

    #menu ul li {
        height: 21px;
    }

    div.header {
        !flex-wrap:nowrap;
        margin-top:40px;
    }

    .title {
        font-size: 35px;
        font-family: "Source Sans Pro", sans-serif;
        color: #3b3b3b;
        width: var(--column-width-8);
    }

    .title h2 {
        padding-top:0px;
        font-size: 30px;
    }

    .abstract {
        animation: 1s ease-out 0s 1 slideInFromLeft;
        align-self: start;
        font-family: "Source Serif Pro", sans-serif;
        font-size: 16px;
        padding-bottom: 2em;
        padding-top:20px;
        border-bottom: 1px solid black;
        line-height: 1.5;
        width: var(--column-width-6);
    }

    .bio {
        font-size:16px;
    }

    p.logo {
        margin-top: calc(3 * var(--gutter-width) + 5px);
        margin-bottom: calc(3 * var(--gutter-width));
    }
    p.logo img {
        max-height:none;
        width:100px;
    }
}

@media (min-width: 1400px) {
    :root {
        --column-width: calc(100vw / 12);
    }

    main {
        grid-template-columns: 1fr var(--column-width-2) var(--column-width-10) 1fr;
        grid-template-areas:
                "left top top right"
                "left banner banner right"
                "left menu content right";
    }

    .bio {
        font-size:18px;
    }

    #menu {
        padding-left:0px;
    }

    .header-fixed {
        display:block;
        z-index:100;
        height:80px;
        grid-area: top;
        top:0px;
        padding:0;
        padding-left:60px;
    }

    .header-fixed p.logo {
        margin:40px;
    }
    .header-fixed p.logo a {
        color:var(--bg-color);
        border-bottom:none;
    }

    .header-fixed p.logo a:hover {
        border-bottom:1px solid white;
    }

}

li.header {
    font-size: 1em;
    font-weight: bold;
    margin-bottom: 0px;
    display: block;
}

/***************/


@keyframes slideInFromLeft {
    0% {
        transform: translateX(20%);
        opacity: 0;
    }
    100% {
        transform: translateX(0);
        opacity: 1;
    }
}

@keyframes slideInFromRight {
    0% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}

@keyframes appear {
    0% {
        form: scale(1.01);
        opacity: 0.1;
    }
    100% {
        opacity: 1;
    }
}