/* ── Wrapper de largeur max (optionnel) ── */
.livio-section-max-width {
    width: 100%;
    box-sizing: border-box;
}

.livio-block {
    color: var(--livio-text, #1f2937);
    display: block;
    width: 100%;
    box-sizing: border-box;
}

.livio-block *,
.livio-block *:before,
.livio-block *:after {
    box-sizing: border-box;
}

.livio-block a {
    text-decoration: none;
    color: inherit;
}

.livio-block img {
    max-width: 100%;
    height: auto;
    display: block;
}

.livio-empty-state {
    padding: 24px;
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    color: var(--livio-text, #1f2937);
    opacity: 0.8;
}

/* =========================================================
   SHADOWS — tous les types de blocs
========================================================= */

.livio-shadow-none .livio-event-card,
.livio-shadow-none .livio-event-list-row,
.livio-shadow-none .livio-event-slide,
.livio-shadow-none .livio-agenda-item-card,
.livio-shadow-none .livio-agenda-accordion-item,
.livio-shadow-none .livio-agenda-card,
.livio-shadow-none .livio-speaker-card,
.livio-shadow-none .livio-speaker-row,
.livio-shadow-none .livio-speaker-slide,
.livio-shadow-none .livio-partner-card,
.livio-shadow-none .livio-partner-card-full,
.livio-shadow-none .livio-partner-logo-item {
    box-shadow: none;
}

.livio-shadow-small .livio-event-card,
.livio-shadow-small .livio-event-list-row,
.livio-shadow-small .livio-event-slide,
.livio-shadow-small .livio-agenda-item-card,
.livio-shadow-small .livio-agenda-accordion-item,
.livio-shadow-small .livio-agenda-card,
.livio-shadow-small .livio-speaker-card,
.livio-shadow-small .livio-speaker-row,
.livio-shadow-small .livio-speaker-slide,
.livio-shadow-small .livio-partner-card,
.livio-shadow-small .livio-partner-card-full,
.livio-shadow-small .livio-partner-logo-item {
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
}

.livio-shadow-medium .livio-event-card,
.livio-shadow-medium .livio-event-list-row,
.livio-shadow-medium .livio-event-slide,
.livio-shadow-medium .livio-agenda-item-card,
.livio-shadow-medium .livio-agenda-accordion-item,
.livio-shadow-medium .livio-agenda-card,
.livio-shadow-medium .livio-speaker-card,
.livio-shadow-medium .livio-speaker-row,
.livio-shadow-medium .livio-speaker-slide,
.livio-shadow-medium .livio-partner-card,
.livio-shadow-medium .livio-partner-card-full,
.livio-shadow-medium .livio-partner-logo-item {
    box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
}

.livio-shadow-large .livio-event-card,
.livio-shadow-large .livio-event-list-row,
.livio-shadow-large .livio-event-slide,
.livio-shadow-large .livio-agenda-item-card,
.livio-shadow-large .livio-agenda-accordion-item,
.livio-shadow-large .livio-agenda-card,
.livio-shadow-large .livio-speaker-card,
.livio-shadow-large .livio-speaker-row,
.livio-shadow-large .livio-speaker-slide,
.livio-shadow-large .livio-partner-card,
.livio-shadow-large .livio-partner-card-full,
.livio-shadow-large .livio-partner-logo-item {
    box-shadow: 0 18px 45px rgba(15, 23, 42, 0.12);
}

/* =========================================================
   EVENTS - GRID
========================================================= */

.livio-events-grid-inner {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(var(--livio-cols-desktop, 3), 1fr);
}

@media (max-width: 1024px) {
    .livio-events-grid-inner {
        grid-template-columns: repeat(var(--livio-cols-tablet, 2), 1fr);
    }
}

@media (max-width: 640px) {
    .livio-events-grid-inner {
        grid-template-columns: repeat(var(--livio-cols-mobile, 1), 1fr);
    }
}

.livio-event-card {
    position: relative;
    overflow: hidden;
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    color: var(--livio-text, #1f2937);
    transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.livio-event-card:hover {
    transform: translateY(-2px);
}

.livio-event-card-link {
    display: block;
    height: 100%;
}

.livio-event-card-media {
    width: 100%;
    height: 0;
    padding-top: 56.25%;
    background: #f8fafc;
    overflow: hidden;
    position: relative;
}

.livio-event-card-media img {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.livio-event-card-body {
    padding: 18px;
}

.livio-event-card-logo {
    width: 58px;
    height: 58px;
    border-radius: 14px;
    overflow: hidden;
    background: #ffffff;
    border: 1px solid #e5e7eb;
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.livio-event-card-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 6px;
}

.livio-event-card-title {
    margin: 0 0 10px;
    font-size: 20px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--livio-text, #1f2937);
}

.livio-event-card-date {
    font-size: 14px;
    line-height: 1.5;
    color: #64748b;
    margin-bottom: 14px;
}

.livio-event-card-status {
    display: inline-block;
    min-height: 32px;
    padding: 8px 12px;
    border-radius: 999px;
    font-size: 13px;
    line-height: 1;
    font-weight: 700;
}

/* =========================================================
   EVENTS - LIST
========================================================= */

.livio-events-list-inner {
    display: block;
}

.livio-event-list-row {
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    color: var(--livio-text, #1f2937);
    overflow: hidden;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    margin-bottom: 16px;
}

.livio-event-list-row:hover {
    transform: translateY(-2px);
}

.livio-event-list-link {
    display: flex;
    align-items: stretch;
    gap: 18px;
    padding: 16px;
}

.livio-event-list-media {
    width: 160px;
    min-width: 160px;
    border-radius: 12px;
    overflow: hidden;
    background: #f8fafc;
}

.livio-event-list-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.livio-event-list-content {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
}

.livio-event-list-main {
    display: flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
    flex: 1;
}

.livio-event-list-logo {
    width: 54px;
    height: 54px;
    min-width: 54px;
    border-radius: 14px;
    overflow: hidden;
    background: #ffffff;
    border: 1px solid #e5e7eb;
    display: flex;
    align-items: center;
    justify-content: center;
}

.livio-event-list-logo img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 6px;
}

.livio-event-list-texts {
    min-width: 0;
    flex: 1;
}

.livio-event-list-title {
    margin: 0 0 8px;
    font-size: 20px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--livio-text, #1f2937);
}

.livio-event-list-date {
    font-size: 14px;
    line-height: 1.5;
    color: #64748b;
}

.livio-event-list-status {
    display: inline-block;
    min-height: 36px;
    padding: 10px 14px;
    border-radius: 999px;
    font-size: 13px;
    line-height: 1;
    font-weight: 700;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .livio-event-list-link {
        flex-direction: column;
        gap: 14px;
    }

    .livio-event-list-media {
        width: 100%;
        min-width: 0;
        height: 180px;
    }

    .livio-event-list-content {
        flex-direction: column;
        align-items: flex-start;
    }

    .livio-event-list-main {
        width: 100%;
    }

    .livio-event-list-status {
        align-self: flex-start;
    }

    .livio-event-card-title,
    .livio-event-list-title {
        font-size: 18px;
    }
}

/* =========================================================
   EVENTS - SLIDER
========================================================= */

.livio-events-slider-track {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    scrollbar-width: none;
    scroll-behavior: smooth;
}

.livio-events-slider-track::-webkit-scrollbar {
    display: none;
}

/* Desktop : nombre exact de slides selon --livio-cols-desktop */
.livio-event-slide {
    flex: 0 0 calc((100% - (var(--livio-cols-desktop, 2) - 1) * 16px) / var(--livio-cols-desktop, 2));
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    color: var(--livio-text, #1f2937);
    overflow: hidden;
    scroll-snap-align: start;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

/* Tablet */
@media (max-width: 1024px) and (min-width: 641px) {
    .livio-event-slide {
        flex: 0 0 calc((100% - (var(--livio-cols-tablet, 1) - 1) * 16px) / var(--livio-cols-tablet, 1));
    }
}

/* Mobile : aperçu de la slide suivante pour indiquer le swipe */
@media (max-width: 640px) {
    .livio-event-slide {
        flex: 0 0 85%;
    }
}

.livio-event-slide:hover {
    transform: translateY(-2px);
}

/* Dots */
.livio-slider-dots {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-top: 20px;
}

.livio-slider-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: none;
    background: #d1d5db;
    cursor: pointer;
    padding: 0;
    transition: background 0.2s ease, transform 0.2s ease, width 0.2s ease;
    flex-shrink: 0;
}

.livio-slider-dot.livio-slider-dot-active {
    background: #6f62ef;
    width: 24px;
    border-radius: 999px;
}

/* Slider mobile : on cache les dots, le swipe suffit */
@media (max-width: 640px) {
    .livio-events-slider-template .livio-slider-dots,
    .livio-partners-slider-template .livio-slider-dots {
        display: none;
    }
    /* Carousel : dots visibles même sur mobile (navigation explicite) */
    .livio-speakers-carousel-template .livio-slider-dots,
    .livio-partners-carousel-template .livio-slider-dots {
        display: flex;
    }
}

/* =========================================================
   STATUSES
========================================================= */

.livio-event-card-status-ongoing,
.livio-event-list-status-ongoing {
    background: #ecfdf3;
    color: #15803d;
}

.livio-event-card-status-upcoming,
.livio-event-list-status-upcoming {
    background: #eff6ff;
    color: #2563eb;
}

.livio-event-card-status-finished,
.livio-event-list-status-finished {
    background: #f3f4f6;
    color: #6b7280;
}

.livio-event-card-status-unknown,
.livio-event-list-status-unknown {
    background: #f8fafc;
    color: #64748b;
}

/* =========================================================
   CARD STYLE VARIANTS — tous les types de blocs
========================================================= */

.livio-card-style-default .livio-event-card,
.livio-card-style-default .livio-event-list-row,
.livio-card-style-default .livio-event-slide,
.livio-card-style-default .livio-agenda-item-card,
.livio-card-style-default .livio-agenda-accordion-item,
.livio-card-style-default .livio-agenda-card,
.livio-card-style-default .livio-speaker-card,
.livio-card-style-default .livio-speaker-row,
.livio-card-style-default .livio-speaker-slide,
.livio-card-style-default .livio-partner-card,
.livio-card-style-default .livio-partner-card-full,
.livio-card-style-default .livio-partner-logo-item {
    background: var(--livio-bg, #ffffff);
    border: 1px solid var(--livio-border, #e5e7eb);
}

.livio-card-style-soft .livio-event-card,
.livio-card-style-soft .livio-event-list-row,
.livio-card-style-soft .livio-event-slide,
.livio-card-style-soft .livio-agenda-item-card,
.livio-card-style-soft .livio-agenda-accordion-item,
.livio-card-style-soft .livio-agenda-card,
.livio-card-style-soft .livio-speaker-card,
.livio-card-style-soft .livio-speaker-row,
.livio-card-style-soft .livio-speaker-slide,
.livio-card-style-soft .livio-partner-card,
.livio-card-style-soft .livio-partner-card-full,
.livio-card-style-soft .livio-partner-logo-item {
    background: #fafbff;
    border: 1px solid rgba(229, 231, 235, 0.9);
}

.livio-card-style-bordered .livio-event-card,
.livio-card-style-bordered .livio-event-list-row,
.livio-card-style-bordered .livio-event-slide,
.livio-card-style-bordered .livio-agenda-item-card,
.livio-card-style-bordered .livio-agenda-accordion-item,
.livio-card-style-bordered .livio-agenda-card,
.livio-card-style-bordered .livio-speaker-card,
.livio-card-style-bordered .livio-speaker-row,
.livio-card-style-bordered .livio-speaker-slide,
.livio-card-style-bordered .livio-partner-card,
.livio-card-style-bordered .livio-partner-card-full,
.livio-card-style-bordered .livio-partner-logo-item {
    border-width: 2px;
}

.livio-card-style-minimal .livio-event-card,
.livio-card-style-minimal .livio-event-list-row,
.livio-card-style-minimal .livio-event-slide,
.livio-card-style-minimal .livio-agenda-item-card,
.livio-card-style-minimal .livio-agenda-accordion-item,
.livio-card-style-minimal .livio-agenda-card,
.livio-card-style-minimal .livio-speaker-card,
.livio-card-style-minimal .livio-speaker-row,
.livio-card-style-minimal .livio-speaker-slide,
.livio-card-style-minimal .livio-partner-card,
.livio-card-style-minimal .livio-partner-card-full,
.livio-card-style-minimal .livio-partner-logo-item {
    box-shadow: none;
    border: none;
    background: transparent;
}









/* =========================================================
   AGENDA - TIMELINE
========================================================= */

.livio-agenda-timeline {
    position: relative;
    padding-left: 30px;
}

.livio-agenda-timeline:before {
    content: "";
    position: absolute;
    left: 6px;
    top: 0;
    bottom: 0;
    width: 2px;
    background: var(--livio-agenda-line, #e5e7eb);
}

.livio-agenda-timeline:after {
    content: "";
    position: absolute;
    left: 1px;
    bottom: 0;
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 10px solid var(--livio-agenda-line, #e5e7eb);
}

.livio-agenda-item {
    position: relative;
    margin-bottom: 28px;
}

.livio-agenda-item-rail {
    position: absolute;
    left: -18px;
    top: 0;
    width: 20px;
    height: 20px;
}

.livio-agenda-item-dot {
    position: absolute;
    left: 0;
    top: 6px;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--livio-agenda-dot, #6f62ef);
    z-index: 2;
}

/* ── Entete de groupe / sous-groupe dans l'agenda (timeline / accordion / cards) ── */
.livio-agenda-group {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 18px 0 10px;
}
.livio-agenda-group:first-child { margin-top: 0; }
.livio-agenda-group-bar {
    width: 14px;
    height: 4px;
    border-radius: 2px;
    background: var(--livio-agenda-group-title, #6F62EF);
    flex-shrink: 0;
}
.livio-agenda-group-name {
    font-size: 0.95rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--livio-agenda-group-title, #6F62EF);
}
.livio-agenda-group--sub .livio-agenda-group-bar {
    background: var(--livio-agenda-subgroup-title, #6B7280);
}
.livio-agenda-group--sub .livio-agenda-group-name {
    color: var(--livio-agenda-subgroup-title, #6B7280);
}
.livio-agenda-cards-grouped .livio-agenda-cards-grid {
    margin-bottom: 8px;
}

/* ── Icône de type de session (tous layouts) ── */
.livio-agenda-ico{
    width:34px;height:34px;border-radius:9px;flex-shrink:0;
    display:flex;align-items:center;justify-content:center;
    color:var(--livio-agenda-icon,#6F62EF);
    background:color-mix(in srgb, var(--livio-agenda-icon,#6F62EF) 14%, transparent);
}
.livio-agenda-ico svg{display:block}
/* Timeline : carte en flex icône + contenu */
.livio-agenda-item-card{display:flex;gap:12px;align-items:flex-start}
.livio-agenda-item-card-body{flex:1;min-width:0}
/* Accordéon : icône dans le summary */
.livio-agenda-accordion-summary{display:flex;align-items:center;gap:12px}
.livio-agenda-accordion-summary-main{flex:1;min-width:0}
/* Cards : icône en tête */
.livio-agenda-ico--card{margin-bottom:10px}

/* =========================================================
   AGENDA - COMPACT
========================================================= */
.livio-agenda-compact{display:flex;flex-direction:column;gap:6px}
.livio-agenda-compact-item{
    border:1px solid var(--livio-border,#eef0f4);
    border-left:3px solid var(--livio-agenda-icon,#6F62EF);
    border-radius:10px;background:var(--livio-bg,#fff);overflow:hidden;
}
.livio-agenda-compact-row{display:flex;align-items:center;gap:12px;padding:8px 12px;list-style:none}
details.livio-agenda-compact-item>summary.livio-agenda-compact-row{cursor:pointer}
.livio-agenda-compact-row::-webkit-details-marker{display:none}
.livio-agenda-compact .livio-agenda-ico{width:30px;height:30px;border-radius:8px}
.livio-agenda-compact-time{font-size:12px;font-weight:700;color:var(--livio-agenda-datetime,#64748b);white-space:nowrap;font-variant-numeric:tabular-nums}
.livio-agenda-compact-title{font-weight:600;font-size:14px;flex:1;min-width:0;color:var(--livio-agenda-conf-title,#1F2937)}
.livio-agenda-compact-type{font-size:10px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap;color:var(--livio-agenda-icon,#6F62EF);background:color-mix(in srgb,var(--livio-agenda-icon,#6F62EF) 14%,transparent)}
.livio-agenda-compact-lim{font-size:10px;font-weight:700;color:#b45309;background:rgba(252,211,77,.30);border:1px solid #fcd34d;border-radius:6px;padding:2px 7px;white-space:nowrap}
.livio-agenda-compact-chev{display:flex;color:#9aa3b2;flex-shrink:0;transition:transform .18s}
details.livio-agenda-compact-item[open] .livio-agenda-compact-chev{transform:rotate(180deg)}
.livio-agenda-compact-expand{padding:0 12px 12px 54px;font-size:13px;line-height:1.6;color:var(--livio-agenda-conf-text,#1F2937)}
.livio-agenda-compact-desc{margin-bottom:6px}
.livio-agenda-compact-date{margin-top:6px;font-size:12px;color:var(--livio-agenda-datetime,#64748b)}
.livio-agenda-compact-expand .livio-agenda-item-people{color:var(--livio-agenda-speakers,#1F2937)}
.livio-agenda-compact-expand .livio-agenda-item-section{color:var(--livio-agenda-section,#6F62EF)}
.livio-agenda-compact-expand .livio-agenda-item-location{color:var(--livio-agenda-datetime,#64748b)}
/* Compact : titre à côté de l'horaire (défaut) ou sous l'horaire */
.livio-agenda-compact-main{flex:1;min-width:0;display:flex;gap:10px}
.livio-agenda-compact-main--beside{flex-direction:row;align-items:center}
.livio-agenda-compact-main--below{flex-direction:column;align-items:stretch;gap:2px}
/* « Places limitées » — élément dédié (tous layouts) */
.livio-agenda-item-limited{font-size:13px;font-weight:700;margin-top:6px;color:var(--livio-agenda-conf-text,#1F2937)}
.livio-agenda-item-limited strong{font-weight:700}
.livio-agenda-compact-expand .livio-agenda-item-limited{margin-top:0;margin-bottom:6px}

/* =========================================================
   AGENDA - DESIGN (carte bordee ; chaque groupe = une zone :
   icone + nom + horaire optionnel, ses confs encadrees par un
   rail a gauche ; sessions icone(optionnelle) + nom, detail indente)
   Toutes les couleurs sont pilotees par les reglages du generateur
   (Titre de groupe / sous-groupe / sessions / description / icones /
   date-heure-lieu / section / ligne verticale / bordure de carte).
========================================================= */
.livio-agenda-design-template{
    border:2px solid var(--livio-agenda-design-border,#E5E7EB);
    border-radius:var(--livio-radius,22px);
    background:var(--livio-bg,#fff);
    padding:24px 28px 26px;
    box-sizing:border-box;
    box-shadow:0 12px 34px rgba(15,23,42,0.05);
}
.livio-agenda-design{display:block}

/* ── En-tete de groupe : icone (ou barre) + nom + horaire ── */
.livio-agenda-design-group{display:flex;align-items:center;gap:11px;margin:20px 0 8px}
.livio-agenda-design-group:first-child{margin-top:2px}
.livio-agenda-design-group-ico{
    flex-shrink:0;width:32px;height:32px;border-radius:9px;
    display:flex;align-items:center;justify-content:center;
    color:var(--livio-agenda-design-group-icon,var(--livio-agenda-group-title,#6F62EF));
    background:#eef0fb;
    background:color-mix(in srgb,var(--livio-agenda-design-group-icon,var(--livio-agenda-group-title,#6F62EF)) 14%,#ffffff);
}
.livio-agenda-design-group-ico svg{display:block;width:17px;height:17px}
.livio-agenda-design-group-bar{
    width:3px;height:16px;border-radius:2px;flex-shrink:0;
    background:var(--livio-agenda-group-title,#6F62EF);
}
.livio-agenda-design-group-text{display:flex;align-items:center;min-width:0}
.livio-agenda-design-group-name{
    font-size:var(--dg-grouptitle-size,13px);
    font-weight:var(--dg-grouptitle-weight,800);
    font-style:var(--dg-grouptitle-style,normal);
    text-decoration:var(--dg-grouptitle-decoration,none);
    letter-spacing:.06em;text-transform:uppercase;
    color:var(--livio-agenda-group-title,#6F62EF);
}
.livio-agenda-design-group-time{
    font-size:var(--dg-grouptime-size,12px);
    font-weight:var(--dg-grouptime-weight,800);
    font-style:var(--dg-grouptime-style,normal);
    text-decoration:var(--dg-grouptime-decoration,none);
    color:var(--livio-agenda-design-grouptime,var(--livio-agenda-datetime,#64748b));
    font-variant-numeric:tabular-nums;white-space:nowrap;
}
.livio-agenda-design-group-time::before{content:"·";margin:0 7px 0 3px;color:#c7ccd6}
/* Horaire de groupe au-dessus du nom */
.livio-agenda-design-group--time-above .livio-agenda-design-group-text{flex-direction:column;align-items:flex-start;gap:1px}
.livio-agenda-design-group-time--above{letter-spacing:.02em}
.livio-agenda-design-group-time--above::before{content:none;margin:0}
.livio-agenda-design-group--sub .livio-agenda-design-group-ico{
    width:28px;height:28px;
    color:var(--livio-agenda-design-group-icon,var(--livio-agenda-subgroup-title,#6B7280));
    background:color-mix(in srgb,var(--livio-agenda-design-group-icon,var(--livio-agenda-subgroup-title,#6B7280)) 14%,#ffffff);
}
.livio-agenda-design-group--sub .livio-agenda-design-group-bar{background:var(--livio-agenda-subgroup-title,#6B7280);height:13px}
.livio-agenda-design-group--sub .livio-agenda-design-group-name{
    color:var(--livio-agenda-subgroup-title,#6B7280);
    font-size:var(--dg-subgrouptitle-size,12px);
    font-weight:var(--dg-subgrouptitle-weight,800);
    font-style:var(--dg-subgrouptitle-style,normal);
    text-decoration:var(--dg-subgrouptitle-decoration,none);
    letter-spacing:.04em;
}

/* ── Zone du groupe : rail vertical a gauche encadrant les confs ── */
.livio-agenda-design-zone{
    /* Ligne verticale : épaisseur réglable + couleur (réglage dédié sinon couleur
       du titre de groupe teintée). */
    border-left-style:solid;
    border-left-width:var(--livio-agenda-design-line-width,3px);
    border-left-color:var(--livio-agenda-design-line,color-mix(in srgb,var(--livio-agenda-group-title,#6F62EF) 45%,#ffffff));
    padding-left:15px; /* fallback ; surchargé en inline selon l'indentation configurée */
    margin-bottom:14px;
}
/* Ligne des sous-groupes : suit « Titre de sous-groupe » (sauf réglage dédié). */
.livio-agenda-design-group--sub + .livio-agenda-design-zone{
    border-left-color:var(--livio-agenda-design-line,color-mix(in srgb,var(--livio-agenda-subgroup-title,#6B7280) 45%,#ffffff));
}

/* ── Session : icone (optionnelle) + nom ── */
.livio-agenda-design-item{display:flex;align-items:flex-start;gap:13px;padding:var(--dg-session-gap,6px) 0}
.livio-agenda-design-item--noicon{gap:0}
.livio-agenda-design-ico{
    flex-shrink:0;width:36px;height:36px;border-radius:11px;margin-top:1px;
    display:flex;align-items:center;justify-content:center;
    color:var(--livio-agenda-icon,#6F62EF);
    background:#f1eefe;
    background:color-mix(in srgb,var(--livio-agenda-icon,#6F62EF) 12%,#ffffff);
}
.livio-agenda-design-ico svg{display:block;width:18px;height:18px}
.livio-agenda-design-body{flex:1;min-width:0}
.livio-agenda-design-title{
    font-size:var(--dg-conftitle-size,16px);
    font-weight:var(--dg-conftitle-weight,800);
    font-style:var(--dg-conftitle-style,normal);
    text-decoration:var(--dg-conftitle-decoration,none);
    line-height:1.4;padding-top:6px;
    color:var(--livio-agenda-conf-title,#1F2937);
}
.livio-agenda-design-item--noicon .livio-agenda-design-title{padding-top:0}
/* Horaire de session (optionnel, layout Design) — au-dessus du nom */
.livio-agenda-design-conf-time{
    font-size:var(--dg-time-size,12px);
    font-weight:var(--dg-time-weight,800);
    font-style:var(--dg-time-style,normal);
    text-decoration:var(--dg-time-decoration,none);
    padding-top:6px;
    color:var(--livio-agenda-datetime,#64748b);
    font-variant-numeric:tabular-nums;
}
.livio-agenda-design-conf-time + .livio-agenda-design-title{padding-top:1px}
.livio-agenda-design-item--noicon .livio-agenda-design-conf-time{padding-top:0}

/* ── Detail (description / intervenants / meta) indente avec barre ── */
.livio-agenda-design-detail{
    margin-top:7px;padding-left:14px;border-radius:2px;
    border-left:3px solid color-mix(in srgb,var(--livio-agenda-icon,#6F62EF) 40%,#ffffff);
    color:var(--livio-agenda-conf-text,#1F2937);
    font-size:13.5px;line-height:1.7;
}
.livio-agenda-design-detail>div{margin-bottom:3px}
.livio-agenda-design-detail>div:last-child{margin-bottom:0}
.livio-agenda-design-desc{
    font-size:var(--dg-description-size,14px);
    font-weight:var(--dg-description-weight,400);
    font-style:var(--dg-description-style,normal);
    text-decoration:var(--dg-description-decoration,none);
}
.livio-agenda-design-desc p{margin:0 0 3px}
.livio-agenda-design-people{
    color:var(--livio-agenda-speakers,#1F2937);
    font-size:var(--dg-speakers-size,14px);
    font-weight:var(--dg-speakers-weight,400);
    font-style:var(--dg-speakers-style,normal);
    text-decoration:var(--dg-speakers-decoration,none);
}
.livio-agenda-design-limited{font-weight:700}
.livio-agenda-design-meta{
    color:var(--livio-agenda-datetime,#64748b);
    font-size:var(--dg-meta-size,13px);
    font-weight:var(--dg-meta-weight,400);
    font-style:var(--dg-meta-style,normal);
    text-decoration:var(--dg-meta-decoration,none);
}
.livio-agenda-design-meta--section{color:var(--livio-agenda-section,#6F62EF)}

.livio-agenda-item-card {
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    padding: 18px;
    transition: all 0.2s ease;
}

.livio-agenda-item-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 30px rgba(0,0,0,0.08);
}

.livio-agenda-item-meta {
    font-size: 13px;
    color: var(--livio-agenda-datetime, #64748b);
    margin-bottom: 8px;
}

.livio-agenda-item-title {
    margin: 0 0 10px;
    font-size: 18px;
    font-weight: 700;
    color: var(--livio-agenda-conf-title, #1F2937);
}

.livio-agenda-item-location {
    font-size: 14px;
    color: var(--livio-agenda-datetime, #64748b);
    margin-bottom: 10px;
}

.livio-agenda-item-section {
    font-size: 13px;
    color: var(--livio-agenda-section, #6f62ef);
    font-weight: 600;
    margin-bottom: 8px;
}

.livio-agenda-item-people {
    font-size: 14px;
    color: var(--livio-agenda-speakers, #1F2937);
    margin-bottom: 6px;
}

.livio-agenda-item-description {
    margin-top: 12px;
    font-size: 14px;
    line-height: 1.6;
    color: var(--livio-agenda-conf-text, #1F2937);
}

.livio-agenda-item-separator {
    color: var(--livio-agenda-datetime, #94a3b8);
    margin: 0 6px;
}

/* =========================================================
   AGENDA - ACCORDION
========================================================= */

.livio-agenda-accordion-item {
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    margin-bottom: 14px;
    overflow: hidden;
    background: var(--livio-bg, #ffffff);
}

.livio-agenda-accordion-summary {
    padding: 16px 18px;
    cursor: pointer;
    list-style: none;
}

.livio-agenda-accordion-summary::-webkit-details-marker {
    display: none;
}

.livio-agenda-accordion-title {
    font-weight: 700;
    font-size: 16px;
    color: var(--livio-agenda-conf-title, #1F2937);
}

.livio-agenda-accordion-meta {
    display: block;
    font-size: 13px;
    color: var(--livio-agenda-datetime, #64748b);
    margin-top: 4px;
}

.livio-agenda-accordion-content {
    padding: 16px 18px;
    border-top: 1px solid var(--livio-border, #e5e7eb);
}

/* =========================================================
   AGENDA - CARDS
========================================================= */

.livio-agenda-cards-grid {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(var(--livio-cols-desktop, 2), 1fr);
}

@media (max-width: 1024px) {
    .livio-agenda-cards-grid {
        grid-template-columns: repeat(var(--livio-cols-tablet, 1), 1fr);
    }
}

@media (max-width: 640px) {
    .livio-agenda-cards-grid {
        grid-template-columns: repeat(var(--livio-cols-mobile, 1), 1fr);
    }
}

.livio-agenda-card {
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    padding: 18px;
    transition: all 0.2s ease;
}

.livio-agenda-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 35px rgba(0,0,0,0.08);
}

.livio-agenda-card-meta {
    font-size: 13px;
    color: var(--livio-agenda-datetime, #64748b);
    margin-bottom: 8px;
}

.livio-agenda-card-title {
    font-size: 17px;
    font-weight: 700;
    margin: 0 0 10px;
    color: var(--livio-agenda-conf-title, #1F2937);
}

/* =========================================================
   RESPONSIVE
========================================================= */

@media (max-width: 640px) {
    .livio-agenda-timeline {
        padding-left: 20px;
    }

    .livio-agenda-item-rail {
        left: -12px;
    }

    .livio-agenda-item-dot {
        left: -4px;
    }

    .livio-agenda-card,
    .livio-agenda-item-card {
        padding: 14px;
    }
}




/* =========================================================
   SPEAKERS - COMMON
========================================================= */

.livio-speaker-card,
.livio-speaker-row,
.livio-speaker-slide {
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    transition: all 0.2s ease;
}

.livio-speaker-card:hover,
.livio-speaker-row:hover,
.livio-speaker-slide:hover {
    transform: translateY(-2px);
}

.livio-speaker-name {
    margin: 0 0 8px;
    font-size: 18px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--livio-text, #1f2937);
}

.livio-speaker-role {
    font-size: 14px;
    line-height: 1.4;
    color: #64748b;
    font-weight: 600;
}

.livio-speaker-media {
    position: relative;
    margin-bottom: 14px;
}

.livio-speaker-avatar,
.livio-speaker-photo {
    width: 120px;
    height: 120px;
    border-radius: 50%;
    overflow: hidden;
    background: #eef2ff;
    display: flex;
    align-items: center;
    justify-content: center;
}

.livio-speaker-avatar {
    color: #6f62ef;
    font-size: 26px;
    font-weight: 700;
}

.livio-speaker-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.livio-speaker-linkedin {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 34px;
    height: 34px;
    border-radius: 5px;
    background: #0a66c2;
    color: #ffffff !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 6px 16px rgba(10, 102, 194, 0.22);
}

.livio-speaker-linkedin svg {
    width: 18px;
    height: 18px;
    display: block;
}

/* =========================================================
   SPEAKERS - GRID
========================================================= */

.livio-speakers-grid {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(var(--livio-cols-desktop, 3), 1fr);
}

@media (max-width: 1024px) {
    .livio-speakers-grid {
        grid-template-columns: repeat(var(--livio-cols-tablet, 2), 1fr);
    }
}

@media (max-width: 640px) {
    .livio-speakers-grid {
        grid-template-columns: repeat(var(--livio-cols-mobile, 1), 1fr);
    }
}

.livio-speaker-card {
    padding: 20px;
    text-align: center;
}

.livio-speaker-card .livio-speaker-media {
    display: flex;
    justify-content: center;
}

/* =========================================================
   SPEAKERS - LIST
========================================================= */

.livio-speakers-list {
    display: block;
}

.livio-speaker-row {
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 16px 18px;
    margin-bottom: 16px;
}

.livio-speaker-row .livio-speaker-media {
    margin-bottom: 0;
    min-width: 84px;
}

.livio-speaker-row-content {
    flex: 1;
    min-width: 0;
}

/* =========================================================
   SPEAKERS - CAROUSEL
========================================================= */

.livio-speakers-carousel {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    scrollbar-width: none;
    scroll-behavior: smooth;
}

.livio-speakers-carousel::-webkit-scrollbar {
    display: none;
}

.livio-speaker-slide {
    flex: 0 0 calc((100% - (var(--livio-cols-desktop, 3) - 1) * 16px) / var(--livio-cols-desktop, 3));
    padding: 20px;
    text-align: center;
    scroll-snap-align: start;
}

@media (max-width: 1024px) and (min-width: 641px) {
    .livio-speaker-slide {
        flex: 0 0 calc((100% - (var(--livio-cols-tablet, 2) - 1) * 16px) / var(--livio-cols-tablet, 2));
    }
}

@media (max-width: 640px) {
    .livio-speaker-slide {
        flex: 0 0 85%;
    }
}

.livio-speaker-slide .livio-speaker-media {
    display: flex;
    justify-content: center;
}

/* =========================================================
   SPEAKERS - RESPONSIVE
========================================================= */

@media (max-width: 640px) {
    .livio-speaker-row {
        flex-direction: column;
        align-items: flex-start;
    }
}




/* =========================================================
   PARTNERS - COMMON
========================================================= */

.livio-partner-card,
.livio-partner-card-full {
    background: var(--livio-bg, #ffffff);
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    transition: all 0.2s ease;
}

.livio-partner-card:hover,
.livio-partner-card-full:hover {
    transform: translateY(-3px);
    box-shadow: 0 12px 35px rgba(15, 23, 42, 0.08);
}

.livio-partner-logo {
    display: flex;
    align-items: center;
    justify-content: center;
}

.livio-partner-logo img {
    max-width: 100%;
    height: auto;
    display: block;
}

.livio-partner-name {
    margin: 0 0 8px;
    font-size: 18px;
    line-height: 1.3;
    font-weight: 700;
    color: var(--livio-text, #1f2937);
}

.livio-partner-type,
.livio-partner-pack,
.livio-partner-category,
.livio-partner-stand {
    font-size: 14px;
    line-height: 1.5;
    color: #64748b;
    margin-top: 6px;
}

.livio-partner-description {
    margin: 12px 0 0;
    font-size: 14px;
    line-height: 1.6;
    color: #334155;
}

.livio-partner-website,
.livio-partner-video {
    margin-top: 14px;
}

.livio-partner-website a,
.livio-partner-video a {
    display: inline-block;
    padding: 9px 14px;
    border-radius: 10px;
    background: #f8fafc;
    color: #1f2937;
    font-size: 14px;
    font-weight: 600;
    border: 1px solid #e5e7eb;
}

.livio-partner-website a:hover,
.livio-partner-video a:hover {
    background: #eef2ff;
    border-color: #c7d2fe;
}

/* =========================================================
   PARTNERS - GRID
========================================================= */

.livio-partners-grid-inner {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(var(--livio-cols-desktop, 4), 1fr);
}

@media (max-width: 1024px) {
    .livio-partners-grid-inner {
        grid-template-columns: repeat(var(--livio-cols-tablet, 3), 1fr);
    }
}

@media (max-width: 640px) {
    .livio-partners-grid-inner {
        grid-template-columns: repeat(var(--livio-cols-mobile, 2), 1fr);
    }
}

.livio-partner-card {
    padding: 22px 18px;
    text-align: center;
}

.livio-partner-card .livio-partner-logo {
    width: 100%;
    min-height: 80px;
    margin-bottom: 16px;
}

.livio-partner-card .livio-partner-logo img {
    max-height: 70px;
    object-fit: contain;
}

/* =========================================================
   PARTNERS - CARDS
========================================================= */

.livio-partners-cards-inner {
    display: grid;
    gap: 20px;
    grid-template-columns: repeat(var(--livio-cols-desktop, 3), 1fr);
}

@media (max-width: 1024px) {
    .livio-partners-cards-inner {
        grid-template-columns: repeat(var(--livio-cols-tablet, 2), 1fr);
    }
}

@media (max-width: 640px) {
    .livio-partners-cards-inner {
        grid-template-columns: repeat(var(--livio-cols-mobile, 1), 1fr);
    }
}

.livio-partner-card-full {
    overflow: hidden;
}

.livio-partner-cover {
    width: 100%;
    height: 180px;
    background: #f8fafc;
    overflow: hidden;
}

.livio-partner-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.livio-partner-content {
    padding: 20px;
}

.livio-partner-card-full .livio-partner-logo {
    width: 100%;
    min-height: 72px;
    margin-bottom: 16px;
}

.livio-partner-card-full .livio-partner-logo img {
    max-height: 64px;
    object-fit: contain;
}

/* =========================================================
   PARTNERS - LOGOS (inchangé)
========================================================= */

.livio-partners-logos-inner {
    display: flex;
    flex-wrap: wrap;
    gap: 28px;
    align-items: center;
    justify-content: flex-start;
}

.livio-partner-logo-item {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 140px;
    min-height: 70px;
    padding: 14px 18px;
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 16px);
    background: var(--livio-bg, #ffffff);
}

.livio-partner-logo-item img {
    max-width: 100%;
    max-height: 52px;
    object-fit: contain;
    opacity: 0.9;
}

@media (max-width: 640px) {
    .livio-partners-logos-inner {
        gap: 16px;
    }

    .livio-partner-logo-item {
        width: calc(50% - 8px);
        min-width: 0;
    }

    .livio-partner-cover {
        height: 150px;
    }
}

/* =========================================================
   PARTNERS - CAROUSEL (dots sur toutes les tailles)
========================================================= */

.livio-partners-carousel-track {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-bottom: 4px;
}

.livio-partners-carousel-track::-webkit-scrollbar {
    display: none;
}

/* Desktop : N slides par vue */
.livio-partner-slide {
    flex: 0 0 calc((100% - (var(--livio-cols-desktop, 3) - 1) * 16px) / var(--livio-cols-desktop, 3));
    border: 1px solid var(--livio-border, #e5e7eb);
    border-radius: var(--livio-radius, 18px);
    background: var(--livio-bg, #ffffff);
    color: var(--livio-text, #1f2937);
    padding: 20px;
    box-sizing: border-box;
    scroll-snap-align: start;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    text-align: center;
}

@media (max-width: 1024px) and (min-width: 641px) {
    .livio-partner-slide {
        flex: 0 0 calc((100% - (var(--livio-cols-tablet, 2) - 1) * 16px) / var(--livio-cols-tablet, 2));
    }
}

/* Mobile : 85% + aperçu suivant */
@media (max-width: 640px) {
    .livio-partner-slide {
        flex: 0 0 85%;
    }
}

.livio-partner-slide-logo {
    width: 80px;
    height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.livio-partner-slide-logo img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.livio-partner-slide-name {
    margin: 0;
    font-size: 15px;
    font-weight: 700;
    color: var(--livio-text, #1f2937);
}

.livio-partner-slide-stand,
.livio-partner-slide-pack,
.livio-partner-slide-category {
    font-size: 13px;
    color: #6b7280;
}

.livio-partner-slide-website {
    display: inline-block;
    margin-top: 6px;
    font-size: 13px;
    color: #6f62ef;
    text-decoration: none;
    font-weight: 600;
}

.livio-partner-slide-website:hover {
    text-decoration: underline;
}

/* =========================================================
   PARTNERS - SLIDER (dots desktop, swipe mobile)
========================================================= */

.livio-partners-slider-track {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-bottom: 4px;
}

.livio-partners-slider-track::-webkit-scrollbar {
    display: none;
}

/* Slide pleine largeur (pour le slider) */
.livio-partner-slide-full {
    flex: 0 0 calc((100% - (var(--livio-cols-desktop, 2) - 1) * 16px) / var(--livio-cols-desktop, 2));
    flex-direction: column;
    padding: 0;
    overflow: hidden;
}

@media (max-width: 1024px) and (min-width: 641px) {
    .livio-partner-slide-full {
        flex: 0 0 calc((100% - (var(--livio-cols-tablet, 1) - 1) * 16px) / var(--livio-cols-tablet, 1));
    }
}

@media (max-width: 640px) {
    .livio-partner-slide-full {
        flex: 0 0 85%;
    }
}

.livio-partner-slide-cover {
    width: 100%;
    height: 200px;
    overflow: hidden;
    border-radius: var(--livio-radius, 18px) var(--livio-radius, 18px) 0 0;
}

.livio-partner-slide-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.livio-partner-slide-body {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.livio-partner-slide-desc {
    margin: 0;
    font-size: 14px;
    color: #6b7280;
    line-height: 1.5;
}

/* =========================================================
   LIVIO FORM — Section d'inscription (formulaire natif)
========================================================= */

.livio-form-section {
    width: 100%;
    box-sizing: border-box;
}

.livio-form-section *,
.livio-form-section *:before,
.livio-form-section *:after {
    box-sizing: border-box;
}

/* ── Titre de section ── */
.livio-form-section-title {
    text-align: center;
    margin-bottom: 32px;
}

.livio-form-section-title h2 {
    font-size: clamp(22px, 3vw, 36px);
    font-weight: 800;
    color: var(--livio-form-text, #1f2937);
    margin: 0 0 10px;
    line-height: 1.2;
}

.livio-form-section-line {
    width: 48px;
    height: 4px;
    background: #6f62ef;
    border-radius: 2px;
    margin: 0 auto;
}

/* ── Zone body (remplie par JS) ── */
.livio-form-body {
    width: 100%;
}

/* ── Spinner de chargement initial ── */
.livio-form-loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 48px 20px;
    font-size: 14px;
    color: #6b7280;
}

.livio-form-spinner {
    display: inline-block;
    width: 36px;
    height: 36px;
    border: 3px solid #e5e7eb;
    border-top-color: #6f62ef;
    border-radius: 50%;
    animation: livioFormSpin 0.7s linear infinite;
}

@keyframes livioFormSpin {
    to { transform: rotate(360deg); }
}

/* ── Chooser ── */
.livio-form-chooser {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}

.livio-form-chooser-label {
    font-size: 15px;
    color: var(--livio-form-overlay, var(--livio-form-text, #1f2937));
    font-weight: 600;
    margin: 0;
    opacity: 0.7;
}

.livio-form-chooser-btns {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    justify-content: center;
}

.livio-form-chooser-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 28px;
    background: var(--livio-form-bg, #ffffff);
    border: 2px solid #e5e7eb;
    border-radius: var(--livio-form-radius, 18px);
    color: var(--livio-form-text, #1f2937);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.18s, transform 0.18s, box-shadow 0.18s, background 0.18s;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    min-width: 200px;
    text-align: left;
}

.livio-form-chooser-btn:hover,
.livio-form-chooser-btn:focus-visible {
    border-color: #6f62ef;
    background: #f5f3ff;
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(111,98,239,0.15);
    outline: none;
}

.livio-form-chooser-btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    background: linear-gradient(135deg, #6f62ef 0%, #8b7ff0 100%);
    color: #fff;
    border-radius: 10px;
    flex-shrink: 0;
}

.livio-form-chooser-btn-name { flex: 1; }

.livio-form-chooser-btn-arrow {
    color: #6f62ef;
    font-size: 18px;
    opacity: 0;
    transition: opacity 0.18s, transform 0.18s;
}

.livio-form-chooser-btn:hover .livio-form-chooser-btn-arrow {
    opacity: 1;
    transform: translateX(4px);
}

/* ── Zone formulaire (après sélection type) ── */
.livio-form-embed-wrap {
    width: 100%;
}

.livio-form-embed-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    margin-bottom: 24px;
}

.livio-form-back-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    background: transparent;
    color: var(--livio-form-overlay, #6f62ef);
    border: 1.5px solid var(--livio-form-overlay, #ddd6fe);
    border-radius: 50px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.15s;
    opacity: 0.85;
}

.livio-form-back-btn:hover { opacity: 1; }

.livio-form-embed-type-name {
    font-size: 15px;
    font-weight: 700;
    color: var(--livio-form-overlay, var(--livio-form-text, #1f2937));
}

/* ── Formulaire natif ── */
.livio-native-form-wrap {
    max-width: 620px;
    margin: 0 auto;
    background: var(--livio-form-bg, #ffffff);
    border-radius: var(--livio-form-radius, 18px);
    padding: 40px 48px;
    border: 1px solid #e5e7eb;
}

.livio-native-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ── Champs ── */
.livio-form-row {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* Label par defaut (radio / checkbox). Les champs texte/select/textarea/tel
   utilisent la variante flottante facon MUI (regles plus bas). */
.livio-form-label {
    display: block;
    font-size: 13px;
    font-weight: 600;
    color: var(--livio-form-text, #1f2937);
    letter-spacing: 0.01em;
    margin: 0;
}

.livio-form-required {
    color: #ef4444;
    font-weight: 700;
}

.livio-form-control {
    width: 100%;
    padding: 15px 14px;
    font-size: 16px;
    line-height: 1.4;
    min-height: 56px;
    color: var(--livio-form-text, #1f2937);
    background: var(--livio-form-bg, #ffffff);
    border: 1px solid #d0d5dd;
    border-radius: 8px;
    transition: border-color 0.15s, box-shadow 0.15s;
    outline: none;
    font-family: inherit;
    box-sizing: border-box;
}

.livio-form-control:hover {
    border-color: #9aa3b2;
}

.livio-form-control:focus {
    border-color: #6f62ef;
    box-shadow: 0 0 0 1px #6f62ef;
}

/* Autofill : conserver le fond du champ + la couleur du texte */
.livio-form-control:-webkit-autofill,
.livio-form-control:-webkit-autofill:hover,
.livio-form-control:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--livio-form-text, #1f2937);
    -webkit-box-shadow: 0 0 0 1000px var(--livio-form-bg, #ffffff) inset;
    caret-color: var(--livio-form-text, #1f2937);
}

/* ── Label flottant facon MUI outlined ──
   Etat repos : centre verticalement dans le champ.
   Etat flottant (focus / rempli / champ "always") : remonte sur la bordure. */
.livio-form-control + .livio-form-label,
.livio-form-row--float-always > .livio-form-label {
    position: absolute;
    left: 11px;
    /* 28px = moitie de la hauteur min du champ (56px) : centre le label dans le
       champ independamment d'un eventuel hint en dessous (ex: email). */
    top: 28px;
    transform: translateY(-50%);
    transform-origin: left center;
    margin: 0;
    padding: 0 5px;
    font-size: 16px;
    font-weight: 400;
    line-height: 1;
    color: #6b7280;
    background: var(--livio-form-bg, #ffffff);
    pointer-events: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: calc(100% - 22px);
    transition: top 0.15s ease, transform 0.15s ease, color 0.15s ease;
}
.livio-form-control:focus + .livio-form-label,
.livio-form-control:not(:placeholder-shown) + .livio-form-label,
.livio-form-row--float-always > .livio-form-label {
    top: 0;
    transform: translateY(-50%) scale(0.82);
}
.livio-form-control:focus + .livio-form-label {
    color: #6f62ef;
}
/* Textarea : label en haut au repos (pas centre sur la zone haute) */
.livio-form-row--textarea .livio-form-control + .livio-form-label {
    top: 20px;
    transform: none;
}
.livio-form-row--textarea .livio-form-control:focus + .livio-form-label,
.livio-form-row--textarea .livio-form-control:not(:placeholder-shown) + .livio-form-label {
    top: 0;
    transform: translateY(-50%) scale(0.82);
}

.livio-form-control-error {
    border-color: #ef4444 !important;
    box-shadow: 0 0 0 3px rgba(239,68,68,0.1) !important;
}

select.livio-form-control { cursor: pointer; }
textarea.livio-form-control { resize: vertical; min-height: 80px; }

/* ── Radio buttons ── */
.livio-form-radios {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 20px;
}

.livio-form-radio-label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 14px;
    color: var(--livio-form-text, #1f2937);
    cursor: pointer;
}

.livio-form-radio-label input[type="radio"] {
    accent-color: #6f62ef;
    width: 16px;
    height: 16px;
    cursor: pointer;
}

/* ── Checkbox ── */
.livio-form-checkbox-label {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: var(--livio-form-text, #1f2937);
    cursor: pointer;
}

.livio-form-checkbox-label input[type="checkbox"] {
    accent-color: #6f62ef;
    width: 16px;
    height: 16px;
    cursor: pointer;
    flex-shrink: 0;
}

/* ── Hints (validation email) ── */
.livio-form-field-hint {
    font-size: 12px;
    min-height: 16px;
    transition: color 0.15s;
}
/* Pas d'espace reserve tant qu'aucun message (erreur/validation) n'est affiche :
   display:none retire le hint du flux (sinon le gap:6px de .livio-form-row
   laisse un vide sous Email/Telephone a l'arrivee sur le formulaire). */
.livio-form-field-hint:empty {
    display: none;
}

.livio-form-field-hint-checking { color: #6b7280; }
.livio-form-field-hint-error    { color: #ef4444; }
.livio-form-field-hint-ok       { color: #10b981; }
.livio-form-field-hint-info     { color: #6b7280; }

/* ── Champ code ── */
.livio-form-code-row .livio-form-control {
    letter-spacing: 2px;
    text-transform: uppercase;
}

/* ── Alertes ── */
.livio-form-alert {
    padding: 12px 16px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 500;
}

.livio-form-alert-error {
    background: #fef2f2;
    color: #dc2626;
    border: 1px solid #fecaca;
}

.livio-form-alert-warning {
    background: #fffbeb;
    color: #d97706;
    border: 1px solid #fde68a;
}

.livio-form-global-error { margin-top: 4px; }

/* ── Bouton de soumission ── */
.livio-form-submit-row {
    margin-top: 8px;
}

.livio-form-submit-btn {
    width: 100%;
    padding: 14px 28px;
    background: linear-gradient(135deg, #6f62ef 0%, #8b7ff0 100%);
    color: #fff;
    border: none;
    border-radius: 50px;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.18s, transform 0.18s, box-shadow 0.18s;
    box-shadow: 0 4px 16px rgba(111,98,239,0.28);
    letter-spacing: 0.3px;
    font-family: inherit;
}

.livio-form-submit-btn:hover:not(:disabled) {
    opacity: 0.9;
    transform: translateY(-1px);
    box-shadow: 0 6px 20px rgba(111,98,239,0.35);
}

.livio-form-submit-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
    transform: none;
}

/* ── Ecran de succès ── */
.livio-form-success {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 48px 32px;
    gap: 12px;
    background: var(--livio-form-bg, #ffffff);
    border-radius: var(--livio-form-radius, 18px);
    border: 1px solid #e5e7eb;
    max-width: 600px;
    margin: 0 auto;
}

.livio-form-success-icon { margin-bottom: 8px; }

.livio-form-success-title {
    font-size: 22px;
    font-weight: 800;
    color: var(--livio-form-text, #1f2937);
    margin: 0;
}

.livio-form-success-msg {
    font-size: 15px;
    color: #6b7280;
    margin: 0;
    line-height: 1.6;
}

.livio-form-success-note {
    font-size: 13px;
    color: #9ca3af;
    margin: 0;
    font-style: italic;
}

/* ── Section background image ── */
.livio-form-section.livio-form-has-bg-image {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    padding: 48px 24px;
    border-radius: var(--livio-form-radius, 18px);
}

/* ── Layout 2 colonnes ── */
/* Override single-col styles */
.livio-native-form-wrap.livio-native-form-2col {
    display: flex;
    gap: 24px;
    max-width: 1060px;
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 0;
    overflow: visible;
    min-height: unset;
}

/* Chaque colonne est sa propre carte.
   align-self: flex-start = la colonne image ne s'etire PAS a la hauteur du
   formulaire (sinon l'image serait rognee). position: sticky = l'image suit le
   scroll quand le formulaire est plus haut qu'elle. */
.livio-form-2col-image {
    flex: 1 1 0;
    min-width: 0;
    align-self: flex-start;
    position: sticky;
    /* 110px = marge au-dessus pour ne pas passer sous le menu fixe du site WP
       (header sticky du theme). 20px laissait l'image glisser sous le menu. */
    top: 110px;
    border-radius: var(--livio-form-radius, 18px);
    overflow: hidden;
    background: #1a1a2e;
    box-shadow: 0 4px 24px rgba(0,0,0,0.15);
}

/* Image TOUJOURS complete : largeur 100% de la colonne, hauteur auto (ratio
   naturel), jamais rognee. La colonne se dimensionne a l'image. */
.livio-form-2col-img {
    width: 100%;
    height: auto;
    display: block;
}

.livio-form-2col-form {
    flex: 1 1 0;
    min-width: 0;
    padding: 40px 44px;
    background: var(--livio-form-bg, #ffffff);
    border-radius: var(--livio-form-radius, 18px);
    border: 1px solid #e5e7eb;
    box-shadow: 0 4px 24px rgba(0,0,0,0.07);
}

/* Quand pas d'image en mode 2col : fallback 1col centré */
.livio-native-form-2col.livio-native-form-2col-noimg {
    display: block;
    max-width: 620px;
    background: var(--livio-form-bg, #ffffff);
    border: 1px solid #e5e7eb;
    border-radius: var(--livio-form-radius, 18px);
    padding: 0;
}

.livio-native-form-2col.livio-native-form-2col-noimg .livio-form-2col-form {
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    padding: 40px 48px;
}

/* ── Responsive ── */
@media (max-width: 860px) {
    .livio-native-form-wrap.livio-native-form-2col {
        flex-direction: column;
        gap: 16px;
    }
    /* En colonne : image complete en haut, pas de sticky (inutile empile). */
    .livio-form-2col-image {
        position: static;
        align-self: stretch;
    }
    .livio-form-2col-form {
        padding: 28px 32px;
    }
}

@media (max-width: 640px) {
    .livio-form-chooser-btns {
        flex-direction: column;
        align-items: stretch;
    }
    .livio-form-chooser-btn {
        min-width: unset;
        width: 100%;
    }
    .livio-native-form-wrap {
        padding: 24px 20px;
    }
    .livio-form-2col-image {
        min-height: 180px;
        max-height: 200px;
    }
    .livio-form-2col-form {
        padding: 24px 20px;
    }
}

/* =========================================================
   ETAPE PROGRAMME (multi-step) — rendu aligne sur le
   formulaire React Livio (ProgrammePreviewView.tsx)
========================================================= */

/* ── Stepper ── */
.livio-form-stepper {
    display: flex;
    align-items: center;
    /* L'espacement avec le contenu est gere par le gap:24px du .livio-native-form */
    margin-bottom: 0;
}
.livio-step-item {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
}
.livio-step-circle {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.85rem;
    font-weight: 700;
    flex-shrink: 0;
    box-sizing: border-box;
    transition: all 0.2s;
}
.livio-step-circle svg { display: block; }
.livio-step-label {
    font-size: 0.9rem;
    white-space: nowrap;
}
.livio-step-line {
    flex: 1;
    height: 2px;
    margin: 0 12px;
    border-radius: 1px;
    transition: all 0.2s;
}

/* ── Barre de navigation (Precedent + bouton principal) ── */
.livio-form-nav-row {
    display: flex;
    align-items: center;
    gap: 12px;
}
.livio-form-nav-row .livio-form-submit-btn {
    flex: 1;
    width: auto;
}
.livio-form-submit-btn-next {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.livio-form-submit-btn-next svg { display: block; }
.livio-form-prev-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    color: #6b7280;
    font-weight: 600;
    font-size: 15px;
    cursor: pointer;
    padding: 8px 4px;
    font-family: inherit;
    flex-shrink: 0;
    transition: color 0.15s;
}
.livio-form-prev-btn:hover { color: #1f2937; }
.livio-form-prev-btn svg { display: block; }

/* ── Conteneur etape ── */
/* L'etape 0 reprend le layout flex/gap des champs que .livio-native-form
   appliquait avant aux champs directs, desormais wrappes dans cette etape. */
.livio-form-step-0 {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* ── Intro + alerte programme ── */
.livio-form-prog-intro {
    font-size: 0.875rem;
    color: rgba(0,0,0,0.6);
    margin: 0 0 16px;
}
.livio-form-prog-alert { margin-bottom: 16px; }

/* ── Preview programme ── */
.livio-prog-preview {
    background: #f5f7fa;
    border-radius: 16px;
    padding: 16px;
    max-height: 75vh;
    overflow-y: auto;
}
.livio-prog-preview::-webkit-scrollbar { width: 4px; }
.livio-prog-preview::-webkit-scrollbar-thumb { background: rgba(0,0,0,0.15); border-radius: 2px; }
.livio-prog-col {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* ── Groupe ── */
.livio-prog-grp-body {
    background: #fff;
    border-radius: 0 0 12px 12px;
    border: 1px solid rgba(0,0,0,0.06);
    border-top: none;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.livio-prog-grp-desc {
    font-size: 0.8rem;
    color: rgba(0,0,0,0.6);
    line-height: 1.6;
    padding: 0 4px 4px;
}
.livio-prog-grp-desc p { margin: 0; }
.livio-prog-rule-chip {
    height: 20px;
    display: inline-flex;
    align-items: center;
    padding: 0 8px;
    font-size: 0.62rem;
    font-weight: 700;
    background: rgba(255,255,255,0.28);
    color: #fff;
    border-radius: 6px;
    white-space: nowrap;
    flex-shrink: 0;
}
.livio-prog-head-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    font-size: 0.6rem;
    font-weight: 600;
    background: rgba(255,255,255,0.2);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.3);
    border-radius: 8px;
    line-height: 1.3;
}

/* ── Sous-groupe ── */
.livio-prog-subgrp-head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
}
.livio-prog-subgrp-bar {
    width: 10px;
    height: 3px;
    border-radius: 2px;
    flex-shrink: 0;
    display: inline-block;
}
.livio-prog-subgrp-title {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.livio-prog-subgrp-rule {
    height: 18px;
    display: inline-flex;
    align-items: center;
    padding: 0 7px;
    font-size: 0.6rem;
    font-weight: 700;
    border-radius: 6px;
    white-space: nowrap;
    flex-shrink: 0;
}
.livio-prog-empty {
    font-size: 0.75rem;
    color: rgba(0,0,0,0.38);
    text-align: center;
    padding: 16px 0;
}

/* ── Card session ── */
.livio-prog-card { box-sizing: border-box; }
.livio-prog-card:hover {
    box-shadow: 0 4px 16px rgba(0,0,0,0.07);
    transform: translateY(-1px);
}
.livio-prog-check {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    accent-color: #6f62ef;
    cursor: pointer;
    margin: 0;
}
.livio-prog-avatar svg { display: block; }
.livio-prog-card-desc p { margin: 0 0 6px; }
.livio-prog-card-desc p:last-child { margin-bottom: 0; }
.livio-prog-card-desc strong,
.livio-prog-card-desc b { font-weight: 700; color: rgba(0,0,0,0.87); }
.livio-prog-card-desc em,
.livio-prog-card-desc i { font-style: italic; }
.livio-prog-card-desc ul,
.livio-prog-card-desc ol { margin: 4px 0; padding-left: 18px; }
.livio-prog-card-desc a { color: #6f62ef; text-decoration: underline; }
.livio-prog-readmore {
    display: inline-block;
    margin-top: 6px;
    font-size: 0.65rem;
    font-weight: 600;
    color: #6f62ef;
    cursor: pointer;
}
.livio-prog-readmore:hover { text-decoration: underline; }
.livio-prog-exp-text {
    font-size: 0.75rem;
    line-height: 1.6;
    color: rgba(0,0,0,0.6);
    padding: 8px 0;
}
.livio-prog-exp-text p { margin: 0; }

/* ── Bloc RGPD (case a cocher + lien) ── */
.livio-form-rgpd-row {
    margin-top: 4px;
}
.livio-form-rgpd-label {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    cursor: pointer;
}
.livio-form-rgpd-checkbox {
    margin: 2px 0 0 0;
    width: 18px;
    height: 18px;
    flex-shrink: 0;
    cursor: pointer;
    accent-color: #2563eb;
}
.livio-form-rgpd-text {
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--livio-text, #374151);
}
.livio-form-rgpd-link {
    color: #2563eb;
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
}
.livio-form-rgpd-link:hover { text-decoration: underline; }
.livio-form-rgpd-error {
    color: #ef4444;
    font-size: 0.78rem;
    margin: 4px 0 0 28px;
}

/* ── Modale (RGPD / conditions) ── */
.livio-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    z-index: 100000;
}
.livio-modal {
    background: #fff;
    border-radius: 12px;
    max-width: 560px;
    width: 100%;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    box-shadow: 0 16px 48px rgba(0,0,0,0.25);
    overflow: hidden;
}
.livio-modal-head {
    padding: 18px 22px;
    font-size: 1.05rem;
    font-weight: 600;
    color: #1f2937;
    border-bottom: 1px solid #e5e7eb;
}
.livio-modal-body {
    padding: 18px 22px;
    overflow-y: auto;
}
.livio-modal-subtitle {
    font-size: 0.9rem;
    font-weight: 600;
    color: #1f2937;
    margin: 0 0 8px 0;
}
.livio-modal-text {
    font-size: 0.875rem;
    line-height: 1.6;
    color: #6b7280;
    white-space: pre-line;
    margin: 0 0 22px 0;
}
.livio-modal-text:last-child { margin-bottom: 0; }
.livio-modal-html { white-space: normal; }
.livio-modal-html p { margin: 0 0 6px 0; }
.livio-modal-html p:last-child { margin-bottom: 0; }
.livio-modal-html a { color: #2563eb; text-decoration: underline; }
.livio-modal-html ul, .livio-modal-html ol { padding-left: 20px; margin: 4px 0; }
.livio-modal-foot {
    padding: 14px 22px;
    border-top: 1px solid #e5e7eb;
    display: flex;
    justify-content: flex-end;
}
.livio-modal-close-btn {
    background: #2563eb;
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: 8px 18px;
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
}
.livio-modal-close-btn:hover { background: #1d4ed8; }
