:root {
    --cma-primary: #56929d;
    --cma-secondary: #25475c;
    --cma-bg: #fff;
    --cma-border: #d5d8dc;
}

/* Caricamento */
.loading-icon {
    display: none;
	position:relative;
	width:64px;
	height:64px;
	margin:auto;
	transform:scale(0.6);
    -o-transform:scale(0.6);
    -ms-transform:scale(0.6);
    -webkit-transform:scale(0.6);
    -moz-transform:scale(0.6);
}

    .loading .loading-icon {
        display: block;
    }

    /* Eccezioni */
    .loading > *:not(.loading-icon):not(.show-on-loading) {
        display: none;
    }

    /* Spinner sulle select in caricamento */
    select.loading {
        background-image: url('../img/loading.gif');
        background-size: 18px 18px;
        background-repeat: no-repeat;
        background-position: right 24px center;
        opacity: 0.6;
        pointer-events: none;
    }

    /* Spinner sui submit in caricamento */
    button.loading {
        display: block;
        cursor: default;
        background-image: url(../img/loading-white.gif);
        background-position: right 10px center;
        background-repeat: no-repeat;
        background-size: auto 50%;
        background-color: var(--cma-secondary);
        opacity: 0.7;
    }

/* Notifiche */
.cma-pending {
    color: #d39900;
    background: #fff3cd;
    padding: 12px;
    border-radius: 4px;
    margin-top: 10px;
    font-size: 1em;
    text-align: center;
}

.cma-info {
    color: #0c5460;
    background: #d1ecf1;
    padding: 12px;
    border-radius: 4px;
    margin-top: 10px;
    font-size: 1em;
    text-align: center;
}

.cma-success {
    color: #2e7d32;
    background: #d4edda;
    padding: 12px;
    border-radius: 4px;
    margin-top: 10px;
    font-size: 1em;
    text-align: center;
}

.cma-error {
    color: #cf2e2e;
    background: #ffe2d4;
    padding: 12px;
    border-radius: 4px;
    margin-top: 10px;
    font-size: 1em;
    text-align: center;
}

/* Filtri */
.cma-filtri-container {
    display: flex;
    flex-direction: column;
    gap: 16px;
    margin-bottom: 32px;
}

/* Autocomplete prestazioni: tendina sovrapposta e pulsante di pulizia */
.cma-prestazioni-search-wrapper {
    position: relative;
    width: 100%;
}

.cma-prestazioni-search {
    width: 100%;
    box-sizing: border-box;
    padding-right: 36px; /* spazio per la X */
}

.cma-prest-clear {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    border: none;
    background: transparent;
    font-size: 18px;
    line-height: 1;
    color: var(--cma-secondary);
    cursor: pointer;
    display: none;
    padding: 4px;
}

.cma-prestazioni-search-wrapper.has-value .cma-prest-clear {
    display: block;
}

.cma-prestazioni-suggestions {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 10000;
    background: var(--cma-bg);
    border: 1px solid var(--cma-border);
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    list-style: none;
    margin: 0;
    padding: 6px 0;
    max-height: 260px;
    overflow-y: auto;
    border-radius: 6px;
}

/* Loading state for suggestions */
.cma-prestazioni-suggestions.loading {
    height: 48px;
    background-image: url(../img/loading.gif);
    background-repeat: no-repeat;
    background-position: center;
    background-size: auto 50%;
}

.cma-prestazioni-suggestions li {
    padding: 8px 12px;
    cursor: pointer;
    color: var(--cma-secondary);
}

.cma-prestazioni-suggestions li.cma-prest-suggestion:hover {
    background: #f5f8fa;
}

/* Nascondi la tendina quando aria-hidden è true */
.cma-prestazioni-suggestions[aria-hidden="true"] {
    display: none;
}

.cma-prestazioni-suggestions li.highlighted {
    background: #eaf6f8;
}

.cma-prestazioni-suggestions li.cma-no-results {
    color: #666;
    cursor: default;
}

/* Lista prestazioni */
.cma-prestazioni-container {
    display: flex;
    flex-wrap: wrap;
    gap: 24px;
    margin: 24px 0;
    justify-content: flex-start;
}

    .cma-prestazione-box {
        background: var(--cma-bg);
        border: 2px solid var(--cma-border);
        padding: 18px 20px 16px 20px;
        width: 100%;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        font-size: 16px;
    }

        .cma-prestazione-box:hover {
            border-color: var(--cma-primary);
        }

            .cma-prestazione-meta {
                display: flex;
                align-items: flex-start;
                justify-content: space-between;
                margin-bottom: 8px;
                gap: 8px;
            }

                .cma-prestazione-meta > p {
                    margin: 0;
                }

            .cma-prestazione-titolo {
                font-size: 1.25em;
                font-weight: 600;
                margin-bottom: 8px;
                color: var(--cma-secondary);
            }

            .cma-prestazione-descrizione {
                font-size: 0.9em;
                color: var(--cma-secondary);
            }
            
            .cma-prestazione-categorie,
            .cma-prestazione-tempo,
            .cma-prestazione-sedi,
            .cma-prestazione-medici {
                color: var(--cma-primary);
                font-size: 1em;
                margin-bottom: 0px;
            }

                .cma-prestazione-categorie .cma-categoria,
                .cma-prestazione-sedi .cma-sede,
                .cma-prestazione-medici .cma-medico {
                    cursor: pointer;
                }

                
                    .cma-prestazioni-container .cma-prestazione-categorie .cma-categoria:hover,
                    .cma-prestazioni-container .cma-prestazione-sedi .cma-sede:hover,
                    .cma-prestazioni-container .cma-prestazione-medici .cma-medico:hover {
                        color: var(--cma-secondary);
                    }

                    .cma-prestazioni-list.no-filter-categorie .cma-prestazioni-container .cma-prestazione-categorie .cma-categoria:hover,
                    .cma-prestazioni-list.no-filter-sedi .cma-prestazioni-container .cma-prestazione-sedi .cma-sede:hover,
                    .cma-prestazioni-list.no-filter-medici .cma-prestazioni-container .cma-prestazione-medici .cma-medico:hover {
                        color: var(--cma-primary);
                        cursor: default;
                    }

                .cma-prestazione-categorie i,
                .cma-prestazione-tempo i,
                .cma-prestazione-sedi i,
                .cma-prestazione-medici i {
                    margin-right: 4px;
                    color: var(--cma-secondary);
                }

            .cma-prestazione-actions {
                display: flex;
                justify-content: space-between;
                align-items: center;
                margin-top: 12px;
            }

                .cma-prestazione-costo {
                    margin: 0;
                }

                    .cma-prestazione-costo > span {
                        font-size: 1.5em;
                        font-weight: 600;
                    }

                .cma-prestazione-prenota {
                    background: var(--cma-primary);
                    color: #fff;
                    border: none;
                    padding: 7px 22px;
                    font-size: 1.1em;
                    cursor: pointer;
                    transition: background 0.2s;
                    font-weight: 600;
                }

                .cma-prestazione-prenota:hover {
                    background: var(--cma-secondary);
                }

/* Paginatore */
.cma-pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 4px;
}

    .cma-pagination .cma-page-btn {
        color: #FFF;
    }

        .cma-pagination .cma-page-btn.active,
        .cma-pagination .cma-page-btn:hover {
            color: #FFF;
            background-color: var(--cma-primary);
        }

/* Popup prenotazione */
.cma-popup {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(38, 56, 70, 0.45);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .cma-popup-close {
        position: absolute;
        top: 4px;
        right: 4px;
        background: none;
        border: none;
        font-size: 2em;
        line-height: 1;
        color: var(--cma-secondary);
        cursor: pointer;
        opacity: 0.7;
        transition: opacity 0.2s;
        z-index: 2;
    }
        .cma-popup-close:hover {
            opacity: 1;
        }

    .cma-popup-content {
        background: var(--cma-bg);
        border: 2px solid var(--cma-border);
        box-shadow: 0 8px 32px rgba(38,56,70,0.15);
        padding: 32px 28px 24px 28px;
        min-width: 340px;
        max-width: 420px;
        width: 100%;
        position: relative;
        display: flex;
        flex-direction: column;
        gap: 18px;
        max-height: 80vh;      /* Limite massimo in altezza */
        overflow-y: auto;      /* Scroll verticale */
    }

        .cma-popup-content .cma-prestazione-form {
            display: flex;
            flex-direction: column;
            gap: 16px;
            margin-top: 16px;
        } 

        .cma-popup-content .cma-prestazione-form .cma-prestazione-sedi,
        .cma-popup-content .cma-prestazione-form .cma-prestazione-medici  {
            display: flex;
            align-items: center;
            gap: 4px;
        }

            .cma-popup-content .cma-prestazione-form .cma-prestazione-sedi i,
            .cma-popup-content .cma-prestazione-form .cma-prestazione-medici i {
                width: 24px;
                text-align: center;
            } 

            .cma-popup-content .cma-prestazione-form select[disabled] {
                color: var(--cma-primary);
            }

            .cma-popup-content .cma-prestazione-form .cma-prestazione-verifica[disabled] {
                opacity: 0.5;
            }

        .cma-popup-content .cma-popup-help {
            margin-top: 24px;
            margin-bottom: 0;
        }

@media (max-width: 600px) {
    .cma-popup-content {
        min-width: 90vw;
        max-width: 98vw;
        padding: 18px 8px 16px 8px;
    }
}

/* Calendario disponibilità */
.cma-calendario-disponibilita {
    margin-top: 10px;
    background: #fff;
    border: 1px solid #d5d8dc;
    padding: 18px 20px;
    border-radius: 6px;
    box-shadow: 0 2px 12px rgba(38,56,70,0.07);
}

    .cma-calendario-header {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        justify-content: space-between;
        border-bottom: 1px solid #d5d8dc;
        margin-bottom: 16px;
        padding-bottom: 8px;
    }

        .cma-calendario-header > p {
            margin-bottom: 0;
            color: var(--cma-primary);
            width: 100%;
        }

            .cma-calendario-header > p i {
                color: var(--cma-secondary);
            }

        .cma-calendario-header p.cma-calendario-sede,
        .cma-calendario-header p.cma-calendario-costo {
            font-size: 1.25em;
        }

        .cma-calendario-header p.cma-calendario-tempo,
        .cma-calendario-header p.cma-calendario-costo {
            width: auto;
        }

        .cma-calendario-header p.cma-calendario-costo {
            color: var(--cma-secondary);
        }


    .cma-calendario-date-nav {
        display: flex;
        justify-content: space-between;
        align-items: center;
        flex-wrap: nowrap;
        margin-bottom: 8px;
    }

        .cma-calendario-date-nav .cma-calendario-prev,
        .cma-calendario-date-nav .cma-calendario-next {
            width: 18px;
            text-align: center;
        }

        .disabled .cma-calendario-date-nav .cma-calendario-prev, .disabled .cma-calendario-date-nav .cma-calendario-next {
            cursor: not-allowed;
        }

        .cma-calendario-date-nav .cma-calendario-prev.disabled, .cma-calendario-date-nav .cma-calendario-next.disabled {
            visibility: hidden;
        }

    .cma-calendario-day {
        display: none;
        padding: 10px 0;
    }

        .cma-calendario-day.active {
            display: block;
        }

    .cma-calendario-orari {
        display: grid;
        grid-template-columns: repeat(5, 1fr);
        gap: 6px;
        margin-top: 6px;
        font-size: 0.8em;
    }

        .cma-orario-disponibile {
            padding: 6px 8px;
            background-color: #56929d;
            color: #fff;
            border-radius: 4px;
            text-decoration: none;
            font-weight: 500;
            transition: background 0.2s;
            text-align: center;
            cursor: pointer;
            border: none;
            outline: none;
        }

        .cma-orario-disponibile.selected,
        .cma-orario-disponibile:hover {
            background-color: #25475c;
        }

        .disabled .cma-orario-disponibile:not(.selected):hover {
            cursor: not-allowed;
            background-color: var(--cma-primary);
            color: #fff;
        }

    .cma-success {
        color: #2e7d32;
        background: #d4edda;
        padding: 12px;
        border-radius: 4px;
        margin-top: 10px;
        font-size: 1em;
        text-align: center;
    }

    .cma-error {
        color: #cf2e2e;
        background: #ffe2d4;
        padding: 12px;
        border-radius: 4px;
        margin-top: 10px;
        font-size: 1em;
        text-align: center;
    }

    .cma-calendario-prenota button[type="submit"] {
        width: 100%;
    }

        .cma-calendario-prenota button[type="submit"][disabled] {
            display: none;
        }

        .cma-calendario-prenota button[type="submit"][disabled].loading {
            display: block;
        }
    
/* Card Prenotazione */
.cma-prenotazioni-container .cma-prenotazione  {
    margin-bottom: 24px;
}

.cma-prenotazione {
    background: var(--cma-bg);
    border: 2px solid var(--cma-border);
    padding: 18px 20px 16px 20px;
    width: 100%;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    font-size: 16px;
}

    .cma-prenotazione .cma-prenotazione-titolo {
        margin-bottom: 16px;
        padding-bottom: 16px;
        border-bottom: 1px solid var(--cma-border);
        font-size: 28px;
    }

    .cma-prenotazione-details {
        display: grid;
        grid-template-columns: 1fr;
    }

        @media (min-width: 768px) {
            .cma-prenotazione-details {
                grid-template-columns: repeat(2, 2fr) 1fr;
            }
        }

    .cma-prenotazione-details .cma-prestazione-details > *,
    .cma-prenotazione-details .cma-prenotazione-datetime > * {
        display: flex;
        align-items: center;
        gap: 6px;
        margin-bottom: 8px;
        color: var(--cma-primary);
    }

        .cma-prenotazione-details .cma-prestazione-details > *:last-child,
        .cma-prenotazione-details .cma-prenotazione-datetime > *:last-child {
            margin-bottom: 0;
        }

        .cma-prenotazione-details i {
            width: 24px;
            text-align: center;
            margin-right: 0;
            color: var(--cma-secondary);
        }

        .cma-prenotazione-details .cma-prestazione-details .cma-prestazione-sedi {
            align-items: flex-start;
        }

            .cma-prenotazione-details .cma-prestazione-details .cma-prestazione-sedi i {
                margin-top: 2px;
            }

                .cma-prenotazione-details .cma-prestazione-details .cma-prestazione-sedi .cma-prestazione-sede {
                    display: flex;
                    flex-direction: column;
                    line-height: 1.3;
                }

                    .cma-prenotazione-details .cma-prestazione-details .cma-prestazione-sedi .cma-prestazione-sede .cma-prestazione-sede-indirizzo {
                        font-size: 0.9em;
                        color: var(--cma-secondary);
                    }

        .cma-prenotazione-details .cma-prestazione-costo {
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            justify-content: center;
        }

            .cma-prenotazione-details .cma-prestazione-costo .cma-prenotazione-marca {
                font-size: 0.75em;
                color: var(--cma-primary);
            }   

        .cma-prenotazione-stato {
            display: grid;
            margin-top: 16px;
            padding-top: 16px;
            border-top: 1px solid #eee;
            grid-template-columns: 1fr;
        }

            @media (min-width: 768px) {
                .cma-prenotazione-stato {
                    grid-template-columns: repeat(2, 2fr) 1fr;
                }
            }

            .cma-stato {
                display: flex;
                flex-direction: column;
                margin-bottom: 0;
            }

                .cma-stato label {
                    font-weight: 600;
                }

                .cma-stato.confirmed span,
                .cma-stato.completato span {
                    color: #2e7d32;
                }

                .cma-stato.pending span,
                .cma-stato.in_sede span {
                    color: #ffc107;
                }

                .cma-stato.cancelled span,
                .cma-stato.in_attesa span {
                    color: #d32f2f;
                }

    .cma-prenotazione .cma-prenotazione-referti {
        margin-top: 16px;
        padding-top: 16px;
        border-top: 1px solid var(--cma-border);
    }

        .cma-prenotazione .cma-prenotazione-referti .cma-prenotazione-referto {
            padding: 8px 0;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
        }

/* Form */
.cma-form .form-row {
    display: flex;
    gap: 16px;
    margin-bottom: 16px;
}

    .cma-form .form-row > * {
        margin-bottom: 0;
    }

    .cma-form .form-row > .form-grow {
        flex-grow: 1;
    }

    .cma-form .form-row select {
        padding-top: 14px !important;
        padding-bottom: 14px !important;
        height: auto;
    }

    .cma-form .form-row.form-center {
        justify-content: center;
    }

/* Metodi di pagamento */
.cma-payment-methods {
    margin: 24px 0;
    padding: 20px;
    background-color: #fafafa;
}

    .cma-payment-methods label {
        display: flex;
        gap: 8px;
        align-items: center;
        flex-wrap: wrap;
    }

     .cma-payment-methods .cma-payment-icons {
        display: inline-flex;
        gap: 8px;
        align-items: center;
    }

        .cma-payment-methods .cma-payment-icons > * {
            width: 32px;
            height: auto;
        }

/* Riepilogo pagamento */
.cma-voci-pagamento {
    margin: 24px 0;
    padding: 20px;
    background-color: #fafafa;
}

    .voce-pagamento {
        display: flex;
        justify-content: space-between;
    }

    .voce-pagamento.voce-pagamento-totale {
        font-size: 1.3em;
        font-weight: 600;
        margin-top: 8px;
        padding-top: 8px;
        border-top: 1px solid var(--cma-border);
    }

        .voce-pagamento p {
            margin: 0;
        }

        .voce-pagamento p.voce-pagamento-titolo {
            color: var(--cma-primary);
        }

            .voce-pagamento.voce-pagamento-totale p.voce-pagamento-titolo {
                color: var(--cma-secondary);
            }

button[name="cma-checkout-submit"] {
    padding: 14px 40px;
}

.cma-checkout-actions {
    display: flex;
    justify-content: center;
    margin-top: 24px;
    gap: 16px;
}

.cma-btn-torna-checkout {
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Pagina Account */
@media (min-width: 768px) {
    .cma-not-logged-in {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 16px;
    }

        .cma-not-logged-in > p {
            grid-column: 1 / -1;
        }
}

.cma-get-prenotazione, .cma-login-form {
    background: var(--cma-bg);
    border: 2px solid var(--cma-border);
    padding: 18px 20px 16px 20px;
    width: 100%;
    font-size: 16px;
    margin-bottom: 32px;
}

.cma-result-container:not(:empty) {
    margin-bottom: 16px;
}

    .cma-result-container > p {
        margin-bottom: 0;
    }