.overlay {
    position: fixed;
    display: block;
    z-index: var(--st-overlay-z-index);

    left: 0;
    top: 0;
    width: 100%;
    height: 100%;

    background-color: var(--st-overlay-color);
    opacity: 1;

    transition: var(--st-overlay-transition);
    perspective: var(--st-overlay-perspective);

    &.overlayHidden {
        opacity: 0;
        transition: var(--st-overlay-transition);
    }
}

.modal {
    position: absolute;
    overflow: hidden;
    display: block;
    z-index: calc(var(--st-overlay-z-index) + 1);

    min-width: var(--st-modal-minWidth);

    transform: var(--st-modal-transformVisible);
    transition: var(--st-modal-transition);

    left: 50%;
    top: 50%;

    border: var(--st-modal-border);
    border-radius: var(--st-modal-borderRadius);
    box-shadow: var(--st-modal-boxShadow);

    background-color: var(--st-modal-backgroundColor);
    opacity: 1;

    &.modalHidden {
        opacity: 0;
        transform: var(--st-modal-transformHidden);
    }
}

.modalBody {
    position: relative;
    max-height: var(--st-dialog-maxContentHeight);
    overflow-y: auto;
}

.modalTitle {
    text-transform: uppercase;
    font-size: 80%;
    font-weight: bold;
    padding: var(--st-dialog-padding) var(--st-dialog-padding) calc(var(--st-dialog-padding) / 2)
        var(--st-dialog-padding);
    color: var(--st-modal-titleTextColor);
    border-bottom: solid 1px var(--st-modal-secondColor);
    margin: 0;
}

.modalContent {
    padding: calc(var(--st-dialog-padding) / 2) var(--st-dialog-padding);
    color: var(--st-dialog-contentColor);
}

.promtInput {
    width: 100%;
    padding: var(--st-input-padding);
    border: var(--st-input-border);
    border-radius: var(--st-input-borderRadius);
}

.promtErrorInput {
    composes: promtInput;
    border-color: var(--st-button-dangerColor);
    box-shadow: 0 0 3px var(--st-button-dangerColor);
}

.promtErrorText {
    color: var(--st-button-dangerColor);
    font-size: 80%;
    font-style: italic;
}

.modalButtonPlace {
    display: flex;
    justify-content: flex-end;

    position: relative;
    overflow: hidden;

    padding: calc(var(--st-dialog-padding) / 2) var(--st-dialog-padding);

    background-color: var(--st-modal-secondColor);

    > button {
        margin-left: 1rem;
    }
}

.modalCloseIcon {
    border: none;
    background: none;
    display: block;
    width: 15px;
    height: 15px;
    padding: 0;
    overflow: hidden;

    position: absolute;
    right: var(--st-dialog-padding);
    top: var(--st-dialog-padding);
    cursor: pointer;

    svg {
        width: 15px;
        height: 15px;

        fill: var(--st-modal-titleTextColor);
    }
}

.dialog {
    width: var(--st-dialog-baseWidth);
    max-width: var(--st-dialog-maxWidth);
}

.staticDialog {
    width: 0;
    height: 0;
    z-index: -1;
}

.alert {
    composes: dialog;
}
