@import "../mixins.scss";

// CONTAINER
.hm-snackbars-container {
    box-sizing: border-box;
    position: fixed;
    pointer-events: none;
    bottom: 0;
}

@media only screen and (min-width: 751px) {
    .hm-snackbars-container {
        width: 700px;
        left: calc(50vw - 350px);
    }
}

@media only screen and (max-width: 750px) {
    .hm-snackbars-container {
        width: 100vw;
        left: 0;
    }
}

// NOTIFICATION
.hm-snackbar {
    position: absolute;
    box-sizing: border-box;
    overflow: hidden;
    pointer-events: all;
    bottom: 0;
    left: 0;

    font-size: var(--hm-font-size);
    font-family: var(--hm-font-family);

    width: calc(100% - 2 * var(--hm-section-padding));
    margin: 0 var(--hm-section-padding);
    margin-bottom: var(--hm-section-padding);
    padding: var(--hm-section-padding);
    border-radius: var(--hm-section-border-radius);

    display: flex;
    gap: var(--hm-flex-gap);
    align-items: center;

    &.hm-thwhite {
        background-color: var(--hm-thwhite-section-bg-color);
        color: var(--hm-thwhite-font-color-contrast);
    }

    &.hm-thblack {
        background-color: var(--hm-thblack-section-bg-color);
        color: var(--hm-thblack-font-color-contrast);
    }

    .hm-text-container {
        flex: 100;
        max-height: 40px;
        overflow-y: scroll;

        @include hideScrollbars;

        p {
            margin: 0;
            font-size: var(--hm-text-font-size);

            &.hm-description {
                font-size: var(--hm-description-font-size);
                margin-top: 2px;
            }
        }
    }

    // Show / Close Animations
    &.hm-snackbar-show {
        animation-name: hm-snackbar-show;
        animation-duration: 0.3s;
    }

    &.hm-snackbar-close {
        animation-duration: 0.3s;
        animation-fill-mode: forwards;
    }

    &:nth-of-type(1) {
        &.hm-snackbar-close {
            animation-name: hm-snackbar-close-first-element;
        }
    }

    &:not(:nth-of-type(1)) {
        &.hm-snackbar-close {
            animation-name: hm-snackbar-close-subsequent-elements;
        }
    }

    // Animate sliding into background
    transition: var(--hm-transition);
    transition-property: scale, translate, opacity;

    &:nth-of-type(1) {
        scale: 100%;
        translate: 0% 0%;
        z-index: 5;
        opacity: 1;

        &.hm-thwhite {
            box-shadow: var(--hm-component-shadow);
        }
        &.hm-thblack {
            box-shadow: var(--hm-component-shadow);
        }
    }

    &:nth-of-type(2) {
        scale: 97%;
        translate: 0% 5px;
        z-index: 4;
        opacity: 1;

        &.hm-thwhite {
            box-shadow: var(--hm-component-shadow);
        }
        &.hm-thblack {
            box-shadow: var(--hm-component-shadow);
        }
    }

    scale: 93%; // Any third layer elements
    translate: 0% 10px;
    z-index: 3;

    // Make any element on fourth layer invisible
    &:not(:nth-of-type(1)):not(:nth-of-type(2)):not(:nth-of-type(3)) {
        z-index: -1;
        scale: 80%;
    }
}

// SHOW ANIMATION
@keyframes hm-snackbar-show {
    0% {
        opacity: 0;
        translate: 0% 50%;
    }

    40% {
        opacity: 0.5;
    }

    100% {
        opacity: 1;
        translate: 0% 0%;
    }
}

// CLOSE ANIMATION
@keyframes hm-snackbar-close-first-element {
    0% {
        opacity: 1;
        translate: 0% 0%;
    }

    40% {
        opacity: 0.8;
    }

    100% {
        opacity: 0;
        translate: 0% 30%;
    }
}

@keyframes hm-snackbar-close-subsequent-elements {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}
