body {
    font-family: "exo2";
    padding: 0;
    margin: 0;
    width: 100%;
    min-height: 100%;

    &.preview {
        border: solid 5px red;
        box-sizing: border-box;
    }
}

body .text-center {
    text-align: center
}

body h1 .fade,
body h2 .fade,
body h3 .fade,
body h4 .fade {
    padding-left: .8em;
    color: #777;
    font-size: .7em
}

body div.content {
    min-height: 75vh;
    margin: 64px 16px 16px 16px;
    color: #404040
}

body div.content .infos {

    section {
        margin-bottom: 2em
    }

    table tbody tr {
        vertical-align: top;

        td {
            padding: .5em 0;

            &.period {
                color: #777;
                min-width: 100px
            }

            ul {
                margin: 0;
                padding: 0
            }
        }
    }
}


body div.content .about {

    p {
        text-align: justify;
    }

    picture {
        display: block;
        text-align: center;
        padding-top: 2em;
        padding-bottom: 2em;
    
        img {
            max-width: 300px;
        }
    }
}


body div.content {

    .text-section {
        margin-bottom: 4em;
        text-align: justify;
    }

    .gallery-section {
        margin-top: 1em;
        margin-bottom: 5em;
        padding: 1em;

        a.image {
            margin: auto;
            display: block;
            text-decoration: none;

            img {
                transition: box-shadow 400ms;
                display: block;
                margin: auto;
                object-fit: contain;
                max-height: 70vh;
                max-width: 100%
            }
        }

        .small-title {
            transition: color 400ms;
            display: block;
            margin-top: 1.5em;
            text-align: center;
            font-weight: bold;
            text-decoration: none;
            color: #969696;

            .info {
                font-size: 14px;
                margin-left: 5px;
                color: #969696;
            }
        }

        &:hover {
            cursor: pointer;

            a.image img {
                transition: box-shadow 400ms;
                box-shadow: 0 0 1em .5em #77c6b0;
            }
        }
    }
}

body div.content .gallery-section:hover .small-title {
    transition: color 400ms;
    color: #404040
}

body div.content .gallery-section:hover .small-title .info {
    color: #969696
}

body div.content .home .jumbo-title {
    text-align: center;
    font-size: 1.1em;
    color: #404040;
    padding-top: 1.1em;
    padding-bottom: 0.7em;
    max-width: 75%;
    margin: auto;
    border-bottom: 2px solid #969696
}

body div.content .home .jumbo-title h1 {
    color: #6696a9
}

body div.content .home .jumbo-title h3 {
    color: #969696
}

@media screen and (min-width: 750px) {
    body div.content {
        width: 750px;
        margin-left: auto;
        margin-right: auto
    }
}

body div.content .title-section {
    width: 100%;
    margin: 3em 0;
    padding: 1em 0
}

body div.content .title-section h2 {
    text-align: center
}

body div.content div.page {
    width: 100%;
    margin: 2em 0;
    padding-bottom: 4em;
    color: #404040
}

body div.content div.page h1 {
    font-size: 1.8em;
    text-align: center;
}

body div.content div.page h2 {
    font-size: 1.6em
}

body div.content div.page h3 {
    font-size: 1.4em
}

body div.content div.page>a:first-child {
    text-decoration: none;
    color: #404040;
    transition: color 500ms
}

body div.content div.page>a:first-child:hover {
    color: #969696;
    transition: color 500ms
}

body div.content div.page>a:first-child>h1 {
    margin: 0 1em 1em;
    font-size: 1.9em;
    text-align: center
}

body div.content div.page .carousel {
    margin-bottom: 2em
}

body div.content div.page .carousel .image img {
    max-width: 100%;
    max-height: 85vh
}

body div.content div.page .carousel-thumbnails {
    padding-top: 0.5em
}

@media screen and (max-width: 750px) {
    body div.content div.page .carousel-thumbnails {
        display: none
    }
}

body div.content div.page .carousel-thumbnails .thumbnail {
    width: 4em;
    height: 4em;
    display: inline-block;
    vertical-align: bottom;
    text-align: center;
    padding: 0.5em;
    margin: 0.2em
}

body div.content div.page .carousel-thumbnails .thumbnail.selected {
    background-color: silver
}

body div.content div.page .carousel-thumbnails .thumbnail img {
    max-height: 4em;
    max-width: 4em
}

body div.content div.page div.image {
    text-align: center;
    margin-left: 2em;
    margin-right: 2em
}

body div.content div.page div.image a img {
    min-height: 300px;
    display: block;
    max-width: 100%;
    max-height: 75vh;
    margin: auto;
    object-fit: contain
}

body div.content div.page div.image a:hover img {
    transition: box-shadow 500ms;
    box-shadow: 0 0 1em .5em #77c6b0
}

body div.content div.page div.image .img-label {
    margin: 1em;
    color: #8A8A8A
}

body div.content div.page div.image .img-label strong {
    color: #404040
}

body div.content div.page div.image .img-label .img-label-dimension {
    display: inline-block
}

body div.content div.page a.small-title {
    transition: color 500ms;
    font-weight: bold;
    text-decoration: none;
    color: #969696;
    display: block;
    margin: 1.5em auto
}

body div.content div.page a.small-title .title {
    text-align: center
}

body div.content div.page a.small-title .title .info {
    font-size: 14px;
    margin-left: 5px;
    color: #969696
}

body div.content div.page a.small-title>.sub-title {
    font-style: italic
}

body div.content div.page a.small-title:visited {
    text-decoration: none;
    color: #969696
}

body div.content div.page a.small-title:active,
body div.content div.page a.small-title:hover {
    color: #404040
}

body div.content div.page a.small-title:active .title .info,
body div.content div.page a.small-title:hover .title .info {
    color: #969696
}

body div.content>h1 {
    text-align: center;
    margin: 10px
}

body div.content div.contact-me div.error {
    margin: 1em auto;
    border: 2px solid #d20017;
    background-color: #e0867d;
    padding: .5em;
    text-align: center;
    width: 500px;
    max-width: 90%
}

body div.content .carousel .image.slick-slide img {
    margin: auto
}

.jumbo-title {
    text-align: center;
    font-size: 1.1em;
    color: #404040;
    padding-top: 2rem;
    padding-bottom: 1rem;
    max-width: 75%;
    margin: auto
}

.jumbo-title h1 {
    color: #6696a9
}

.jumbo-title h3 {
    color: #969696
}

hr {
    max-width: 75%;
    margin: 1rem auto
}

.page-section {
    padding-top: 1rem;
    padding-bottom: 2rem
}

.page-section img {
    max-height: 85vh
}

.page-section .gallery-section {
    max-width: 750px;
    margin: auto
}

.page-section .gallery-section a.image {
    display: block;
    padding: 1rem
}

.page-section .gallery-section a.image:hover img {
    transition: box-shadow 400ms;
    box-shadow: 0 0 1em .5em #77c6b0
}

.page-section .gallery-section a.image img {
    display: block;
    margin: auto;
    max-width: 100%
}

.page-section .gallery-section .small-title {
    margin: 0;
    transition: color 400ms;
    display: block;
    margin-top: 1.5em;
    text-align: center;
    font-weight: bold;
    text-decoration: none;
    color: #969696
}

.page-section .mosaic {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
    max-width: 1600px;
    margin: auto;
    gap: 2px;
    padding: 2rem 1rem
}

@media screen and (max-width: 1200px) {
    .page-section .mosaic {
        grid-template-columns: 1fr 1fr 1fr 1fr
    }
}

@media screen and (max-width: 750px) {
    .page-section .mosaic {
        grid-template-columns: 1fr 1fr 1fr
    }
}

.page-section .mosaic .mosaic-item:hover {
    transition: opacity 400ms
}

@media screen and (min-width: 750px) {
    .page-section .mosaic .mosaic-item:hover {
        opacity: .7
    }
}

.page-section .mosaic .mosaic-item a {
    display: block
}

.page-section .mosaic .mosaic-item a img {
    display: block;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    inline-size: 100%
}

/* navigation */
nav.top-navigation {
    background-color: #000;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.8);
    position: sticky;
    top: 0;
    z-index: 10;

    .side-panel {
        display: none;
        position: fixed;
        right: 0;
        transition: min-width 200ms;
        min-width: 40%;
        height: 100%;
        top: 0;
        background: #eee;

        &.opened {
            display: grid;
            z-index: 999;
        }

        .side-header {
            display: flex;
            height: 3rem;
            align-items: center;
            justify-content: space-between;

            h2 {
                padding-left: 5rem;
                margin: 0
            }
            .close {
                display: flex;
                text-align: center;
                padding: 0 1rem;
                width: 2rem;
                margin-right: 1rem;
                line-height: 3rem;
                font-size: 1.5rem;
                justify-content: center;

                &:hover {
                    cursor: pointer
                }
            }
        }

        .side-content {

            overflow-y: auto;

            h2 {
                padding: .3rem 0 .3rem 5rem;
                margin: 0;
                position: sticky;
                top: 0;
                background-color: #eee;
            }

            ul {
                padding: 0;
                margin: 0;
                list-style: none;
            
                li {
                    text-align: left;
                    transition: background-color 200ms;
            
                    &:hover {
                        background-color: #d2d2d2;
                        transition: background-color 200ms
                    }
            
                    a {
                        line-height: 2.5rem;
                        display: block;
                        padding: .3rem 0 .3rem 5rem;
                        color: #404040;
                        text-decoration: none;
            
                        &:visited {
                            color: #404040;
                        }
                    }
                }
            }
        }
    }
}

@media screen and (max-width: 1024px) {
    nav.top-navigation .side-panel {
        min-width: 60%
    }
}

@media screen and (max-width: 750px) {
    nav.top-navigation .side-panel {
        min-width: 100%;
    
        .side-header h2 {
            padding-left: 2rem;
        }
        .side-content {
            h2 {
                padding-left: 2rem;
            }
            ul li a {
                padding-left: 2rem
            }
        }
    }
}

nav.top-navigation.fixed {
    position: sticky;
    top: 0;
    z-index: 9999
}

nav.top-navigation .nav-content {
    display: flex
}

nav.top-navigation .nav-content .logo {
    max-height: 3rem
}

nav.top-navigation .nav-content .logo img {
    max-height: 2rem;
    margin: .5rem
}

nav.top-navigation .nav-content .menu {
    flex-grow: 2;
    display: flex;
    justify-content: space-between
}

nav.top-navigation .nav-content .menu .menu-section {
    display: flex
}

nav.top-navigation .nav-content .menu .menu-section a,
nav.top-navigation .nav-content .menu .menu-section a:hover,
nav.top-navigation .nav-content .menu .menu-section a:active,
nav.top-navigation .nav-content .menu .menu-section a:visited {
    color: #fff;
    text-decoration: none;
    font-weight: bolder;
    line-height: 3rem;
    padding: 0 1rem;
    cursor: pointer
}

nav.top-navigation .nav-content .menu .menu-section a:hover,
nav.top-navigation .nav-content .menu .menu-section a:hover:hover,
nav.top-navigation .nav-content .menu .menu-section a:active:hover,
nav.top-navigation .nav-content .menu .menu-section a:visited:hover {
    transition: background-color 500ms;
    background-color: rgba(50, 50, 50, 0.6)
}

nav.top-navigation .nav-content .menu .menu-section a.selected,
nav.top-navigation .nav-content .menu .menu-section a:hover.selected,
nav.top-navigation .nav-content .menu .menu-section a:active.selected,
nav.top-navigation .nav-content .menu .menu-section a:visited.selected {
    background-color: #323232
}

nav.top-navigation .nav-content .menu .menu-section .dogali {
    color: #fff;
    text-decoration: none;
    font-weight: bolder;
    line-height: 3rem;
    padding: 0 1rem
}

nav.top-navigation .nav-content .menu .menu-section a.open-side-panel {
    display: flex;
    align-items: center
}

nav.top-navigation .nav-content .menu .menu-section a.open-side-panel img {
    max-height: 1.5em
}

/* footer */

footer {
    background-color: #000;
    color: #fff;
    padding: 1rem 0 2rem 0;

    & > div {
        display: flex;
        justify-content: center;
    }
}

@media screen and (min-width: 750px) {
    .show-xs {
        display: none !important
    }
}

@media screen and (max-width: 749px) {
    .hide-xs {
        display: none !important
    }
}

html {
    background-color: #f2f2f2;
    font-family: "titillium-web", sans-serif
}

#thumbnail-carousel {
    margin-top: 1em
}

#thumbnail-carousel.splide:not(.is-overflow) .splide__list {
    justify-content: center
}

#thumbnail-carousel.splide:not(.is-overflow) .splide__slide:last-child {
    margin: 0 !important
}

#thumbnail-carousel.splide:not(.is-overflow) .splide__arrows {
    display: none
}

#thumbnail-carousel .splide__slide img {
    width: 100%;
    height: 100%;
    display: block;
    margin: auto;
    object-fit: contain
}

#thumbnail-carousel .splide__arrow--prev {
    left: -2.5em
}

#thumbnail-carousel .splide__arrow--next {
    right: -2.5em
}

#main-carousel .splide__slide img {
    width: 90%;
    height: 70vh;
    object-fit: contain;
    display: block;
    margin: auto
}

#main-carousel .splide__slide .img-label {
    padding-top: .5em;
    text-align: center;

    & > *:not(:last-child)::after {
        content: ', ';
    }

    .img-label-dimension {
        display: inline-flex;
        gap: 0.2em;

        .dimensions > *:not(:last-child)::after {
            content: ' x ';
        }
    }
}
