@font-face {
    font-family: Lato;
    src: url(../assets/fonts/Lato/Lato-Light.ttf);
    font-weight: 300;
}

@font-face {
    font-family: Lato;
    src: url(../assets/fonts/Lato/Lato-Regular.ttf);
    font-weight: 400;
}

@font-face {
    font-family: Lato;
    src: url(../assets/fonts/Lato/Lato-Bold.ttf);
    font-weight: 600;
}

@font-face {
    font-family: Barlow;
    src: url(../assets/fonts/Barlow/Barlow-Light.ttf);
    font-weight: 300;
}

@font-face {
    font-family: Barlow;
    src: url(../assets/fonts/Barlow/Barlow-Regular.ttf);
    font-weight: 400;
}

@font-face {
    font-family: Barlow;
    src: url(../assets/fonts/Barlow/Barlow-Medium.ttf);
    font-weight: 500;
}

@font-face {
    font-family: Barlow;
    src: url(../assets/fonts/Barlow/Barlow-SemiBold.ttf);
    font-weight: 600;
}

* {
    -webkit-tap-highlight-color: transparent;
}

:root {
    --gradient: linear-gradient(190deg, #b5e4ff, #ebf8ff);
    --wishes-delay: 0.5s;
    --wishes-stagger: 0.25s;

    --modal-background: #f7fbfc;

    --orange: #d88444;
    --orange-shadow: #d8844452;

    --dark-blue: #3b4370;
    --dark-blue-shadow: #3b437052;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: Barlow;
    font-weight: 500;
    text-transform: uppercase;
    color: var(--orange);
    letter-spacing: 1.2vh;
    text-shadow: 0 2px 0px var(--orange-shadow);
    line-height: 1.125;
    margin-block-start: 0;
    margin-block-end: 0;
}

body {
    font-family: Lato;
    margin: 0;
    padding: 0;

    color: var(--dark-blue);
    font-size: 100%;

    overflow: hidden;
}

.allow-audio {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    cursor: pointer;

    opacity: 1;
    visibility: visible;
}


@keyframes grow-shrink {
    0% {
        transform: scale(1);
    }

    100% {
        transform: scale(1.05);
    }
}

.allow-audio-modal {
    /* position: absolute;
    left: 50%;
    transform: translateX(-50%);
    top: -8vh;
    opacity: 1;
    visibility: visible; */

    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    opacity: 1;
    visibility: visible;
}

.allow-audio-modal-inner {
    background: white;
    padding: 1.25vh;
    border-radius: 6px;
    box-shadow: 1px 3px 8px rgb(0 0 0 / 30%);
    color: var(--dark-blue);
    font-size: 2.5vh;
    animation: grow-shrink 0.5s both infinite alternate;
    display: inline-flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    white-space: nowrap;
}


.allow-audio-modal.hidden,
.allow-audio.hidden {

    transition: 1s;
    opacity: 0;
    visibility: hidden;
}

.speakers {
    height: 3vh;
    margin-left: 0.75vh;
}


.face {
    display: flex;
    flex-direction: row;
    align-items: center;
}

.face-text {
    margin-left: 3vh;
}

.face-icon {
    width: 11vh;
}

.face-title {
    margin-top: 1vh;
    font-size: 2vh;
}

h3.face-name {
    color: var(--dark-blue);
    text-shadow: var(--dark-blue-shadow);
    font-weight: 600;
    font-size: 2.5vh;
    letter-spacing: 0.25vh;
}

.outer-container {
    position: absolute;
    left: 0;
    top: 0;
    width: 100vw;
    height: 100%;

    /* background: var(--gradient); */
    background: white;
    overflow: hidden;

    display: flex;
    justify-content: center;
}

.frame {
    position: relative;
    height: 100%;
    aspect-ratio: 16 / 9;
    /* box-shadow: 3px 0px 20px rgb(0 0 0 / 20%); */
}

.bg {
    background: url(../assets/img/AXS2022_e003_background.svg);
    background-size: 100%;
    aspect-ratio: 16 / 9;
    height: 100%;

    cursor: unset !important;
}

@keyframes shake {
    0% {
        transform: rotate(-3deg);
    }

    100% {
        transform: rotate(3deg);
    }
}

@keyframes jump {
    0% {
        transform: translateY(0) rotate(0deg);
    }

    100% {
        transform: translateY(-3px) rotate(3deg);
    }
}

@keyframes scale {
    0% {
        transform: scale(1.0);
    }

    100% {
        transform: scale(1.05);
    }
}

.loading {
    position: absolute;
    left: 0;
    top: 0;
    width: 100vw;
    height: 100vh;
    background: white;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    font-size: 2.5vh;
    color: var(--dark-blue);

    animation: fade-out 1s 0.5s both;
    pointer-events: none;
    z-index: 2;
}

.loading-animation {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;

    opacity: 1;
    visibility: visible;
    font-size: 2vh;

    background: var(--modal-background);
}

.loading-animation.hidden {
    transition: 1s;

    opacity: 0;
    visibility: hidden;
}

@keyframes fade-out {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

@keyframes fade-in {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

.wishes-container {
    position: absolute;
    left: 39.5%;
    top: 55%;
    width: 21%;
    text-align: center;
    pointer-events: none;

    animation: fade-in 1s both;
    animation-delay: 1s;
}

.wishes {
    font-size: 6.4vh;
    opacity: 0;
}

.active .wishes {
    animation: fade-in 1s both;
    animation-delay: calc(var(--wishes-delay) + 1 * var(--wishes-stagger));
}

.tree {
    position: absolute;
    height: 29%;
    display: none;
}

.tree1 {
    left: -3%;
    top: -9%;
}

.tree2 {
    left: -5%;
    top: -7%;
    height: 20%;
}

.tree3 {
    left: -5%;
    top: 8%;
    height: 20%;
}

.from {
    margin-top: 4%;
    margin-left: -3%;
    font-weight: 600;
    font-size: 2.6vh;
    opacity: 0;
}

.active .from {
    animation: fade-in 1s both;
    animation-delay: calc(var(--wishes-delay) + 2 * var(--wishes-stagger));
}

.tap {
    margin-top: 13%;
    margin-left: 2.1%;
    display: flex;
    flex-direction: row;
    align-items: center;
    text-align: left;
    opacity: 0;
}

.active .tap {
    animation: fade-in 1s both;
    animation-delay: calc(var(--wishes-delay) + 3 * var(--wishes-stagger));
}

.slide {
    margin-top: 10%;
    flex-direction: row;
    align-items: center;
    text-align: left;

    display: none;
    opacity: 0;
}

.active .slide {
    animation: fade-in 1s both;
    animation-delay: calc(var(--wishes-delay) + 3 * var(--wishes-stagger));
}


.tap-icon {
    height: 5.5vh;
}

.slide-icon {
    height: 5vh;
}

.tap-text,
.slide-text {
    margin-left: 2.5vh;
    font-size: 2.24vh;
}

.modal-overlay {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;

    opacity: 0;
    visibility: hidden;
    transition: visibility 0.5s, opacity 0.5s;

    cursor: pointer;
}

.modal-overlay.show {
    opacity: 1;
    visibility: visible;
}

.modal-position {
    position: fixed;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    display: flex;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    z-index: 1;
}

.modal {
    pointer-events: all;
    background: var(--modal-background);
    box-shadow: 0px 8px 20px rgb(0 0 0 / 20%);
    display: flex;
    flex-direction: column;
    opacity: 0;
    visibility: hidden;
    transform: scale(0.9);
    transition: visibility 0.5s, opacity 0.5s, transform 0.5s;
    height: 90vh;
    width: 50vh;
}

.modal.show {
    opacity: 1;
    visibility: visible;
    transform: scale(1);
}

.modal-top {
    display: flex;
    height: 75%;
    padding-top: 7vh;
    box-sizing: border-box;
    position: relative;
}

.modal-top-inner {   
    position: relative;
    width: 100%;
    height: 100%;
}

.modal-bottom {
    background: #d2edf8;
    display: flex;
    padding: 3vh;
    justify-content: center;
    flex: 1;
}

.close {
    height: 3vh;
    position: absolute;
    right: 3vh;
    top: 3vh;
    cursor: pointer;

    z-index: 1;
}

.animation {
    height: 100%;

    pointer-events: none;
}

.character {
    position: absolute;
    height: 17%;

    cursor: pointer;
    transition: 0.2s;
    transform-origin: 50% 50%;
}

.character:hover {
    /* transition: filter 0.2s; */
    filter: drop-shadow(2px 4px 6px #D2EDF8);
    transform: scale(1.1);
}

.bg .character:nth-child(1) {
    animation-delay: 0.5s;
}

.bg .character:nth-child(2) {
    animation-delay: 0.6s;
}

.bg .character:nth-child(3) {
    animation-delay: 0.7s;
}

.bg .character:nth-child(4) {
    animation-delay: 0.8s;
}

.bg .character:nth-child(5) {
    animation-delay: 0.9s;
}

.bg .character:nth-child(6) {
    animation-delay: 1.0s;
}

.bg .character:nth-child(7) {
    animation-delay: 1.1s;
}

.bg .character:nth-child(8) {
    animation-delay: 1.2s;
}

.bg .character:nth-child(9) {
    animation-delay: 1.3s;
}

.bg .character:nth-child(10) {
    animation-delay: 1.3s;
}

.bg .character:nth-child(11) {
    animation-delay: 1.4s;
}

.bg .character:nth-child(12) {
    animation-delay: 1.5s;
}

.bg .character:nth-child(13) {
    animation-delay: 1.6s;
}

.bg .character:nth-child(14) {
    animation-delay: 1.7s;
}

.bg .character:nth-child(15) {
    animation-delay: 1.8s;
}

.bg .character:nth-child(16) {
    animation-delay: 1.9s;
}

.bg .character:nth-child(17) {
    animation-delay: 2.0s;
}

.bg .character:nth-child(18) {
    animation-delay: 2.1s;
}

.bg .character:nth-child(19) {
    animation-delay: 2.2s;
}

.ae {
    left: 7.5%;
    top: 10.7%;
    /* animation: shake 1s both infinite alternate; */
}

.ah {
    left: 24.9%;
    top: 62%;
}

.bk {
    left: 59.4%;
    top: 8.1%;
    /* animation: scale 1s both infinite alternate; */
}

.cc {
    left: 12%;
    top: 27.1%;
    /* animation: scale 1s both infinite alternate; */
}

.ds {
    left: 69.5%;
    top: 58%;
    /* animation: shake 1s both infinite alternate; */
}

.dt {
    left: 51.5%;
    top: 33.6%;
    /* animation: scale 1s both infinite alternate; */
}

.ex {
    left: 21%;
    top: 44.5%;
    /* animation: shake 1s both infinite alternate; */
}

.jh {
    left: 80.8%;
    top: 14.3%;
    /* animation: jump 1s both infinite alternate; */
}

.jk {
    left: 28.4%;
    top: 16%;
    /* animation: shake 1s both infinite alternate; */
    /* transform-origin: 80% 80%; */
}

.js {
    left: 8.9%;
    top: 46.2%;
    /* animation: shake 1s both infinite alternate; */
}

.lc {
    left: 41.6%;
    top: 31.2%;
    /* animation: scale 1s both infinite alternate; */
}

.lh {
    left: 70.8%;
    top: 25.3%;
    /* animation: scale 1s both infinite alternate; */
}

.ll {
    left: 49.1%;
    top: 12.3%;
    /* animation: scale 1s both infinite alternate; */
}

.mo {
    left: 70.4%;
    top: 3.7%;
    /* animation: scale 1s both infinite alternate; */
}

.rc {
    left: 79.5%;
    top: 39.5%;
    /* animation: jump 0.5s both infinite alternate; */
}

.sa {
    left: 32.4%;
    top: 39.8%;
}

.sl {
    left: 63.5%;
    top: 39.5%;
    /* animation: scale 1s both infinite alternate; */
}

.sm {
    left: 18.2%;
    top: 3.7%;
    /* animation: scale 1s both infinite alternate; */
}

.sp {
    left: 38.7%;
    top: 6%;
    /* animation: scale 1s both infinite alternate; */
}

.mute {
    position: absolute;
    right: 3vh;
    top: 3vh;
    width: 5vh;
    height: 5vh;
    cursor: pointer;
    background: white;
    border-radius: 100%;
    padding: 1.25vh;
}


.rotate,
.resize {
    display: none;

    background: #fffffe;

    position: absolute;
    left: 0;
    top: 0;
    width: 100vw;
    height: 100%;

    justify-content: center;
    align-items: center;
    z-index: 2;
}

#snow-container {
    position: absolute;
    left: 0;
    top: 0;

    /* aspect-ratio: 16 / 9; */
    width: 100%;
    height: 100%;

    pointer-events: none;

    opacity: 0;
    transition: opacity 5s;
}

#snow-container.show {
    opacity: 1;
}

@media screen and (max-width: 767px) {

    .wishes-container {
        position: absolute;
        left: 36%;
        top: 56%;
        min-width: 37vh;
    }
}

@media screen and (max-aspect-ratio: 16 / 9) {
    .bg {
        cursor: move !important;
    }

    .slide {
        display: flex;
    }
}

@media screen and (max-height: 480px) and (pointer: coarse) and (orientation: landscape) {
    .rotate {
        display: flex;
    }
}

@media screen and (max-height: 650px) {
    .resize {
        /* display: flex; */
    }
}

@media screen and (max-width: 650px) {
    .modal {
        max-width: 93%;
        height: 96%;        
    }
}