

.appointment-booking-fields {
    margin: 1em auto;
    padding: 1em;
    border: 1px solid #ddd;
    border-radius: 4px;
}
.appointment-booking-fields .loading {
    margin-top:1em;
}   
.appointment-booking-fields h3 {
    margin-bottom: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid #ddd;
    display: none;
}

.appointment-booking-fields .form-row {
 
    transition: all 0.3s ease;
}
.not-mandatory-text {
    margin-bottom: 1em;
}
.appointment-date-row,
.appointment-time-row {
    display: none; /* Initial state */
    margin-top: 20px;
}

.appointment-date-row.show,
.appointment-time-row.show {
    display: block;
}

.appointment-booking-fields label {
    display: block;
    margin-bottom: 5px;
    font-weight: bold;
}

.appointment-booking-fields select,
.appointment-booking-fields input[type="text"] {
    width: 100%;
    padding: 8px;
    border: 1px solid #ddd;
    border-radius: 4px;
}

.appointment-booking-fields select:disabled {
    background: #f5f5f5;
    cursor: not-allowed;
}

/* Flatpickr customization */
.flatpickr-day.disabled,
.flatpickr-day.disabled:hover {
    color: #ccc !important;
    background-color: #f5f5f5 !important;
    cursor: not-allowed !important;
    text-decoration: line-through;
}

.flatpickr-day.today.disabled {
    border-color: #ccc;
}

.appointment-location-row ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5em;
}

.appointment-location-row ul li {
    flex: 1;
    cursor: pointer;
    padding: 0.4em 0.8em;
    background: #f8f8f8;
    border: 1px solid #ddd;
    border-radius: 4px;
    transition: all 0.3s ease;
    text-align: center;

    display: flex
;
    align-items: center;
    justify-content: center;
}

.appointment-location-row ul li:hover {
    background: #f0f0f0;
    border-color: #999;
}

.appointment-location-row ul li.active {
    background: #2271b1;
    border-color: #2271b1;
    color: white;
}



.appointment-location-row ul li:last-of-type {
display: none;
}

.appointment-location-row ul li a {
    display: block;
    text-decoration: none;
    color: inherit;
}

.appointment-location-row ul li.out-of-stock {
    opacity: 0.6;
    cursor: not-allowed;
    background: #f1f1f1;
    border-color: #ddd;
}

.appointment-location-row ul li.out-of-stock a {
    pointer-events: none;
}

.appointment-location-row ul li .stock-status {
    display: inline-block;
    margin-left: 5px;
    padding: 2px 5px;
    font-size: 0.8em;
    color: #f44336;
    border:1px solid #f44336;
    border-radius: 3px;
}

.appointment-time-list {
    list-style: none;
    padding: 0;
    margin: 10px 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 10px;
}

.appointment-time-list li {
    margin: 0;
}

.appointment-time-list .time-slot {
    display: block;
    padding: 8px 12px;
    text-align: center;
    background: #f8f8f8;
    border: 1px solid #ddd;
    border-radius: 4px;
    text-decoration: none;
    color: #333;
    transition: all 0.2s ease;
}

.appointment-time-list li.active .time-slot {
    background: #2271b1;
    border-color: #2271b1;
    color: white;
}

.appointment-time-list .time-slot:hover {
    background: #eee;
    border-color: #999;
}

.appointment-time-list li.loading,
.appointment-time-list li.error,
.appointment-time-list li.no-slots {
    grid-column: 1 / -1;
    padding: 15px;
    text-align: center;
    background: #f8f8f8;
    border: 1px solid #ddd;
    border-radius: 4px;
}

.appointment-time-list li.error {
    color: #dc3232;
    background: #fef1f1;
    border-color: #dc3232;
}

.appointment-details {
    margin-top: 8px;
    font-size: 0.9em;
    line-height: 1.4;
}

.appointment-details > div {
    margin-bottom: 4px;
}

.appointment-details .label {
    font-weight: 600;
    color: #23282d;
    margin-right: 5px;
}

.appointment-details .value {
    color: #515151;
}

/* Mini cart specific styles */
.appointment-details.mini-cart {
    margin-top: 4px;
    font-size: 0.85em;
}

.appointment-details.mini-cart > div {
    margin-bottom: 2px;
}

.appointment-details.mini-cart small {
    color: #666;
}

/* Last item no margin */
.appointment-details > div:last-child {
    margin-bottom: 0;
}

/* Mini cart appointment details */
.appointment-details-mini {
    font-size: 0.85em;
    margin-top: 5px;
    color: #666;
}

.appointment-details-mini div {
    margin-bottom: 2px;
}

.appointment-details-mini strong {
    color: #333;
    margin-right: 3px;
}

.appointment-details-mini small {
    display: block;
}

/* Hide quantity selector for appointment products */
.appointment-product .quantity {
    display: none;
}

/* Ensure details are visible in mini cart */
.woocommerce-mini-cart-item .appointment-details-mini {
    display: block !important;
    clear: both !important;
}

/* Add this to the existing CSS */
.appointment-product .quantity {
    transition: opacity 0.3s ease, visibility 0.3s ease;
}

.appointment-product .quantity.hidden {
    opacity: 0;
    visibility: hidden;
    height: 0;
    margin: 0;
    overflow: hidden;
}

/* Acknowledgment checkbox styling */
.appointment-acknowledgment-row {
    margin-top: 1em;
}

.appointment-acknowledgment-label {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 0.9em;
    line-height: 1.4;
}

.appointment-acknowledgment-label input[type="checkbox"] {
 
    display: block;
    min-width: 1.25em;

    margin: 0;
}

@media screen and (max-width: 767px) {
    .appointment-acknowledgment-label input[type="checkbox"] {
       
    min-width: 2em;
    }
}
.appointment-acknowledgment-label .required {
    color: #e2401c;
}

/* Available quantity display */
.appointment-quantity-display {
margin-top:1.5em;
}
.available-quantity { 
}

#location-available-quantity {
    display: inline-block;
    min-width: 20px;
    text-align: center;
}

/* Fully booked time slot styling */
.appointment-time-list li.fully-booked {
    position: relative;
    opacity: 0.7;
}

.appointment-time-list li.fully-booked .time-slot {
    background-color: #ffeeee;
    border-color: #ffcccc;
    color: #999;
    cursor: not-allowed;
    text-decoration: line-through;
}



/* Remaining slots indicator */
.remaining-slots {
    font-size: 0.85em;
    color: #666;
    margin-left: 5px;
}

.appointment-time-list li.active .time-slot .remaining-slots {
    color: rgba(255, 255, 255, 0.85);
}