/* =========================================
   DIGITAL SOUP — HOME
   ========================================= */

* {
    box-sizing: border-box;
}


html,
body {
    margin: 0;
    padding: 0;
    width: 100%;
    height: 100%;
    background: #000;
    overflow: hidden;
}


body {
    font-family: Arial, sans-serif;
}


/* =========================================
   HOME
   ========================================= */

.home {
    width: 100%;
    height: 100vh;
    background: #000;
    overflow: hidden;
}

/* =========================================
   SOUP HERO
   ========================================= */

.soup-hero {
    position: relative;

    width: 100%;

    overflow: hidden;

    line-height: 0;
}


/* =========================================
   SOUP VIDEO
   ========================================= */

.soup-video {
    display: block;

    width: 100%;
    height: auto;

    object-fit: contain;

    background: #000;
}


/* =========================================
   NAVIGATION
   ========================================= */

.soup-nav {
    position: absolute;

    inset: 0;

    z-index: 5;

    pointer-events: none;
}


/* =========================================
   INVISIBLE HOTSPOTS
   ========================================= */

.soup-link {
    position: absolute;

    display: flex;

    align-items: center;
    justify-content: center;

    text-decoration: none;

    pointer-events: auto;

    background: transparent;

    cursor: pointer;
}


/* =========================================
   NAVIGATION LABEL
   ========================================= */

.soup-link span {
    display: block;

    padding: 10px 18px;

    background: #ff4f61;
    color: #fff;

    font-size: 13px;
    font-weight: 700;

    letter-spacing: 2px;
    line-height: 1;

    opacity: 0;

    transform: scale(0.85);

    transition:
        opacity 0.2s ease,
        transform 0.2s ease;
}


/* =========================================
   SHOW LABEL ON HOVER
   ========================================= */

.soup-link:hover span {
    opacity: 1;

    transform: scale(1);
}


/* =========================================
   MUSIC — SPEAKER
   ========================================= */

.soup-link-music {
    left: 6%;
    top: 20%;

    width: 15%;
    height: 24%;
}


/* =========================================
   CONTACT — FISH
   ========================================= */

.soup-link-contact {
    left: 20%;
    top: 10%;

    width: 18%;
    height: 38%;
}


/* =========================================
   DESIGN — ROCKET
   ========================================= */

.soup-link-design {
    right: 8%;
    top: 1%;

    width: 19%;
    height: 30%;
}


/* =========================================
   ABOUT — GIRL
   ========================================= */

.soup-link-about {
    right: 5%;
    top: 38%;

    width: 23%;
    height: 55%;
}


/* =========================================
   SOUP MENU BUTTON
   ========================================= */

.soup-menu-toggle {
    position: absolute;

    top: 4%;
    right: 3%;

    z-index: 10;

    width: 48px;
    height: 48px;

    border: none;
    border-radius: 50%;

    background: #ff4f61;
    color: #fff;

    font-family: Arial, sans-serif;

    font-size: 30px;
    font-weight: 300;

    line-height: 1;

    cursor: pointer;

    opacity: 0.9;

    transition:
        transform 0.2s ease,
        opacity 0.2s ease;
}


.soup-menu-toggle:hover {
    transform: scale(1.1);

    opacity: 1;
}


/* =========================================
   SOUP SOUND BUTTON
   ========================================= */

.soup-sound-toggle {
    position: absolute;

    bottom: 4%;
    right: 3%;

    z-index: 10;

    width: 48px;
    height: 48px;

    border: none;
    border-radius: 50%;

    background: #ff4f61;

    display: flex;

    align-items: center;
    justify-content: center;

    gap: 3px;

    padding: 0;

    cursor: pointer;

    opacity: 0.9;

    transition:
        transform 0.2s ease,
        opacity 0.2s ease;
}


/* =========================================
   SOUND BARS
   ========================================= */

.soup-sound-toggle span {
    display: block;

    width: 3px;

    background: #fff;

    border-radius: 3px;

    transform-origin: center;

    transition:
        transform 0.2s ease,
        opacity 0.2s ease;
}


/* INDIVIDUAL BAR HEIGHTS */

.soup-sound-toggle span:nth-child(1) {
    height: 9px;
}


.soup-sound-toggle span:nth-child(2) {
    height: 16px;
}


.soup-sound-toggle span:nth-child(3) {
    height: 22px;
}


.soup-sound-toggle span:nth-child(4) {
    height: 13px;
}


/* =========================================
   SOUND ON ANIMATION
   ========================================= */

.soup-sound-toggle.sound-on span {
    animation:
        sound-bars 0.8s ease-in-out infinite
        alternate;
}


.soup-sound-toggle.sound-on span:nth-child(2) {
    animation-delay: 0.15s;
}


.soup-sound-toggle.sound-on span:nth-child(3) {
    animation-delay: 0.3s;
}


.soup-sound-toggle.sound-on span:nth-child(4) {
    animation-delay: 0.1s;
}


@keyframes sound-bars {

    from {
        transform: scaleY(0.4);
    }

    to {
        transform: scaleY(1);
    }

}


/* =========================================
   SOUP MENU PANEL
   ========================================= */

.soup-menu-panel {
    position: absolute;

    top: 10%;
    right: 3%;

    z-index: 9;

    width: 220px;

    display: flex;

    flex-direction: column;

    gap: 5px;

    padding: 0;

    background: transparent;

    opacity: 0;

    visibility: hidden;

    transform:
        translateY(-12px)
        rotate(1deg);

    transition:
        opacity 0.25s ease,
        transform 0.25s ease,
        visibility 0.25s ease;
}


/* =========================================
   MENU ITEMS
   ========================================= */

.soup-menu-panel a {
    display: block;

    width: 100%;

    padding: 12px 16px;

    background: #ff4f61;
    color: #fff;

    text-decoration: none;

    text-align: left;

    font-size: 15px;
    font-weight: 800;

    letter-spacing: 1.5px;
    line-height: 1.1;

    transform: rotate(-1deg);

    transition:
        transform 0.2s ease,
        background 0.2s ease,
        color 0.2s ease;
}


/* =========================================
   LITTLE SECONDARY LABEL
   ========================================= */

.soup-menu-panel a::after {
    display: block;

    margin-top: 5px;

    color: #111;

    font-size: 9px;
    font-weight: 800;

    letter-spacing: 2px;
}


/* =========================================
   INDIVIDUAL MENU DESCRIPTIONS
   ========================================= */

.soup-menu-panel a:nth-child(1)::after {
    content: "MUSIC";
}


.soup-menu-panel a:nth-child(2)::after {
    content: "DESIGN";
}


.soup-menu-panel a:nth-child(3)::after {
    content: "ABOUT";
}


.soup-menu-panel a:nth-child(4)::after {
    content: "CONTACT";
}


/* =========================================
   MENU HOVER
   ========================================= */

.soup-menu-panel a:hover {
    background: #111;

    color: #f7bb56;

    transform:
        rotate(1deg)
        translateX(-4px);
}


/* =========================================
   MENU OPEN
   ========================================= */

.soup-menu-panel.menu-open {
    opacity: 1;

    visibility: visible;

    transform:
        translateY(0)
        rotate(1deg);
}


/* =========================================
   DIGITAL SOUP PRELOADER
   ========================================= */

#soup-preloader {
    position: fixed;

    inset: 0;

    z-index: 9999;

    display: flex;

    align-items: center;
    justify-content: center;

    background: #000;

    opacity: 1;

    visibility: visible;

    transition:
        opacity 0.6s ease,
        visibility 0.6s ease;
}


/* =========================================
   PRELOADER SCENE
   ========================================= */

.preloader-scene {
    position: relative;

    width: 260px;
    height: 220px;
}


/* =========================================
   SOUP CAN
   ========================================= */

.soup-can {
    position: absolute;

    top: 10px;
    left: 35px;

    width: 85px;
    height: 115px;

    background: #ff4f61;

    border: 4px solid #111;

    border-radius:
        10px
        10px
        14px
        14px;

    transform-origin: 75% 85%;

    animation:
        can-pour
        2.8s
        ease-in-out
        infinite;
}


/* =========================================
   CAN TOP
   ========================================= */

.can-top {
    position: absolute;

    top: -9px;
    left: 3px;

    width: 71px;
    height: 15px;

    background: #f7bb56;

    border: 4px solid #111;

    border-radius: 50%;
}


/* =========================================
   CAN LABEL
   ========================================= */

.can-label {
    position: absolute;

    left: 0;
    right: 0;

    top: 43px;

    color: #fff;

    text-align: center;

    font-family: Arial, sans-serif;

    font-size: 17px;
    font-weight: 900;

    letter-spacing: 2px;

    transform: rotate(-2deg);
}


/* =========================================
   POURING SOUP
   ========================================= */

.soup-stream {
    position: absolute;

    top: 88px;
    left: 110px;

    width: 14px;
    height: 0;

    background: #f7bb56;

    border-radius: 50%;

    transform: rotate(-18deg);

    transform-origin: top;

    animation:
        soup-pour
        2.8s
        ease-in-out
        infinite;
}


/* =========================================
   BOWL
   ========================================= */

.soup-bowl {
    position: absolute;

    bottom: 15px;
    left: 48px;

    width: 170px;
    height: 65px;

    background: #111;

    border: 5px solid #f7bb56;

    border-radius:
        0
        0
        85px
        85px;

    overflow: hidden;
}


/* =========================================
   BOWL SOUP
   ========================================= */

.bowl-soup {
    position: absolute;

    left: -5%;
    bottom: 35px;

    width: 110%;
    height: 80px;

    background: #ff4f61;

    border-radius: 50%;

    transform:
        translateY(65px);

    animation:
        bowl-fill
        2.8s
        ease-in-out
        infinite;
}


/* =========================================
   PRELOADER ANIMATIONS
   ========================================= */

@keyframes can-pour {

    0% {
        transform: rotate(0deg);
    }

    20% {
        transform: rotate(0deg);
    }

    45% {
        transform: rotate(58deg);
    }

    75% {
        transform: rotate(58deg);
    }

    100% {
        transform: rotate(0deg);
    }

}


@keyframes soup-pour {

    0% {
        height: 0;
        opacity: 0;
    }

    35% {
        height: 0;
        opacity: 0;
    }

    45% {
        height: 75px;
        opacity: 1;
    }

    75% {
        height: 75px;
        opacity: 1;
    }

    85% {
        height: 0;
        opacity: 0;
    }

    100% {
        height: 0;
        opacity: 0;
    }

}


@keyframes bowl-fill {

    0% {
        transform: translateY(65px);
    }

    35% {
        transform: translateY(65px);
    }

    75% {
        transform: translateY(0);
    }

    100% {
        transform: translateY(0);
    }

}


/* =========================================
   MOBILE
   ========================================= */

@media (max-width: 700px) {

    .soup-link span {
        padding: 8px 12px;

        font-size: 11px;

        letter-spacing: 1.5px;
    }


    .soup-link-music {
        left: 5%;
        top: 12%;
    }


    .soup-link-contact {
        left: 5%;
        top: 38%;
    }


    .soup-link-design {
        right: 5%;
        top: 12%;
    }


    .soup-link-about {
        right: 5%;
        top: 55%;
    }


