/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* *                                                                                  */
/* *                                common elements                                   */
/* *                                                                                  */
/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */

html {
    scroll-behavior: smooth;
    scroll-padding-top: 7rem;
    height: 100%;
    width: 100%;
    overflow-x: hidden;
    --hC-height: calc(74vh/7);
    --hO-height: calc(var(--hC-height) * 0.5);
    --min-hC-height: calc(94vw/7);
}

* {
    box-sizing: border-box;
}

@font-face {
    font-family: "Ubuntu";
    src: url("/ressources/fonts/Ubuntu/Ubuntu-Bold.ttf") format("truetype");
}

#noscriptText {
    color: black;
    background-color: white;
    border-radius: 1vw;
    max-width: 100%;
    height: fit-content;
    padding: 1%;
    margin: 1%;
    margin-top: 12vh;
}

body {
    height: 100%;
    width: 100%;
    position: absolute;
    text-align: center;
    overflow-x: hidden;
    margin: 0;
    overflow-wrap: break-word;
    font-family: "Ubuntu";
}

button {
    font-family: 'Ubuntu';
}

a {
    color: aliceblue;
    text-decoration: none;
}

li {
    list-style-type: none;
}

img {
    max-width: 100%;
    display: block;
}

h1 {
    margin: auto 5% auto 5%;
    font-size: clamp(2.625rem, 2.407rem + 1.7442vw, 4.5rem);
}

h2 {
    margin: auto 5% auto 5%;
    font-size: clamp(1.5rem, 1.3692rem + 1.0465vw, 2.625rem);
}

h3 {
    margin: auto 5% auto 5%;
    font-size: clamp(1.25rem, 1.2209rem + 0.2326vw, 1.5rem);
}

h4 {
    margin: auto 5% auto 5%;
    font-size: clamp(1.125rem, 1.0814rem + 0.3488vw, 1.5rem);
}

p {
    margin: auto 5% auto 5%;
    font-size: clamp(1rem, 0.9709rem + 0.2326vw, 1.25rem);
}

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/*header begins*/

header {
    position: fixed;
    z-index: 5;
    top: 15vh;
    left: 0;
    height: 70vh;
    width: 5vw;
    border-radius: 0 2vw 2vw 0;
    display: flex;
    flex-flow: row wrap;
    align-content: center;
    padding: 3vh 0 3vh 0;
    background-color: rgba(255, 255, 255, 0.35);
    backdrop-filter: blur(3vw);
    box-shadow: 5px 0px 8px rgba(0, 0, 0, 0.37);
}

.headerContainer {
    height: var(--hC-height);
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    width: 100%;
}

.headerAnchor {
    border-radius: 1vw;
    aspect-ratio: 1/1;
    width: 80%;
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    background: #C9C0C0;
    box-shadow: 0px 5px 5px rgba(0, 0, 0, 0.37);
    transition: all .25s linear;
    box-sizing: content-box;
    position: fixed;
    position: absolute;
}


.headerAnchor:hover {
    transform: scale(110%);
}

.headerIcon {
    border-radius: .8vw;
    max-width: 80%;
    aspect-ratio: 1/1;
}

.headerOverlay {
    position: fixed;
    top: 0;
    width: max-content;
    padding: 10%;
    display: flex;
    align-items: center;
    text-align: center;
    left: 6vw;
    border-radius: 1vw;
    background-color: rgba(0, 0, 0, 0.92);
    backdrop-filter: blur(3px);
    box-shadow: 5px 5px 15px 5px rgba(0, 0, 0, 0.37);
    color: white;
    display: none;
    user-select: none;
    height: clamp(var(--hO-height), var(--hO-height), max-content);
}

.headerOverlay>h2 {
    font-size: clamp(1.25rem, 1.2209rem + 0.2326vw, 1.5rem);
    margin: 0;
}

#hO1 {
    top: calc(3vh + var(--hO-height)/2);
}

#hO2 {
    top: calc(3vh + var(--hO-height)/2 + var(--hC-height));
}

#hO3 {
    top: calc(3vh + var(--hO-height)/2 + var(--hC-height) * 2);
}

#hO4 {
    top: calc(3vh + var(--hO-height)/2 + var(--hC-height) * 3);
}

#hO6 {
    top: calc\(3vh + var(--hO-height)/2 + var(--hC-height) * 4;
}

#hO7 {
    top: calc(3vh + var(--hO-height)/2 + var(--hC-height) * 5);
}

@media only screen and (min-width: 1000px) {
    #hA1:hover~#hO1 {
        display: block;
    }

    #hA2:hover~#hO2 {
        display: block;
    }

    #hA3:hover~#hO3 {
        display: block;
    }

    #hA4:hover~#hO4 {
        display: block;
    }

    #hA5:hover~#hO5 {
        display: block;
    }

    #hA6:hover~#hO6 {
        display: block;
    }

    #hA7:hover~#hO7 {
        display: block;
    }
}

@media only screen and (max-width: 1000px) {
    header {
        top: 0;
        height: 10vh;
        width: 100vw;
        border-radius: 0 0 2vh 2vh;
        flex-flow: row nowrap;
        padding: 0 3vw 0 3vw;
        justify-content: space-around;
        align-items: center;
    }

    .headerContainer {
        height: var(--min-hC-height);
        aspect-ratio: 1/1;
        width: auto;
    }

    .headerAnchor {
        border-radius: 3vw;
        width: clamp(5vh, 8vh, var(--min-hC-height));
    }

    .headerIcon {
        border-radius: 2.4vw;
    }

    #hC3 {
        display: none;
    }

    #hC1 {
        order: 3;
    }

    #hC2 {
        order: 2;
    }

    #hC4 {
        order: 1;
    }

    #hC6 {
        order: 4;
    }

    #hC7 {
        order: 5;
    }
}

/*header ends*/

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#overlayBackground {
    position: fixed;
    top: 0;
    left: 0;
    margin: 0;
    background-color: rgba(19, 19, 19, 0.59);
    z-index: 2;
    width: 100%;
    height: 100vh;
    overflow-x: hidden;
    display: none;
}

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/* map overlay begins */

map {
    top: 5%;
    height: 90vh;
    position: fixed;
    z-index: 3;
    box-shadow: 0px 0px 15px 5px #1c1101;
    align-content: center;
    padding: 1%;
    background-color: #1c1101;
    color: #fff;
    border-style: solid;
    border-radius: 2vw;
    border-color: #99611F;
    border-width: 1vw;
    display: none;
    left: 6vw;
    width: 93vw;
}

#mapHeader {
    width: 100%;
    height: 20%;
    margin: 0;
    align-content: center;
}

#mapBody {
    width: 100%;
    height: 80%;
    display: flex;
    flex-flow: row wrap;
    justify-content: center;
    overflow-y: scroll;
}

#mapBody>* {
    width: 100%;
}

@media only screen and (max-width: 1000px) {
    map {
        top: 13vh;
        left: 3vw;
        width: 94vw;
        height: 84vh;
    }
}

/*map overlay ends */

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/* settings overlay begins */

settings {
    top: 5%;
    left: 8vw;
    width: 89vw;
    height: 90vh;
    position: fixed;
    z-index: 3;
    box-shadow: 0px 0px 15px 5px #0D0119;
    align-content: center;
    padding: 1%;
    background-color: #0D0119;
    color: #fff;
    border-style: solid;
    border-radius: 2vw;
    border-color: #702099;
    border-width: 1vw;
    display: none;

    left: 6vw;
    width: 93vw;
}

#setHeader {
    width: 100%;
    height: 20%;
    margin: 0;
    align-content: center;
}

#setBody {
    width: 100%;
    height: 80%;
    display: flex;
    flex-flow: row wrap;
    justify-content: center;
    overflow-y: scroll;
}

#setBodyContainer {
    height: 62.5%;
}

#setBodyContainer,
#setSave {
    justify-content: center;
    display: flex;
    width: 100%;
}

.setBox {
    width: 48%;
    height: 100%;
    border-radius: 1vw;
    margin: 0 1% 0 1%; 
    padding: 1%;
    align-content: center;
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    background: rgba(164, 164, 164, 0.392);
    border: 1px solid rgba(255, 255, 255, 0.566);
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
}

.boxTitle {
    height: 30%;
    width: 100%;
    display: flex;
    align-items: center;
    border-bottom: 2px solid;
}

.boxTitle>* {
    width: 100%;
    margin: 0;
}

.boxBody {
    margin-top: 1%;
    width: 100%;
    height: 70%;
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    justify-content: center;
    padding-bottom: 5%;
}

.boxChoice {
    width: 100%;
}

.boxChoice>input[type=radio] {
    accent-color: #000;
    margin-top: -1%;
}

.boxChoice>input[type=radio]:checked+label {
    color: #e8e8e8;
}

.boxChoice>label {
    font-size: clamp(1.25rem, 1.1773rem + 0.5814vw, 1.875rem);
}

#setSave {
    height: 37.5%;
    align-items: center;
    justify-content: space-evenly;
}

.saveButtons {
    width: 48%;
    margin: 1%;
    height: 50%;
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    border-radius: 1vw;
    color: #e8e8e8;
    background: rgba(162, 1, 180, 0.392);
    border: 1px solid rgba(255, 255, 255, 0.566);
    box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
    backdrop-filter: blur(5px);
}

.saveButtons:active {
    background: rgb(162, 1, 180);
}

#sB1,
#dB1 {
    font-size: clamp(1.25rem, 1.1773rem + 0.5814vw, 1.875rem);
}

#saveNotif {
    bottom: 4.2vh;
    right: 2vw;
    position: fixed;
    max-height: 20vh;
    background-color: #2c0d3c;
    width: clamp(18vw, 25vw, 50vw);
    border-radius: 1vw;
    padding: 1%;
    display: none;
}

@media only screen and (max-width: 1000px) {
    settings {
        top: 13vh;
        left: 3vw;
        width: 94vw;
        height: 84vh;
    }

    #setBodyContainer {
        flex-flow: row wrap;
    }

    .setBox {
        width: 100%;
        height: 48%;
        max-height: 50%;
    }

    #sB1,
    #dB1 {
        font-size: large;
    }

    #saveNotif {
        display: flex;
        justify-content: center;
        align-content: center;
        top: 53vh;
        right: 5vw;
        width: max-content;
        max-width: 90vw;
    }
}

/* settings overlay ends */

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/* controls layer begins */

controls {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 4;
    display: none;
}

.overlayControls {
    width: calc(var(--hC-height)*0.8);
    aspect-ratio: 1/1;
    position: fixed;
    z-index: 5;
    border-radius: 1vw;
    display: flex;
    flex-flow: row nowrap;
    justify-content: center;
    align-items: center;
    padding: 0;
    border: 0;
    opacity: .5;
    transition: opacity .25s linear;
}

.overlayControls:hover {
    opacity: 1;
}

.overlayControls:active {
    background-color: #e26b00;
}

#buttExit {
    top: 1vh;
    right: 1vw;
}

#buttLeft {
    left: 6vw;
    transform-origin: center;
    transform: translateY(45vh);
}

#buttRight {
    right: 1vw;
    transform-origin: center;
    transform: translateY(45vh);
}

#buttExit:hover {
    transform: scale(110%);
}

#buttLeft:hover,
#buttRight:hover {
    transform: translateY(45vh) scale(110%);
}

.overlayIcon {
    width: 80%;
    aspect-ratio: 1/1;
    border: 0;
    border-radius: .8vw;
}

@media only screen and (max-width: 1000px) {
    .overlayControls {
        width: clamp(5vh, 8vh, var(--min-hC-height));
        aspect-ratio: 1/1;
        border-radius: 3vw;
    }

    #buttExit {
        top: 13vh;
        right: 2vw;
    }

    #buttLeft {
        left: 1vw;
    }

    .overlayIcon {
        max-width: 80%;
        aspect-ratio: 1/1;
        border-radius: 2.4vw;
    }
}

/* controls layer ends */

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/* picture viewer begins*/

pictureViewer {
    background-color: black;
    position: fixed;
    z-index: 3;
    width: 100vw;
    height: 100vh;
    margin: 0;
    top: 0;
    left: 0;
    overflow: scroll;
    display: none;
}

.viewerContainer {
    width: 93vw;
    height: 80vh;
    position: fixed;
    z-index: 3;
    top: 10vh;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-left: 6vw;
    margin-right: 1vw;
}

#pVImage {
    width: auto;
    max-width: 90vw;
    height: auto;
    max-height: 80vh;
    margin: auto;
    position: fixed;
}

@media only screen and (max-width: 1000px) {
    .viewerContainer {
        width: 95vw;
        margin: 0;
    }
}

/* picture viewer ends */

/* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/* skill viewer begins */

skillViewer {
    position: fixed;
    z-index: 3;
    width: 100%;
    height: 100%;
    margin: 0;
    top: 0;
    left: 0;
    overflow: scroll;
    display: none;
}

#renderCanvas {
    position: fixed;
    width: 100%;
    height: 100%;
    margin: 0;
    top: 0;
    left: 0;
}

.skillOverlay {
    position: fixed;
    z-index: 4;
}

/* skill viewer ends here */

/* common rules to both picture and skill viewer */

.viewerOverlay {
    position: fixed;
    z-index: 4;
    height: max-content;
    padding: 1%;
}

#pVO1,
#sVO1 {
    width: 100%;
    margin: auto;
    color: var(--txt-color);
    height: 10vh;
    display: flex;
    justify-content: center;
    align-items: center;
}

#pVO2,
#sVO2 {
    color: var(--txt-color);
    background-color: var(--fg-color);
    border-radius: 1vw;
    width:clamp(6vw, 10vw, 20vw);
    top: 1vh;
    left: .5vw;
    padding: .5vw;
}

#pVO3,
#sVO3 {
    max-height: 20vh;
    overflow: scroll;
    color: var(--txt-color);
    background-color: var(--fg-color);
    width: 100vw;
    left: 0;
    bottom: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 1vw 6vw 1vw 6vw;
}

#pVCredit,
#pVCredit>a,
#sVDesc,
#sVDesc>a {
    font-size: clamp(1.125rem, 1.0814rem + 0.3488vw, 1.5rem);
    transform-origin: center;
    margin: 0;
}

@media only screen and (max-width: 1000px) {
    #sVO1 {
        top: 11vh;
    }

    #pVO2,
    #sVO2 {
        display: flex;
        flex-flow: row nowrap;
        top: 13vh;
        left: 2vw;
        width: max-content;
        max-width: 50vw;
        padding:1%;
        justify-content: center;
        align-items: center;
    }

    #pVO3,
    #sVO3 {
        padding: 3vh 3% 3vh 3%;
        overflow: scroll;
        height: 15vh;
        display: block;
        border-radius: 3vw 3vw 0 0;
    }
}

.creditPicture>a,
.paragraphImages>p>a,
.paragraphText>a {
    text-decoration: underline;
}

/* footer */

footer {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: var(--fg-color);
    padding-left: 5vw;
    padding-top: 2vh;
    width: 100vw;
    height: 8vh;
    --mask:
        radial-gradient(2.24vh at 50% 3vh, #000 99%, #0000 101%) calc(50% - 2vh) 0/4vh 100%,
        radial-gradient(2.24vh at 50% -2vh, #0000 99%, #000 101%) 50% 1vh/4vh 100% repeat-x;
    -webkit-mask: var(--mask);
    mask: var(--mask);
}

@media only screen and (max-width: 1000px) {
    footer {
        padding-left: 0;
    }
}

/* (x=x) */