form .input-group-text[required]:before,
form .form-label[required]:before {
    content: "*";
    color: var(--bs-danger);
}

/* Toast样式 */
.toast-container {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 1050;
}

/* 加载中按钮 */
.btn-loading {
    position: relative;
    cursor: wait;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.btn-spinner-container {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    color: inherit;
}

.btn-spinner {
    display: inline-block;
    width: 1em;
    height: 1em;
    border: 0.2em solid rgba(0, 0, 0, 0.1);
    border-radius: 50%;
    border-top-color: currentColor;
    animation: btn-spinner 0.8s linear infinite;
}

.icon{
    fill:currentColor;
    width: 1em;
    height: 1em;
    display: inline-block;
}

@keyframes btn-spinner {
    to {
        transform: rotate(360deg);
    }
}