/* =========================================================================
   CL Courses Carousel — widget Elementor "CL — Carosello Corsi"
   Palette: Giallo #f5c140 · Blu #0a2838 · Crema #fffef6 · Testo #000/#fff
   Mobile-first. Tap target minimo 44px, body ≥16px.
   ========================================================================= */

.cl-cc {
    --cl-cc-arrow-size: 44px;
    --cl-cc-arrow-color: #0a2838;
    --cl-cc-arrow-bg: #fffef6;
    --cl-cc-dot-color: #0a2838;
    --cl-cc-dot-color-active: #f5c140;
    --cl-cc-img-fit: cover;

    position: relative;
    width: 100%;
}

.cl-cc-swiper {
    width: 100%;
}

/* Swiper taglia le ombre delle card se l'overflow resta hidden a filo:
   un po' di padding sul contenitore le lascia respirare. */
.cl-cc .swiper {
    padding: 4px 4px 8px;
    margin: -4px -4px -8px;
}

/* ── CARD ───────────────────────────────────────────────────────────────── */
.cl-cc-card {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    background-color: #fffef6;
    border-radius: 12px;
}

.cl-cc--equal-height .swiper-slide {
    height: auto;
}

.cl-cc--equal-height .cl-cc-card-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

/* Le azioni restano ancorate in fondo anche con titoli di lunghezza diversa. */
.cl-cc--equal-height .cl-cc-card-actions {
    margin-top: auto;
}

/* ── IMMAGINE ───────────────────────────────────────────────────────────── */
.cl-cc-card-thumb {
    position: relative;
    overflow: hidden;
    line-height: 0;
}

.cl-cc-card-thumb-link {
    display: block;
    line-height: 0;
}

.cl-cc-card-img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: var(--cl-cc-img-fit);
    object-position: center;
}

/* Forme. aspect-ratio è supportato da tutti i browser target (Safari 15+). */
.cl-cc-shape--ratio-1-1   { aspect-ratio: 1 / 1; }
.cl-cc-shape--ratio-4-3   { aspect-ratio: 4 / 3; }
.cl-cc-shape--ratio-3-2   { aspect-ratio: 3 / 2; }
.cl-cc-shape--ratio-16-9  { aspect-ratio: 16 / 9; }
.cl-cc-shape--ratio-3-4   { aspect-ratio: 3 / 4; }
.cl-cc-shape--ratio-9-16  { aspect-ratio: 9 / 16; }

.cl-cc-shape--circle {
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    width: 72%;
    margin: 16px auto 0;
}

.cl-cc-shape--original .cl-cc-card-img {
    height: auto;
}

/* ── BADGE ──────────────────────────────────────────────────────────────── */
.cl-cc-card-badge {
    position: absolute;
    top: 10px;
    left: 10px;
    z-index: 2;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: 0.02em;
}

.cl-cc-card-badge--owned {
    background-color: #0a2838;
    color: #ffffff;
}

.cl-cc-card-badge--soon {
    background-color: #f5c140;
    color: #0a2838;
}

.cl-cc--circle .cl-cc-card-badge {
    top: 16px;
    left: 50%;
    transform: translateX(-50%);
}

/* ── CORPO CARD ─────────────────────────────────────────────────────────── */
.cl-cc-card-body {
    padding: 16px;
}

.cl-cc-card-title {
    margin: 0 0 8px;
    font-size: 18px;
    font-weight: 700;
    line-height: 1.25;
    color: #0a2838;
}

.cl-cc-card-title a {
    color: inherit;
    text-decoration: none;
}

.cl-cc-card-title a:hover,
.cl-cc-card-title a:focus-visible {
    text-decoration: underline;
}

/* Flusso inline, NON flex: così il prezzo segue il control "Allineamento testo"
   della card (text-align sul body) esattamente come il titolo. Con display:flex
   la posizione dipenderebbe da justify-content e il prezzo resterebbe a sinistra
   anche con la card centrata. I due prezzi si allineano già sulla baseline per
   default essendo elementi inline. */
.cl-cc-card-price {
    margin: 0 0 12px;
}

.cl-cc-card-price-old {
    margin-right: 8px;
    font-size: 15px;
    opacity: 0.65;
    text-decoration: line-through;
}

.cl-cc-card-price-now {
    font-size: 20px;
    font-weight: 800;
    color: #0a2838;
    text-decoration: none;
}

.cl-cc-card-price .woocommerce-Price-amount {
    white-space: nowrap;
}

/* ── PULSANTI ───────────────────────────────────────────────────────────── */
.cl-cc-card-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.cl-cc-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 11px 18px;
    border: 2px solid transparent;
    border-radius: 8px;
    font-size: 16px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.cl-cc-btn:focus-visible {
    outline: 3px solid #f5c140;
    outline-offset: 2px;
}

.cl-cc-btn--course {
    color: #0a2838;
    background-color: transparent;
    border-color: #0a2838;
}

.cl-cc-btn--course:hover,
.cl-cc-btn--course:focus-visible {
    color: #ffffff;
    background-color: #0a2838;
}

.cl-cc-btn--cart,
.cl-cc-btn--owned {
    color: #0a2838;
    background-color: #f5c140;
    border-color: #f5c140;
}

.cl-cc-btn--cart:hover,
.cl-cc-btn--cart:focus-visible,
.cl-cc-btn--owned:hover,
.cl-cc-btn--owned:focus-visible {
    color: #ffffff;
    background-color: #0a2838;
    border-color: #0a2838;
}

.cl-cc-btn.is-disabled {
    cursor: not-allowed;
    opacity: 0.55;
    pointer-events: none;
}

/* Bottone "Coming Soon" centralizzato (cl_render_coming_soon_button): riceve
   le classi cl-cc-btn cl-cc-btn--cart ma è un <button disabled>. */
.cl-cc-btn.cl-btn-coming-soon,
.cl-cc-card-actions button[disabled] {
    cursor: not-allowed;
    opacity: 0.6;
}

/* ── FRECCE ─────────────────────────────────────────────────────────────── */
.cl-cc-arrow {
    position: absolute;
    top: 50%;
    z-index: 5;
    display: flex;
    align-items: center;
    justify-content: center;
    width: var(--cl-cc-arrow-size);
    height: var(--cl-cc-arrow-size);
    margin: 0;
    padding: 0;
    transform: translateY(-50%);
    color: var(--cl-cc-arrow-color);
    background-color: var(--cl-cc-arrow-bg);
    border: 2px solid currentColor;
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(10, 40, 56, 0.18);
    transition: opacity 0.2s ease, background-color 0.2s ease;
}

.cl-cc-arrow svg {
    width: 55%;
    height: 55%;
}

.cl-cc-arrow--prev { left: 4px; }
.cl-cc-arrow--next { right: 4px; }

.cl-cc-arrow:focus-visible {
    outline: 3px solid #f5c140;
    outline-offset: 2px;
}

/* Swiper marca le frecce come disabilitate a fine corsa. */
.cl-cc-arrow.swiper-button-disabled {
    opacity: 0.35;
    cursor: default;
    pointer-events: none;
}

/* Frecce esterne: solo da tablet in su, altrimenti rubano larghezza utile
   alle card su mobile. */
@media (min-width: 768px) {
    .cl-cc--arrows-outside {
        padding-left: calc(var(--cl-cc-arrow-size) + 12px);
        padding-right: calc(var(--cl-cc-arrow-size) + 12px);
    }
    .cl-cc--arrows-outside .cl-cc-arrow--prev { left: 0; }
    .cl-cc--arrows-outside .cl-cc-arrow--next { right: 0; }
}

/* ── PALLINI ────────────────────────────────────────────────────────────── */
.cl-cc-pagination {
    position: static;
    margin-top: 14px;
    text-align: center;
}

.cl-cc-pagination .swiper-pagination-bullet {
    width: 10px;
    height: 10px;
    margin: 0 5px !important;
    background-color: var(--cl-cc-dot-color);
    opacity: 0.35;
    transition: opacity 0.2s ease, background-color 0.2s ease;
}

.cl-cc-pagination .swiper-pagination-bullet-active {
    background-color: var(--cl-cc-dot-color-active);
    opacity: 1;
}

/* Area cliccabile ≥44px senza ingrandire il pallino visivo. */
.cl-cc-pagination .swiper-pagination-bullet::before {
    content: "";
    position: absolute;
    inset: -17px;
}

.cl-cc-pagination .swiper-pagination-bullet {
    position: relative;
}

/* ── SCROLLBAR ──────────────────────────────────────────────────────────── */
.cl-cc-scrollbar.swiper-scrollbar {
    position: static;
    width: 100%;
    height: 6px;
    margin-top: 16px;
    background-color: rgba(10, 40, 56, 0.12);
}

.cl-cc-scrollbar .swiper-scrollbar-drag {
    background-color: #0a2838;
}

/* ── FALLBACK SENZA SWIPER ──────────────────────────────────────────────── */
/* Se l'handle 'swiper' di Elementor non è disponibile, le slide restano su una
   riga scrollabile con snap: il widget perde frecce e autoplay ma resta usabile. */
.cl-cc--no-swiper .cl-cc-wrapper {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 8px;
}

.cl-cc--no-swiper .cl-cc-slide {
    flex: 0 0 82%;
    scroll-snap-align: start;
}

.cl-cc--no-swiper .cl-cc-arrow,
.cl-cc--no-swiper .cl-cc-pagination,
.cl-cc--no-swiper .cl-cc-scrollbar {
    display: none;
}

@media (min-width: 768px) {
    .cl-cc--no-swiper .cl-cc-slide { flex-basis: 46%; }
}

@media (min-width: 1025px) {
    .cl-cc--no-swiper .cl-cc-slide { flex-basis: 31%; }
}

/* ── VUOTO ──────────────────────────────────────────────────────────────── */
.cl-cc-empty {
    margin: 0;
    padding: 16px 0;
    font-size: 16px;
    color: #0a2838;
}

/* ── MOTION ─────────────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .cl-cc-btn,
    .cl-cc-arrow,
    .cl-cc-pagination .swiper-pagination-bullet {
        transition: none;
    }
}
