.msg-alert,
.alert.msg-alert {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    border-radius: 8px;
    border: 1px solid transparent;
    padding: 12px 14px;
    margin-top: 12px;
    box-shadow: 0 2px 8px rgba(15, 45, 82, 0.08);
}

.msg-alert .msg-icon {
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    margin-top: 2px;
}

.msg-alert .msg-body {
    flex: 1;
    min-width: 0;
}

.msg-alert .msg-title {
    display: block;
    font-weight: 700;
    margin-bottom: 2px;
}

.msg-alert .msg-text,
.msg-alert p {
    margin: 0;
}

.msg-alert .close,
.msg-alert .btn-close {
    color: inherit;
    opacity: .65;
}

.msg-alert .close:hover,
.msg-alert .btn-close:hover {
    opacity: 1;
}

.msg-success { background: #edf9f2; border-color: #b8e7c9; color: #1f6e43; }
.msg-error { background: #ffeff1; border-color: #f3c0c7; color: #8f2533; }
.msg-warning { background: #fff8e6; border-color: #f2dfa6; color: #8a6423; }
.msg-info { background: #edf5ff; border-color: #bfd9ff; color: #184f94; }

.validation-summary-errors,
.validation-summary-valid,
div[data-valmsg-summary="true"] {
    border-radius: 8px;
    padding: 12px 14px;
    margin: 10px 0;
}

.validation-summary-errors,
div[data-valmsg-summary="true"].validation-summary-errors {
    border: 1px solid #f3c0c7;
    background: #ffeff1;
    color: #8f2533;
}

.validation-summary-errors ul,
div[data-valmsg-summary="true"] ul {
    margin: 8px 0 0 20px;
    padding: 0;
}

.validation-summary-errors li,
div[data-valmsg-summary="true"] li {
    margin-bottom: 4px;
}

.input-validation-error,
.field-validation-error,
.has-error .form-control,
label.state-error input,
label.state-error select,
label.state-error textarea {
    border-color: #d93025 !important;
    box-shadow: 0 0 0 2px rgba(217, 48, 37, 0.15);
}

.btn,
.btn-u,
a.btn-u,
a.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 40px;
    padding: 8px 16px;
    border-radius: 8px;
    transition: all .18s ease;
}

.btn-primary,
.btn-u-primary,
.btn-u-sea,
.btn-u {
    background-color: #1d6fdc;
    border-color: #1d6fdc;
    color: #fff;
}

.btn-secondary,
.btn-default,
.btn-u-default,
.btn-outline-secondary {
    background-color: #f6f8fb;
    border: 1px solid #c6d0dc;
    color: #2d4059;
}

.btn-danger,
.btn-u-red {
    background-color: #d93025;
    border-color: #d93025;
    color: #fff;
}

.btn:hover,
.btn-u:hover,
a.btn-u:hover,
a.btn:hover { transform: translateY(-1px); }

.btn:active,
.btn-u:active { transform: translateY(0); }

.btn:focus,
.btn-u:focus,
a.btn:focus,
a.btn-u:focus {
    outline: none;
    box-shadow: 0 0 0 3px rgba(29, 111, 220, 0.25);
}

.btn[disabled],
.btn.disabled,
.btn-u[disabled],
.btn-u.disabled {
    opacity: .58;
    cursor: not-allowed;
}

.is-loading {
    position: relative;
    pointer-events: none;
    color: transparent !important;
}

.is-loading::after {
    content: "";
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255, 255, 255, 0.45);
    border-top-color: #fff;
    border-radius: 50%;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-top: -8px;
    margin-left: -8px;
    animation: spin .65s linear infinite;
}

.btn-secondary.is-loading::after,
.btn-default.is-loading::after,
.btn-u-default.is-loading::after {
    border: 2px solid rgba(45, 64, 89, 0.25);
    border-top-color: #2d4059;
}

.btn-icon,
.btn-icon-inline {
    width: 14px;
    height: 14px;
    display: inline-block;
    vertical-align: middle;
}

@keyframes spin { to { transform: rotate(360deg); } }
