*,
*::before,
*::after {
    box-sizing: border-box;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
}

body {
    margin: 0;
    font-family: 'Segoe UI', Avenir, Helvetica, sans-serif;
    line-height: 1.618;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
}

.toast-container {
    position: fixed;
    width: 500px;
    z-index: 999999;
}

.toast-container.top-right {
    top: 0;
    right: 0;
}

.toast-container.top-left {
    top: 0;
    left: 0;
}

.toast-container.bottom-left {
    bottom: 0;
    left: 0;
}

.toast-container.bottom-right {
    bottom: 0;
    right: 0;
}

.toast-container.center {
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

.toast-container.top-center {
    top: 0;
    left: 50%;
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    transform: translateX(-50%);
}

.toast-container.bottom-center {
    bottom: 0;
    left: 50%;
    -webkit-transform: translateX(-50%);
    -moz-transform: translateX(-50%);
    transform: translateX(-50%);
}

.toast-container.left-center {
    top: 50%;
    left: 0;
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    transform: translateY(-50%);
}

.toast-container.right-center {
    top: 50%;
    right: 0;
    -webkit-transform: translateY(-50%);
    -moz-transform: translateY(-50%);
    transform: translateY(-50%);
}

    .toast {
        position: relative;
        min-width: 150px;
        margin: 1rem;
        background-color: lightseagreen;
        border-radius: 3px;
        box-shadow: 0 0 0 3px rgba(0, 0, 0, .1);
        color: white;
        cursor: pointer;
        opacity: 0;
        -webkit-transition: all 1s;
        -moz-transition: all 1s;
        transition: all 1s;
        -webkit-transform: translateY(25%);
        -moz-transform: translateY(25%);
        transform: translateY(25%);
        overflow: hidden;
        -webkit-animation: _tvisible 1s forwards;
        -moz-animation: _tvisible 1s forwards;
        animation: _tvisible 1s forwards;
        z-index: 1;
    }

    @-webkit-keyframes _tvisible {
        to {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
    }

    @-moz-keyframes _tvisible {
        to {
            opacity: 1;
            -moz-transform: translateY(0);
        }
    }

    @keyframes _tvisible {
        to {
            opacity: 1;
            transform: translateY(0);
        }
    }

    .toast.is-hiding {
        -webkit-animation: _thiding 1s forwards;
        -moz-animation: _thiding 1s forwards;
        animation: _thiding 1s forwards;
    }

    @-webkit-keyframes _thiding {
        from {
            opacity: 1;
            -webkit-transform: translateY(0);
        }
        to {
            opacity: 0;
            -webkit-transform: translateY(-25%);
        }
    }

    @-moz-keyframes _thiding {
        from {
            opacity: 1;
            -moz-transform: translateY(0);
        }
        to {
            opacity: 0;
            transform: translateY(-25%);
        }
    }

    @keyframes _thiding {
        from {
            opacity: 1;
            transform: translateY(0);
        }
        to {
            opacity: 0;
            transform: translateY(-25%);
        }
    }

    .toast[data-easing='expo-in'] {
        -webkit-animation-timing-function: cubic-bezier(0.95, 0.05, 0.795, 0.035);
        -moz-animation-timing-function: cubic-bezier(0.95, 0.05, 0.795, 0.035);
        animation-timing-function: cubic-bezier(0.95, 0.05, 0.795, 0.035);
    }

    .toast[data-easing='expo-out'] {
        -webkit-animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
        -moz-animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
        animation-timing-function: cubic-bezier(0.19, 1, 0.22, 1);
    }

    .toast[data-easing='expo-in-out'] {
        -webkit-animation-timing-function: cubic-bezier(1, 0, 0, 1);
        -moz-animation-timing-function: cubic-bezier(1, 0, 0, 1);
        animation-timing-function: cubic-bezier(1, 0, 0, 1);
    }

    .toast[data-easing='quart-in'] {
        -webkit-animation-timing-function: cubic-bezier(0.895, 0.03, 0.685, 0.22);
        -moz-animation-timing-function: cubic-bezier(0.895, 0.03, 0.685, 0.22);
        animation-timing-function: cubic-bezier(0.895, 0.03, 0.685, 0.22);
    }

    .toast[data-easing='quart-out'] {
        -webkit-animation-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
        -moz-animation-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
        animation-timing-function: cubic-bezier(0.165, 0.84, 0.44, 1);
    }

    .toast[data-easing='quart-in-out'] {
        -webkit-animation-timing-function: cubic-bezier(0.77, 0, 0.175, 1);
        -moz-animation-timing-function: cubic-bezier(0.77, 0, 0.175, 1);
        animation-timing-function: cubic-bezier(0.77, 0, 0.175, 1);
    }

    .toast[data-easing='back-in'] {
        -webkit-animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045);
        -moz-animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045);
        animation-timing-function: cubic-bezier(0.6, -0.28, 0.735, 0.045);
    }

    .toast[data-easing='back-out'] {
        -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
        -moz-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
        animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1.275);
    }

    .toast[data-easing='back-in-out'] {
        -webkit-animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
        -moz-animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
        animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
    }

    .toast.warning {
        background-color: #da4347;
        color: white;
    }

    .toast.info {
        background-color: #5dade2;
        color: white;
    }

    .toast.success {
        background-color: #61c23a;
        color: white;
    }

    .toast.caution {
        background-color: #ffca17;
        color: black;
    }

    .toast-container .close {
        position: absolute;
        top: 0;
        right: 0;
        width: 20px;
        height: 20px;
        margin-top: .5rem;
        margin-right: .5rem;
        padding: 2px;
        cursor: pointer;
        z-index: 1;
    }

        .toast-container .close svg line {
            fill: none;
            stroke: white;
            stroke-width: 2;
        }

    .toast-title {
        margin: 0;
        padding: .5rem 2rem .5rem 1rem;
        line-height: 1.5;
    }

    .toast-content {
        padding: .5rem 1rem;
        font-size: .875rem;
    }

    .toast-progress {
        width: 100%;
        height: 5px;
    }

    @keyframes _progress {
        to {
            width: 0;
        }
    }

        .toast.info .toast-progress {
            background-color: blue;
        }

        .toast.success .toast-progress {
            background-color: green;
        }

        .toast.caution .toast-progress {
            background-color: peru;
        }

        .toast.warning .toast-progress {
            background-color: darkred;
        }

    .toast-close {
        position: absolute;
        top: 0;
        right: 0;
        width: 2rem;
        height: 2rem;
        padding: .5rem;
        cursor: pointer;
    }

        .toast-close svg {
            position: relative;
        }

        .toast-close svg line {
            fill: none;
            stroke-width: 2px;
            stroke: white;
        }
