/*
 * Carrello: stati del pulsante "Aggiungi al carrello", messaggi del checkout e blocco login/registrazione.
 * Caricato da site/head.php per tutti i temi. Colori dalle variabili --modern-* (famiglia moderna e Aurora,
 * che le rimappa in css/checkout.css), con fallback neutri per i temi che non le definiscono.
 */

/* ---- Pulsante aggiungi al carrello: loader / aggiunto / errore (stati gestiti da js/cart-ux.js) ---- */
a[id^="ref-cart-"].is-loading,
button[id^="ref-cart-"].is-loading,
a[id^="ref-cart-"].is-added,
button[id^="ref-cart-"].is-added,
a[id^="ref-cart-"].is-failed,
button[id^="ref-cart-"].is-failed {
    position: relative;
    pointer-events: none;
    color: transparent !important;
    opacity: 1;
}

a[id^="ref-cart-"].is-loading *,
button[id^="ref-cart-"].is-loading *,
a[id^="ref-cart-"].is-added *,
button[id^="ref-cart-"].is-added *,
a[id^="ref-cart-"].is-failed *,
button[id^="ref-cart-"].is-failed * {
    visibility: hidden;
}

a[id^="ref-cart-"].is-loading::after,
button[id^="ref-cart-"].is-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    right: auto;
    width: 18px;
    height: 18px;
    margin: -9px 0 0 -9px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #fff;
    border-left-color: rgba(255, 255, 255, 0.4);
    animation: kv-cart-spin 0.7s linear infinite;
    box-sizing: border-box;
    visibility: visible;
}

a[id^="ref-cart-"].is-added,
button[id^="ref-cart-"].is-added {
    background: var(--modern-success, #16a34a) !important;
    border-color: var(--modern-success, #16a34a) !important;
}

a[id^="ref-cart-"].is-failed,
button[id^="ref-cart-"].is-failed {
    background: var(--modern-danger, #dc2626) !important;
    border-color: var(--modern-danger, #dc2626) !important;
}

a[id^="ref-cart-"].is-added::after,
button[id^="ref-cart-"].is-added::after,
a[id^="ref-cart-"].is-failed::after,
button[id^="ref-cart-"].is-failed::after {
    content: '\f00c';
    position: absolute;
    top: 50%;
    left: 50%;
    right: auto;
    width: auto;
    height: auto;
    margin: 0;
    border: 0;
    transform: translate(-50%, -50%);
    font-family: FontAwesome;
    font-size: 1.05em;
    line-height: 1;
    color: #fff;
    animation: kv-cart-pop 0.25s ease-out;
    visibility: visible;
}

a[id^="ref-cart-"].is-failed::after,
button[id^="ref-cart-"].is-failed::after {
    content: '\f00d';
}

@keyframes kv-cart-spin {
    to {
        transform: rotate(360deg);
    }
}

@keyframes kv-cart-pop {
    from {
        transform: translate(-50%, -50%) scale(0.4);
        opacity: 0;
    }
    to {
        transform: translate(-50%, -50%) scale(1);
        opacity: 1;
    }
}

/* ---- Messaggi del checkout (errori/conferme in sessione: corriere mancante, indirizzo, ecc.) ---- */
.kv-checkout-messages {
    margin: 0 0 1.25rem;
}

.kv-checkout-messages .alert {
    position: relative;
    margin: 0 0 0.75rem;
    padding: 1rem 3rem 1rem 1.25rem;
    border-radius: 14px;
    border: 1px solid transparent;
    font-size: 0.95rem;
    line-height: 1.5;
}

.kv-checkout-messages .alert:last-child {
    margin-bottom: 0;
}

.kv-checkout-messages .alert-danger {
    background: #fef2f2;
    border-color: #fecaca;
    color: #991b1b;
}

.kv-checkout-messages .alert-success {
    background: #f0fdf4;
    border-color: #bbf7d0;
    color: #166534;
}

.kv-checkout-messages .alert .close {
    position: absolute;
    top: 0.85rem;
    right: 0.9rem;
    padding: 0.2rem;
    border: 0;
    background: transparent;
    color: inherit;
    opacity: 0.6;
    cursor: pointer;
}

.kv-checkout-messages .alert .close:hover {
    opacity: 1;
}

/* ---- Login / registrazione ---- */
/* .auth-card ha display:flex nei temi: senza questa regola l'attributo hidden non nasconde nulla
   (pannello "Hai perso la password?" e tab di registrazione non attive sempre visibili). */
.auth-card[hidden] {
    display: none !important;
}

/* Blocco login / registrazione nel carrello (utente non loggato) */
.kv-checkout-auth {
    margin: 1.5rem 0 0;
}

.kv-checkout-auth__notice {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin: 0 0 1rem;
    padding: 0.9rem 1.15rem;
    border-radius: 14px;
    border: 1px solid var(--modern-border, rgba(15, 23, 42, 0.1));
    background: var(--modern-accent-soft, rgba(37, 99, 235, 0.08));
    color: var(--modern-text, #0f172a);
    font-weight: 600;
    line-height: 1.45;
}

.kv-checkout-auth__notice .fa {
    color: var(--modern-accent-strong, var(--modern-accent, #2563eb));
}

.kv-checkout-auth__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.25rem;
    align-items: start;
}

.kv-checkout-auth__card {
    min-width: 0;
}

.kv-checkout-auth__card .auth-card {
    height: 100%;
    margin: 0;
}

.kv-checkout-auth__card .auth-card + .auth-card {
    margin-top: 1rem;
}

.kv-checkout-auth__card h1,
.kv-checkout-auth__card .form-heading {
    margin: 0 0 1rem;
    font-size: 1.25rem;
    line-height: 1.25;
}

.kv-checkout-auth__card .form-content p,
.kv-checkout-auth__card .form-group {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin: 0 0 0.85rem;
}

.kv-checkout-auth__card input[type="text"],
.kv-checkout-auth__card input[type="email"],
.kv-checkout-auth__card input[type="password"],
.kv-checkout-auth__card input[type="username"],
.kv-checkout-auth__card input[type="tel"],
.kv-checkout-auth__card select {
    width: 100%;
    max-width: none;
}

.kv-checkout-auth__card .condition-container {
    float: none;
    width: auto;
    padding: 0;
    margin: 0.25rem 0 1rem !important;
}

.kv-checkout-auth__card .condition-container label {
    display: inline;
    font-weight: 400;
}

.kv-checkout-auth__card .condition-container .btn {
    margin-left: 0.35rem;
    padding: 0.15rem 0.6rem;
    min-height: 0;
    font-size: 0.8rem;
    vertical-align: baseline;
}

.kv-checkout-auth__card .form-hint {
    margin: 0.75rem 0 0;
    font-size: 0.85rem;
    opacity: 0.75;
}

@media (max-width: 860px) {
    .kv-checkout-auth__grid {
        grid-template-columns: minmax(0, 1fr);
    }
}
