.balloon {
    display: block;
    width: auto;
    height: auto;
    margin: 0;
    padding: 0;
    border: 1px @gray solid;
    background-color: @white;
    position: relative;
    margin-bottom: 30px;

    &:before, &:after {
        content: '';
        position: absolute;
        width: 0;
        height: 0;
    }
    &:before {
        z-index: 2;
    }
    &:after {
        z-index: 1;
    }

    &.bottom {
        &:before, &:after {
            top: 1px;
            left: 20px;
            margin: -20px 0;
            border-left: 10px solid transparent;
            border-right: 10px solid transparent;
            border-bottom: 20px solid @white;
        }

        &:after {
            top: 0;
            border-bottom: 20px solid @gray;
        }
    }

    &.top {
        &:before, &:after {
            top: 100%;
            margin-top: -1px;
            left: 20px;
            border-left: 10px solid transparent;
            border-right: 10px solid transparent;
            border-top: 20px solid @white;
        }

        &:after {
            margin-top: 1px;
            border-top: 20px solid @gray;
        }
    }

    &.left {
        &:before, &:after {
            top: 10px;
            left: 100%;
            margin-left: -1px;
            border-top: 10px solid transparent;
            border-bottom: 10px solid transparent;
            border-left: 20px solid @white;
        }

        &:after {
            margin-left: 0;
            border-left: 21px solid @gray;
        }
    }

    &.right {
        &:before, &:after {
            top: 10px;
            left: -19px;
            margin: 0;
            border-top: 10px solid transparent;
            border-bottom: 10px solid transparent;
            border-right: 20px solid @white;
        }

        &:after {
            left: -20px;
            border-right: 20px solid @gray;
        }
    }
}