/* Global UI */

@font-face {
    font-family: "Giver Made";
    src: url("./assets/Giver Made Italic.ttf");
    font-display: swap;
}



body {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 100vw;
    height: 100vh;
    overflow: hidden;
    margin: 0;
    padding: 0;
    background-color: black;
    -webkit-user-select: none;
    user-select: none;
    text-shadow: 0 0 15px rgba(255, 255, 255, .75), 0 0 10px rgba(255, 255, 255, .75);
}




button {
    cursor: pointer;
    width: 15vmax;
    height: 5vmax;
    margin: 1vmax;
    color: rgb(65, 65, 65);
    text-shadow: 0 0 15px rgba(255, 255, 255, .5), 0 0 10px rgba(94, 94, 94, 0.5);
    font: 2vmax "Giver Made";
    border-radius: 1.5vmax;
    background-color: rgba(255, 255, 255, 0.5);
    border: solid 0.15vmax rgba(255, 255, 255, 0.5);
    box-shadow: 0 0 0.5vmax rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(0.25vmax);
    backdrop-filter: blur(0.25vmax);
    overflow: hidden;
}

button:after {
    position: absolute;
    content: "";
    height: 200%;
    left: -50%;
    top: -50%;
    width: 25%;
    transform: rotate(35deg);
    background-color: white;
    transition: all 0.75s;
    box-shadow: 0 0 0.5vw white;
    background-color: rgba(255, 255, 255, 0.25);
    -webkit-filter: blur(1vw);
    filter: blur(1vw);
}

button:hover:after {
    left: 125%;
}



input[type="text"], input[type="submit"] {
    width: 20vmax;
    height: 3vmax;
    margin: 1vmax;
    text-align: center;
    color: rgb(65, 65, 65);
    font: 1vmax "Giver Made";
    border-radius: 1vmax;
    border: solid 0.15vmax rgba(255, 255, 255, 0.5);
    background-color: rgba(255, 255, 255, 0.5);
    box-shadow: 0 0 0.5vmax rgba(0, 0, 0, 0.5);
    -webkit-backdrop-filter: blur(0.5vmax);
    backdrop-filter: blur(0.25vmax);
    cursor: pointer;
}



img {
    -webkit-user-drag: none;
    -khtml-user-drag: none;
    -moz-user-drag: none;
    -o-user-drag: none;
}



canvas {
    width: 100%;
    height: 100%;
}




/* UI du menu principal */
#menu {
    display: flex;
    position: absolute;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}


#mainMenu {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}


#mainButtons {
    flex-direction: column;
    justify-content: center;
    align-items: center;
}



#partyAction {
    position: absolute;
    display: none;
}

#joinPartyForm {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    position: absolute;
}


#endGameMessage {
    position: absolute;
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

#winner {
    font: 3vw "Giver Made";
    color: white;
    white-space: nowrap;
}





/* UI du jeux */
#game {
    position: absolute;
    display: none;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
}



.container {
    display: flex;
    justify-content: center;
    align-items: center;
    width: 50%;
}



.header {
    position: fixed;
    align-items: center;
    display: flex;
    top: 5vh;
}

.name {
    font: 5vh "Giver Made";
    color: white;
    white-space: nowrap;
    margin-right: 5vh;
}



.grid {
    position: relative;
    display: grid;
    grid-template-columns: repeat(10, 0fr);
    grid-template-rows: repeat(10, 1fr);
    gap: 5px 5px;
    margin-top: 5vh;
    transform-origin: center;
}

.square {
    border: 2px solid rgba(255, 255, 255, 0.5);
    border-radius: 25%;
    width: 40px;
    height: 40px;
}

.square:hover {
    box-shadow: 0 0 1vh white;
    background-color: rgba(255, 255, 255, 0.5);
    -webkit-backdrop-filter: blur(0.35vh);
    backdrop-filter: blur(0.35vh);
    cursor: pointer;
}



#submitBoats {
    position: fixed;
    display: none;
    width: 20vh;
    height: 7vh;
    bottom: 2vh;
    border-radius: 2.5vh;
    text-indent: -5%;
    font: 3.5vh "Giver Made";
}




#partyCode {
    position: fixed;
    font: 5vh "Giver Made";
    color: white;
    left: 50%;
    bottom: 4vh;
    text-indent: -1vw;
    white-space: nowrap;
    transform: translate(-50%, 50%);
}

#partyCode:hover {
    cursor: pointer;
}



.boat {
    position: absolute;
    transform-origin: bottom left;
    -webkit-user-select: none;
    user-select: none;
}

.boat:hover {
    cursor: pointer;
}

.wrongPosition {
    background-color: rgba(255, 0, 0, 0.5);
    filter: brightness(0.5);
    border-radius: 11px;
}



.touched {
    position: absolute;
    width: 54px;
    height: 54px;
    background-image: url("./assets/touched.webp");
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    z-index: 10;
}

.failed {
    position: absolute;
    width: 54px;
    height: 54px;
    background-image: url("./assets/failed.webp");
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    z-index: 10;
}





.boat {
    -webkit-animation: fade-in 1.2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;
    animation: fade-in 1.2s cubic-bezier(0.390, 0.575, 0.565, 1.000) both;
}



.failed, .touched  {
    -webkit-animation: scale-in-center 0.35s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
    animation: scale-in-center 0.35s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
}



/* Animations */
@-webkit-keyframes fade-in {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes fade-in {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}


@-webkit-keyframes scale-in-center {
    0% {
        -webkit-transform: scale(0);
        transform: scale(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: scale(1);
        transform: scale(1);
        opacity: 1;
    }
}

@keyframes scale-in-center {
    0% {
        -webkit-transform: scale(0);
        transform: scale(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: scale(1);
        transform: scale(1);
        opacity: 1;
    }
}


@keyframes closeByTop {
    0% {
        -webkit-transform: scale(1, 1);
        transform: scale(1, 1);
        -webkit-filter: blur(0);
        filter: blur(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: scale(0.2, 2) translateY(-1000px);
        transform: scale(0.2, 2) translateY(-1000px);
        -webkit-filter: blur(40px);
        filter: blur(40px);
        opacity: 0;
    }
}

@-webkit-keyframes closeByTop {
    0% {
        -webkit-transform: scale(1, 1);
        transform: scale(1, 1);
        -webkit-filter: blur(0);
        filter: blur(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: scale(0.2, 2) translateY(-1000px);
        transform: scale(0.2, 2) translateY(-1000px);
        -webkit-filter: blur(40px);
        filter: blur(40px);
        opacity: 0;
    }
}

.closeByTop {
    -webkit-animation: closeByTop 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
    animation: closeByTop 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
    touch-action: none;
}



@-webkit-keyframes closeByBottom {
    0% {
        -webkit-transform: translateY(0) scaleY(1) scaleX(1);
        transform: translateY(0) scaleY(1) scaleX(1);
        -webkit-transform-origin: 50% 50%;
        transform-origin: 50% 50%;
        -webkit-filter: blur(0);
        filter: blur(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: translateY(1000px) scaleY(2) scaleX(0.2);
        transform: translateY(1000px) scaleY(2) scaleX(0.2);
        -webkit-transform-origin: 50% 100%;
        transform-origin: 50% 100%;
        -webkit-filter: blur(40px);
        filter: blur(40px);
        opacity: 0;
    }
}

@keyframes closeByBottom {
    0% {
        -webkit-transform: translateY(0) scaleY(1) scaleX(1);
        transform: translateY(0) scaleY(1) scaleX(1);
        -webkit-transform-origin: 50% 50%;
        transform-origin: 50% 50%;
        -webkit-filter: blur(0);
        filter: blur(0);
        opacity: 1;
    }

    100% {
        -webkit-transform: translateY(1000px) scaleY(2) scaleX(0.2);
        transform: translateY(1000px) scaleY(2) scaleX(0.2);
        -webkit-transform-origin: 50% 100%;
        transform-origin: 50% 100%;
        -webkit-filter: blur(40px);
        filter: blur(40px);
        opacity: 0;
    }
}

.closeByBottom {
    -webkit-animation: closeByBottom 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
    animation: closeByBottom 0.45s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
}





@keyframes countdown {
    from {
        stroke-dashoffset: 0;
    }

    to {
        stroke-dashoffset: -113.097;
    }
}

.progress {
    animation: countdown 15s linear forwards;
}