.message-style(@background; @color; @style) {
    .msg-co-@{style} {
        background-color: @background;

        .bo-ti{
            color: @color;
        }
    }
}

mor-message{
    display: block;
    position: fixed;
    width: 50%;
    max-width: @fontSize*25;
    min-width: @fontSize*20;
    pointer-events: none;

    &.pos-t{
        top: 0;
        left: 50%;
        transform: translateX(-50%);
    }

    &.pos-tl{
        top: 0;
        left: @fontSize*0.5;
        width: 50%;
    }

    &.pos-tr{
        top: 0;
        right: @fontSize*0.5;
    }

    &.pos-b{
        bottom: 0;
        left: 50%;
        transform: translateX(-50%);
    }

    &.pos-bl{
        bottom: 0;
        left: @fontSize*0.5;
    }

    &.pos-br{
        bottom: 0;
        right: @fontSize*0.5;
    }

    .list{
        overflow: hidden;
        box-sizing: content-box;
        position: relative;
        height: 1000em;
        width: 100%;

        > div{
            position: absolute;
        }
    }

    .msg{
        border-radius: @borderRadius;
        padding: 1em 2em 1em 1.5em;
        position: relative;
        pointer-events: auto;

        &.msg-enter-active,
        &.msg-leave-active{
            transition: transform 0.2s, opacity 0.2s;
        }

        &.msg-move{
            transition: transform 0.2s;
        }

        .close-btn{
            position: absolute;
            top: 1.23em;
            font-size: @fontSize*0.8125;
            right: 0.6em;
            vertical-align: middle;
            color: @colorWhite;
            opacity: 0.5;

            &:hover{
                opacity: 1;
                cursor: pointer;
            }
        }
    }

    &.pos-t{
        .msg-enter{
            transform: translateY(-150%);
        }

        .msg-enter-to{
            transform: translateY(0%);
        }
    }

    &.pos-b{
        .msg-enter{
            transform: translateY(150%);
        }

        .msg-enter-to{
            transform: translateY(0%);
        }
    }

    &.pos-tl,
    &.pos-bl{
        .msg-enter{
            transform: translateX(-150%);
        }

        .msg-enter-to{
            transform: translateX(0%);
        }
    }

    &.pos-tr,
    &.pos-br{
        .msg-enter{
            transform: translateX(150%);
        }

        .msg-enter-to{
            transform: translateX(0%);
        }
    }

    &.pos-t,
    &.pos-tl,
    &.pos-bl,
    &.pos-tr,
    &.pos-br{
        .msg-leave{
            opacity: 1;
        }

        .msg-leave-to{
            opacity: 0;
        }
    }

    &.pos-t,
    &.pos-tl,
    &.pos-tr{
        .list{
            .msg{
                margin-bottom: @fontSize*0.2;
            }

            > div {
                width: 100%;
                top: @fontSize*0.5;
            }
        }
    }

    &.pos-b,
    &.pos-bl,
    &.pos-br{
        .list{
            .msg{
                margin-top: @fontSize*0.2;
            }

            > div {
                width: 100%;
                bottom: @fontSize*0.5;
            }
        }
    }

    .title{
        margin: 0;
        font-size: @fontSize*1.125;
        font-weight: 400;
        padding-bottom: 0.1em;
        border: none;
        opacity: 0.8;

        &:empty{
            display: none;
        }
    }

    .body{
        font-size: @fontSize*0.8125;
        padding: 0;
        width: 100%;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .message-style(@colorTheme, @colorWhite, t);
    .message-style(@colorLightTheme, @colorWhite, lt);
    .message-style(@colorDarkTheme, @colorWhite, dt);

    .message-style(@colorSuccess, @colorWhite, s);
    .message-style(@colorWarning, @colorWhite, w);
    .message-style(@colorDanger, @colorWhite, d);
    .message-style(@colorPrimary, @colorWhite, p);
    .message-style(@colorMinor, @colorWhite, m);
    .message-style(@colorInfo, @colorWhite, i);

    .message-style(@colorBlack, @colorWhite, bk);

    each(range(11), {
        @colorName : 'colorNeutral@{value}';

        .message-style(@@colorName, if((@value > 5), @colorWhite, @colorBlack), ~'n@{value}');
    });

    .message-style(@colorWhite, @colorBlack, wh);

    // default status
    &{}
}
