.form-control.invalid, .form-select.invalid {
    border-color: var(--bs-form-invalid-border-color);
    padding-right: calc(1.5em + .75rem);
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right calc(.375em + .1875rem) center;
    background-size: calc(.75em + .375rem) calc(.75em + .375rem);
}

th.th-small {
    width: 4em;
}

th.th-medium {
    width: 6em;
}

.card-title {
    line-height: 1.4;
    min-height: 1.4em;
}

.address-link {
    transition: color 0.3s ease, text-decoration 0.3s ease;
    color: var(--bs-muted) !important;
}

.address-link:hover {
    color: var(--bs-primary) !important;
}

progress {
    width: 100%;
    height: 0.5em;
    border: none;
    border-radius: 0.25rem;
}

progress.half::-webkit-progress-bar {
    background-color: #e9ecef;
    border-radius: 0.25rem;
}

progress.half::-webkit-progress-value {
    background-color: #ffc107;
    border-radius: 0.25rem;
}

progress.half::-moz-progress-bar {
    background-color: #ffc107;
    border-radius: 0.25rem;
}

progress.full::-webkit-progress-bar {
    background-color: #e9ecef;
    border-radius: 0.25rem;
}

progress.full::-webkit-progress-value {
    background-color: #ff6a00;
    border-radius: 0.25rem;
}

progress.full::-moz-progress-bar {
    background-color: #ff6a00;
    border-radius: 0.25rem;
}

progress.available::-webkit-progress-value {
    background-color: #198754;
    border-radius: 0.25rem;
}

progress.available::-moz-progress-bar {
    background-color: #198754;
    border-radius: 0.25rem;
}