/* #region Labeled Input */

.labeled-input input,
.labeled-input input.form-control,
.labeled-input select,
.labeled-input select.form-select {
    --bs-border-width: 2px;
    box-shadow: none !important;
    height: 42px;
}

.labeled-input {
    --activeLabelLeft: 8px;
    --activeLabelTop: -7px;
    --activePadding: 0 6px;
    --labelSize: 12px;

    position: relative;
}

.labeled-input input::placeholder {
    font-size: 12px;
    color: var(--bs-gray-600);
}

.labeled-input::before {
    content: attr(data-label);
    position: absolute;
    transition: all 0.3s ease-in-out;
    font-size: var(--labelSize);
    line-height: var(--labelSize);
}

.labeled-input:has(input:not([placeholder]))::before,
.labeled-input:has(select:not(.filled))::before {
    --labelSize: 14px;
    left: 12px;
    top: 14px;
    color: grey;
}

.labeled-input:has(input:focus)::before,
.labeled-input:has(input[placeholder])::before,
.labeled-input:has(input.filled)::before,
.labeled-input:has(select.filled)::before {
    left: var(--activeLabelLeft);
    top: calc(var(--labelSize) / -2);

    background: var(--bs-body-bg);
    padding: var(--activePadding);
}

.labeled-input:has(input:focus)::before,
.labeled-input:has(input[placeholder]:focus)::before,
.labeled-input:has(select:focus)::before {
    color: var(--bs-primary);
}

/* #endregion */

/* #region Radio Input */

.radio-h,
.radio-v {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.radio-h label,
.radio-v label {
    font-size: 14px;
    line-height: 14px;
    transition: all 0.3s ease-in-out;
}

.radio-h .radio-wrapper:has(input[type='radio']:checked) label,
.radio-v .radio-wrapper:has(input[type='radio']:checked) label {
    color: var(--bs-primary);
    font-weight: bold;
}

.radio-h {
    align-items: center;
}

.radio-v {
    flex-direction: column;
    justify-content: center;
}

.radio-h .radio-wrapper,
.radio-v .radio-wrapper {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* #endregion */