label.required::after {
    content: ' *';
    color: #dc3545;
}

/* Alineación vertical de widgets en filas Bootstrap (align-items-end).
   :has(.form-field .form-text) limita el efecto a filas que contienen al menos
   un campo con help text, para no agregar padding vacío en filas sin help.
   :only-child excluye columnas con múltiples campos apilados.
   :not(.form-field-sm) excluye filtros (compact_small). */
.align-items-end:has(.form-field .form-text) [class*="col"] > .form-field:only-child:not(.form-field-sm) {
    position: relative;
    padding-bottom: 1.6rem;
}
.align-items-end:has(.form-field .form-text) [class*="col"] > .form-field:only-child:not(.form-field-sm) .form-text {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    margin-top: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.js-datepicker{
    display: inline-flex;
}

.form-control[type="date"]{
    width: 100%;
}
.form-control[type="time"]{
    width: 100%;
}

.bootstrap-select:not([class*="col-"]):not([class*="form-control"]):not(.input-group-btn){
    width: auto;
}
